Skip to Content
0
Former Member
Nov 30, 2006 at 08:41 PM

alv interactive report for secondary list

354 Views

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