Hi All,
This is my code for ALV interactive report. Its working Properly for me when i select material number iam able to display the secondary list properly . if i sorted the basic list other than material number for ex . created date . iam uable to display correct secondary list . Can any one help me in this issue?
REPORT ZWRLOMDMM_PMG_PHWEB_PLD NO STANDARD PAGE HEADING
LINE-SIZE 120
LINE-COUNT 65
MESSAGE-ID 00.
----
TABLES *
----
TABLES: MARA , "General Material Data
ZWPBPH. " Published Product Hierarchy
----
----
TYPE-POOLS *
----
TYPE-POOLS:SLIS .
DATA:FIELDCATALOG_BASIC TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
FIELDCATALOG_SECONDARY TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
GD_TAB_GROUP TYPE SLIS_T_SP_GROUP_ALV,
GD_LAYOUT TYPE SLIS_LAYOUT_ALV,
GD_REPID LIKE SY-REPID.
----
INTERNAL TABLES *
----
*Internal Tables to Get Data.
*Internal Table For MARA Table.
DATA:BEGIN OF T_MARA OCCURS 0 ,
MATNR LIKE MARA-MATNR,
MTART LIKE MARA-MTART,
ERSDA LIKE MARA-ERSDA,
ERNAM LIKE MARA-ERNAM,
AENAM LIKE MARA-AENAM,
SPART LIKE MARA-SPART,
END OF T_MARA.
*Internal Table For ZWPBPH Table.
DATA:BEGIN OF T_ZWPBPH OCCURS 0 ,
PBPINO LIKE ZWPBPH-PBPINO,
PBPAPINO LIKE ZWPBPH-PBPAPINO,
END OF T_ZWPBPH.
*Internal Table For Basic List Field Catalog.
DATA:BEGIN OF T_ALV OCCURS 0 ,
MATNR LIKE MARA-MATNR,
MTART LIKE MARA-MTART,
ERSDA LIKE MARA-ERSDA,
ERNAM LIKE MARA-ERNAM,
SPART LIKE MARA-SPART,
SPART1(3),
END OF T_ALV.
*Internal Table For Secondary List Field Catalog.
DATA: BEGIN OF T_ALVS OCCURS 0 ,
MATNR LIKE MARA-MATNR,
AENAM LIKE MARA-AENAM,
LAEDA LIKE MARA-LAEDA,
END OF T_ALVS.
*Internal Table For Model
DATA:T_MODEL LIKE T_ZWPBPH OCCURS 0 WITH HEADER LINE.
*Internal Table For Product
DATA:T_PRODUCT LIKE T_ZWPBPH OCCURS 0 WITH HEADER LINE.
*Internal Table For Family
DATA:T_FAMILY LIKE T_ZWPBPH OCCURS 0 WITH HEADER LINE.
*Internal Table For Line
DATA:T_LINE LIKE T_ZWPBPH OCCURS 0 WITH HEADER LINE.
*Internal Table For Type
DATA:T_TYPE LIKE T_ZWPBPH OCCURS 0 WITH HEADER LINE.
----
SELECTION SCREEN *
----
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: P_MATN RADIOBUTTON GROUP R1 USER-COMMAND run default 'X'.
SELECT-OPTIONS: P_MATNR FOR MARA-MATNR MODIF ID SC1 .
PARAMETERS: P_DAT RADIOBUTTON GROUP R1 .
SELECT-OPTIONS: : P_DATE FOR MARA-LAEDA MODIF ID SC2.
PARAMETERS: P_DIV RADIOBUTTON GROUP R1 .
SELECT-OPTIONS: : P_DIVIS for mara-spart MODIF ID SC3.
SELECTION-SCREEN END OF BLOCK b1.
----
INITIALIZATION *
----
INITIALIZATION.
REFRESH: T_MARA,
T_ZWPBPH,
T_ALV,
T_ALVS,
T_MODEL,
T_PRODUCT,
T_FAMILY,
T_LINE,
T_TYPE.
CLEAR: T_MARA,
T_ZWPBPH,
T_ALV,
T_ALVS,
T_MODEL,
T_PRODUCT,
T_FAMILY,
T_LINE,
T_TYPE.
GD_REPID = SY-REPID.
----
*AT SELECTION-SCREEN OUTPUT.
----
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF P_MATN = 'X'.
FREE : P_DIVIS,P_DATE.
IF SCREEN-GROUP1 = 'SC2' or SCREEN-GROUP1 = 'SC3'.
SCREEN-INPUT = 0.
MODIFY SCREEN.
CONTINUE.
ENDIF .
ENDIF.
IF P_DAT = 'X'.
FREE : P_MATNR,P_DIVIS.
IF SCREEN-GROUP1 = 'SC1' or SCREEN-GROUP1 = 'SC3'.
SCREEN-INPUT = 0.
MODIFY SCREEN.
CONTINUE.
ENDIF .
ENDIF.
IF P_DIV = 'X'.
FREE : P_DATE,P_MATNR.
IF SCREEN-GROUP1 = 'SC1' or SCREEN-GROUP1 = 'SC2'.
SCREEN-INPUT = 0.
MODIFY SCREEN.
CONTINUE.
ENDIF .
ENDIF.
ENDLOOP.
----
START-OF-SELECTION *
----
START-OF-SELECTION.
PERFORM GET_FIELDCATALOG_BASIC.
PERFORM GET_FIELDCATALOG_SECONDARY.
PERFORM POPULATE_DATA.
----
END-OF-SELECTION *
----
END-OF-SELECTION.
&----
*& FORM GET_FIELDCATALOG_BASIC.
&----
*
Get Fieldcatalog For Basic List
FORM GET_FIELDCATALOG_BASIC.
FIELDCATALOG_BASIC-FIELDNAME = 'MATNR'.
FIELDCATALOG_BASIC-SELTEXT_M = 'Material Number'.
FIELDCATALOG_BASIC-COL_POS = 0.
FIELDCATALOG_BASIC-OUTPUTLEN = 20.
FIELDCATALOG_BASIC-HOTSPOT = 'X'.
FIELDCATALOG_BASIC-EMPHASIZE = 'X'.
FIELDCATALOG_BASIC-KEY = 'X'.
APPEND FIELDCATALOG_BASIC TO FIELDCATALOG_BASIC.
CLEAR FIELDCATALOG_BASIC.
FIELDCATALOG_BASIC-FIELDNAME = 'MTART'.
FIELDCATALOG_BASIC-SELTEXT_M = 'Material Type'.
FIELDCATALOG_BASIC-COL_POS = 0.
FIELDCATALOG_BASIC-OUTPUTLEN = 20.
FIELDCATALOG_BASIC-EMPHASIZE = 'X'.
FIELDCATALOG_BASIC-KEY = 'X'.
APPEND FIELDCATALOG_BASIC TO FIELDCATALOG_BASIC.
CLEAR FIELDCATALOG_BASIC.
FIELDCATALOG_BASIC-FIELDNAME = 'ERSDA'.
FIELDCATALOG_BASIC-SELTEXT_M = 'Created Date'.
FIELDCATALOG_BASIC-COL_POS = 0.
FIELDCATALOG_BASIC-OUTPUTLEN = 12.
FIELDCATALOG_BASIC-EMPHASIZE = 'X'.
FIELDCATALOG_BASIC-KEY = 'X'.
APPEND FIELDCATALOG_BASIC TO FIELDCATALOG_BASIC.
CLEAR FIELDCATALOG_BASIC.
FIELDCATALOG_BASIC-FIELDNAME = 'ERNAM'.
FIELDCATALOG_BASIC-SELTEXT_M = 'Created By'.
FIELDCATALOG_BASIC-COL_POS = 0.
FIELDCATALOG_BASIC-OUTPUTLEN = 15.
FIELDCATALOG_BASIC-EMPHASIZE = 'X'.
FIELDCATALOG_BASIC-KEY = 'X'.
APPEND FIELDCATALOG_BASIC TO FIELDCATALOG_BASIC.
CLEAR FIELDCATALOG_BASIC.
FIELDCATALOG_BASIC-FIELDNAME = 'SPART'.
FIELDCATALOG_BASIC-SELTEXT_M = 'Division PMG'.
FIELDCATALOG_BASIC-COL_POS = 0.
FIELDCATALOG_BASIC-OUTPUTLEN = 14.
FIELDCATALOG_BASIC-EMPHASIZE = 'X'.
FIELDCATALOG_BASIC-KEY = 'X'.
APPEND FIELDCATALOG_BASIC TO FIELDCATALOG_BASIC.
CLEAR FIELDCATALOG_BASIC.
FIELDCATALOG_BASIC-FIELDNAME = 'SPART1'.
FIELDCATALOG_BASIC-SELTEXT_M = 'Division PhWEB'.
FIELDCATALOG_BASIC-COL_POS = 0.
FIELDCATALOG_BASIC-OUTPUTLEN = 14.
FIELDCATALOG_BASIC-EMPHASIZE = 'X'.
FIELDCATALOG_BASIC-KEY = 'X'.
APPEND FIELDCATALOG_BASIC TO FIELDCATALOG_BASIC.
CLEAR FIELDCATALOG_BASIC.
ENDFORM. "GET_FIELDCATALOG_BASIC
&----
*& FORM GET_FIELDCATALOG_SECONDARY
&----
*
Get Fieldcatalog For Secondary List
FORM GET_FIELDCATALOG_SECONDARY.
FIELDCATALOG_SECONDARY-FIELDNAME = 'MATNR'.
FIELDCATALOG_SECONDARY-SELTEXT_M = 'Material Number'.
FIELDCATALOG_SECONDARY-COL_POS = 0.
FIELDCATALOG_SECONDARY-OUTPUTLEN = 20.
FIELDCATALOG_SECONDARY-EMPHASIZE = 'X'.
FIELDCATALOG_SECONDARY-KEY = 'X'.
APPEND FIELDCATALOG_SECONDARY TO FIELDCATALOG_SECONDARY.
CLEAR FIELDCATALOG_SECONDARY.
FIELDCATALOG_SECONDARY-FIELDNAME = 'AENAM'.
FIELDCATALOG_SECONDARY-SELTEXT_M = 'Changed By'.
FIELDCATALOG_SECONDARY-COL_POS = 0.
FIELDCATALOG_SECONDARY-OUTPUTLEN = 20.
FIELDCATALOG_SECONDARY-EMPHASIZE = 'X'.
FIELDCATALOG_SECONDARY-KEY = 'X'.
APPEND FIELDCATALOG_SECONDARY TO FIELDCATALOG_SECONDARY.
CLEAR FIELDCATALOG_SECONDARY.
FIELDCATALOG_SECONDARY-FIELDNAME = 'LAEDA'.
FIELDCATALOG_SECONDARY-SELTEXT_M = 'Changed ON'.
FIELDCATALOG_SECONDARY-COL_POS = 0.
FIELDCATALOG_SECONDARY-OUTPUTLEN = 20.
FIELDCATALOG_SECONDARY-EMPHASIZE = 'X'.
FIELDCATALOG_SECONDARY-KEY = 'X'.
APPEND FIELDCATALOG_SECONDARY TO FIELDCATALOG_SECONDARY.
CLEAR FIELDCATALOG_SECONDARY.
ENDFORM. "GET_FIELDCATALOG_SECONDARY
&----
*& FORM POPULATE_DATA
&----
FORM POPULATE_DATA.
*Get Data From MARA And ZWPBPH Tables
IF P_MATN = 'X'.
SELECT MATNR MTART ERSDA ERNAM AENAM SPART FROM MARA INTO TABLE T_MARA
where MATNR IN P_MATNR .
IF SY-SUBRC <> 0.
MESSAGE E001(0) WITH 'Invalid Material Number'.
ENDIF.
ELSEIF P_DAT = 'X'.
SELECT MATNR MTART ERSDA ERNAM AENAM SPART FROM MARA INTO TABLE T_MARA
where LAEDA IN P_DATE .
IF SY-SUBRC <> 0.
MESSAGE E001(0) WITH 'Invalid Date Range'.
ENDIF.
ELSEIF P_DIV = 'X'.
SELECT MATNR MTART ERSDA ERNAM AENAM SPART FROM MARA INTO TABLE T_MARA
where SPART IN P_DIVIS .
IF SY-SUBRC <> 0.
MESSAGE E001(0) WITH 'Invalid Division'.
ENDIF.
ELSEIF P_MATN = ' ' AND P_DAT = ' ' AND P_DIV = ' '.
SELECT MATNR MTART ERSDA ERNAM AENAM SPART FROM MARA INTO TABLE T_MARA.
ENDIF.
DELETE ADJACENT DUPLICATES FROM T_MARA COMPARING MATNR.
SORT T_MARA BY MATNR.
IF T_MARA[] IS NOT INITIAL .
SELECT PBPINO PBPAPINO FROM ZWPBPH INTO TABLE T_ZWPBPH FOR ALL ENTRIES
IN T_MARA WHERE PBPINO = T_MARA-MATNR.
ENDIF.
IF SY-SUBRC = 0.
LOOP AT T_ZWPBPH.
SELECT SINGLE PBPINO PBPAPINO FROM ZWPBPH INTO T_MODEL WHERE
PBPINO = T_ZWPBPH-PBPAPINO.
IF SY-SUBRC = 0.
SELECT SINGLE PBPINO PBPAPINO FROM ZWPBPH INTO T_PRODUCT WHERE
PBPINO
= T_MODEL-PBPAPINO.
ENDIF.
IF SY-SUBRC = 0.
SELECT SINGLE PBPINO PBPAPINO FROM ZWPBPH INTO T_FAMILY WHERE
PBPINO = T_PRODUCT-PBPAPINO.
ENDIF.
IF SY-SUBRC = 0.
SELECT SINGLE PBPINO PBPAPINO FROM ZWPBPH INTO T_LINE WHERE
PBPINO = T_FAMILY-PBPAPINO.
ENDIF.
IF SY-SUBRC = 0.
SELECT SINGLE PBPINO PBPAPINO FROM ZWPBPH INTO T_TYPE WHERE PBPINO
= T_LINE-PBPAPINO.
ENDIF.
IF SY-SUBRC = 0.
SELECT SINGLE MTART ERSDA ERNAM SPART FROM MARA INTO CORRESPONDING
FIELDS OF T_ALV WHERE MATNR = T_ZWPBPH-PBPINO AND SPART <>
T_TYPE-PBPAPINO+1(2).
ENDIF.
IF SY-SUBRC = 0.
MOVE T_ZWPBPH-PBPINO TO T_ALV-MATNR.
MOVE T_TYPE-PBPAPINO+1(2) TO T_ALV-SPART1.
APPEND T_ALV.
SELECT SINGLE MATNR AENAM LAEDA FROM MARA INTO CORRESPONDING
FIELDS OF T_ALVS WHERE MATNR = T_ZWPBPH-PBPINO.
APPEND T_ALVS.
CLEAR T_ALVS.
ENDIF.
ENDLOOP.
ENDIF.
SORT T_ALV BY MATNR.
SORT T_ALVS BY MATNR.
call function 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = GD_REPID
i_callback_user_command = 'DISPLAY_DETAIL'
it_fieldcat = FIELDCATALOG_BASIC[]
i_save = 'X'
TABLES
t_outtab = T_ALV
EXCEPTIONS
program_error = 1
others = 2.
ENDFORM. "POPULATE_DATA
&----
*& Form DISPLAY_DETAIL
&----
text
----
-->UCOMM text
-->SELFIELD text
----
FORM DISPLAY_DETAIL USING UCOMM LIKE SY-UCOMM
SELFIELD TYPE SLIS_SELFIELD.
Select Material Number For Secondary List
DATA: T_ALV_TEMP LIKE T_ALVS OCCURS 0 WITH HEADER LINE.
IF UCOMM = '&IC1'.
READ TABLE T_ALVS INDEX SELFIELD-TABINDEX.
IF SY-SUBRC = 0.
MOVE T_ALVS TO T_ALV_TEMP.
APPEND T_ALV_TEMP.
ENDIF.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = GD_REPID
it_fieldcat = FIELDCATALOG_SECONDARY[]
TABLES
t_outtab = T_ALV_TEMP.
ENDIF.
ENDFORM. "DISPLAY_DETAIL