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

Layout problem for Drill down ALV Report

Former Member
0 Likes
1,218

Hello Everyone,

                       I have developed a ALV drill down report using the method G_GRID->SET_TABLE_FOR_FIRST_DISPLAY. The problem is what ever layout i save for the primary list 'Screen 100' is effecting my secondary list 'Screen 200'.  User need to save both Screen 100 and Screen 200 layouts independently without affecting each other.

I am calling  screen 100 as below,

Call metthod g_grid_100->set_table_for_first_display

  Exporting

   i_Save                                     = 'A'

   is_layout                                 =  ls_layout

   is_Variant                                =   ls_Variant

  Changing

   it_outtab                                  =  ct_poitems

   it_fieldcatalog                           =  lt_fieldcat

  Exceptions

   Invalid_parameter_combimation   = 1

   Program_error                            = 2

   too_many_lines                         = 3

   others                                       = 4.

Could any body suggest me a way to do this..

Thanks in advance.

Regards,

Shyam.

1 ACCEPTED SOLUTION
Read only

rosenberg_eitan
Active Contributor
0 Likes
1,062

Hi,

Use multiple Layout structure (each alv have its own structure) .

Note the use of disvariant-log_group .

DATA: gs_disvariant_1 TYPE disvariant ,
           gs_disvariant_2 TYPE disvariant .
     
     
* Layout-Logical groups
CONSTANTS: gc_log_group_1 TYPE disvariant-log_group VALUE 'ALV1' ,
                        gc_log_group_2 TYPE disvariant-log_group VALUE 'ALV2' .  
          
INITIALIZATION.
  PERFORM at_initialization .
 
 
FORM at_initialization .

DATA: vari TYPE disvariant-variant .

  PERFORM alv_variant_get_default USING gc_log_group_1 CHANGING gs_disvariant_1 vari .
  PERFORM alv_variant_get_default USING gc_log_group_2 CHANGING gs_disvariant_2 vari .

ENDFORM.


*----------------------------------------------------------------------*
FORM alv_variant_get_default
  USING
    log_group TYPE disvariant-log_group
  CHANGING
    disvariant TYPE disvariant
    variant    TYPE slis_vari .

  DATA: ls_disvariant TYPE disvariant.

  ls_disvariant-report = sy-repid .
  ls_disvariant-log_group = log_group .

  disvariant = ls_disvariant.

  CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
    EXPORTING
      i_save     = 'A'
    CHANGING
      cs_variant = ls_disvariant
    EXCEPTIONS
      not_found  = 2.

  IF sy-subrc = 0.
    disvariant = ls_disvariant.
    variant    = ls_disvariant-variant .
  ENDIF.

ENDFORM.                    "alv_variant_get_default
*----------------------------------------------------------------------*


Later....

   CALL METHOD gui_alv_grid_1->set_table_for_first_display
      EXPORTING
        is_layout       = wa_layout
        is_print        = wa_print
        i_save          = 'A'
        is_variant      = gs_disvariant_1
      CHANGING
        it_sort         = it_sort
        it_fieldcatalog = it_fieldcatalog
        it_outtab       = it_alv_grid_1.
       
  CALL METHOD gui_alv_grid_2->set_table_for_first_display
      EXPORTING
        is_layout       = wa_layout
        is_print        = wa_print
        i_save          = 'A'
        is_variant      = gs_disvariant_2
      CHANGING
        it_sort         = it_sort
        it_fieldcatalog = it_fieldcatalog
        it_outtab       = it_alv_grid_2.     

Regards.

Hello Everyone,

                       I have developed a ALV drill down report using the method G_GRID->SET_TABLE_FOR_FIRST_DISPLAY. The problem is what ever layout i save for the primary list 'Screen 100' is effecting my secondary list 'Screen 200'.  User need to save both Screen 100 and Screen 200 layouts independently without affecting each other.

I am calling  screen 100 as below,

Call metthod g_grid_100->set_table_for_first_display

  Exporting

   i_Save                                     = 'A'

   is_layout                                 =  ls_layout

   is_Variant                                =   ls_Variant

  Changing

   it_outtab                                  =  ct_poitems

   it_fieldcatalog                           =  lt_fieldcat

  Exceptions

   Invalid_parameter_combimation   = 1

   Program_error                            = 2

   too_many_lines                         = 3

   others                                       = 4.

Could any body suggest me a way to do this..

Thanks in advance.

Regards,

Shyam.

5 REPLIES 5
Read only

krishna_k19
Contributor
0 Likes
1,062

Hi Prasad,

   While calling the second screen which variant and layout your passing.

Regards,

Krishna

Read only

0 Likes
1,062

Hi krishna,

           I am using different variants for screen 200 but with the same parameters which i used for Screen 100. Because both screens belong to same program, and so i am able to see same layout name when i go to 'Manage layouts' option. But user need to save both the layouts indenpendently.

Thanks,

Shyam.

Read only

rosenberg_eitan
Active Contributor
0 Likes
1,063

Hi,

Use multiple Layout structure (each alv have its own structure) .

Note the use of disvariant-log_group .

DATA: gs_disvariant_1 TYPE disvariant ,
           gs_disvariant_2 TYPE disvariant .
     
     
* Layout-Logical groups
CONSTANTS: gc_log_group_1 TYPE disvariant-log_group VALUE 'ALV1' ,
                        gc_log_group_2 TYPE disvariant-log_group VALUE 'ALV2' .  
          
INITIALIZATION.
  PERFORM at_initialization .
 
 
FORM at_initialization .

DATA: vari TYPE disvariant-variant .

  PERFORM alv_variant_get_default USING gc_log_group_1 CHANGING gs_disvariant_1 vari .
  PERFORM alv_variant_get_default USING gc_log_group_2 CHANGING gs_disvariant_2 vari .

ENDFORM.


*----------------------------------------------------------------------*
FORM alv_variant_get_default
  USING
    log_group TYPE disvariant-log_group
  CHANGING
    disvariant TYPE disvariant
    variant    TYPE slis_vari .

  DATA: ls_disvariant TYPE disvariant.

  ls_disvariant-report = sy-repid .
  ls_disvariant-log_group = log_group .

  disvariant = ls_disvariant.

  CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
    EXPORTING
      i_save     = 'A'
    CHANGING
      cs_variant = ls_disvariant
    EXCEPTIONS
      not_found  = 2.

  IF sy-subrc = 0.
    disvariant = ls_disvariant.
    variant    = ls_disvariant-variant .
  ENDIF.

ENDFORM.                    "alv_variant_get_default
*----------------------------------------------------------------------*


Later....

   CALL METHOD gui_alv_grid_1->set_table_for_first_display
      EXPORTING
        is_layout       = wa_layout
        is_print        = wa_print
        i_save          = 'A'
        is_variant      = gs_disvariant_1
      CHANGING
        it_sort         = it_sort
        it_fieldcatalog = it_fieldcatalog
        it_outtab       = it_alv_grid_1.
       
  CALL METHOD gui_alv_grid_2->set_table_for_first_display
      EXPORTING
        is_layout       = wa_layout
        is_print        = wa_print
        i_save          = 'A'
        is_variant      = gs_disvariant_2
      CHANGING
        it_sort         = it_sort
        it_fieldcatalog = it_fieldcatalog
        it_outtab       = it_alv_grid_2.     

Regards.

Read only

0 Likes
1,062

Thanks Eitan. Problem Solved.

Regards,

Shyam.

Read only

anubhab
Active Participant
0 Likes
1,062

Hi Shyam,

     Please have a look at the below link with same requirement. Might be helpful for you.

Regards,

Anubhab