Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

ABAP code for creating a report variant

Former Member
0 Kudos

Hi,

I would like to create parameter on selection screen type SLIS_VARI. I would like that the program will start with pre-defined variant in ALV grid, the same as it is on standard stock report (MB52)...

Can someone tell me how to do this, and where to put the code?

Thanks in advance,

Saso

1 ACCEPTED SOLUTION

Former Member
0 Kudos

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-003.

PARAMETERS: p_var TYPE variant DEFAULT '/GENERAL',

p_dvar TYPE variant DEFAULT '/DOWNLOAD'.

SELECTION-SCREEN END OF BLOCK b2.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_dvar.

PERFORM f_get_f4_variants USING gc_a

text-086

CHANGING p_var.

FORM f_get_f4_variants USING rc_a TYPE gty_char01

rv_text TYPE any

CHANGING rv_var TYPE variant.

DATA: ls_layout_variant TYPE disvariant.

ls_layout_variant = sy-repid.

CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

EXPORTING

is_variant = ls_layout_variant

i_save = rc_a

IMPORTING

es_variant = ls_layout_variant

EXCEPTIONS

not_found = 1

program_error = 2

OTHERS = 3.

IF sy-subrc EQ 2.

MESSAGE i000 WITH rv_text.

ELSE.

rv_var = ls_layout_variant-variant.

ENDIF.

ENDFORM. " F_GET_F4_VARIANTS

*& Validating alv variants

AT SELECTION-SCREEN ON p_var.

PERFORM f_check_variants_exist USING p_var

text-086.

FORM f_check_variants_exist USING rv_var TYPE variant

rv_text TYPE any.

DATA ls_variant type disvariant.

IF NOT rv_var IS INITIAL.

MOVE: sy-repid TO ls_variant-report,

rv_var TO ls_variant-variant.

CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'

EXPORTING

i_save = 'A'

CHANGING

cs_variant = ls_variant

EXCEPTIONS

wrong_input = 1

not_found = 2

program_error = 3

OTHERS = 4.

IF sy-subrc NE 0.

MESSAGE e000 WITH rv_text.

ENDIF.

ENDIF.

ENDFORM. " f_check_variants_exist

2 REPLIES 2

Former Member
0 Kudos

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-003.

PARAMETERS: p_var TYPE variant DEFAULT '/GENERAL',

p_dvar TYPE variant DEFAULT '/DOWNLOAD'.

SELECTION-SCREEN END OF BLOCK b2.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_dvar.

PERFORM f_get_f4_variants USING gc_a

text-086

CHANGING p_var.

FORM f_get_f4_variants USING rc_a TYPE gty_char01

rv_text TYPE any

CHANGING rv_var TYPE variant.

DATA: ls_layout_variant TYPE disvariant.

ls_layout_variant = sy-repid.

CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

EXPORTING

is_variant = ls_layout_variant

i_save = rc_a

IMPORTING

es_variant = ls_layout_variant

EXCEPTIONS

not_found = 1

program_error = 2

OTHERS = 3.

IF sy-subrc EQ 2.

MESSAGE i000 WITH rv_text.

ELSE.

rv_var = ls_layout_variant-variant.

ENDIF.

ENDFORM. " F_GET_F4_VARIANTS

*& Validating alv variants

AT SELECTION-SCREEN ON p_var.

PERFORM f_check_variants_exist USING p_var

text-086.

FORM f_check_variants_exist USING rv_var TYPE variant

rv_text TYPE any.

DATA ls_variant type disvariant.

IF NOT rv_var IS INITIAL.

MOVE: sy-repid TO ls_variant-report,

rv_var TO ls_variant-variant.

CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'

EXPORTING

i_save = 'A'

CHANGING

cs_variant = ls_variant

EXCEPTIONS

wrong_input = 1

not_found = 2

program_error = 3

OTHERS = 4.

IF sy-subrc NE 0.

MESSAGE e000 WITH rv_text.

ENDIF.

ENDIF.

ENDFORM. " f_check_variants_exist

Former Member
0 Kudos

Hi,

This is the code for variant as parameter and F4 help.

DATA: g_repid LIKE sy-repid,

g_dynnr LIKE sy-dynnr.

DATA: g_save(1) TYPE c VALUE 'A',

g_exit(1) TYPE c,

gx_variant LIKE disvariant,

g_variant LIKE disvariant.

PARAMETERS: p_vari LIKE disvariant-variant.

INITIALIZATION.

g_repid = sy-repid.

g_dynnr = sy-dynnr.

PERFORM variant_init.

*Get default variant

gx_variant = g_variant.

CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'

EXPORTING

i_save = g_save

CHANGING

cs_variant = gx_variant

EXCEPTIONS

not_found = 2.

IF sy-subrc = 0.

p_vari = gx_variant-variant.

ENDIF.

----


  • AT SELECTION SCREEN *

----


AT SELECTION-SCREEN.

*--PAI of selection screen

PERFORM pai_of_selection_screen.

*---F4 option for report variant

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.

PERFORM f4_for_variant.

----


  • SUB-ROUTINES *

----


FORM variant_init.

CLEAR g_variant.

g_variant-report = g_repid.

ENDFORM. " variant_init

FORM pai_of_selection_screen.

IF NOT p_vari IS INITIAL.

MOVE g_variant TO gx_variant.

MOVE p_vari TO gx_variant-variant.

CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'

EXPORTING

i_save = g_save

CHANGING

cs_variant = gx_variant.

g_variant = gx_variant.

ELSE.

PERFORM variant_init.

ENDIF.

ENDFORM. " pai_of_selection_screen

CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

EXPORTING

is_variant = g_variant

i_save = g_save

IMPORTING

e_exit = g_exit

es_variant = gx_variant

EXCEPTIONS

not_found = 2.

IF sy-subrc = 2.

MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ELSE.

IF g_exit = space.

p_vari = gx_variant-variant.

ENDIF.

ENDIF.

AND pass this gx_variant to ALV Function module.

Rewards points if helpful.

Regards,

Srinivas ch