Skip to Content

CL_SALV_TABLE - column headers in saved variants

Oct 14, 2016 at 04:28 PM


avatar image
Former Member

Dear all,

the situation is the following:

The users have the option to save variants for alv outputs. If they save the variant and re-submit the report defining the output variant, the column texts are ALL used from the DDIC reference although I define the text using the text methods.

    lr_layout->set_initial_layout( ip_vari ).
    lr_column ?= lr_columns->get_column( 'KTEXT' ).

    CALL METHOD lr_column->set_short_text
        value = ''.

    CALL METHOD lr_column->set_medium_text
        value = 'KoStlBez'.

    CALL METHOD lr_column->set_long_text
        value = 'KoStlBez'.

Can anybody tell me how I can tell the ALV not using the DDIC reference? (The DDIC reference is also not used, if I call the ALV w/o a variant)

Thx in advance for your help.

Kind regards.


10 |10000 characters needed characters left characters exceeded
* Please Login or Register to Answer, Follow or Comment.

2 Answers

Raymond Giuseppi
Oct 17, 2016 at 06:41 AM

The whole field catalog is stored with the variants, so I fear you have to detect/handle event for load of a variant an apply your modification again and not only once at first display.

Hint: Look at sample program SALV_TEST_TABLE_EVENTS you look for an after function code event related to load variant (some gr_events->on_after_salv_function)


10 |10000 characters needed characters left characters exceeded
avatar image
Former Member Oct 18, 2016 at 10:32 AM

Hello Andre,

The Solution;

and regards.

METHOD create_variant. "Ex.
    DATA: lo_layout  TYPE REF TO cl_salv_layout,
          lf_variant TYPE slis_vari,
          ls_key     TYPE salv_s_layout_key.
    DATA: ls_layout TYPE salv_s_layout_info.
    lo_layout = mo_alv->get_layout( ).
    ls_key-report = sy-repid.
    lo_layout->set_key( ls_key ).
    lo_layout->set_save_restriction( if_salv_c_layout=>restrict_none ).
    lo_layout->set_default( 'X' ).
    lf_variant = 'DEFAULT'.
    "Pre-setting with bring. variant
    ls_layout = cl_salv_layout_service=>get_default_layout(
    s_key    = ls_key
    restrict = if_salv_c_layout=>restrict_none ).
    lo_layout->set_initial_layout( ls_layout-layout ).

10 |10000 characters needed characters left characters exceeded