Application Development 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: 

How to display 2 ALV grid format at the same time.

Former Member
0 Kudos

How to display 2 ALV grids at the same time ie data is available in 2 internal tables..

7 REPLIES 7

Former Member
0 Kudos

Hi Renu,

Welcome to SDN

It is not possible to display two ALV at the same time but if the data is linked to each other such as master data- and its details then there are other approaches to show those data in the same ALV.

Regards,

Atish

gopi_narendra
Active Contributor
0 Kudos

Welcome to SDN

Check the sample program BALVBT01 which uses the function modules

REUSE_ALV_BLOCK_LIST_APPEND

REUSE_ALV_BLOCK_LIST_DISPLAY

Regards

Gopi

Former Member
0 Kudos

<b>you can check all Std ALV with BCALV* or RSDEMO* in SE38</b>

Rewards if useful.................

Minal

Former Member
0 Kudos

Hi,

You can use the OO alv to display the two grids..By creating two containers in the module pool screen..And create two new grids for those containers..

You can check BALVGRID* programs

Thanks

Naren

uwe_schieferstein
Active Contributor
0 Kudos

Hello Renu

Have a look at the following sample reports:

And if you need more than two or three ALV grids then have a look at my sample report <b>ZUS_SDN_SPLITTER_CONTAINER</b> in thread

Regards

Uwe

Former Member
0 Kudos

Hi

we con do it using block list display.
see this code.

REPORT ZBHALV_BLOCK_LIST.

TABLES:LFA1,EKKO.

SELECT-OPTIONS:LIFNR FOR LFA1-LIFNR.

DATA:BEGIN OF ITAB OCCURS 0,
LIFNR LIKE LFA1-LIFNR,
NAME1 LIKE LFA1-NAME1,
LAND1 LIKE LFA1-LAND1,
ORT01 LIKE LFA1-ORT01,
REGIO LIKE LFA1-REGIO,
END OF ITAB.

DATA:BEGIN OF JTAB OCCURS 0,
LIFNR LIKE EKKO-LIFNR,
EBELN LIKE EKKO-EBELN,
BUKRS LIKE EKKO-BUKRS,
BSTYP LIKE EKKO-BSTYP,
EKORG LIKE EKKO-EKORG,
BSART LIKE EKKO-BSART,
END OF JTAB.

SELECT * FROM LFA1 INTO CORRESPONDING FIELDS OF TABLE ITAB WHERE LIFNR
IN LIFNR.

SELECT * FROM EKKO INTO CORRESPONDING FIELDS OF TABLE JTAB WHERE LIFNR
IN LIFNR.

TYPE-POOLS:SLIS.

DATA:LAYOUT TYPE slis_layout_alv.
DATA:EVE TYPE slis_t_event WITH HEADER LINE.
DATA:EVE1 TYPE slis_t_event WITH HEADER LINE.
DATA:HEAD TYPE slis_t_listheader WITH HEADER LINE.
DATA:FCAT TYPE slis_t_fieldcat_alv.
DATA:FCAT1 TYPE slis_t_fieldcat_alv.


LAYOUT-ZEBRA = 'X'.
LAYOUT-colwidth_optimize = 'X'.
LAYOUT-WINDOW_TITLEBAR = 'VENDOR DETAILS SCREEN'.



EVE1-NAME = 'TOP_OF_PAGE'.
EVE1-FORM = 'TOP_OF_PAGE1'.
APPEND EVE1.


CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = EVE[]
EXCEPTIONS
LIST_TYPE_WRONG = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.


READ TABLE EVE WITH KEY NAME = 'TOP_OF_PAGE'.
EVE-FORM = 'TOP_OF_PAGE'.
MODIFY EVE TRANSPORTING FORM WHERE NAME = 'TOP_OF_PAGE'.




CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* IT_EXCLUDING =
.


CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = 'ITAB'
* I_STRUCTURE_NAME =
* I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = SY-REPID
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
CHANGING
CT_FIELDCAT = FCAT
* EXCEPTIONS
* INCONSISTENT_INTERFACE = 1
* PROGRAM_ERROR = 2
* OTHERS = 3
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.



CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
IS_LAYOUT = LAYOUT
IT_FIELDCAT = FCAT
I_TABNAME = 'ITAB'
IT_EVENTS = EVE[]
* IT_SORT =
* I_TEXT = ' '
TABLES
T_OUTTAB = ITAB
* EXCEPTIONS
* PROGRAM_ERROR = 1
* MAXIMUM_OF_APPENDS_REACHED = 2
* OTHERS = 3
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.



CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = 'JTAB'
* I_STRUCTURE_NAME =
* I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = SY-REPID
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
CHANGING
CT_FIELDCAT = FCAT1
* EXCEPTIONS
* INCONSISTENT_INTERFACE = 1
* PROGRAM_ERROR = 2
* OTHERS = 3
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.



CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
IS_LAYOUT = LAYOUT
IT_FIELDCAT = FCAT1
I_TABNAME = 'JTAB'
IT_EVENTS = EVE1[]
* IT_SORT =
* I_TEXT = ' '
TABLES
T_OUTTAB = JTAB
* EXCEPTIONS
* PROGRAM_ERROR = 1
* MAXIMUM_OF_APPENDS_REACHED = 2
* OTHERS = 3
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.




CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
* EXPORTING
* I_INTERFACE_CHECK = ' '
* IS_PRINT =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.



FORM TOP_OF_PAGE.
REFRESH HEAD.
HEAD-TYP = 'H'.
HEAD-INFO = 'VENDORS DETAILS'.
APPEND HEAD.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = HEAD[]
* I_LOGO =
* I_END_OF_LIST_GRID =
.

ENDFORM.


FORM TOP_OF_PAGE1.
REFRESH HEAD.
HEAD-TYP = 'H'.
HEAD-INFO = 'PURCHASE DOCCUMENTS DETAILS'.
APPEND HEAD.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = HEAD[]
* I_LOGO =
* I_END_OF_LIST_GRID =
.

ENDFORM.

i am sending you a program in which

the out of the report is displayed in the 2 different table in a single screen

i think it will be very usefull for you

execute this and see how its works

tables: mara,spfli.
 
types: begin of ty_tab,
        matnr type mara-matnr,
        ernam type mara-ernam,
        ersda type mara-ersda,
       end of ty_tab.
 
DATA ITAB1 TYPE TABLE OF SPFLI.
DATA WA1 LIKE LINE OF ITAB1.
 
DATA IO1 TYPE SPFLI-CARRID VALUE 'AA'.
 
 
 
data itab type table of ty_tab.
 
data wa like line of itab.
 
DATA OK_CODE TYPE SY-UCOMM.
 
DATA: GRID TYPE REF TO CL_GUI_ALV_GRID,
      CONT TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
 
DATA: GRID1 TYPE REF TO CL_GUI_ALV_GRID,
      CONTA TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
 
 
CREATE OBJECT CONT EXPORTING CONTAINER_NAME = 'CONT1' .
CREATE OBJECT GRID EXPORTING I_PARENT = CONT .
 
CREATE OBJECT CONTA EXPORTING CONTAINER_NAME = 'CONT2' .
CREATE OBJECT GRID1 EXPORTING I_PARENT = CONTA .
 
 
 
selection-screen begin of block b1 with frame title text-100.
 
select-options: s_matnr for mara-matnr.
 
selection-screen end of block b1.
 
select matnr ernam ersda from mara into corresponding fields of table itab up to 15 rows
where matnr in s_matnr .
 
call selection-screen 100.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
 
if ok_code = 'PB1'.
 
leave to screen 0.
 
else.
 
leave to screen 100.
 
endif.
 
 
ENDMODULE.                 " USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
*  SET PF-STATUS 'xxxxxxxx'.
*  SET TITLEBAR 'xxx'.
 
 SELECT * FROM SPFLI INTO
  CORRESPONDING FIELDS OF TABLE ITAB1 WHERE CARRID = IO1.
 
 
CALL METHOD grid->SET_TABLE_FOR_FIRST_DISPLAY
  EXPORTING
*    I_BUFFER_ACTIVE               =
*    I_BYPASSING_BUFFER            =
*    I_CONSISTENCY_CHECK           =
    I_STRUCTURE_NAME              = 'MARA'
*    IS_VARIANT                    =
*    I_SAVE                        =
*    I_DEFAULT                     = 'X'
*    IS_LAYOUT                     =
*    IS_PRINT                      =
*    IT_SPECIAL_GROUPS             =
*    IT_TOOLBAR_EXCLUDING          =
*    IT_HYPERLINK                  =
*    IT_ALV_GRAPHICS               =
*    IT_EXCEPT_QINFO               =
*    IR_SALV_ADAPTER               =
  CHANGING
    IT_OUTTAB                     = itab.
*    IT_FIELDCATALOG               =
*    IT_SORT                       =
*    IT_FILTER                     =
*  EXCEPTIONS
*    INVALID_PARAMETER_COMBINATION = 1
*    PROGRAM_ERROR                 = 2
*    TOO_MANY_LINES                = 3
*    others                        = 4
        .
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
 
   CALL METHOD GRID1->SET_TABLE_FOR_FIRST_DISPLAY
    EXPORTING
      I_STRUCTURE_NAME = 'SPFLI'
    CHANGING
      IT_OUTTAB        = ITAB1.
 
 
ENDMODULE.                 " STATUS_0100  OUTPUT

<b>You need to use the functions for Bloacked ALV.</b>

The functions generally used are

1.REUSE_ALV_BLOCK_LIST_INIT

2.REUSE_ALV_BLOCK_LIST_APPEND

3.REUSE_ALV_BLOCK_LIST_DISPLAY.

Here is a sample code which does the same


INCLUDE ZAR_ALV_BLOCK_TOP.
 
start-of-selection.
 
       select matnr werks
       up to 10 rows
       into table it_1
       from marc.
 
 
       select matnr werks lgort labst
       up to 10 rows
       into table it_2
       from mard.
 
 
*wa_cat-fieldname = 'MATNR'.
*append wa_cat to cat1..
*
*wa_cat-fieldname = 'WERKS'.
*append wa_cat to cat1..
*
*CAT2[] = CAT1[].
*wa_cat-fieldname = 'LGORT'.
*append wa_cat to cat2.
v_rep = sy-repid.
BREAK-POINT.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
 EXPORTING
   I_PROGRAM_NAME               =  v_rep
   I_INTERNAL_TABNAME           = 'IT_1'
*   I_STRUCTURE_NAME             =
*   I_CLIENT_NEVER_DISPLAY       = 'X'
   I_INCLNAME                   = v_rep
*   I_BYPASSING_BUFFER           =
*   I_BUFFER_ACTIVE              =
  CHANGING
    ct_fieldcat                  = CAT1
* EXCEPTIONS
*   INCONSISTENT_INTERFACE       = 1
*   PROGRAM_ERROR                = 2
*   OTHERS                       = 3
          .
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
 
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
 EXPORTING
   I_PROGRAM_NAME               =  v_rep
   I_INTERNAL_TABNAME           = 'IT_2'
*   I_STRUCTURE_NAME             =
*   I_CLIENT_NEVER_DISPLAY       = 'X'
   I_INCLNAME                   = v_rep
*   I_BYPASSING_BUFFER           =
*   I_BUFFER_ACTIVE              =
  CHANGING
    ct_fieldcat                  = CAT2
* EXCEPTIONS
*   INCONSISTENT_INTERFACE       = 1
*   PROGRAM_ERROR                = 2
*   OTHERS                       = 3
          .
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
 
 
 
 
 
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
  EXPORTING
    i_callback_program             = v_rep
*   I_CALLBACK_PF_STATUS_SET       = ' '
*   I_CALLBACK_USER_COMMAND        = ' '
*   IT_EXCLUDING                   =
          .
 
 
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
  EXPORTING
    is_layout                        = ls_layo
    it_fieldcat                      = cat1
    i_tabname                        = 'table_1'
    it_events                        = event
*   IT_SORT                          =
*   I_TEXT                           = ' '
  tables
    t_outtab                         = it_1
* EXCEPTIONS
*   PROGRAM_ERROR                    = 1
*   MAXIMUM_OF_APPENDS_REACHED       = 2
*   OTHERS                           = 3
          .
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
 
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
  EXPORTING
    is_layout                        = ls_layo
    it_fieldcat                      = cat2
    i_tabname                        = 'table_1'
    it_events                        = event
*   IT_SORT                          =
*   I_TEXT                           = ' '
  tables
    t_outtab                         = it_2
* EXCEPTIONS
*   PROGRAM_ERROR                    = 1
*   MAXIMUM_OF_APPENDS_REACHED       = 2
*   OTHERS                           = 3
          .
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
 
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
* EXPORTING
*   I_INTERFACE_CHECK             = ' '
*   IS_PRINT                      =
*   I_SCREEN_START_COLUMN         = 0
*   I_SCREEN_START_LINE           = 0
*   I_SCREEN_END_COLUMN           = 0
*   I_SCREEN_END_LINE             = 0
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER       =
*   ES_EXIT_CAUSED_BY_USER        =
* EXCEPTIONS
*   PROGRAM_ERROR                 = 1
*   OTHERS                        = 2
          .
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*        

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

The code for include ZAR_ALV_BLOCK_TOP is as below


type-pools : slis.
 
data : Begin of it_1 occurs 0,
          matnr like marc-matnr ,
          werks like marc-werks ,
         End of it_1.
 
data : Begin of it_2 occurs 0 ,
          matnr like marc-matnr ,
          werks like marc-werks ,
          lgort like mard-lgort,
          labst like mard-labst ,
        End of it_2.
 
 
 
 
*Data : it_1 type table of ty_1 ,
*       it_2 type table of ty_2 ,
*       v_rep type sy-repid.
 
data : v_rep type sy-repid.
 
*--> Varaibles for ALV
Data : cat1 type slis_t_fieldcat_alv,
       cat2 type slis_t_fieldcat_alv,
       wa_cat like line of cat1,
       event type SLIS_T_EVENT ,
       ls_layo   type slis_layout_alv.

The include is not actually required , if you are creaitng the field catalog manually.

<b>Reward if usefull</b>

Former Member
0 Kudos

Hi,

using OOalv(Object Oriented alv)u can display more than one grids in a screen.

DATA:t_mara TYPE TABLE OF mara.

DATA:t_lfa1 TYPE TABLE OF lfa1.

DATA:FCAT TYPE LVC_T_FCAT.

DATA:FCAT1 TYPE LVC_T_FCAT.

DATA:G_CONTAINER TYPE SCRFNAME VALUE 'TABC',"TABC is *container in screen 101

GRID TYPE REF TO CL_GUI_ALV_GRID,

G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.

DATA:G_CONTAINER1 TYPE SCRFNAME VALUE 'TABC1',"TABC1 is *container in screen 101

GRID1 TYPE REF TO CL_GUI_ALV_GRID,

G_CUSTOM_CONTAINER1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.

set screen 101.

MODULE STATUS_0101 output.

IF G_CUSTOM_CONTAINER IS INITIAL.

CREATE OBJECT G_CUSTOM_CONTAINER "CREATING OBJECT FOR CUSTOM *CONTAINER

EXPORTING CONTAINER_NAME = G_CONTAINER.

CREATE OBJECT GRID "CREATING GRID

EXPORTING I_PARENT = G_CUSTOM_CONTAINER.

CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'

EXPORTING

I_STRUCTURE_NAME = 'MARA'

CHANGING

CT_FIELDCAT = FCAT[].

SELECT * from mara into table t_mara.

CALL METHOD GRID->SET_TABLE_FOR_FIRST_DISPLAY

CHANGING

IT_FIELDCATALOG = FCAT[]

IT_OUTTAB = t_MARA.

ENDIF.

IF G_CUSTOM_CONTAINER1 IS INITIAL.

CREATE OBJECT G_CUSTOM_CONTAINER1 "CREATING OBJECT FOR *CUSTOM CONTAINER

EXPORTING CONTAINER_NAME = G_CONTAINER1.

CREATE OBJECT GRID1 "CREATING GRID1

EXPORTING I_PARENT = G_CUSTOM_CONTAINER1.

CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'

EXPORTING

I_STRUCTURE_NAME = 'LFA1'

CHANGING

CT_FIELDCAT = FCAT1[].

SELECT * from lfa1 into table t_lfa1.

CALL METHOD GRID1->SET_TABLE_FOR_FIRST_DISPLAY

CHANGING

IT_FIELDCATALOG = FCAT1[]

IT_OUTTAB = t_LFA1.

ENDIF.

ENDMODULE.

<b>

flow logic of screen 101:</b>

PROCESS BEFORE OUTPUT.

MODULE STATUS_0101.

PROCESS AFTER INPUT.

*module user_command_0101.

rgds,

bharat.