‎2009 Jan 11 7:33 AM
Hi All,
I have a field with F4 help for Layout on the selection screen. Once, I press F4, Iam able to get the list of
Layouts already saved. But, when I give in a particular layout name and run the report, the output gets displayed in the default/old layout. How can I get the output in the layout which I have selected in the selection screen?
Also, when I run the report in background, Iam sending a file to the application server. Now, when I give the layout and run the report in background, the file iam sending to the app server should have the same layout which i have selected in the selection screen.
Please help with example code, Iam stuck and not able to move forward.
Thanks in advance,
Guru Charan.
‎2009 Jan 11 1:43 PM
Hi Guru,
Use this code, its working:-
*&---------------------------------------------------------------------*
* TYPE POOLS
*&---------------------------------------------------------------------*
TYPE-POOLS : slis.
*&---------------------------------------------------------------------*
* PARAMETER FOR VARIANT
*&---------------------------------------------------------------------*
PARAMETERS : s_var TYPE disvariant-variant.
*&---------------------------------------------------------------------*
* FOR ALV GRID DISPLAY
*&---------------------------------------------------------------------*
*FIELD CATALOG
DATA : it_field TYPE slis_t_fieldcat_alv,
wa_field TYPE slis_fieldcat_alv.
*FOR GRID TITLE
DATA : wa_title TYPE lvc_title.
*FOR LAYOUT
DATA : wa_layout TYPE slis_layout_alv.
*FOR VARIANT
DATA : wa_variant TYPE disvariant,
wa_variant1 TYPE disvariant.
*&---------------------------------------------------------------------*
* INITIALIZATION
*&---------------------------------------------------------------------*
INITIALIZATION.
wa_variant-report = sy-repid.
wa_variant1-report = sy-repid.
*GET DEFUALT ON THE SELECTION SCREEN FOR DEFAULT DISPLAY
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
i_save = 'A' " for all users
CHANGING
cs_variant = wa_variant
EXCEPTIONS
wrong_input = 1
not_found = 2
program_error = 3
OTHERS = 4.
IF sy-subrc = 0. " IF DEFAULT VARIANT FOUND
s_var = wa_variant-variant. " PASS THE DEFAULT VARIANT TO THE SELECTION SCREEN FIELD
ENDIF.
*&---------------------------------------------------------------------*
* AT-SELECTION SCREEN ON VALUE REQUEST
*&---------------------------------------------------------------------*
* TO GET THE F4 HELP FOR VARIANT
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_var.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = wa_variant
* I_TABNAME_HEADER =
* I_TABNAME_ITEM =
* IT_DEFAULT_FIELDCAT =
i_save = 'A'
* I_DISPLAY_VIA_GRID = ' '
IMPORTING
* E_EXIT =
es_variant = wa_variant1
EXCEPTIONS
not_found = 1
program_error = 2
OTHERS = 3.
IF sy-subrc = 0.
s_var = wa_variant1-variant. " PASS THE SELECTED VARIANT TO THE SELECTION SCREEN FIELD
ENDIF.
*&---------------------------------------------------------------------*
* AT-SELECTION SCREEN
*&---------------------------------------------------------------------*
* TO CHECK THE EXISTENCE FOR VARIANT
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN.
wa_variant-variant = s_var.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
i_save = 'A'
CHANGING
cs_variant = wa_variant
EXCEPTIONS
wrong_input = 1
not_found = 2
program_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE w001.
ENDIF.
*&---------------------------------------------------------------------*
* START OF SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.
" your code
*&---------------------------------------------------------------------*
* FIELD CATALOG
*&---------------------------------------------------------------------*
wa_field-fieldname = 'EBELN'.
wa_field-tabname = 'IT_TAB'.
wa_field-outputlen = 10.
wa_field-seltext_l = 'PO #'.
APPEND wa_field TO it_field.
CLEAR wa_field.
" similarly other fields
*&---------------------------------------------------------------------*
* SORT W.R.T. PURCHASE ORDER NUMBER
*&---------------------------------------------------------------------*
wa_sort-spos = 1.
wa_sort-fieldname = 'EBELN'.
wa_sort-tabname = 'IT_EKPO'.
wa_sort-up = "X". " for ascending
APPEND wa_sort TO it_sort.
CLEAR wa_sort.
*&---------------------------------------------------------------------*
* FOR GRID TITLE
*&---------------------------------------------------------------------*
wa_title = 'Hello'.
*&---------------------------------------------------------------------*
* FOR LAYOUT
*&---------------------------------------------------------------------*
wa_layout-zebra = check.
*&---------------------------------------------------------------------*
* DISPLAY RECORDS IN ALV GRID
*&---------------------------------------------------------------------*
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid " report id
i_grid_title = wa_title " alv title bar
is_layout = wa_layout " for layout design
it_fieldcat = it_field " field catalog
it_sort = it_sort " sort info
i_save = 'A' " variant for all users
is_variant = wa_variant "variant name
TABLES
t_outtab = it_ekpo " internal table
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
Hope this helps you.
Thanks & Regards,
Tarun Gambhir
‎2009 Jan 11 7:50 AM
‎2009 Jan 11 8:03 AM
Hi Avinash,
Thank you very much for a quick one.
Iam already geting the variant from 'REUSE_ALV_VARIANT_F4' when the user hits F4 on the selection screen. Iam passing this variant in the REUSE_ALV_GRID_DISPLAY ( to is_variant parameter). But still Iam getting the output in the same old layout.
Do I need to use 'REUSE_ALV_VARIANT_EXISTENCE' also?
Please advice.
Thanks,
GuruCharan.
‎2009 Jan 11 9:45 AM
‎2009 Jan 11 12:28 PM
Yes, I have passed the program name as well to the IS_VARIANT.
Guru.
‎2009 Jan 11 1:43 PM
Hi Guru,
Use this code, its working:-
*&---------------------------------------------------------------------*
* TYPE POOLS
*&---------------------------------------------------------------------*
TYPE-POOLS : slis.
*&---------------------------------------------------------------------*
* PARAMETER FOR VARIANT
*&---------------------------------------------------------------------*
PARAMETERS : s_var TYPE disvariant-variant.
*&---------------------------------------------------------------------*
* FOR ALV GRID DISPLAY
*&---------------------------------------------------------------------*
*FIELD CATALOG
DATA : it_field TYPE slis_t_fieldcat_alv,
wa_field TYPE slis_fieldcat_alv.
*FOR GRID TITLE
DATA : wa_title TYPE lvc_title.
*FOR LAYOUT
DATA : wa_layout TYPE slis_layout_alv.
*FOR VARIANT
DATA : wa_variant TYPE disvariant,
wa_variant1 TYPE disvariant.
*&---------------------------------------------------------------------*
* INITIALIZATION
*&---------------------------------------------------------------------*
INITIALIZATION.
wa_variant-report = sy-repid.
wa_variant1-report = sy-repid.
*GET DEFUALT ON THE SELECTION SCREEN FOR DEFAULT DISPLAY
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
i_save = 'A' " for all users
CHANGING
cs_variant = wa_variant
EXCEPTIONS
wrong_input = 1
not_found = 2
program_error = 3
OTHERS = 4.
IF sy-subrc = 0. " IF DEFAULT VARIANT FOUND
s_var = wa_variant-variant. " PASS THE DEFAULT VARIANT TO THE SELECTION SCREEN FIELD
ENDIF.
*&---------------------------------------------------------------------*
* AT-SELECTION SCREEN ON VALUE REQUEST
*&---------------------------------------------------------------------*
* TO GET THE F4 HELP FOR VARIANT
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_var.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = wa_variant
* I_TABNAME_HEADER =
* I_TABNAME_ITEM =
* IT_DEFAULT_FIELDCAT =
i_save = 'A'
* I_DISPLAY_VIA_GRID = ' '
IMPORTING
* E_EXIT =
es_variant = wa_variant1
EXCEPTIONS
not_found = 1
program_error = 2
OTHERS = 3.
IF sy-subrc = 0.
s_var = wa_variant1-variant. " PASS THE SELECTED VARIANT TO THE SELECTION SCREEN FIELD
ENDIF.
*&---------------------------------------------------------------------*
* AT-SELECTION SCREEN
*&---------------------------------------------------------------------*
* TO CHECK THE EXISTENCE FOR VARIANT
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN.
wa_variant-variant = s_var.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
i_save = 'A'
CHANGING
cs_variant = wa_variant
EXCEPTIONS
wrong_input = 1
not_found = 2
program_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE w001.
ENDIF.
*&---------------------------------------------------------------------*
* START OF SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.
" your code
*&---------------------------------------------------------------------*
* FIELD CATALOG
*&---------------------------------------------------------------------*
wa_field-fieldname = 'EBELN'.
wa_field-tabname = 'IT_TAB'.
wa_field-outputlen = 10.
wa_field-seltext_l = 'PO #'.
APPEND wa_field TO it_field.
CLEAR wa_field.
" similarly other fields
*&---------------------------------------------------------------------*
* SORT W.R.T. PURCHASE ORDER NUMBER
*&---------------------------------------------------------------------*
wa_sort-spos = 1.
wa_sort-fieldname = 'EBELN'.
wa_sort-tabname = 'IT_EKPO'.
wa_sort-up = "X". " for ascending
APPEND wa_sort TO it_sort.
CLEAR wa_sort.
*&---------------------------------------------------------------------*
* FOR GRID TITLE
*&---------------------------------------------------------------------*
wa_title = 'Hello'.
*&---------------------------------------------------------------------*
* FOR LAYOUT
*&---------------------------------------------------------------------*
wa_layout-zebra = check.
*&---------------------------------------------------------------------*
* DISPLAY RECORDS IN ALV GRID
*&---------------------------------------------------------------------*
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid " report id
i_grid_title = wa_title " alv title bar
is_layout = wa_layout " for layout design
it_fieldcat = it_field " field catalog
it_sort = it_sort " sort info
i_save = 'A' " variant for all users
is_variant = wa_variant "variant name
TABLES
t_outtab = it_ekpo " internal table
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
Hope this helps you.
Thanks & Regards,
Tarun Gambhir