07-07-2010 1:34 PM
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
07-08-2010 5:41 AM
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
07-07-2010 4:23 PM
> 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
07-07-2010 8:43 PM
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
07-08-2010 5:41 AM
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
07-08-2010 9:09 AM
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
07-08-2010 9:31 AM
07-08-2010 9:55 AM
07-08-2010 10:08 AM
i had not used SELECTION-SCREEN FUNCTION KEY 1. event to create functional key:-)