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

setting default layout for two alv in same screen?

Former Member
0 Likes
2,425

Hi all,

I have two alv of same sub screen. Now when I set a default layout for the alv 1 the same is also taken as default for second alv wereas I want to set two different layout as default for each alv in same screen .how to fix it?please help me out

Thanks

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,291

Thank You all the following thread has solved my problem,

4 REPLIES 4
Read only

Former Member
0 Likes
1,291

Hi

  If you want the same layout for the alv

Try with FM 'REUSE_ALV_BLOCK_LIST_APPEND' :

REPORT z_alv_block_list.

Type-pools

TYPE-POOLS: slis.

Data declarations.

DATA: BEGIN OF t_vbak OCCURS 0,

        vbeln TYPE vbeln,

        bstnk TYPE vbak-bstnk,

        erdat TYPE vbak-erdat,

        kunnr TYPE vbak-kunnr,

      END OF t_vbak.

DATA: BEGIN OF t_vbap OCCURS 0,

        vbeln  TYPE vbeln,

        matnr  TYPE vbap-matnr,

        netpr  TYPE vbap-netpr,

        waerk  TYPE vbap-waerk,

        kwmeng TYPE vbap-kwmeng,

        meins  TYPE vbap-meins,

      END OF t_vbap.

DATA: t_fieldcatalog1 TYPE slis_t_fieldcat_alv.

DATA: t_fieldcatalog2 TYPE slis_t_fieldcat_alv.

DATA: v_repid         TYPE syrepid.

DATA: s_layout        TYPE slis_layout_alv.

DATA: v_tabname       TYPE slis_tabname.

DATA: t_events        TYPE slis_t_event.

start-of-selection event.

START-OF-SELECTION.

  v_repid = sy-repid.

Get the fieldcatalog for the first block

  PERFORM get_fieldcat1 CHANGING t_fieldcatalog1.

Get the fieldcatalog for the second block

  PERFORM get_fieldcat2 CHANGING t_fieldcatalog2.

Get the data for the first block

  SELECT vbeln bstnk erdat kunnr UP TO 10 ROWS

         INTO TABLE t_vbak

         FROM vbak WHERE vbeln > '0060000100'.

Get the data for the second block

  SELECT vbeln matnr netpr waerk kwmeng meins UP TO 10

ROWS

         INTO TABLE t_vbap

         FROM vbap WHERE vbeln > '0060000100'.

init

  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'

       EXPORTING

            i_callback_program = v_repid.

First block

  v_tabname = 'ITAB1'.

  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

       EXPORTING

            is_layout   = s_layout

            it_fieldcat = t_fieldcatalog1

            i_tabname   = v_tabname

            it_events   = t_events

       TABLES

            t_outtab    = t_vbak.

Second block

  v_tabname = 'ITAB2'.

  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

       EXPORTING

            is_layout   = s_layout

            it_fieldcat = t_fieldcatalog2

            i_tabname   = v_tabname

            it_events   = t_events

       TABLES

            t_outtab    = t_vbap.

*Display

  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'

            .

----

       FORM GET_FIELDCAT1                          

               *

----

       Get the field catalog for the first block   

               *

----

FORM get_fieldcat1 CHANGING lt_fieldcatalog TYPE

slis_t_fieldcat_alv.

  DATA: s_fieldcatalog TYPE slis_fieldcat_alv.

Order number

  s_fieldcatalog-col_pos       = '1'.

  s_fieldcatalog-fieldname     = 'VBELN'.

  s_fieldcatalog-tabname       = 'T_VBAK'.

  s_fieldcatalog-ref_tabname   = 'VBAK'.

  s_fieldcatalog-ref_fieldname = 'VBELN'.

  APPEND s_fieldcatalog TO lt_fieldcatalog.

  CLEAR s_fieldcatalog.

Customer purchase order.

  s_fieldcatalog-col_pos       = '2'.

  s_fieldcatalog-fieldname     = 'BSTNK'.

  s_fieldcatalog-tabname       = 'T_VBAK'.

  s_fieldcatalog-ref_tabname   = 'VBAK'.

  s_fieldcatalog-ref_fieldname = 'BSTNK'.

  APPEND s_fieldcatalog TO lt_fieldcatalog.

  CLEAR s_fieldcatalog.

Creation date.

  s_fieldcatalog-col_pos       = '3'.

  s_fieldcatalog-fieldname     = 'ERDAT'.

  s_fieldcatalog-tabname       = 'T_VBAK'.

  s_fieldcatalog-ref_tabname   = 'VBAK'.

  s_fieldcatalog-ref_fieldname = 'ERDAT'.

  APPEND s_fieldcatalog TO lt_fieldcatalog.

  CLEAR s_fieldcatalog.

Customer

  s_fieldcatalog-col_pos       = '4'.

  s_fieldcatalog-fieldname     = 'KUNNR'.

  s_fieldcatalog-tabname       = 'T_VBAK'.

  s_fieldcatalog-ref_tabname   = 'VBAK'.

  s_fieldcatalog-ref_fieldname = 'KUNNR'.

  APPEND s_fieldcatalog TO lt_fieldcatalog.

  CLEAR s_fieldcatalog.

ENDFORM.

----

       FORM GET_FIELDCAT2                          

               *

----

       Get the field catalog for the second block  

               *

----

FORM get_fieldcat2 CHANGING lt_fieldcatalog TYPE

slis_t_fieldcat_alv.

  DATA: s_fieldcatalog TYPE slis_fieldcat_alv.

Order number

  s_fieldcatalog-col_pos       = '1'.

  s_fieldcatalog-fieldname     = 'VBELN'.

  s_fieldcatalog-tabname       = 'T_VBAP'.

  s_fieldcatalog-ref_tabname   = 'VBAP'.

  s_fieldcatalog-ref_fieldname = 'VBELN'.

  APPEND s_fieldcatalog TO lt_fieldcatalog.

  CLEAR s_fieldcatalog.

Material number

  s_fieldcatalog-col_pos       = '2'.

  s_fieldcatalog-fieldname     = 'MATNR'.

  s_fieldcatalog-tabname       = 'T_VBAP'.

  s_fieldcatalog-ref_tabname   = 'VBAP'.

  s_fieldcatalog-ref_fieldname = 'MATNR'.

  APPEND s_fieldcatalog TO lt_fieldcatalog.

  CLEAR s_fieldcatalog.

Net price

  s_fieldcatalog-col_pos       = '3'.

  s_fieldcatalog-fieldname     = 'NETPR'.

  s_fieldcatalog-tabname       = 'T_VBAP'.

  s_fieldcatalog-ref_tabname   = 'VBAP'.

  s_fieldcatalog-ref_fieldname = 'NETPR'.

  s_fieldcatalog-cfieldname    = 'WAERK'.

  s_fieldcatalog-ctabname      = 'T_VBAP'.

  APPEND s_fieldcatalog TO lt_fieldcatalog.

  CLEAR s_fieldcatalog.

Currency.

  s_fieldcatalog-col_pos       = '4'.

  s_fieldcatalog-fieldname     = 'WAERK'.

  s_fieldcatalog-tabname       = 'T_VBAP'.

  s_fieldcatalog-ref_tabname   = 'VBAP'.

  s_fieldcatalog-ref_fieldname = 'WAERK'.

  APPEND s_fieldcatalog TO lt_fieldcatalog.

  CLEAR s_fieldcatalog.

Quantity

  s_fieldcatalog-col_pos       = '5'.

  s_fieldcatalog-fieldname     = 'KWMENG'.

  s_fieldcatalog-tabname       = 'T_VBAP'.

  s_fieldcatalog-ref_tabname   = 'VBAP'.

  s_fieldcatalog-ref_fieldname = 'KWMENG'.

  s_fieldcatalog-qfieldname    = 'MEINS'.

  s_fieldcatalog-qtabname      = 'T_VBAP'.

  APPEND s_fieldcatalog TO lt_fieldcatalog.

  CLEAR s_fieldcatalog.

UOM

  s_fieldcatalog-col_pos       = '6'.

  s_fieldcatalog-fieldname     = 'MEINS'.

  s_fieldcatalog-tabname       = 'T_VBAP'.

  s_fieldcatalog-ref_tabname   = 'VBAP'.

  s_fieldcatalog-ref_fieldname = 'MEINS'.

  APPEND s_fieldcatalog TO lt_fieldcatalog.

  CLEAR s_fieldcatalog.

ENDFORM.

2)  Please trace the VF45 Transaction,it has two ALV Grid within one screen.

Thanks

Read only

0 Likes
1,291

Thanks but can i set say layout_1 default to alv 1 and other layout_2 default to alv_2.Both the alv are in same screen number.

Read only

Former Member
0 Likes
1,291

Hi,

You can use Multi grid.

Try this code.

DATA: O_CONT1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,

       O_CONT2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.

DATA: O_GRID1 TYPE REF TO CL_GUI_ALV_GRID,

       O_GRID2 TYPE REF TO CL_GUI_ALV_GRID.

DATA: IT_VBRK LIKE VBRK OCCURS 1 WITH HEADER LINE,

       IT_VBRP LIKE VBRP OCCURS 1 WITH HEADER LINE.

PARAMETERS: P_VBELN LIKE VBRK-VBELN.

START-OF-SELECTION.

   PERFORM GET_DATA.

   SET SCREEN 100.

*&---------------------------------------------------------------------*

*&      Form  GET_DATA

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

FORM GET_DATA .

      SELECT *

            FROM VBRK

            INTO TABLE IT_VBRK

            WHERE VBELN = P_VBELN.

   SELECT *

     FROM VBRP

     INTO TABLE IT_VBRP

     WHERE VBELN = P_VBELN.

ENDFORM.                    " GET_DATA

*&---------------------------------------------------------------------*

*&      Module  STATUS_0100  OUTPUT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

MODULE STATUS_0100 OUTPUT.

   SET PF-STATUS 'MENU'.

   PERFORM SHOW_GRIDS.

ENDMODULE.                 " STATUS_0100  OUTPUT

*&---------------------------------------------------------------------*

*&      Module  USER_COMMAND_0100  INPUT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

MODULE USER_COMMAND_0100 INPUT.

   CASE SY-UCOMM.

     WHEN 'BACK'.

       LEAVE PROGRAM.

   ENDCASE.

ENDMODULE.                 " USER_COMMAND_0100  INPUT

*&---------------------------------------------------------------------*

*&      Form  SHOW_GRIDS

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

FORM SHOW_GRIDS .

   IF O_CONT1 IS INITIAL.

     CREATE OBJECT O_CONT1

       EXPORTING

         CONTAINER_NAME              = 'HEAD_CONT'.

     CREATE OBJECT O_CONT2

       EXPORTING

         CONTAINER_NAME              = 'ITEM_CONT'.

     CREATE OBJECT O_GRID1

       EXPORTING

         I_PARENT          = O_CONT1.

     CREATE OBJECT O_GRID2

       EXPORTING

         I_PARENT          = O_CONT2.

*--SHOW GRIDS

     CALL METHOD O_GRID1->SET_TABLE_FOR_FIRST_DISPLAY

       EXPORTING

         I_STRUCTURE_NAME = 'VBRK'

       CHANGING

         IT_OUTTAB        = IT_VBRK[].

     CALL METHOD O_GRID2->SET_TABLE_FOR_FIRST_DISPLAY

       EXPORTING

         I_STRUCTURE_NAME = 'VBRP'

       CHANGING

         IT_OUTTAB        = IT_VBRP[].

   ENDIF.

ENDFORM.                    " SHOW_GRIDS




Read only

Former Member
0 Likes
1,292

Thank You all the following thread has solved my problem,