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: 

ALV List Display

Former Member
0 Kudos

Hi All,

I need information for How to get secondary list in ALV? Please explain the process with example?

Regards,

Ravindra

6 REPLIES 6

Former Member
0 Kudos

hey,

For you primary alv you will be setting a user command event ,when the USER COMMAND event is triggered then you should call the secondry alv in that user command.This event occurs when the user double clicks ect any sort of user actions.There are many examples for this go to se38 and give BCALV* and press F4 you will be getting the examples.

Regards,

Midhun Abraham

Edited by: Midhun Abraham on Oct 14, 2008 7:28 AM

Former Member
0 Kudos

plz go thru this code

i hope it will help u.

REPORT ZTEST_REP02 .

DATA: lt_matnr TYPE mseg-matnr.

data: w_mblnr type mkpf-mblnr,

w_mjahr type mkpf-mjahr.

DATA: BEGIN OF itab2 OCCURS 0,

matnr TYPE mchb-matnr,

charg TYPE mchb-charg,

werks TYPE mchb-werks,

clabs TYPE mchb-clabs,

box type c,

END OF itab2.

DATA: BEGIN OF pmseg OCCURS 0,

zeile TYPE mseg-zeile,

menge TYPE mseg-menge,

meins TYPE mseg-meins,

matnr TYPE mseg-matnr,

werks TYPE mseg-werks,

charg TYPE mseg-charg,

bwart TYPE mseg-bwart,

BOX type c,

END OF pmseg.

DATA: BEGIN OF itab1 OCCURS 0,

mblnr TYPE mkpf-mblnr,

mjahr TYPE mkpf-mjahr,

END OF itab1.

type-pools : slis .

SELECTION-SCREEN BEGIN OF BLOCK rad1 WITH FRAME TITLE tit1.

SELECT-OPTIONS docunumb FOR w_mblnr OBLIGATORY .

PARAMETER fiscyear LIKE w_mjahr OBLIGATORY .

SELECTION-SCREEN END OF BLOCK rad1.

INITIALIZATION.

tit1 = 'Documents_details'.

data: fldcat_pmseg type slis_t_fieldcat_alv with header line .

data: fldcat_itab2 type slis_t_fieldcat_alv with header line .

data: layout type slis_layout_alv.

layout-box_fieldname = 'BOX'.

layout-get_selinfos = 'X'.

data: lay type slis_layout_alv.

lay-box_fieldname = 'BOX'.

lay-get_selinfos = 'X'.

lay-zebra = 'X'.

START-OF-SELECTION.

SELECT mblnr

mjahr

FROM mkpf

INTO TABLE itab1

WHERE mblnr IN docunumb AND mjahr = fiscyear.

IF itab1[] IS NOT INITIAL.

SELECT zeile menge meins matnr werks charg bwart

FROM mseg

INTO TABLE pmseg

FOR ALL ENTRIES IN itab1

WHERE mblnr = itab1-mblnr

AND mjahr = itab1-mjahr.

ENDIF.

perform fldcat_pmseg .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = SY-REPID

I_CALLBACK_PF_STATUS_SET = 'PF_STATUS '

I_CALLBACK_USER_COMMAND = 'USERCOMMAND'

  • I_STRUCTURE_NAME =

IS_LAYOUT = layout

IT_FIELDCAT = fldcat_pmseg[]

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

  • IT_EVENTS =

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • 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 =

TABLES

T_OUTTAB = pmseg[].

  • 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 PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.

SET PF-STATUS 'Z_STATUS'.

ENDFORM.

FORM USERCOMMAND USING P_UCOMM TYPE SY-UCOMM

PS_SELFIELD TYPE SLIS_SELFIELD.

ps_selfield-fieldname = pmseg-matnr .

data:lt_matnr type MSEG-matnr.

*SET PF-STATUS 'Z_STATUS'.

CASE sy-ucomm.

when 'NEXT'.

clear fldcat_itab2[] .

  • IF sy-lsind = 1.

  • l_matnr = sy-lisel+60(20).

  • ENDIF.

loop at pmseg where BOX = 'X'.

lt_matnr = pmseg-matnr.

endloop .

SELECT matnr charg werks clabs

FROM mchb

INTO table itab2

WHERE matnr = lt_matnr.

perform fldcat_itab2.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = ' '

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = SY-REPID

  • I_CALLBACK_PF_STATUS_SET = 'Z_STATUS'

  • I_CALLBACK_USER_COMMAND = 'USERCOMMAND

  • I_CALLBACK_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME =

  • I_BACKGROUND_ID = ' '

  • I_GRID_TITLE =

  • I_GRID_SETTINGS =

IS_LAYOUT = lay

IT_FIELDCAT = fldcat_itab2[]

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

  • IT_EVENTS =

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IT_ALV_GRAPHICS =

  • IT_HYPERLINK =

  • IT_ADD_FIELDCAT =

  • IT_EXCEPT_QINFO =

  • I_HTML_HEIGHT_TOP =

  • I_HTML_HEIGHT_END =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = itab2[]

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.

endcase.

ENDFORM.

FORM fldcat_itab2.

fldcat_itab2-COL_POS = 1.

fldcat_itab2-FIELDNAME = 'MATNR'.

fldcat_itab2-TABNAME = 'itab2'.

fldcat_itab2-outputlen = 20 .

fldcat_itab2-SELTEXT_L = 'MATERIALNO'.

fldcat_itab2-emphasize = 'C500'.

APPEND fldcat_itab2.

clear fldcat_itab2.

fldcat_itab2-fieldname = 'CHARG' .

fldcat_itab2-tabname = 'itab2'.

fldcat_itab2-col_pos = '2'.

fldcat_itab2-outputlen = 20 .

fldcat_itab2-SELTEXT_L = 'Batch' .

  • fldcat_itab2-emphasize = 'C600'.

append fldcat_itab2 .

clear fldcat_itab2.

fldcat_itab2-fieldname = ' WERKS' .

fldcat_itab2-tabname = 'itab2'.

fldcat_itab2-col_pos = '3'.

fldcat_itab2-outputlen = 20 .

fldcat_itab2-SELTEXT_L = 'PLANT' .

  • fldcat_itab2-emphasize = 'C400'.

append fldcat_itab2 .

clear fldcat_itab2.

fldcat_itab2-fieldname = 'CLABS' .

fldcat_itab2-tabname = 'itab2'.

fldcat_itab2-col_pos = '4'.

fldcat_itab2-outputlen = 20 .

fldcat_itab2-SELTEXT_L = 'STOCK' .

  • fldcat_itab2-emphasize = 'C300'.

append fldcat_itab2.

clear fldcat_itab2.

ENDFORM.

form fldcat_pmseg .

fldcat_pmseg-fieldname = 'ZEILE' .

fldcat_pmseg-tabname = 'pmseg'.

fldcat_pmseg-col_pos = '1'.

fldcat_pmseg-SELTEXT_L = 'Item' .

fldcat_pmseg-outputlen = 20 .

fldcat_pmseg-emphasize = 'C400'.

append fldcat_pmseg .

clear fldcat_pmseg .

fldcat_pmseg-fieldname = 'MENGE' .

fldcat_pmseg-tabname = 'pmseg'.

fldcat_pmseg-col_pos = '2'.

fldcat_pmseg-SELTEXT_L = 'Quantity' .

fldcat_pmseg-outputlen = 20 .

fldcat_pmseg-emphasize = 'C500'.

append fldcat_pmseg .

fldcat_pmseg-fieldname = 'MEINS' .

fldcat_pmseg-tabname = 'pmseg'.

fldcat_pmseg-col_pos = '3'.

fldcat_pmseg-outputlen = 20 .

fldcat_pmseg-SELTEXT_L = 'U-O-M' .

fldcat_pmseg-emphasize = 'C100'.

append fldcat_pmseg .

fldcat_pmseg-fieldname = 'MATNR' .

fldcat_pmseg-tabname = 'pmseg'.

fldcat_pmseg-col_pos = '4'.

fldcat_pmseg-outputlen = 20 .

fldcat_pmseg-SELTEXT_L = 'Material number' .

fldcat_pmseg-emphasize = 'C200'.

append fldcat_pmseg .

fldcat_pmseg-fieldname = 'WERKS' .

fldcat_pmseg-tabname = 'pmseg'.

fldcat_pmseg-col_pos = '5'.

fldcat_pmseg-outputlen = 20 .

fldcat_pmseg-SELTEXT_L = 'Plant' .

fldcat_pmseg-emphasize = 'C300'.

append fldcat_pmseg .

fldcat_pmseg-fieldname = 'CHARG' .

fldcat_pmseg-tabname = 'pmseg'.

fldcat_pmseg-col_pos = '6'.

fldcat_pmseg-outputlen = 20 .

fldcat_pmseg-SELTEXT_L = 'Batch' .

fldcat_pmseg-emphasize = 'C600'.

append fldcat_pmseg .

fldcat_pmseg-fieldname = 'BWART' .

fldcat_pmseg-tabname = 'pmseg'.

fldcat_pmseg-col_pos = '7'.

fldcat_pmseg-outputlen = 20 .

fldcat_pmseg-SELTEXT_L = 'Movement type' .

fldcat_pmseg-emphasize = 'C700'.

append fldcat_pmseg .

endform .

regards

vikalp

Former Member
0 Kudos

Hi,

To display a secondary list when you click on one of the row items in an alv grid. The secondary list should also be an alv.for more details see the link below:

http://www.sap-img.com/abap/display-secondary-list-using-alv-grid.htm.

HOpe this helps.

Thanks,

Rahul sinha

Former Member
0 Kudos

Hi,

1. Just populate the 'I_CALLBACK_USER_COMMAND'

2. Build a form named 'User_command'

3. Check for &IC1 (For Double click)

4. Display the 2nd ALV.


  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
 EXPORTING
       i_callback_program             = sy-repid
     i_callback_user_command           = 'USER_COMMAND'
     is_layout                         = it_layout
     it_fieldcat                       = it_fcat
     it_events                         = et_events
    TABLES
      t_outtab                          = it_final
 EXCEPTIONS
     program_error                     = 1
     OTHERS                            = 2
            .

*&---------------------------------------------------------------------*
*&      Form  user_command
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->R_UCOMM      text
*      -->RS_SELFIELD  text
*----------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
                        rs_selfield TYPE slis_selfield.
  CASE r_ucomm.
    WHEN '&IC1'.
       PERFORM display_2nd_ALV
  ENDCASE.
ENDFORM.                    "user_command

*&---------------------------------------------------------------------*
*&      Form  display_2nd_alv
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM display_2nd_alv .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
 EXPORTING
       i_callback_program             = sy-repid
*     i_callback_user_command           = 'USER_COMMAND'
     is_layout                         = it_layout1
     it_fieldcat                       = it_fcat1
     it_events                         = et_events1
    TABLES
      t_outtab                          = it_final1
 EXCEPTIONS
     program_error                     = 1
     OTHERS                            = 2
            .
ENDFORM.                    " display_alv

Edited by: Sukriti Saha on Oct 14, 2008 7:32 AM

satsrockford
Active Participant
0 Kudos

Hi

i will tell you very simple method :

step 1 : create the basic list

step 2 : now pass a subroutine in i_callback_usercommand suppose 'xyz'in th basic list .

step 3 : now in this subroutine call the sunction module

" reuse_alv_grid_display"

step 4 : similar to basic list define all the nessesary parameters eg : feildcatalogs , internal table etc .

step 5 : write this code then pass two parameters in the subroutine that you have called

"" form xyx using

ucomm type sy-ucomm

fields type slis_selfield .

now read the previous table with key between them .

now select the data what you want to select .

end form .

note : fun module(reuse_ will be between form and end form .

and dont forget to pass the program name in both the function modules .

see some sample program for this also see it , it will be helpful for understanding ..

&----


*& Report YALVJ21 *

*& *

&----


*& *

*& *

&----


REPORT YALVJ21 .

TYPE-POOLS : SLIS .

TABLES : LFA1 , EKKO .

TYPES : BEGIN OF TY_LFA1 ,

LIFNR TYPE LIFNR ,

NAME1 TYPE NAME1 ,

ADRNR TYPE ADRNR ,

LAND1 TYPE LAND1 ,

END OF TY_LFA1 .

DATA : W_LFA1 TYPE TY_LFA1 .

DATA : T_LFA1 TYPE STANDARD TABLE OF TY_LFA1 INITIAL SIZE 1 .

TYPES : BEGIN OF TY_EKKO ,

EBELN TYPE EBELN ,

AEDAT TYPE ERDAT ,

BUKRS TYPE BUKRS ,

LIFNR TYPE LIFNR ,

END OF TY_EKKO .

DATA : W_EKKO TYPE TY_EKKO.

DATA : T_EKKO TYPE STANDARD TABLE OF TY_EKKO INITIAL SIZE 1 .

************FIELD CATALOG FOR BASIC LIST ********************

DATA : W_FCAT TYPE SLIS_FIELDCAT_ALV .

DATA : T_FCAT TYPE STANDARD TABLE OF SLIS_FIELDCAT_ALV INITIAL SIZE 1 .

W_FCAT-COL_POS = 1 .

W_FCAT-FIELDNAME = 'LIFNR' .

W_FCAT-TABNAME = 'LFA1'.

W_FCAT-SELTEXT_M = 'VENDOR NUMBER' .

W_FCAT-HOTSPOT = 'X' .

APPEND W_FCAT TO T_FCAT .

W_FCAT-COL_POS = 2 .

W_FCAT-FIELDNAME = 'NAME1' .

W_FCAT-TABNAME = 'LFA1'.

W_FCAT-SELTEXT_M = 'NAME' .

W_FCAT-HOTSPOT = '' .

APPEND W_FCAT TO T_FCAT .

W_FCAT-COL_POS = 3 .

W_FCAT-FIELDNAME = 'ADRNR' .

W_FCAT-TABNAME = 'LFA1'.

W_FCAT-SELTEXT_M = 'ADDRESS'.

W_FCAT-HOTSPOT = '' .

APPEND W_FCAT TO T_FCAT .

W_FCAT-COL_POS = 4 .

W_FCAT-FIELDNAME = 'LAND1' .

W_FCAT-TABNAME = 'LFA1'.

W_FCAT-SELTEXT_M = 'COUNTRY'.

W_FCAT-HOTSPOT = '' .

APPEND W_FCAT TO T_FCAT .

*************SECOND FIELDCATALOG *****************

DATA : W_FCAT1 TYPE SLIS_FIELDCAT_ALV .

DATA : T_FCAT1 TYPE SLIS_T_FIELDCAT_ALV .

W_FCAT1-COL_POS = 1 .

W_FCAT1-FIELDNAME = 'EBELN' .

W_FCAT1-TABNAME = 'EKKO'.

W_FCAT1-SELTEXT_M = 'ITEM NUMBER' .

W_FCAT1-HOTSPOT = 'X' .

APPEND W_FCAT1 TO T_FCAT1 .

W_FCAT1-COL_POS = 2 .

W_FCAT1-FIELDNAME = 'AEDAT' .

W_FCAT1-TABNAME = 'EKKO'.

W_FCAT1-SELTEXT_M = 'ORDER DATE ' .

W_FCAT1-HOTSPOT = '' .

APPEND W_FCAT1 TO T_FCAT1 .

W_FCAT1-COL_POS = 3 .

W_FCAT1-FIELDNAME = 'BUKRS' .

W_FCAT1-TABNAME = 'EKKO'.

W_FCAT1-SELTEXT_M = 'COMPANY CODE'.

W_FCAT1-HOTSPOT = '' .

APPEND W_FCAT1 TO T_FCAT1 .

******SELECTING DATA FOR BASIC LIST ******************

SELECT

LIFNR

NAME1

ADRNR

LAND1

FROM LFA1

INTO TABLE T_LFA1 .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_INTERFACE_CHECK = ' '

I_BYPASSING_BUFFER = ' '

I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = SY-CPROG

I_CALLBACK_PF_STATUS_SET = ' '

I_CALLBACK_USER_COMMAND = ‘ZUCOMM'

I_CALLBACK_TOP_OF_PAGE = ' '

I_CALLBACK_HTML_TOP_OF_PAGE = ' '

I_CALLBACK_HTML_END_OF_LIST = ' '

I_STRUCTURE_NAME = ' '

I_BACKGROUND_ID = ' '

I_GRID_TITLE =

I_GRID_SETTINGS =

IS_LAYOUT =

IT_FIELDCAT = T_FCAT

IT_EXCLUDING =

IT_SPECIAL_GROUPS =

IT_SORT =

IT_FILTER =

IS_SEL_HIDE =

I_DEFAULT = 'X'

I_SAVE = ' '

IS_VARIANT =

IT_EVENTS = ‘ ’

IT_EVENT_EXIT =

IS_PRINT =

IS_REPREP_ID =

I_SCREEN_START_COLUMN = 0

I_SCREEN_START_LINE = 0

I_SCREEN_END_COLUMN = 0

I_SCREEN_END_LINE = 0

IT_ALV_GRAPHICS =

IT_HYPERLINK =

IT_ADD_FIELDCAT =

IT_EXCEPT_QINFO =

I_HTML_HEIGHT_TOP =

I_HTML_HEIGHT_END =

IMPORTING

E_EXIT_CAUSED_BY_CALLER =

ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = T_LFA1

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.

*******************1ST SECONDARY LIST*****************************************

*PERFORM UCOMM.

&----


*& Form ZUCOMM

&----


text

-


--> p1 text

<-- p2 text

-


FORM ZUCOMM

USING UCOMM1 LIKE SY-UCOMM

FIELDS TYPE SLIS_SELFIELD.

READ TABLE T_LFA1 INTO W_LFA1 INDEX FIELDS-TABINDEX.

SELECT EBELN

AEDAT

BUKRS

LIFNR

FROM EKKO

INTO TABLE T_EKKO

WHERE LIFNR = W_LFA1-LIFNR.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_INTERFACE_CHECK = ' '

I_BYPASSING_BUFFER = ' '

I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = SY-CPROG

I_CALLBACK_PF_STATUS_SET = ' '

I_CALLBACK_USER_COMMAND = ' '

I_CALLBACK_TOP_OF_PAGE = ' '

I_CALLBACK_HTML_TOP_OF_PAGE = ' '

I_CALLBACK_HTML_END_OF_LIST = ' '

I_STRUCTURE_NAME = ' '

I_BACKGROUND_ID = ' '

I_GRID_TITLE =

I_GRID_SETTINGS =

IS_LAYOUT =

IT_FIELDCAT = T_FCAT1

IT_EXCLUDING =

IT_SPECIAL_GROUPS =

IT_SORT =

IT_FILTER =

IS_SEL_HIDE =

I_DEFAULT = 'X'

I_SAVE = ' '

IS_VARIANT =

IT_EVENTS =

IT_EVENT_EXIT =

IS_PRINT =

IS_REPREP_ID =

I_SCREEN_START_COLUMN = 0

I_SCREEN_START_LINE = 0

I_SCREEN_END_COLUMN = 0

I_SCREEN_END_LINE = 0

IT_ALV_GRAPHICS =

IT_HYPERLINK =

IT_ADD_FIELDCAT =

IT_EXCEPT_QINFO =

I_HTML_HEIGHT_TOP =

I_HTML_HEIGHT_END =

IMPORTING

E_EXIT_CAUSED_BY_CALLER =

ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = T_EKKO

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.

ENDFORM. " ZUCOMM

check these threads...

http://www.sapgenie.com/abap/index.htm

http://www.sap-img.com/abap/display-secondary-list-using-alv-grid.htm

hope these help,

regards

Satish

Former Member
0 Kudos

I satisfied for all ur answered. Thanks alot.