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: 

Layout variants in Selection screen

Former Member
0 Kudos

Hi All,

I have a requirement where i need to create a functinal key on selection screen'Disp Variant' and i need to provide F4 help when user click on button and when layout is selected the report should show the layout according to selected layout variant.

I have written following code but it is not workin for me.Please help.

initialisation.

wa_functxt-icon_id = icon_variants.

wa_functxt-quickinfo = 'CHOOSE'.

wa_functxt-icon_text = 'DISP VAR'.

sscrfields-functxt_01 = wa_functxt.

wa_functxt of type smp_dyntxt and sscrfields have been declared at top.

CLEAR: wa_variant2.

wa_variant2-report = sy-repid.

CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'

EXPORTING

i_save = ' '

CHANGING

cs_variant = wa_variant2

EXCEPTIONS

not_found = 2.

IF sy-subrc EQ 0.

PERFORM f_select_alv_variant.

ENDIF.

even this is in initialisation.

form F_SELECT_ALV_VARIANT .

MOVE sy-repid TO wa_variant1-report.

CALL FUNCTION 'REUSE_ALV_VARIANT_SELECT'

EXPORTING

i_dialog = space

i_user_specific = 'X'

i_default = space

it_default_fieldcat = i_fieldcat[]

i_layout = wa_layout

IMPORTING

et_fieldcat = i_fieldcat[]

CHANGING

cs_variant = wa_variant2

EXCEPTIONS

wrong_input = 1

fc_not_complete = 2

not_found = 3

program_error = 4

OTHERS = 5.

IF sy-subrc EQ 0.

"Do nothing.

ENDIF.

endform.

AT SELECTION-SCREEN.

CASE sscrfields-ucomm.

*When Display Variant button is clicked

WHEN c_fc01.

PERFORM f_f4_for_variant.

WHEN OTHERS.

ENDCASE.

form F_F4_FOR_VARIANT .

CLEAR: wa_variant1,

wa_variant2.

wa_variant1-report = sy-repid.

CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

EXPORTING

is_variant = wa_variant1

i_save = 'U'

IMPORTING

e_exit = v_variant_exit

es_variant = wa_variant2.

PERFORM f_select_alv_variant.

IF v_variant_exit EQ 'X'..

PERFORM f_get_default_variant.

ENDIF.

endform.

Thanks in Advance,

Anjana

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi sandra,

i want one more button along with execution button,when user click on that new button an F4 help of all display variants should apper.

Thanks & Regards,

Anjana Rao

7 REPLIES 7

Sandra_Rossi
Active Contributor
0 Kudos

> I have a requirement where i need to create a functinal key on selection screen'Disp Variant'

What do you want to do? Variants are to be edited from the screen where the ALV is displayed. If don't see why a special button is needed to display the ALV, as existing Execute button (ONLI) is sufficient.

> and i need to provide F4 help when user click on button

To trigger code when F4 is pressed, use event AT SELECTION-SCREEN ON VALUE-REQUEST FOR fieldname.

Call either REUSE_ALV_VARIANT_SELECT, or REUSE_ALV_VARIANT_F4 (why do you use both?) to get a variant name

> and when layout is selected the report should show the layout according to selected layout variant.

Call REUSE_ALV_LIST_DISPLAY (for example) and pass the variant name (IS_VARIANT parameter)

For more information, look at BCALV_TEST_LIST* demo programs

craig_scott2
Explorer
0 Kudos

Anjana:

I have coded report selection-screens that allow the user to select the ALV display variant before generating the report. Where do you have a problem with your code?

.. Craig

Former Member
0 Kudos

Hi sandra,

i want one more button along with execution button,when user click on that new button an F4 help of all display variants should apper.

Thanks & Regards,

Anjana Rao

0 Kudos

Let's discuss based on something. On that program, I don't have any issue, check it.


INCLUDE <icon>.
TABLES sscrfields.
DATA wa_variant1 TYPE disvariant.
DATA wa_variant2 TYPE disvariant.

SELECTION-SCREEN FUNCTION KEY 1.
PARAMETERS dummy.

*----------------------------------------------------------------------*
INITIALIZATION.
  DATA wa_functxt TYPE smp_dyntxt.
  wa_functxt-icon_id = icon_variants.
  wa_functxt-quickinfo = 'CHOOSE'.
  wa_functxt-icon_text = 'DISP VAR'.
  sscrfields-functxt_01 = wa_functxt.
  PERFORM f_get_default_variant.

*----------------------------------------------------------------------*
FORM f_get_default_variant.
  CLEAR: wa_variant2.
  wa_variant2-report = sy-repid.
  CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
    EXPORTING
      i_save     = ' '
    CHANGING
      cs_variant = wa_variant2
    EXCEPTIONS
      not_found  = 2.
ENDFORM.                    "f_get_default_variant

*----------------------------------------------------------------------*
AT SELECTION-SCREEN.
  PERFORM at_selection_screen.

*&---------------------------------------------------------------------*
*&      Form  at_selection_screen
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM at_selection_screen.
  CASE sscrfields-ucomm.
*When Display Variant button is clicked
    WHEN 'FC01'.
      PERFORM f_f4_for_variant.
    WHEN 'ONLI'.
      DATA gt_output TYPE TABLE OF t000 WITH HEADER LINE.
      SELECT * FROM t000 INTO TABLE gt_output.
      DATA lo_table TYPE REF TO cl_salv_table.
      TRY.
          CALL METHOD cl_salv_table=>factory
            IMPORTING
              r_salv_table = lo_table
            CHANGING
              t_table      = gt_output[].
        CATCH cx_salv_msg.
      ENDTRY.

      DATA lo_layout TYPE REF TO cl_salv_layout.
      lo_layout = lo_table->get_layout( ).
      lo_layout->set_save_restriction( cl_salv_layout=>restrict_none ).

      DATA ls_layout_key TYPE salv_s_layout_key.
      ls_layout_key-report = sy-repid.
      lo_layout->set_key( ls_layout_key ).

      DATA l_variant TYPE slis_vari.
      l_variant = wa_variant2-variant.
      lo_layout->set_initial_layout( l_variant ).

      DATA lo_functions_list TYPE REF TO cl_salv_functions_list.
      lo_functions_list = lo_table->get_functions( ).
      lo_functions_list->set_all( ).

      lo_table->display( ).

  ENDCASE.
ENDFORM.                    "at_selection_screen

*----------------------------------------------------------------------*
FORM f_f4_for_variant .

  CLEAR: wa_variant1, wa_variant2.
  wa_variant1-report = sy-repid.
  DATA v_variant_exit TYPE flag.
  CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
    EXPORTING
      is_variant = wa_variant1
      i_save     = 'U'
    IMPORTING
      e_exit     = v_variant_exit
      es_variant = wa_variant2.
  IF v_variant_exit EQ 'X'..
    PERFORM f_get_default_variant.
  ENDIF.

ENDFORM.                    "F_F4_FOR_VARIANT

Former Member
0 Kudos

Thank you very much sandra.. your code worked like a miracle

0 Kudos

Finally, I don't know what was the issue

Former Member
0 Kudos

i had not used SELECTION-SCREEN FUNCTION KEY 1. event to create functional key:-)