Application Development and Automation 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: 
Read only

ALV Layout fields

Former Member
0 Likes
2,411

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.

1 ACCEPTED SOLUTION
Read only

I355602
Product and Topic Expert
Product and Topic Expert
0 Likes
1,140

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

5 REPLIES 5
Read only

Former Member
0 Likes
1,140

HI,

Check this link...

Read only

0 Likes
1,140

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.

Read only

0 Likes
1,140

have u passed repid field also to IS_VARIANT?

Read only

0 Likes
1,140

Yes, I have passed the program name as well to the IS_VARIANT.

Guru.

Read only

I355602
Product and Topic Expert
Product and Topic Expert
0 Likes
1,141

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