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: 

alv variants

Former Member
0 Kudos

hi

experts

i have 3 different layouts in my grid how can i set different variants and different f4 functionality for each field in each variant layout

please help me.

satish

1 REPLY 1

Former Member
0 Kudos

Hi,

Please refer to the below code:


DATA:   gt_rsparams  TYPE TABLE OF rsparams.
 
* Data for ALV variant
DATA  gv_repname          LIKE sy-repid.
DATA  gv_x_variant        LIKE disvariant.
DATA  gv_exit(1)          TYPE c.
DATA  gv_save(1)          TYPE c.
DATA  gv_variant          LIKE disvariant.
 
PARAMETERS: sp_vari LIKE disvariant-variant.        "Dispaly Variant
 
 
INITIALIZATION.
 
  gv_repname = sy-repid.
  REFRESH : gt_glacct,
            gr_rcomp,
            gt_output,
            gt_fieldcat,
            gt_sort.
 
* Initialize ALV Layout variant
  PERFORM f_initialize_variant.
 
 
FORM f_initialize_variant .
 
  CLEAR gv_variant.
  gv_save           = 'X'.
  gv_variant-report = gv_repname.
  gv_x_variant      = gv_variant.
 
  CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
    EXPORTING
      i_save     = gv_save
    CHANGING
      cs_variant = gv_x_variant
    EXCEPTIONS
      not_found  = 2.
 
  IF sy-subrc = 0.
 
    sp_vari = gv_x_variant-variant.
 
  ENDIF.
 
ENDFORM.                    " f_initialize_variant
 
 
AT SELECTION-SCREEN ON VALUE-REQUEST FOR sp_vari.
  PERFORM f_f4_for_variant.
 
FORM f_f4_for_variant .
  CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
    EXPORTING
      is_variant = gv_variant
      i_save     = gv_save
    IMPORTING
      e_exit     = gv_exit
      es_variant = gv_x_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 gv_exit = space.
      sp_vari = gv_x_variant-variant.
    ENDIF.
  ENDIF.
 
ENDFORM.                    " f_f4_for_variant
 
AT SELECTION-SCREEN.
 
*  Validating selection screen fields
  PERFORM f_at_selection_screen.
 
FORM f_at_selection_screen .
 
* ALV Layout variant
  IF NOT sp_vari IS INITIAL.
 
    MOVE gv_variant TO gv_x_variant.
    MOVE sp_vari    TO gv_x_variant-variant.
 
    CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
      EXPORTING
        i_save     = gv_save
      CHANGING
        cs_variant = gv_x_variant.
    gv_variant = gv_x_variant.
 
  ELSE.
 
    PERFORM f_initialize_variant.
 
  ENDIF.
 
FORM f_initialize_variant .
 
  CLEAR gv_variant.
  gv_save           = 'X'.
  gv_variant-report = gv_repname.
  gv_x_variant      = gv_variant.
 
  CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
    EXPORTING
      i_save     = gv_save
    CHANGING
      cs_variant = gv_x_variant
    EXCEPTIONS
      not_found  = 2.
 
  IF sy-subrc = 0.
 
    sp_vari = gv_x_variant-variant.
 
  ENDIF.
 
ENDFORM.                    " f_initialize_variant


Thanks,

Sriram Ponna.