10-14-2008 6:23 AM
Hi All,
I need information for How to get secondary list in ALV? Please explain the process with example?
Regards,
Ravindra
10-14-2008 6:28 AM
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
10-14-2008 6:28 AM
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
10-14-2008 6:29 AM
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
10-14-2008 6:31 AM
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
10-14-2008 6:32 AM
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
10-14-2008 6:43 AM