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: 

I want to create dynamic ALV report

Former Member
0 Kudos

Hi great abapers,

I want to create dynamic ALV report.Please help me.

Regards,

Billa

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi,

Please check the code below:

REPORT YMMR_PALLET_OVERVIEW MESSAGE-ID Y_MESSAGE_0001.

  • Short description:

  • To Display and sum up the Quantity of scanned materials on pallet for*

  • each Shipment number for the Packaging Materials. *

TYPE-POOLS : SLIS.

TABLES: YYLE0003. " Scanned SSCC No.

--


Structure Declaration--

  • Structure for Shipment No. and Date.

TYPES : BEGIN OF T_VTTK_TAB ,

TKNUM LIKE VTTK-TKNUM, " Shipment number

ERDAT LIKE VTTK-ERDAT, " created Date

END OF T_VTTK_TAB .

  • Structure for Shipment No., Packaging Materials and Date.

TYPES: BEGIN OF T_ITAB2,

TKNUM LIKE YYLE0003-TKNUM, " Shipment number

VHILM LIKE YYLE0003-VHILM, " Packaging Materials

QUANTITY TYPE P,

ERDAT LIKE YYLE0003-ERDAT, " created Date

COUNT TYPE I,

END OF T_ITAB2.

  • Structure for Shipment No. and Packaging Materials.

TYPES: BEGIN OF T_ITAB3,

TKNUM LIKE YYLE0003-TKNUM, " Shipment number

VHILM LIKE YYLE0003-VHILM, " Packaging Materials

QUANTITY TYPE P, " Quantity

END OF T_ITAB3.

--


Internal table Declaration--

*Internal tables for the above Declared structures

DATA: G_VTTK_TAB TYPE TABLE OF T_VTTK_TAB,

G_ITAB5_TAB TYPE TABLE OF T_ITAB2,

G_ITAB4_TAB TYPE TABLE OF T_ITAB3,

G_ITAB3_TAB TYPE TABLE OF T_ITAB2. "#EC NEEDED

*Internal table Holding Shipment No.and quantity

DATA: BEGIN OF G_TOTAL_TAB OCCURS 0 ,

TKNUM TYPE YYLE0003-TKNUM, " Shipment number

QUANTITY TYPE P,

COUNT TYPE I,

END OF G_TOTAL_TAB .

*Internal table for selection screen data

DATA: BEGIN OF G_SCANDATA_TAB OCCURS 0,

VHILM LIKE YYLE0003-VHILM, " Packaging Materials

EXIDV TYPE EXIDV, " External Handling Unit

TKNUM LIKE YYLE0003-TKNUM, " Shipment number

QUANTITY LIKE YYLE0003-QUANTITY, " Quantity

END OF G_SCANDATA_TAB.

DATA: BEGIN OF ST_SCANDATA_TAB,

VHILM LIKE YYLE0003-VHILM, " Packaging Materials

EXIDV TYPE EXIDV, " External Handling Unit

TKNUM LIKE YYLE0003-TKNUM, " Shipment number

QUANTITY LIKE YYLE0003-QUANTITY, " Quantity

END OF ST_SCANDATA_TAB.

DATA: BEGIN OF G_SCANDATA_COUNT_TAB OCCURS 0,

VHILM LIKE YYLE0003-VHILM, " Packaging Materials

TKNUM LIKE YYLE0003-TKNUM, " Shipment number

QUANTITY LIKE YYLE0003-QUANTITY, " Quantity

COUNT TYPE I,

END OF G_SCANDATA_COUNT_TAB.

DATA: L_COUNT TYPE I.

*Internal table for Packaging Materials and quantity

DATA: BEGIN OF G_ITAB6_TAB OCCURS 0,

VHILM LIKE YYLE0003-VHILM, " Packaging Materials

QUANTITY TYPE P, " Quantity

END OF G_ITAB6_TAB.

*- Field catalog

DATA: L_ALV_CAT1_TAB TYPE TABLE OF LVC_S_FCAT.

--


Work area Declaration--

DATA: WA_VTTK TYPE T_VTTK_TAB,

WA_ITAB3 TYPE T_ITAB2,

WA_ITAB5 TYPE T_ITAB2,

WA_ITAB4 TYPE T_ITAB3,

WA_ITAB1 LIKE G_SCANDATA_TAB,

WA_ALV_CAT1 LIKE LINE OF L_ALV_CAT1_TAB.

----


Variable Defnition -

DATA: G_CUSTOM_CONTAINER_0100 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,

G_ALV_GRID_0100 TYPE REF TO CL_GUI_ALV_GRID,

G_CONTAINER_0100 TYPE SCRFNAME VALUE 'LIST',

G_MYLAYOUT TYPE LVC_S_LAYO, "#EC NEEDED

G_WA TYPE REF TO DATA.

DATA: G_VAR TYPE I, " No of records

G_VAR1 TYPE CHAR20. " Variable

--


field symbols Declaration--

FIELD-SYMBOLS : <F_FS> TYPE TABLE,

<F_FS3> TYPE ANY,

<F_FS4> TYPE ANY,

<F_FS5> TYPE ANY,

<F_WA> TYPE ANY,

<F_FS15> TYPE ANY,

<F_FS16> TYPE SY-DATUM,

<F_FS2> TYPE T_ITAB2,

<F_FS6> TYPE ANY,

<F_FS7> TYPE ANY,

<F_FS12> TYPE ANY,

<F_FS13> TYPE ANY.

--


Selection Parameters--

SELECTION-SCREEN: BEGIN OF BLOCK BLCK01 WITH FRAME TITLE TEXT-000.

"Select options

SELECT-OPTIONS :

S_TKNUM FOR YYLE0003-TKNUM , " Shipment number

S_YYREF FOR YYLE0003-YY_REFERENCE, " Packing reference

S_YYREFT FOR YYLE0003-YY_REFTP, " Reference type

S_EXIDV FOR YYLE0003-EXIDV, " External HU

S_MATNR FOR YYLE0003-MATNR, " Material number

S_VBELN FOR YYLE0003-VBELN, " SD number

S_POSNR FOR YYLE0003-POSNR, " Item number

S_LGTOR FOR YYLE0003-LGTOR, " Door for Wr Hs No

S_VHILM FOR YYLE0003-VHILM, " Packaging Mat

S_YYMEIN FOR YYLE0003-YY_MEINH, " Indicator for UOM

S_QUANTI FOR YYLE0003-QUANTITY, " Quantity

S_YCHECK FOR YYLE0003-YYCHECKED, " Destination_door

S_STATUS FOR YYLE0003-STATUS, " Packing status

S_STASHI FOR YYLE0003-STATUSSHIPTO, " Status on ship-to

S_LOADTR FOR YYLE0003-LOADTRUCK, " Load truck

S_ERDAT FOR YYLE0003-ERDAT , " Date

S_ERZET FOR YYLE0003-ERZET, " Entry time

S_AEDAT FOR YYLE0003-AEDAT, " Last changed on

S_ERNAM FOR YYLE0003-ERNAM, " Name of Person

S_AEZET FOR YYLE0003-AEZET, " Time last change

S_AENAM FOR YYLE0003-AENAM. " Name of person

SELECTION-SCREEN: END OF BLOCK BLCK01.

--


INITIALIZATION--

INITIALIZATION.

  • Clear the variables and workarea

CLEAR :G_VAR,

G_VAR1,

WA_VTTK,

WA_ITAB3,

WA_ITAB5,

WA_ITAB4,

WA_ITAB1,

WA_VTTK,

WA_ITAB3,

WA_ITAB5,

WA_ITAB4,

WA_ITAB1.

--


AT SELECTION-SCREEN--

AT SELECTION-SCREEN.

  • To validate the data entered in selection screen

PERFORM SUB_VALIDATE.

--


START-OF-SELECTION--

START-OF-SELECTION.

*To fetch the data from table yyle0003

PERFORM GET_INPUT_DATA.

*To create the Dynamic Field Catalog

PERFORM GET_FIELDCAT.

  • To populate the data to final table

PERFORM GET_FINAL_DATA.

----


  • MODULE status_0100 OUTPUT *

----


  • .... *

----


MODULE STATUS_0100 OUTPUT.

*set title bar and PF status.

SET PF-STATUS 'ZVKS'.

SET TITLEBAR 'ZVKS'.

CHECK SY-UCOMM IS INITIAL.

SORT G_SCANDATA_TAB BY TKNUM VHILM.

*Create object for Custom container

CREATE OBJECT G_CUSTOM_CONTAINER_0100

EXPORTING

CONTAINER_NAME = G_CONTAINER_0100

EXCEPTIONS

CNTL_ERROR = 1

CNTL_SYSTEM_ERROR = 2

CREATE_ERROR = 3

LIFETIME_ERROR = 4

LIFETIME_DYNPRO_DYNPRO_LINK = 5.

*Create object for ALV grid

CREATE OBJECT G_ALV_GRID_0100

EXPORTING I_PARENT = G_CUSTOM_CONTAINER_0100.

  • G_MYLAYOUT-GRID_TITLE = 'Display Scanning data'.

*Call method for table Display

CALL METHOD G_ALV_GRID_0100->SET_TABLE_FOR_FIRST_DISPLAY

CHANGING

IT_OUTTAB = <F_FS>

IT_FIELDCATALOG = L_ALV_CAT1_TAB

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.

ENDMODULE. " STATUS_0100 OUTPUT

&----


*& Module USER_COMMAND_0100 INPUT

&----


  • User Interaction

----


MODULE USER_COMMAND_0100 INPUT.

  • CALL METHOD CL_GUI_CFW=>DISPATCH.

*To exit , back or cancel

CASE SY-UCOMM.

WHEN 'EXIT'.

LEAVE TO SCREEN 0.

WHEN 'BACK'.

LEAVE TO SCREEN 0.

WHEN 'CANCEL'.

LEAVE PROGRAM.

WHEN OTHERS.

ENDCASE.

ENDMODULE. " USER_COMMAND_0100 INPUT

&----


*& Form get_input_data

&----


  • This sub routine will get the data from yyle0003 table.

&----


FORM GET_INPUT_DATA.

CONSTANTS: C_DOT TYPE C VALUE '.',

C_CHAR TYPE C VALUE 'D'.

CLEAR G_SCANDATA_TAB.

  • Get the data from yyle0003

SELECT VHILM " Packaging Materials

EXIDV " External Handling Unit

TKNUM " Shipment number

QUANTITY " Quantity

FROM YYLE0003

INTO TABLE G_SCANDATA_TAB

WHERE TKNUM IN S_TKNUM " Shipment number

AND YY_REFERENCE IN S_YYREF " Packing reference

AND YY_REFTP IN S_YYREFT " Reference type

AND EXIDV IN S_EXIDV " External Handling Unit

AND MATNR IN S_MATNR " Material number

AND VBELN IN S_VBELN " SD number

AND POSNR IN S_POSNR " Item number

AND LGTOR IN S_LGTOR " Door for warehouse No

AND VHILM IN S_VHILM " Packaging Materials

AND YY_MEINH IN S_YYMEIN " Indicator for UOM

AND QUANTITY IN S_QUANTI " Quantity

AND YYCHECKED IN S_YCHECK " Destination_door

AND STATUS IN S_STATUS " Packing status

AND STATUSSHIPTO IN S_STASHI " Status on ship-to

AND LOADTRUCK IN S_LOADTR " Load truck

AND ERDAT IN S_ERDAT " Date

AND ERZET IN S_ERZET " Entry time

AND AEDAT IN S_AEDAT " Last changed on

AND ERNAM IN S_ERNAM " Name of Person

AND AEZET IN S_AEZET " Time last change

AND AENAM IN S_AENAM. " Name of person

  • If VHILM contains any Decimal '.', replace it with D

LOOP AT G_SCANDATA_TAB.

REPLACE C_DOT WITH C_CHAR INTO G_SCANDATA_TAB-VHILM.

IF SY-SUBRC = 0.

MODIFY G_SCANDATA_TAB TRANSPORTING VHILM.

ENDIF.

CLEAR G_SCANDATA_TAB.

ENDLOOP.

*To get the Shipment No Creation date from VTTK.

SELECT TKNUM

ERDAT

FROM VTTK

INTO TABLE G_VTTK_TAB

WHERE TKNUM IN S_TKNUM.

SORT G_SCANDATA_TAB BY VHILM EXIDV. "TKNUM VHILM.

*To get the repeatition of Pacakaging material for each Shipment.

*--- to find the count of packaging materials under each shipment

LOOP AT G_SCANDATA_TAB.

READ TABLE G_SCANDATA_TAB INTO ST_SCANDATA_TAB INDEX SY-TABIX.

AT END OF EXIDV.

L_COUNT = L_COUNT + 1.

MOVE-CORRESPONDING ST_SCANDATA_TAB TO G_SCANDATA_COUNT_TAB.

G_SCANDATA_COUNT_TAB-COUNT = L_COUNT.

CLEAR: ST_SCANDATA_TAB, L_COUNT.

COLLECT G_SCANDATA_COUNT_TAB.

ENDAT.

CLEAR : G_SCANDATA_TAB.

ENDLOOP.

ENDFORM. " get_input_data

&----


*& Form sub_validate

&----


*This subroutine will validate the data eneterd in the selection screen

&----


FORM SUB_VALIDATE.

*Varaiable declaration for Shipment number

DATA: L_TKNUM TYPE YYLE0003-TKNUM."#EC NEEDED " Shipment number

*- Condition will not qualify all primary key (IDENT)

SELECT TKNUM FROM YYLE0003 UP TO 1 ROWS

INTO L_TKNUM "wa_scandata

WHERE TKNUM IN S_TKNUM " Shipment number

AND YY_REFERENCE IN S_YYREF " Packing reference

AND YY_REFTP IN S_YYREFT " Reference type

AND EXIDV IN S_EXIDV " External Handling Unit

AND MATNR IN S_MATNR " Material number

AND VBELN IN S_VBELN " SD number

AND POSNR IN S_POSNR " Item number

AND LGTOR IN S_LGTOR " Door for warehouse No

AND VHILM IN S_VHILM " Packaging Materials

AND YY_MEINH IN S_YYMEIN " Indicator for UOM

AND QUANTITY IN S_QUANTI " Quantity

AND YYCHECKED IN S_YCHECK " Destination_door

AND STATUS IN S_STATUS " Packing status

AND STATUSSHIPTO IN S_STASHI " Status on ship-to

AND LOADTRUCK IN S_LOADTR " Load truck

AND ERDAT IN S_ERDAT " Date

AND ERZET IN S_ERZET " Entry time

AND AEDAT IN S_AEDAT " Last changed on

AND ERNAM IN S_ERNAM " Name of Person

AND AEZET IN S_AEZET " Time last change

AND AENAM IN S_AENAM. " Name of person

ENDSELECT.

IF SY-SUBRC <> 0.

MESSAGE E987 . " No data found for these selection criterias

ENDIF.

ENDFORM. " sub_validate

&----


*& Form get_fieldcat

&----


  • Preparing Field catalog

FORM GET_FIELDCAT.

DATA: L_REF TYPE REF TO DATA,

L_I TYPE I. " Variable

CONSTANTS: C_CENTER TYPE C VALUE 'C'. " Center Justified

LOOP AT G_SCANDATA_TAB INTO WA_ITAB1.

MOVE-CORRESPONDING WA_ITAB1 TO WA_ITAB3.

APPEND WA_ITAB3 TO G_ITAB3_TAB.

MOVE-CORRESPONDING WA_ITAB1 TO WA_ITAB4.

COLLECT WA_ITAB4 INTO G_ITAB4_TAB.

*To sum up the qunatity field for each TKNUM.

AT END OF TKNUM.

SUM.

MOVE WA_ITAB1-TKNUM TO G_TOTAL_TAB-TKNUM.

MOVE WA_ITAB1-QUANTITY TO G_TOTAL_TAB-QUANTITY .

APPEND G_TOTAL_TAB.

CLEAR G_TOTAL_TAB.

ENDAT.

CLEAR : WA_ITAB1,

WA_ITAB3,

WA_ITAB4.

ENDLOOP.

*--- Begin of change - SKR.EXT - EBDK986377

SORT G_ITAB4_TAB BY TKNUM.

*--- End of change - SKR.EXT - EBDK986377

LOOP AT G_ITAB4_TAB INTO WA_ITAB4.

MOVE-CORRESPONDING WA_ITAB4 TO WA_ITAB5.

MOVE-CORRESPONDING WA_ITAB4 TO G_ITAB6_TAB.

*---- to get the count

READ TABLE G_SCANDATA_COUNT_TAB WITH KEY TKNUM = WA_ITAB5-TKNUM

VHILM = WA_ITAB5-VHILM.

IF SY-SUBRC EQ 0.

WA_ITAB5-COUNT = G_SCANDATA_COUNT_TAB-COUNT.

ENDIF.

APPEND WA_ITAB5 TO G_ITAB5_TAB.

COLLECT G_ITAB6_TAB.

ENDLOOP.

CLEAR : WA_ITAB3.

SORT G_ITAB4_TAB BY TKNUM VHILM.

DELETE ADJACENT DUPLICATES FROM G_ITAB4_TAB COMPARING VHILM.

*To get the Number of fields to be displayed

DESCRIBE TABLE G_ITAB4_TAB LINES G_VAR.

L_I = '3'.

*Field catalog

WA_ALV_CAT1-FIELDNAME = 'TKNUM'(002).

WA_ALV_CAT1-COL_POS = 1.

WA_ALV_CAT1-COLTEXT ='ShipmentNo.'.

APPEND WA_ALV_CAT1 TO L_ALV_CAT1_TAB.

CLEAR : WA_ALV_CAT1.

WA_ALV_CAT1-FIELDNAME = 'ERDAT'(003).

WA_ALV_CAT1-COL_POS = 2.

WA_ALV_CAT1-COLTEXT ='Creation_Date.'(005).

APPEND WA_ALV_CAT1 TO L_ALV_CAT1_TAB.

CLEAR : WA_ALV_CAT1.

  • Create field catalog for each of VHILM

LOOP AT G_ITAB4_TAB INTO WA_ITAB4.

IF G_VAR >= 1.

CONDENSE WA_ITAB4-VHILM NO-GAPS.

WA_ALV_CAT1-FIELDNAME = WA_ITAB4-VHILM. "l_fieldname.

WA_ALV_CAT1-COL_POS = L_I.

WA_ALV_CAT1-COLTEXT = WA_ITAB4-VHILM.

WA_ALV_CAT1-JUST = C_CENTER. "'C'.

APPEND WA_ALV_CAT1 TO L_ALV_CAT1_TAB.

CLEAR WA_ALV_CAT1.

L_I = L_I + 1.

ENDIF.

*TOTAL-last column in the field catalog

AT LAST.

WA_ALV_CAT1-FIELDNAME = 'TOTAL'(004).

WA_ALV_CAT1-COL_POS = L_I.

WA_ALV_CAT1-COLTEXT = 'TOTAL'(004).

WA_ALV_CAT1-JUST = C_CENTER. " 'C'.

APPEND WA_ALV_CAT1 TO L_ALV_CAT1_TAB.

CLEAR WA_ALV_CAT1.

ENDAT.

SORT L_ALV_CAT1_TAB BY FIELDNAME.

*Non of the field name should not get repeated

DELETE ADJACENT DUPLICATES FROM L_ALV_CAT1_TAB.

ENDLOOP.

SORT L_ALV_CAT1_TAB BY COL_POS.

*Creating Dynamic Internal table

CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE

EXPORTING

IT_FIELDCATALOG = L_ALV_CAT1_TAB

IMPORTING

EP_TABLE = L_REF.

  • Assigning the Dynamic field Catalog to field symbol.

ASSIGN L_REF->* TO <F_FS>.

CREATE DATA G_WA LIKE LINE OF <F_FS>.

ASSIGN G_WA->* TO <F_WA>.

DELETE ADJACENT DUPLICATES FROM <F_FS> COMPARING ALL FIELDS.

ENDFORM. " get_fieldcat

&----


*& Form display_data

&----


FORM GET_FINAL_DATA.

*variable declaration

DATA: L_TOTAL TYPE I, " Row wise total

L_FILL TYPE I, " Count

L_TOT TYPE I. " Grand total

*To get the TOTAL qunatity in the last line of out put.

LOOP AT G_ITAB6_TAB.

CLEAR WA_ITAB5.

WA_ITAB5-TKNUM = 'TOTAL'(004).

WA_ITAB5-ERDAT = SPACE.

MOVE-CORRESPONDING G_ITAB6_TAB TO WA_ITAB5 .

LOOP AT G_SCANDATA_COUNT_TAB WHERE VHILM = G_ITAB6_TAB-VHILM.

WA_ITAB5-COUNT = WA_ITAB5-COUNT + G_SCANDATA_COUNT_TAB-COUNT.

ENDLOOP.

APPEND WA_ITAB5 TO G_ITAB5_TAB.

CLEAR WA_ITAB5.

ENDLOOP.

DESCRIBE TABLE G_ITAB5_TAB LINES L_TOT.

*>>>>>>>>

****To get total qunatity of all TKNUM

      • LOOP AT G_TOTAL_TAB .

      • L_TOTAL = L_TOTAL + G_TOTAL_TAB-QUANTITY.

      • ENDLOOP.

*>>>>>>>>

*To assign ERDAT to g_itab5_tab

LOOP AT G_ITAB5_TAB INTO WA_ITAB5 .

READ TABLE G_VTTK_TAB INTO WA_VTTK WITH KEY TKNUM = WA_ITAB5-TKNUM.

IF SY-SUBRC = 0.

WA_ITAB5-ERDAT = WA_VTTK-ERDAT.

MODIFY G_ITAB5_TAB FROM WA_ITAB5 TRANSPORTING ERDAT.

ENDIF.

ENDLOOP.

*Assigning value in each field to respective Field symbols.

LOOP AT G_ITAB5_TAB ASSIGNING <F_FS2>.

CLEAR G_TOTAL_TAB-QUANTITY.

ASSIGN COMPONENT 'TKNUM' OF STRUCTURE <F_FS2> TO <F_FS6>.

ASSIGN COMPONENT 'TKNUM' OF STRUCTURE <F_WA> TO <F_FS7>.

<F_FS7> = <F_FS6>.

CONDENSE <F_FS2>-VHILM NO-GAPS.

ASSIGN COMPONENT 'VHILM' OF STRUCTURE <F_FS2> TO <F_FS3>.

ASSIGN COMPONENT 5 OF STRUCTURE <F_FS2> TO <F_FS4>.

MOVE <F_FS3> TO G_VAR1.

ASSIGN COMPONENT G_VAR1 OF STRUCTURE <F_WA> TO <F_FS5>.

<F_FS5> = <F_FS4>.

ASSIGN COMPONENT 'ERDAT' OF STRUCTURE <F_FS2> TO <F_FS16>.

ASSIGN COMPONENT 'ERDAT' OF STRUCTURE <F_WA> TO <F_FS15>.

WRITE <F_FS16> TO <F_FS15> .

  • Inorder not to display the date '00/00/000',

  • if there is no DATE .

IF ( <F_FS15> CP '00/*' )

OR ( <F_FS15> CP '00.*' )

OR ( <F_FS15> CP '00-*' ).

<F_FS15> = SPACE.

ELSEIF ( <F_FS15> CO ' / /' )

OR ( <F_FS15> CO ' . .' )

OR ( <F_FS15> CO ' - -' ) .

<F_FS15> = SPACE.

ENDIF.

READ TABLE G_TOTAL_TAB WITH KEY TKNUM = <F_FS6>.

IF SY-SUBRC = 0.

  • ASSIGN G_TOTAL_TAB-QUANTITY TO <F_FS12>.

ASSIGN COMPONENT 'COUNT' OF STRUCTURE <F_FS2> TO <F_FS12>.

ASSIGN COMPONENT 'TOTAL' OF STRUCTURE <F_WA> TO <F_FS13>.

<F_FS13> = <F_FS13> + <F_FS12>.

L_TOTAL = L_TOTAL + <F_FS12>.

ENDIF.

L_FILL = L_FILL + 1.

IF L_FILL = L_TOT.

ASSIGN L_TOTAL TO <F_FS12>.

ASSIGN COMPONENT 'TOTAL' OF STRUCTURE <F_WA> TO <F_FS13>.

<F_FS13> = <F_FS12>.

ENDIF.

AT END OF <F_FS2>-TKNUM.

APPEND <F_WA> TO <F_FS>.

CLEAR <F_WA>.

ENDAT.

ENDLOOP.

CLEAR: <F_FS6>,

<F_FS7>,

<F_WA>.

*Call the screen where Custom container is defined

CALL SCREEN 0100.

ENDFORM. " display_data

Regards

Kannaiah

2 REPLIES 2

Former Member
0 Kudos

hi,

if u want to make a dynamic report( to enable selection-screen fields)

to get the selection screen information on the report-----

The prerequisite for this is to set the field get_selinfos of the importing structure

i_layout i,e layout.

rewrd if useful

rgds

umakanth

Former Member
0 Kudos

Hi,

Please check the code below:

REPORT YMMR_PALLET_OVERVIEW MESSAGE-ID Y_MESSAGE_0001.

  • Short description:

  • To Display and sum up the Quantity of scanned materials on pallet for*

  • each Shipment number for the Packaging Materials. *

TYPE-POOLS : SLIS.

TABLES: YYLE0003. " Scanned SSCC No.

--


Structure Declaration--

  • Structure for Shipment No. and Date.

TYPES : BEGIN OF T_VTTK_TAB ,

TKNUM LIKE VTTK-TKNUM, " Shipment number

ERDAT LIKE VTTK-ERDAT, " created Date

END OF T_VTTK_TAB .

  • Structure for Shipment No., Packaging Materials and Date.

TYPES: BEGIN OF T_ITAB2,

TKNUM LIKE YYLE0003-TKNUM, " Shipment number

VHILM LIKE YYLE0003-VHILM, " Packaging Materials

QUANTITY TYPE P,

ERDAT LIKE YYLE0003-ERDAT, " created Date

COUNT TYPE I,

END OF T_ITAB2.

  • Structure for Shipment No. and Packaging Materials.

TYPES: BEGIN OF T_ITAB3,

TKNUM LIKE YYLE0003-TKNUM, " Shipment number

VHILM LIKE YYLE0003-VHILM, " Packaging Materials

QUANTITY TYPE P, " Quantity

END OF T_ITAB3.

--


Internal table Declaration--

*Internal tables for the above Declared structures

DATA: G_VTTK_TAB TYPE TABLE OF T_VTTK_TAB,

G_ITAB5_TAB TYPE TABLE OF T_ITAB2,

G_ITAB4_TAB TYPE TABLE OF T_ITAB3,

G_ITAB3_TAB TYPE TABLE OF T_ITAB2. "#EC NEEDED

*Internal table Holding Shipment No.and quantity

DATA: BEGIN OF G_TOTAL_TAB OCCURS 0 ,

TKNUM TYPE YYLE0003-TKNUM, " Shipment number

QUANTITY TYPE P,

COUNT TYPE I,

END OF G_TOTAL_TAB .

*Internal table for selection screen data

DATA: BEGIN OF G_SCANDATA_TAB OCCURS 0,

VHILM LIKE YYLE0003-VHILM, " Packaging Materials

EXIDV TYPE EXIDV, " External Handling Unit

TKNUM LIKE YYLE0003-TKNUM, " Shipment number

QUANTITY LIKE YYLE0003-QUANTITY, " Quantity

END OF G_SCANDATA_TAB.

DATA: BEGIN OF ST_SCANDATA_TAB,

VHILM LIKE YYLE0003-VHILM, " Packaging Materials

EXIDV TYPE EXIDV, " External Handling Unit

TKNUM LIKE YYLE0003-TKNUM, " Shipment number

QUANTITY LIKE YYLE0003-QUANTITY, " Quantity

END OF ST_SCANDATA_TAB.

DATA: BEGIN OF G_SCANDATA_COUNT_TAB OCCURS 0,

VHILM LIKE YYLE0003-VHILM, " Packaging Materials

TKNUM LIKE YYLE0003-TKNUM, " Shipment number

QUANTITY LIKE YYLE0003-QUANTITY, " Quantity

COUNT TYPE I,

END OF G_SCANDATA_COUNT_TAB.

DATA: L_COUNT TYPE I.

*Internal table for Packaging Materials and quantity

DATA: BEGIN OF G_ITAB6_TAB OCCURS 0,

VHILM LIKE YYLE0003-VHILM, " Packaging Materials

QUANTITY TYPE P, " Quantity

END OF G_ITAB6_TAB.

*- Field catalog

DATA: L_ALV_CAT1_TAB TYPE TABLE OF LVC_S_FCAT.

--


Work area Declaration--

DATA: WA_VTTK TYPE T_VTTK_TAB,

WA_ITAB3 TYPE T_ITAB2,

WA_ITAB5 TYPE T_ITAB2,

WA_ITAB4 TYPE T_ITAB3,

WA_ITAB1 LIKE G_SCANDATA_TAB,

WA_ALV_CAT1 LIKE LINE OF L_ALV_CAT1_TAB.

----


Variable Defnition -

DATA: G_CUSTOM_CONTAINER_0100 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,

G_ALV_GRID_0100 TYPE REF TO CL_GUI_ALV_GRID,

G_CONTAINER_0100 TYPE SCRFNAME VALUE 'LIST',

G_MYLAYOUT TYPE LVC_S_LAYO, "#EC NEEDED

G_WA TYPE REF TO DATA.

DATA: G_VAR TYPE I, " No of records

G_VAR1 TYPE CHAR20. " Variable

--


field symbols Declaration--

FIELD-SYMBOLS : <F_FS> TYPE TABLE,

<F_FS3> TYPE ANY,

<F_FS4> TYPE ANY,

<F_FS5> TYPE ANY,

<F_WA> TYPE ANY,

<F_FS15> TYPE ANY,

<F_FS16> TYPE SY-DATUM,

<F_FS2> TYPE T_ITAB2,

<F_FS6> TYPE ANY,

<F_FS7> TYPE ANY,

<F_FS12> TYPE ANY,

<F_FS13> TYPE ANY.

--


Selection Parameters--

SELECTION-SCREEN: BEGIN OF BLOCK BLCK01 WITH FRAME TITLE TEXT-000.

"Select options

SELECT-OPTIONS :

S_TKNUM FOR YYLE0003-TKNUM , " Shipment number

S_YYREF FOR YYLE0003-YY_REFERENCE, " Packing reference

S_YYREFT FOR YYLE0003-YY_REFTP, " Reference type

S_EXIDV FOR YYLE0003-EXIDV, " External HU

S_MATNR FOR YYLE0003-MATNR, " Material number

S_VBELN FOR YYLE0003-VBELN, " SD number

S_POSNR FOR YYLE0003-POSNR, " Item number

S_LGTOR FOR YYLE0003-LGTOR, " Door for Wr Hs No

S_VHILM FOR YYLE0003-VHILM, " Packaging Mat

S_YYMEIN FOR YYLE0003-YY_MEINH, " Indicator for UOM

S_QUANTI FOR YYLE0003-QUANTITY, " Quantity

S_YCHECK FOR YYLE0003-YYCHECKED, " Destination_door

S_STATUS FOR YYLE0003-STATUS, " Packing status

S_STASHI FOR YYLE0003-STATUSSHIPTO, " Status on ship-to

S_LOADTR FOR YYLE0003-LOADTRUCK, " Load truck

S_ERDAT FOR YYLE0003-ERDAT , " Date

S_ERZET FOR YYLE0003-ERZET, " Entry time

S_AEDAT FOR YYLE0003-AEDAT, " Last changed on

S_ERNAM FOR YYLE0003-ERNAM, " Name of Person

S_AEZET FOR YYLE0003-AEZET, " Time last change

S_AENAM FOR YYLE0003-AENAM. " Name of person

SELECTION-SCREEN: END OF BLOCK BLCK01.

--


INITIALIZATION--

INITIALIZATION.

  • Clear the variables and workarea

CLEAR :G_VAR,

G_VAR1,

WA_VTTK,

WA_ITAB3,

WA_ITAB5,

WA_ITAB4,

WA_ITAB1,

WA_VTTK,

WA_ITAB3,

WA_ITAB5,

WA_ITAB4,

WA_ITAB1.

--


AT SELECTION-SCREEN--

AT SELECTION-SCREEN.

  • To validate the data entered in selection screen

PERFORM SUB_VALIDATE.

--


START-OF-SELECTION--

START-OF-SELECTION.

*To fetch the data from table yyle0003

PERFORM GET_INPUT_DATA.

*To create the Dynamic Field Catalog

PERFORM GET_FIELDCAT.

  • To populate the data to final table

PERFORM GET_FINAL_DATA.

----


  • MODULE status_0100 OUTPUT *

----


  • .... *

----


MODULE STATUS_0100 OUTPUT.

*set title bar and PF status.

SET PF-STATUS 'ZVKS'.

SET TITLEBAR 'ZVKS'.

CHECK SY-UCOMM IS INITIAL.

SORT G_SCANDATA_TAB BY TKNUM VHILM.

*Create object for Custom container

CREATE OBJECT G_CUSTOM_CONTAINER_0100

EXPORTING

CONTAINER_NAME = G_CONTAINER_0100

EXCEPTIONS

CNTL_ERROR = 1

CNTL_SYSTEM_ERROR = 2

CREATE_ERROR = 3

LIFETIME_ERROR = 4

LIFETIME_DYNPRO_DYNPRO_LINK = 5.

*Create object for ALV grid

CREATE OBJECT G_ALV_GRID_0100

EXPORTING I_PARENT = G_CUSTOM_CONTAINER_0100.

  • G_MYLAYOUT-GRID_TITLE = 'Display Scanning data'.

*Call method for table Display

CALL METHOD G_ALV_GRID_0100->SET_TABLE_FOR_FIRST_DISPLAY

CHANGING

IT_OUTTAB = <F_FS>

IT_FIELDCATALOG = L_ALV_CAT1_TAB

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.

ENDMODULE. " STATUS_0100 OUTPUT

&----


*& Module USER_COMMAND_0100 INPUT

&----


  • User Interaction

----


MODULE USER_COMMAND_0100 INPUT.

  • CALL METHOD CL_GUI_CFW=>DISPATCH.

*To exit , back or cancel

CASE SY-UCOMM.

WHEN 'EXIT'.

LEAVE TO SCREEN 0.

WHEN 'BACK'.

LEAVE TO SCREEN 0.

WHEN 'CANCEL'.

LEAVE PROGRAM.

WHEN OTHERS.

ENDCASE.

ENDMODULE. " USER_COMMAND_0100 INPUT

&----


*& Form get_input_data

&----


  • This sub routine will get the data from yyle0003 table.

&----


FORM GET_INPUT_DATA.

CONSTANTS: C_DOT TYPE C VALUE '.',

C_CHAR TYPE C VALUE 'D'.

CLEAR G_SCANDATA_TAB.

  • Get the data from yyle0003

SELECT VHILM " Packaging Materials

EXIDV " External Handling Unit

TKNUM " Shipment number

QUANTITY " Quantity

FROM YYLE0003

INTO TABLE G_SCANDATA_TAB

WHERE TKNUM IN S_TKNUM " Shipment number

AND YY_REFERENCE IN S_YYREF " Packing reference

AND YY_REFTP IN S_YYREFT " Reference type

AND EXIDV IN S_EXIDV " External Handling Unit

AND MATNR IN S_MATNR " Material number

AND VBELN IN S_VBELN " SD number

AND POSNR IN S_POSNR " Item number

AND LGTOR IN S_LGTOR " Door for warehouse No

AND VHILM IN S_VHILM " Packaging Materials

AND YY_MEINH IN S_YYMEIN " Indicator for UOM

AND QUANTITY IN S_QUANTI " Quantity

AND YYCHECKED IN S_YCHECK " Destination_door

AND STATUS IN S_STATUS " Packing status

AND STATUSSHIPTO IN S_STASHI " Status on ship-to

AND LOADTRUCK IN S_LOADTR " Load truck

AND ERDAT IN S_ERDAT " Date

AND ERZET IN S_ERZET " Entry time

AND AEDAT IN S_AEDAT " Last changed on

AND ERNAM IN S_ERNAM " Name of Person

AND AEZET IN S_AEZET " Time last change

AND AENAM IN S_AENAM. " Name of person

  • If VHILM contains any Decimal '.', replace it with D

LOOP AT G_SCANDATA_TAB.

REPLACE C_DOT WITH C_CHAR INTO G_SCANDATA_TAB-VHILM.

IF SY-SUBRC = 0.

MODIFY G_SCANDATA_TAB TRANSPORTING VHILM.

ENDIF.

CLEAR G_SCANDATA_TAB.

ENDLOOP.

*To get the Shipment No Creation date from VTTK.

SELECT TKNUM

ERDAT

FROM VTTK

INTO TABLE G_VTTK_TAB

WHERE TKNUM IN S_TKNUM.

SORT G_SCANDATA_TAB BY VHILM EXIDV. "TKNUM VHILM.

*To get the repeatition of Pacakaging material for each Shipment.

*--- to find the count of packaging materials under each shipment

LOOP AT G_SCANDATA_TAB.

READ TABLE G_SCANDATA_TAB INTO ST_SCANDATA_TAB INDEX SY-TABIX.

AT END OF EXIDV.

L_COUNT = L_COUNT + 1.

MOVE-CORRESPONDING ST_SCANDATA_TAB TO G_SCANDATA_COUNT_TAB.

G_SCANDATA_COUNT_TAB-COUNT = L_COUNT.

CLEAR: ST_SCANDATA_TAB, L_COUNT.

COLLECT G_SCANDATA_COUNT_TAB.

ENDAT.

CLEAR : G_SCANDATA_TAB.

ENDLOOP.

ENDFORM. " get_input_data

&----


*& Form sub_validate

&----


*This subroutine will validate the data eneterd in the selection screen

&----


FORM SUB_VALIDATE.

*Varaiable declaration for Shipment number

DATA: L_TKNUM TYPE YYLE0003-TKNUM."#EC NEEDED " Shipment number

*- Condition will not qualify all primary key (IDENT)

SELECT TKNUM FROM YYLE0003 UP TO 1 ROWS

INTO L_TKNUM "wa_scandata

WHERE TKNUM IN S_TKNUM " Shipment number

AND YY_REFERENCE IN S_YYREF " Packing reference

AND YY_REFTP IN S_YYREFT " Reference type

AND EXIDV IN S_EXIDV " External Handling Unit

AND MATNR IN S_MATNR " Material number

AND VBELN IN S_VBELN " SD number

AND POSNR IN S_POSNR " Item number

AND LGTOR IN S_LGTOR " Door for warehouse No

AND VHILM IN S_VHILM " Packaging Materials

AND YY_MEINH IN S_YYMEIN " Indicator for UOM

AND QUANTITY IN S_QUANTI " Quantity

AND YYCHECKED IN S_YCHECK " Destination_door

AND STATUS IN S_STATUS " Packing status

AND STATUSSHIPTO IN S_STASHI " Status on ship-to

AND LOADTRUCK IN S_LOADTR " Load truck

AND ERDAT IN S_ERDAT " Date

AND ERZET IN S_ERZET " Entry time

AND AEDAT IN S_AEDAT " Last changed on

AND ERNAM IN S_ERNAM " Name of Person

AND AEZET IN S_AEZET " Time last change

AND AENAM IN S_AENAM. " Name of person

ENDSELECT.

IF SY-SUBRC <> 0.

MESSAGE E987 . " No data found for these selection criterias

ENDIF.

ENDFORM. " sub_validate

&----


*& Form get_fieldcat

&----


  • Preparing Field catalog

FORM GET_FIELDCAT.

DATA: L_REF TYPE REF TO DATA,

L_I TYPE I. " Variable

CONSTANTS: C_CENTER TYPE C VALUE 'C'. " Center Justified

LOOP AT G_SCANDATA_TAB INTO WA_ITAB1.

MOVE-CORRESPONDING WA_ITAB1 TO WA_ITAB3.

APPEND WA_ITAB3 TO G_ITAB3_TAB.

MOVE-CORRESPONDING WA_ITAB1 TO WA_ITAB4.

COLLECT WA_ITAB4 INTO G_ITAB4_TAB.

*To sum up the qunatity field for each TKNUM.

AT END OF TKNUM.

SUM.

MOVE WA_ITAB1-TKNUM TO G_TOTAL_TAB-TKNUM.

MOVE WA_ITAB1-QUANTITY TO G_TOTAL_TAB-QUANTITY .

APPEND G_TOTAL_TAB.

CLEAR G_TOTAL_TAB.

ENDAT.

CLEAR : WA_ITAB1,

WA_ITAB3,

WA_ITAB4.

ENDLOOP.

*--- Begin of change - SKR.EXT - EBDK986377

SORT G_ITAB4_TAB BY TKNUM.

*--- End of change - SKR.EXT - EBDK986377

LOOP AT G_ITAB4_TAB INTO WA_ITAB4.

MOVE-CORRESPONDING WA_ITAB4 TO WA_ITAB5.

MOVE-CORRESPONDING WA_ITAB4 TO G_ITAB6_TAB.

*---- to get the count

READ TABLE G_SCANDATA_COUNT_TAB WITH KEY TKNUM = WA_ITAB5-TKNUM

VHILM = WA_ITAB5-VHILM.

IF SY-SUBRC EQ 0.

WA_ITAB5-COUNT = G_SCANDATA_COUNT_TAB-COUNT.

ENDIF.

APPEND WA_ITAB5 TO G_ITAB5_TAB.

COLLECT G_ITAB6_TAB.

ENDLOOP.

CLEAR : WA_ITAB3.

SORT G_ITAB4_TAB BY TKNUM VHILM.

DELETE ADJACENT DUPLICATES FROM G_ITAB4_TAB COMPARING VHILM.

*To get the Number of fields to be displayed

DESCRIBE TABLE G_ITAB4_TAB LINES G_VAR.

L_I = '3'.

*Field catalog

WA_ALV_CAT1-FIELDNAME = 'TKNUM'(002).

WA_ALV_CAT1-COL_POS = 1.

WA_ALV_CAT1-COLTEXT ='ShipmentNo.'.

APPEND WA_ALV_CAT1 TO L_ALV_CAT1_TAB.

CLEAR : WA_ALV_CAT1.

WA_ALV_CAT1-FIELDNAME = 'ERDAT'(003).

WA_ALV_CAT1-COL_POS = 2.

WA_ALV_CAT1-COLTEXT ='Creation_Date.'(005).

APPEND WA_ALV_CAT1 TO L_ALV_CAT1_TAB.

CLEAR : WA_ALV_CAT1.

  • Create field catalog for each of VHILM

LOOP AT G_ITAB4_TAB INTO WA_ITAB4.

IF G_VAR >= 1.

CONDENSE WA_ITAB4-VHILM NO-GAPS.

WA_ALV_CAT1-FIELDNAME = WA_ITAB4-VHILM. "l_fieldname.

WA_ALV_CAT1-COL_POS = L_I.

WA_ALV_CAT1-COLTEXT = WA_ITAB4-VHILM.

WA_ALV_CAT1-JUST = C_CENTER. "'C'.

APPEND WA_ALV_CAT1 TO L_ALV_CAT1_TAB.

CLEAR WA_ALV_CAT1.

L_I = L_I + 1.

ENDIF.

*TOTAL-last column in the field catalog

AT LAST.

WA_ALV_CAT1-FIELDNAME = 'TOTAL'(004).

WA_ALV_CAT1-COL_POS = L_I.

WA_ALV_CAT1-COLTEXT = 'TOTAL'(004).

WA_ALV_CAT1-JUST = C_CENTER. " 'C'.

APPEND WA_ALV_CAT1 TO L_ALV_CAT1_TAB.

CLEAR WA_ALV_CAT1.

ENDAT.

SORT L_ALV_CAT1_TAB BY FIELDNAME.

*Non of the field name should not get repeated

DELETE ADJACENT DUPLICATES FROM L_ALV_CAT1_TAB.

ENDLOOP.

SORT L_ALV_CAT1_TAB BY COL_POS.

*Creating Dynamic Internal table

CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE

EXPORTING

IT_FIELDCATALOG = L_ALV_CAT1_TAB

IMPORTING

EP_TABLE = L_REF.

  • Assigning the Dynamic field Catalog to field symbol.

ASSIGN L_REF->* TO <F_FS>.

CREATE DATA G_WA LIKE LINE OF <F_FS>.

ASSIGN G_WA->* TO <F_WA>.

DELETE ADJACENT DUPLICATES FROM <F_FS> COMPARING ALL FIELDS.

ENDFORM. " get_fieldcat

&----


*& Form display_data

&----


FORM GET_FINAL_DATA.

*variable declaration

DATA: L_TOTAL TYPE I, " Row wise total

L_FILL TYPE I, " Count

L_TOT TYPE I. " Grand total

*To get the TOTAL qunatity in the last line of out put.

LOOP AT G_ITAB6_TAB.

CLEAR WA_ITAB5.

WA_ITAB5-TKNUM = 'TOTAL'(004).

WA_ITAB5-ERDAT = SPACE.

MOVE-CORRESPONDING G_ITAB6_TAB TO WA_ITAB5 .

LOOP AT G_SCANDATA_COUNT_TAB WHERE VHILM = G_ITAB6_TAB-VHILM.

WA_ITAB5-COUNT = WA_ITAB5-COUNT + G_SCANDATA_COUNT_TAB-COUNT.

ENDLOOP.

APPEND WA_ITAB5 TO G_ITAB5_TAB.

CLEAR WA_ITAB5.

ENDLOOP.

DESCRIBE TABLE G_ITAB5_TAB LINES L_TOT.

*>>>>>>>>

****To get total qunatity of all TKNUM

      • LOOP AT G_TOTAL_TAB .

      • L_TOTAL = L_TOTAL + G_TOTAL_TAB-QUANTITY.

      • ENDLOOP.

*>>>>>>>>

*To assign ERDAT to g_itab5_tab

LOOP AT G_ITAB5_TAB INTO WA_ITAB5 .

READ TABLE G_VTTK_TAB INTO WA_VTTK WITH KEY TKNUM = WA_ITAB5-TKNUM.

IF SY-SUBRC = 0.

WA_ITAB5-ERDAT = WA_VTTK-ERDAT.

MODIFY G_ITAB5_TAB FROM WA_ITAB5 TRANSPORTING ERDAT.

ENDIF.

ENDLOOP.

*Assigning value in each field to respective Field symbols.

LOOP AT G_ITAB5_TAB ASSIGNING <F_FS2>.

CLEAR G_TOTAL_TAB-QUANTITY.

ASSIGN COMPONENT 'TKNUM' OF STRUCTURE <F_FS2> TO <F_FS6>.

ASSIGN COMPONENT 'TKNUM' OF STRUCTURE <F_WA> TO <F_FS7>.

<F_FS7> = <F_FS6>.

CONDENSE <F_FS2>-VHILM NO-GAPS.

ASSIGN COMPONENT 'VHILM' OF STRUCTURE <F_FS2> TO <F_FS3>.

ASSIGN COMPONENT 5 OF STRUCTURE <F_FS2> TO <F_FS4>.

MOVE <F_FS3> TO G_VAR1.

ASSIGN COMPONENT G_VAR1 OF STRUCTURE <F_WA> TO <F_FS5>.

<F_FS5> = <F_FS4>.

ASSIGN COMPONENT 'ERDAT' OF STRUCTURE <F_FS2> TO <F_FS16>.

ASSIGN COMPONENT 'ERDAT' OF STRUCTURE <F_WA> TO <F_FS15>.

WRITE <F_FS16> TO <F_FS15> .

  • Inorder not to display the date '00/00/000',

  • if there is no DATE .

IF ( <F_FS15> CP '00/*' )

OR ( <F_FS15> CP '00.*' )

OR ( <F_FS15> CP '00-*' ).

<F_FS15> = SPACE.

ELSEIF ( <F_FS15> CO ' / /' )

OR ( <F_FS15> CO ' . .' )

OR ( <F_FS15> CO ' - -' ) .

<F_FS15> = SPACE.

ENDIF.

READ TABLE G_TOTAL_TAB WITH KEY TKNUM = <F_FS6>.

IF SY-SUBRC = 0.

  • ASSIGN G_TOTAL_TAB-QUANTITY TO <F_FS12>.

ASSIGN COMPONENT 'COUNT' OF STRUCTURE <F_FS2> TO <F_FS12>.

ASSIGN COMPONENT 'TOTAL' OF STRUCTURE <F_WA> TO <F_FS13>.

<F_FS13> = <F_FS13> + <F_FS12>.

L_TOTAL = L_TOTAL + <F_FS12>.

ENDIF.

L_FILL = L_FILL + 1.

IF L_FILL = L_TOT.

ASSIGN L_TOTAL TO <F_FS12>.

ASSIGN COMPONENT 'TOTAL' OF STRUCTURE <F_WA> TO <F_FS13>.

<F_FS13> = <F_FS12>.

ENDIF.

AT END OF <F_FS2>-TKNUM.

APPEND <F_WA> TO <F_FS>.

CLEAR <F_WA>.

ENDAT.

ENDLOOP.

CLEAR: <F_FS6>,

<F_FS7>,

<F_WA>.

*Call the screen where Custom container is defined

CALL SCREEN 0100.

ENDFORM. " display_data

Regards

Kannaiah