‎2008 Apr 08 6:43 AM
Hi Experts,
I am given a requiremnt to develop a report for consolidated goods reciept.
As I am a beginner in this career,Kindly (pls) help me to develop the reprt.
can anyone guide me step by step please.
I shall ask u queries then and there.
Kindly help me to develop report.
I am not given the specicification properly ,but i will be getting within one hour.So kindly pls help me to develop this report.
<REMOVED BY MODERATOR>
Thanks a lot in advance
Jaya
Edited by: Alvaro Tejada Galindo on Apr 8, 2008 1:21 PM
‎2008 Apr 08 6:47 AM
To get the consolidated good reciept based on the posting doucment in the purchaase order .
U can check the following tables.
1. ekko.
2. ekbe.
3. ekkn.
‎2008 Apr 08 6:47 AM
To get the consolidated good reciept based on the posting doucment in the purchaase order .
U can check the following tables.
1. ekko.
2. ekbe.
3. ekkn.
‎2008 Apr 08 6:52 AM
Thnks so much Uma,
Initially,i think i need to declare tables.
create internal table..
then how shud i proceed
‎2008 Apr 08 7:03 AM
First collect the fields from the table u reffered.
then declare a structure using type decalration
for example
TYPES : BEGIN OF st_out,
ebeln TYPE ebeln,
ebelp TYPE ebelp,
< SIMILARLY declare other fields and other data element here >
END OF st_out.
ebeln is the field name.
type - type
ebeln is the data element.
procede for other fields.
next is the internal table decalartion for this structure
DATA : it_out1 TYPE TABLE OF st_out.
next is the work area decalartion .
Data: wa_out like line of it_out1.
example select query should be like this
select ebeln ebelp from ekbe into table it_out where <give your condition to filter the records>.
it_out is the internal table here
‎2008 Apr 08 7:06 AM
Hi Jaya..
i am posting one of my sample codes here.
When u get the functional specs just put them here.
Then we will go about it.
&----
*& Report ZMM_MATERIAL_ARRIVAL
*&
*& Author :-Rahul Bhat
*& Date-Of-Creation:-30-01-2008
*& Objective :-Report to show Material Arrival Plan
Includes PO's from PR's as well as manual PO's.
*& TCODE :-ZPP08
&----
REPORT ZMM_MATERIAL_ARRIVAL.
*Internal Table Structure Declarations.
TYPES:BEGIN OF TY_MA61V , "Material Master: DB View for MRP
MATNR TYPE MA61V-MATNR , "Material Number
WERKS TYPE MA61V-WERKS , "Plant
MATKL TYPE MA61V-MATKL , "Material group
DISPO TYPE MA61V-DISPO , "MRP controller
END OF TY_MA61V .
TYPES:BEGIN OF TY_RESB , "Reservation/dependent requirements
RSNUM TYPE RESB-RSNUM , "Number of reservation/dependent requirements
RSPOS TYPE RESB-RSPOS , "Item Number of Reservation / Dependent Requirements
RSART TYPE RESB-RSART , "Record type
BAUGR TYPE RESB-BAUGR , "Material number of higher-level assembly
MATNR TYPE RESB-MATNR , "Material Number
BDTER TYPE RESB-BDTER , "Requirements date for the component
BDMNG TYPE RESB-BDMNG , "Requirement Quantity
END OF TY_RESB .
TYPES:BEGIN OF TY_MBEW , "Material Valuation
MATNR TYPE MBEW-MATNR , "Material Number
BWKEY TYPE MBEW-BWKEY , "Valuation area
BWTAR TYPE MBEW-BWTAR , "Valuation type
VERPR TYPE MBEW-VERPR , "Moving Average Price/Periodic Unit Price
END OF TY_MBEW .
TYPES:BEGIN OF TY_EBAN , "Purchase Requisition
BANFN TYPE EBAN-BANFN , "Purchase requisition number
BNFPO TYPE EBAN-BNFPO , "Item number of purchase requisition
MATNR TYPE EBAN-MATNR , "Material Number
LIFNR TYPE EBAN-LIFNR , "Desired vendor
BSMNG TYPE EBAN-BSMNG , "Quantity ordered against this purchase requisition
BADAT TYPE EBAN-BADAT , "Requisition (request) date
EBELN TYPE EBAN-EBELN , "Purchase order number
MENGE TYPE EBAN-MENGE , "Purchase requisition quantity
END OF TY_EBAN .
TYPES:BEGIN OF TY_EKET , "Scheduling Agreement Schedule Lines
EBELN TYPE EKET-EBELN , "Purchasing Document Number
EBELP TYPE EKET-EBELP , "Item Number of Purchasing Document
ETENR TYPE EKET-ETENR , "Delivery Schedule Line Counter
MENGE TYPE EKET-MENGE , "Scheduled quantity
WEMNG TYPE EKET-WEMNG , "Quantity of goods received
BANFN TYPE EKET-BANFN , "Purchase requisition number
EINDT TYPE EKET-EINDT , "Item delivery date
END OF TY_EKET .
TYPES:BEGIN OF TY_EKKO , "Purchasing Document Header
EBELN TYPE EKKO-EBELN , "Purchasing Document Number
LIFNR TYPE EKKO-LIFNR , "Vendor's account number
ZTERM TYPE EKKO-ZTERM , "Terms of payment key
END OF TY_EKKO .
TYPES:BEGIN OF TY_LFA1 , "Vendor Master (General Section)
LIFNR TYPE LFA1-LIFNR , "Account Number of Vendor or Creditor
NAME1 TYPE LFA1-NAME1 , "Name 1
END OF TY_LFA1 .
TYPES:BEGIN OF TY_EKPO , "Purchasing Document Item
EBELN TYPE EKPO-EBELN , "Purchasing Document Number
EBELP TYPE EKPO-EBELP , "Item Number of Purchasing Document
MATNR TYPE EKPO-MATNR , "Material Number
TXZ01 TYPE EKPO-TXZ01 , "Short text
BANFN TYPE EKPO-BANFN , "Purchase requisition number
PSTYP TYPE EKPO-PSTYP , "Item category in purchasing document
WERKS TYPE EKPO-WERKS , "Plant
LOEKZ TYPE EKPO-LOEKZ , "Deletion Indicator
NETPR TYPE EKPO-NETPR , "Net price in purchasing document (in document currency)
END OF TY_EKPO .
TYPES:BEGIN OF TY_DISPLAY ,
MATKL TYPE MARA-MATKL , "Material group
DISPO TYPE MARC-DISPO , "MRP controller
VERPR TYPE MBEW-VERPR , "Moving Average Price/Periodic Unit Price
MATNR TYPE RESB-MATNR , "Material Number
MENGE TYPE EBAN-MENGE , "Purchase requisition quantity
EBELN TYPE EKET-EBELN , "Purchasing Document Number
MENGE1 TYPE EKET-MENGE , "Scheduled Quantity
EINDT TYPE EKET-EINDT , "Item delivery date
VALUE1 TYPE P DECIMALS 2 , "VERPR * MENGE
VENNAME TYPE LFA1-NAME1 , "Name 1
ZTERM TYPE EKKO-ZTERM , "Terms of payment key
DESC(60) TYPE C , "Payment Terms Description.
WEMNG TYPE EKET-WEMNG , "Quantity of goods received
BALNC TYPE P DECIMALS 3 , "Scheduled - Goods Received
NETPR TYPE EKPO-NETPR , "Net price in purchasing document (in document currency)
VALUE2 TYPE P DECIMALS 3 , "NETPR * MENGE1
END OF TY_DISPLAY .
*Internal Table and Work Area Declarations
DATA:IT_MA61V TYPE STANDARD TABLE OF TY_MA61V ,
WA_MA61V TYPE TY_MA61V .
DATA:IT_MBEW TYPE STANDARD TABLE OF TY_MBEW ,
WA_MBEW TYPE TY_MBEW .
DATA:IT_EBAN TYPE STANDARD TABLE OF TY_EBAN ,
WA_EBAN TYPE TY_EBAN .
DATA:IT_EKET TYPE STANDARD TABLE OF TY_EKET ,
WA_EKET TYPE TY_EKET .
DATA:IT_EKKO TYPE STANDARD TABLE OF TY_EKKO ,
WA_EKKO TYPE TY_EKKO .
DATA:IT_LFA1 TYPE STANDARD TABLE OF TY_LFA1 ,
WA_LFA1 TYPE TY_LFA1 .
DATA:IT_EKPO TYPE STANDARD TABLE OF TY_EKPO ,
WA_EKPO TYPE TY_EKPO .
DATA:IT_DISPLAY TYPE STANDARD TABLE OF TY_DISPLAY,
WA_DISPLAY TYPE TY_DISPLAY .
*Work Field Declarations.
DATA:W_MATNR TYPE MARA-MATNR,
W_WERKS TYPE MARC-WERKS,
W_DISPO TYPE MARC-DISPO,
W_MATKL TYPE MARA-MATKL,
W_EINDT TYPE EKET-EINDT,
W_INDEX TYPE SY-TABIX .
*ALV Declarations.
TYPE-POOLS:SLIS.
DATA:FIELDCAT TYPE SLIS_FIELDCAT_ALV OCCURS 0 WITH HEADER LINE.
DATA:IT_SORTCAT TYPE SLIS_SORTINFO_ALV OCCURS 1,
WA_SORT LIKE LINE OF IT_SORTCAT .
DATA:COL_POS TYPE I .
*Selection Screen
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:SO_MATNR FOR W_MATNR ,
SO_WERKS FOR W_WERKS OBLIGATORY ,
SO_DISPO FOR W_DISPO ,
SO_MATKL FOR W_MATKL ,
SO_EINDT FOR W_EINDT .
SELECTION-SCREEN END OF BLOCK BLK1 .
*Start Of Selection.
START-OF-SELECTION .
PERFORM GET_DATA .
PERFORM PROCESS_DATA .
PERFORM BUILD_FIELDCAT .
PERFORM DATA_DISPLAY .
&----
*& Form GET_DATA
&----
text
----
FORM GET_DATA .
SELECT MATNR WERKS MATKL DISPO
FROM MA61V
INTO TABLE IT_MA61V
WHERE MATNR IN SO_MATNR AND
MATKL IN SO_MATKL AND
WERKS IN SO_WERKS AND
DISPO IN SO_DISPO.
IF SY-SUBRC = 0.
SELECT MATNR BWKEY BWTAR VERPR
FROM MBEW
INTO TABLE IT_MBEW
FOR ALL ENTRIES IN IT_MA61V
WHERE MATNR = IT_MA61V-MATNR.
IF SY-SUBRC = 0.
DO NOTHING
ENDIF.
SELECT EBELN EBELP ETENR MENGE WEMNG BANFN EINDT
FROM EKET
INTO TABLE IT_EKET
WHERE EINDT IN SO_EINDT.
IF SY-SUBRC = 0.
SELECT BANFN BNFPO MATNR LIFNR BSMNG BADAT EBELN MENGE
FROM EBAN
INTO TABLE IT_EBAN
FOR ALL ENTRIES IN IT_EKET
WHERE EBELN = IT_EKET-EBELN .
IF SY-SUBRC = 0.
DO NOTHING
ENDIF.
SELECT EBELN EBELP MATNR TXZ01 BANFN PSTYP WERKS LOEKZ NETPR
FROM EKPO
INTO TABLE IT_EKPO
FOR ALL ENTRIES IN IT_EKET
WHERE EBELN = IT_EKET-EBELN AND
PSTYP NE '7' AND
WERKS IN SO_WERKS AND
LOEKZ EQ ''.
IF SY-SUBRC = 0.
DO NOTHING
ENDIF.
SELECT EBELN LIFNR ZTERM
FROM EKKO
INTO TABLE IT_EKKO
FOR ALL ENTRIES IN IT_EKET
WHERE EBELN = IT_EKET-EBELN.
IF SY-SUBRC = 0.
SELECT LIFNR NAME1
FROM LFA1
INTO TABLE IT_LFA1
FOR ALL ENTRIES IN IT_EKKO
WHERE LIFNR = IT_EKKO-LIFNR.
IF SY-SUBRC = 0.
DO NOTHING
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " GET_DATA
&----
*& Form PROCESS_DATA
&----
text
----
FORM PROCESS_DATA .
DATA:LW_VAL1 TYPE P DECIMALS 2.
DATA:LW_EBELN TYPE EKBE-EBELN.
LOOP AT IT_EKET INTO WA_EKET.
READ TABLE IT_EKPO INTO WA_EKPO WITH KEY EBELN = WA_EKET-EBELN
EBELP = WA_EKET-EBELP.
IF SY-SUBRC = 0.
READ TABLE IT_MA61V INTO WA_MA61V WITH KEY MATNR = WA_EKPO-MATNR.
IF SY-SUBRC = 0.
MOVE:WA_MA61V-MATKL TO WA_DISPLAY-MATKL,
WA_MA61V-DISPO TO WA_DISPLAY-DISPO.
READ TABLE IT_MBEW INTO WA_MBEW WITH KEY MATNR = WA_MA61V-MATNR.
IF SY-SUBRC = 0.
MOVE:WA_MBEW-VERPR TO WA_DISPLAY-VERPR.
ENDIF.
MOVE:WA_EKPO-MATNR TO WA_DISPLAY-MATNR ,
WA_EKPO-NETPR TO WA_DISPLAY-NETPR ,
WA_EKET-EBELN TO WA_DISPLAY-EBELN ,
WA_EKET-MENGE TO WA_DISPLAY-MENGE1,
WA_EKET-EINDT TO WA_DISPLAY-EINDT ,
WA_EKET-WEMNG TO WA_DISPLAY-WEMNG .
WA_DISPLAY-VALUE2 = WA_EKPO-NETPR * WA_EKET-MENGE.
WA_DISPLAY-BALNC = WA_EKET-MENGE - WA_EKET-WEMNG.
READ TABLE IT_EBAN INTO WA_EBAN WITH KEY EBELN = WA_EKET-EBELN.
IF SY-SUBRC = 0.
MOVE:WA_EBAN-MENGE TO WA_DISPLAY-MENGE.
WA_DISPLAY-VALUE1 = WA_MBEW-VERPR * WA_EBAN-MENGE.
ENDIF.
READ TABLE IT_EKKO INTO WA_EKKO WITH KEY EBELN = WA_EKET-EBELN.
IF SY-SUBRC = 0.
READ TABLE IT_LFA1 INTO WA_LFA1 WITH KEY LIFNR = WA_EKKO-LIFNR.
IF SY-SUBRC = 0.
MOVE:WA_LFA1-NAME1 TO WA_DISPLAY-VENNAME,
WA_EKKO-ZTERM TO WA_DISPLAY-ZTERM .
IF WA_EKKO-ZTERM EQ 'PA90'.
WA_DISPLAY-DESC = '90 days receipt / accepting material' .
ELSEIF WA_EKKO-ZTERM EQ 'PA60' .
WA_DISPLAY-DESC = '60 days receipt / accepting material' .
ELSEIF WA_EKKO-ZTERM EQ 'PA45' .
WA_DISPLAY-DESC = '45 days receipt / accepting material' .
ELSEIF WA_EKKO-ZTERM EQ 'PA30' .
WA_DISPLAY-DESC = '30 days receipt / accepting material' .
ELSEIF WA_EKKO-ZTERM EQ 'PA15' .
WA_DISPLAY-DESC = '15 days receipt / accepting material' .
ELSEIF WA_EKKO-ZTERM EQ 'PA08' .
WA_DISPLAY-DESC = '30 % advance balance on delivery' .
ELSEIF WA_EKKO-ZTERM EQ 'PA07' .
WA_DISPLAY-DESC = '40 % advance balance on delivery' .
ELSEIF WA_EKKO-ZTERM EQ 'PA06' .
WA_DISPLAY-DESC = '100 % against proforma invoice' .
ELSEIF WA_EKKO-ZTERM EQ 'PA05' .
WA_DISPLAY-DESC = 'Against hundi 90 days' .
ELSEIF WA_EKKO-ZTERM EQ 'PA04' .
WA_DISPLAY-DESC = 'Against L/C' .
ELSEIF WA_EKKO-ZTERM EQ 'PA03' .
WA_DISPLAY-DESC = '50 % advance and 50 % on delivery' .
ELSEIF WA_EKKO-ZTERM EQ 'PA02' .
WA_DISPLAY-DESC = '100 % advance' .
ELSEIF WA_EKKO-ZTERM EQ 'PA01' .
WA_DISPLAY-DESC = 'Immediate receipt / accepting material'.
ELSEIF WA_EKKO-ZTERM EQ 'P120' .
WA_DISPLAY-DESC = '120 days receipt / accepting material' .
ENDIF.
ENDIF.
ENDIF.
APPEND WA_DISPLAY TO IT_DISPLAY.
CLEAR:WA_EKPO,WA_EKET,WA_MA61V,WA_MBEW,WA_EBAN,WA_EKKO,WA_LFA1,WA_DISPLAY.
ENDIF.
ENDIF.
CLEAR:WA_EKET.
ENDLOOP.
ENDFORM. " PROCESS_DATA
&----
*& Form BUILD_FIELDCAT
&----
text
----
FORM BUILD_FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'MATKL' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'Material Group' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'DISPO' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'Segment' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'MATNR' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'Material' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'VERPR' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'Rate' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'MENGE' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'PR Quantity' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
FIELDCAT-DO_SUM = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'VALUE1' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'PR Value' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'EBELN' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'PO Number' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
*ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'NETPR' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'PO Rate' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'MENGE1' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'PO Quantity' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
FIELDCAT-DO_SUM = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
*ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'VALUE2' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'PO Value' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'EINDT' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'Delivery Date' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'WEMNG' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'GR Quantity' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
FIELDCAT-DO_SUM = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'BALNC' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'Balance Quantity' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'VENNAME' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'Vendor' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'ZTERM' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'Pyment Terms' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'DESC' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'Pyment Terms Description' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ENDFORM. " BUILD_FIELDCAT
&----
*& Form DATA_DISPLAY
&----
text
----
FORM DATA_DISPLAY .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = 'ZMM_MATERIAL_ARRIVAL'
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
IT_FIELDCAT = FIELDCAT[]
TABLES
T_OUTTAB = IT_DISPLAY.
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. " DATA_DISPLAY
&----
*& Form TOP_OF_PAGE
&----
text
----
FORM TOP_OF_PAGE.
DATA: T_HEADER TYPE SLIS_T_LISTHEADER ,
WA_HEADER TYPE SLIS_LISTHEADER ,
T_LINE LIKE WA_HEADER-INFO ,
LD_LINES TYPE I ,
LD_LINESC(10) TYPE C .
TITLE
WA_HEADER-TYP = 'H' .
WA_HEADER-INFO = 'Daily Material Arrival Plan' .
APPEND WA_HEADER TO T_HEADER .
CLEAR WA_HEADER .
WA_HEADER-TYP = 'S' .
WA_HEADER-KEY = 'Date: ' .
IF SO_EINDT-HIGH NE '00000000' .
CONCATENATE SO_EINDT-LOW+6(2) '.'
SO_EINDT-LOW+4(2) '.'
SO_EINDT-LOW(4) 'to'
SO_EINDT-HIGH+6(2) '.'
SO_EINDT-HIGH+4(2) '.'
SO_EINDT-HIGH(4)
INTO WA_HEADER-INFO SEPARATED BY SPACE .
ELSEIF SO_EINDT-HIGH EQ '00000000' .
CONCATENATE SO_EINDT-LOW+6(2) '.'
SO_EINDT-LOW+4(2) '.'
SO_EINDT-LOW(4)
INTO WA_HEADER-INFO SEPARATED BY SPACE.
ENDIF.
APPEND WA_HEADER TO T_HEADER.
CLEAR:WA_HEADER.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = T_HEADER.
ENDFORM. " TOP_OF_PAGE
‎2008 Apr 08 7:59 AM
Hi Rahul,
Thanks so much for your repsonse.
Defenitely when i get my rek i willl post ut to you,
Kindly help and guide me..
Will u be accesing sdn network always...if u r busy how can i get replies from u?
Sincerely
Jay
‎2008 Apr 08 9:10 AM
Hello jaya
When u get ur spec ,
Let me know give me ur gmail id i will add u
and then we can clear queries
‎2008 Apr 08 9:44 AM
‎2008 Apr 08 9:52 AM
‎2008 Apr 08 10:08 AM
‎2008 Apr 08 10:35 AM
Hi jaya,
U can put u r Specs here..
I access SDN every now and then...so i will be watching this thread.
We can clear queries as and when they arrive here itself.
<REMOVED BY MODERATOR>
Edited by: Alvaro Tejada Galindo on Apr 8, 2008 1:23 PM
‎2008 Apr 08 12:42 PM
Hi Rahul,
I am not clear of what u did from FORM PROCESS.
kINDLY CAN YOU EXPLAIN ..PLS
Sincerely
JayaLatheesh
&----
*& Form PROCESS_DATA
&----
text
-
FORM PROCESS_DATA .
DATA:LW_VAL1 TYPE P DECIMALS 2.
DATA:LW_EBELN TYPE EKBE-EBELN.
LOOP AT IT_EKET INTO WA_EKET.
READ TABLE IT_EKPO INTO WA_EKPO WITH KEY EBELN = WA_EKET-EBELN
EBELP = WA_EKET-EBELP.
IF SY-SUBRC = 0.
READ TABLE IT_MA61V INTO WA_MA61V WITH KEY MATNR = WA_EKPO-MATNR.
IF SY-SUBRC = 0.
MOVE:WA_MA61V-MATKL TO WA_DISPLAY-MATKL,
WA_MA61V-DISPO TO WA_DISPLAY-DISPO.
READ TABLE IT_MBEW INTO WA_MBEW WITH KEY MATNR = WA_MA61V-MATNR.
IF SY-SUBRC = 0.
MOVE:WA_MBEW-VERPR TO WA_DISPLAY-VERPR.
ENDIF.
MOVE:WA_EKPO-MATNR TO WA_DISPLAY-MATNR ,
WA_EKPO-NETPR TO WA_DISPLAY-NETPR ,
WA_EKET-EBELN TO WA_DISPLAY-EBELN ,
WA_EKET-MENGE TO WA_DISPLAY-MENGE1,
WA_EKET-EINDT TO WA_DISPLAY-EINDT ,
WA_EKET-WEMNG TO WA_DISPLAY-WEMNG .
WA_DISPLAY-VALUE2 = WA_EKPO-NETPR * WA_EKET-MENGE.
WA_DISPLAY-BALNC = WA_EKET-MENGE - WA_EKET-WEMNG.
READ TABLE IT_EBAN INTO WA_EBAN WITH KEY EBELN = WA_EKET-EBELN.
IF SY-SUBRC = 0.
MOVE:WA_EBAN-MENGE TO WA_DISPLAY-MENGE.
WA_DISPLAY-VALUE1 = WA_MBEW-VERPR * WA_EBAN-MENGE.
ENDIF.
READ TABLE IT_EKKO INTO WA_EKKO WITH KEY EBELN = WA_EKET-EBELN.
IF SY-SUBRC = 0.
READ TABLE IT_LFA1 INTO WA_LFA1 WITH KEY LIFNR = WA_EKKO-LIFNR.
IF SY-SUBRC = 0.
MOVE:WA_LFA1-NAME1 TO WA_DISPLAY-VENNAME,
WA_EKKO-ZTERM TO WA_DISPLAY-ZTERM .
IF WA_EKKO-ZTERM EQ 'PA90'.
WA_DISPLAY-DESC = '90 days receipt / accepting material' .
ELSEIF WA_EKKO-ZTERM EQ 'PA60' .
WA_DISPLAY-DESC = '60 days receipt / accepting material' .
ELSEIF WA_EKKO-ZTERM EQ 'PA45' .
WA_DISPLAY-DESC = '45 days receipt / accepting material' .
ELSEIF WA_EKKO-ZTERM EQ 'PA30' .
WA_DISPLAY-DESC = '30 days receipt / accepting material' .
ELSEIF WA_EKKO-ZTERM EQ 'PA15' .
WA_DISPLAY-DESC = '15 days receipt / accepting material' .
ELSEIF WA_EKKO-ZTERM EQ 'PA08' .
WA_DISPLAY-DESC = '30 % advance balance on delivery' .
ELSEIF WA_EKKO-ZTERM EQ 'PA07' .
WA_DISPLAY-DESC = '40 % advance balance on delivery' .
ELSEIF WA_EKKO-ZTERM EQ 'PA06' .
WA_DISPLAY-DESC = '100 % against proforma invoice' .
ELSEIF WA_EKKO-ZTERM EQ 'PA05' .
WA_DISPLAY-DESC = 'Against hundi 90 days' .
ELSEIF WA_EKKO-ZTERM EQ 'PA04' .
WA_DISPLAY-DESC = 'Against L/C' .
ELSEIF WA_EKKO-ZTERM EQ 'PA03' .
WA_DISPLAY-DESC = '50 % advance and 50 % on delivery' .
ELSEIF WA_EKKO-ZTERM EQ 'PA02' .
WA_DISPLAY-DESC = '100 % advance' .
ELSEIF WA_EKKO-ZTERM EQ 'PA01' .
WA_DISPLAY-DESC = 'Immediate receipt / accepting material'.
ELSEIF WA_EKKO-ZTERM EQ 'P120' .
WA_DISPLAY-DESC = '120 days receipt / accepting material' .
ENDIF.
ENDIF.
ENDIF.
APPEND WA_DISPLAY TO IT_DISPLAY.
CLEAR:WA_EKPO,WA_EKET,WA_MA61V,WA_MBEW,WA_EBAN,WA_EKKO,WA_LFA1,WA_DISPLAY.
ENDIF.
ENDIF.
CLEAR:WA_EKET.
ENDLOOP.
ENDFORM. " PROCESS_DATA
&----
*& Form BUILD_FIELDCAT
&----
text
-
FORM BUILD_FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'MATKL' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'Material Group' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'DISPO' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'Segment' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'MATNR' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'Material' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'VERPR' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'Rate' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'MENGE' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'PR Quantity' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
FIELDCAT-DO_SUM = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'VALUE1' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'PR Value' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'EBELN' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'PO Number' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
*ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'NETPR' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'PO Rate' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'MENGE1' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'PO Quantity' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
FIELDCAT-DO_SUM = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
*ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'VALUE2' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'PO Value' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'EINDT' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'Delivery Date' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'WEMNG' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'GR Quantity' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
FIELDCAT-DO_SUM = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'BALNC' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'Balance Quantity' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'VENNAME' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'Vendor' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'ZTERM' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'Pyment Terms' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ADD 1 TO COL_POS .
FIELDCAT-COL_POS = COL_POS .
FIELDCAT-FIELDNAME = 'DESC' .
FIELDCAT-TABNAME = 'FIELDCAT' .
FIELDCAT-SELTEXT_L = 'Pyment Terms Description' .
FIELDCAT-FIX_COLUMN = 'X' .
FIELDCAT-OUTPUTLEN = 'X' .
APPEND FIELDCAT .
CLEAR FIELDCAT .
ENDFORM. " BUILD_FIELDCAT
&----
*& Form DATA_DISPLAY
&----
text
-
FORM DATA_DISPLAY .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = 'ZMM_MATERIAL_ARRIVAL'
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
IT_FIELDCAT = FIELDCAT[]
TABLES
T_OUTTAB = IT_DISPLAY.
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. " DATA_DISPLAY
&----
*& Form TOP_OF_PAGE
&----
text
-
FORM TOP_OF_PAGE.
DATA: T_HEADER TYPE SLIS_T_LISTHEADER ,
WA_HEADER TYPE SLIS_LISTHEADER ,
T_LINE LIKE WA_HEADER-INFO ,
LD_LINES TYPE I ,
LD_LINESC(10) TYPE C .
TITLE
WA_HEADER-TYP = 'H' .
WA_HEADER-INFO = 'Daily Material Arrival Plan' .
APPEND WA_HEADER TO T_HEADER .
CLEAR WA_HEADER .
WA_HEADER-TYP = 'S' .
WA_HEADER-KEY = 'Date: ' .
IF SO_EINDT-HIGH NE '00000000' .
CONCATENATE SO_EINDT-LOW+6(2) '.'
SO_EINDT-LOW+4(2) '.'
SO_EINDT-LOW(4) 'to'
SO_EINDT-HIGH+6(2) '.'
SO_EINDT-HIGH+4(2) '.'
SO_EINDT-HIGH(4)
INTO WA_HEADER-INFO SEPARATED BY SPACE .
ELSEIF SO_EINDT-HIGH EQ '00000000' .
CONCATENATE SO_EINDT-LOW+6(2) '.'
SO_EINDT-LOW+4(2) '.'
SO_EINDT-LOW(4)
INTO WA_HEADER-INFO SEPARATED BY SPACE.
ENDIF.
APPEND WA_HEADER TO T_HEADER.
CLEAR:WA_HEADER.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = T_HEADER.
ENDFORM. " TOP_OF_PAGE
‎2008 Apr 08 5:43 PM
Hi Jaya,
First of all it is always better to divide your program into Subroutines using Perform statment.
So I go for PERFORM GET_DATA,PERFORM PROCESS_DATA,and so on..
In my PROCESS_DATA....here i am moving all the values that I require to be displayed in the final output to my final table which is my IT_DISPLAY.
This i guess will be the most challenging part as getting data from any number of tables is much simpler ...but to get data from all these tables and then go about processing it so that ultimately you can move it to u r final table for display is difficult.
Hence here in u r READ Statment it becomes very important to know which are your KEY FIELDS.
To understand what I am trying to do in my PROCESS_DATA...just go through the field catalog that i have built up..from there you will be able to find out what all columns I am displaying in my final output.For that column c the corresponding field name
Then in PROCESS_DATA,just go through to c how that column is getting populated exactly.
This will vary depending on the logic.
We ABAPER's and functionals cannot predict the sceanarios beforehand.So we process the data as per the requirement that we get the first time.
But after we send it for testing,there are various other scenarios possible and hence u may have to change your processing logic.
Do revert back for more.
‎2008 Apr 09 9:27 AM
Hi Rahul,
Pls help me
Will reward for sure.
Kisndly guide me
I need to develop report..table:sv012
there are fileds for
Purchasing organisation Plant Matrela nO Perid GrQUANTITY
They need the total for the gr quantity for each matearil..
what logic i need to apply
kindly guide me
‎2008 Apr 09 10:02 AM
Hi jaya,
Didnt c u r reply even though i had logged in since morning.sorry for that.
i am not getting what u want exactly
But Plant,Material,Period and Quantity u will get in EKBE table.
There is no sv012 table.
Plz tell them that if they want GR directly for a material..then ask them to c from EKET table against a PO number
For GR...the code is that i had posted earlier
Edited by: Rahul Bhat on Apr 9, 2008 11:08 AM
‎2008 Apr 10 5:17 AM
Hi Rahul,
I need to some modificatioons ..pls help..
acatually i m learning to use slis function in my code.
w_fldcat-fieldname = 'EKORG'.
w_fldcat-ref_tabname = 'S012'.
w_fldcat-tabname = 'GT_GOODS'.
w_fldcat-col_pos = 1.
i have used this much.
now i need to display 'purachasing oraganisation as heading under ekorg filed.
i mean it shud come
Purchasing organisation
100
101
shud i include sele text functionality..
in the bottom i like o display 'total' result.(which i got)
pls help me
‎2008 Apr 10 5:25 AM
Hi Jaya,
U r Purchasing Organization field is EKORG.
In that case u willl have to write
w_fldcat-fieldname = 'EKORG'.
w_fldcat-ref_tabname = 'S012'. ?????whats this..not reqd
w_fldcat-tabname = 'GT_GOODS'.
w_fldcat-seltext_l = 'Purchasing Organization'
w_fldcat-col_pos = 1.
append w_fldcat.
clear w_fldcat.
Thanks..
Do revert back for more
‎2008 Apr 10 5:38 AM
‎2008 Apr 10 5:40 AM
Hi,
In the o/p scren i need to adjust the length and width of grid or cliumn..
so what i shud include fopr this
‎2008 Apr 10 6:03 AM
‎2008 Apr 10 6:03 AM
Hi jaya...use the following
w_fldcat-OUTPUTLEN = '10' .
u can do from layout settings as well.
‎2008 Apr 10 6:05 AM
hi jaya,
my id is
rahulbhat2000 which is at yahoo and gmail both and .com
‎2008 Apr 10 6:06 AM
Hi,
w_fldcat-fieldname = 'MATNR'.
w_fldcat-tabname = 'GT_GOODS'.
w_fldcat-col_pos = 2.
w_fldcat-seltext_s = 'Materail no'.
w_fldcat-seltext_l = 'Material Number'.
append w_fldcat to i_fldcat.
I have done this much..
But in the o/p if i need to adjust the column width and lenth...
pls tell me what i need to do..
pls
i dnt know how to use layout
‎2008 Apr 10 6:17 AM
‎2008 Apr 10 6:18 AM
Hi jaya...do like below
w_fldcat-fieldname = 'MATNR'.
w_fldcat-tabname = 'GT_GOODS'.
w_fldcat-col_pos = 2.
w_fldcat-seltext_s = 'Materail no'.
w_fldcat-seltext_l = 'Material Number'.
w_fldcat-OUTPUTLEN = '10' .
here insted of 10 give what u want...
‎2008 Apr 10 6:22 AM
Hi,
Pls execute and see...
And pls tell emin the o/p i i need the full name..its not coming..
i also want my o/p like i can adjust the lenght and width of the grid as i want like we do in excel
REPORT ZTRST1.
&----
*& Report ZTRST
*&
&----
*&
*&
&----
*REPORT ZTRST no standard page heading line-size 200 line-count 200.
&&&& Tables Declaration &&&& *
Tables:S012.
type-pools: slis.
data: i_fldcat type slis_t_fieldcat_alv,
w_fldcat type slis_fieldcat_alv,
i_sort TYPE slis_t_sortinfo_alv,
wa_sort TYPE slis_sortinfo_alv,
wa_layout TYPE slis_layout_alv.
&&&&& Internal Table Declaration &&&&&
DATA:BEGIN OF GT_GOODS OCCURS 0,
EKORG LIKE S012-EKORG,
MATNR LIKE S012-MATNR,
WERKS LIKE S012-WERKS,
SPMON LIKE S012-SPMON,
SPTAG LIKE S012-SPTAG,
SPWOC LIKE S012-SPWOC,
SPBUP LIKE S012-SPBUP,
BASME LIKE S012-BASME,
WEMNG LIKE S012-WEMNG,
END OF GT_GOODS.
DATA:TOTAL LIKE VBAP-NETPR.
* &&&& SELECTION SCREEN &&&&& * *
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:S_EKORG FOR S012-EKORG,
S_MATNR FOR S012-MATNR,
S_WERKS FOR S012-WERKS,
S_SPMON FOR S012-SPMON,
S_SPTAG FOR S012-SPTAG,
S_SPWOC FOR S012-SPWOC,
S_SPBUP FOR S012-SPBUP,
S_BASME FOR S012-BASME.
SELECTION-SCREEN END OF BLOCK BLK1 .
START-OF-SELECTION.
***Performing Goods Information***
PERFORM FETCH_DATA.
PERFORM DISPLAY_DATA.
perform build_sort.
END-OF-SELECTION.
perform list_display.
&&& Fetch Data &&&**
&----
*& Form FETCH_DATA
&----
text
----
--> p1 text
<-- p2 text
----
FORM FETCH_DATA .
REFRESH GT_GOODS.
CLEAR GT_GOODS.
SELECT EKORG MATNR WERKS SPMON SPTAG SPWOC SPBUP BASME WEMNG FROM S012 INTO TABLE GT_GOODS WHERE EKORG IN S_EKORG
AND MATNR IN S_MATNR
AND WERKS IN S_WERKS
AND SPMON IN S_SPMON
AND SPTAG IN S_SPTAG
AND SPWOC IN S_SPWOC
AND SPBUP IN S_SPBUP
AND BASME IN S_BASME.
ENDFORM. " FETCH_DATA
&----
*& Form DISPLAY_DATA
&----
text
----
--> p1 text
<-- p2 text
----
FORM DISPLAY_DATA .
w_fldcat-fieldname = 'EKORG'.
*w_fldcat-ref_tabname = 'S012'.
w_fldcat-tabname = 'GT_GOODS'.
w_fldcat-col_pos = 1.
w_fldcat-seltext_s = 'Purchase Org'.
w_fldcat-seltext_l = 'Purchase Organisation'.
w_fldcat-OUTPUTLEN = '17'.
*w_fldcat-FIX_COLUMN = 'X' .
*w_fldcat-OUTPUTLEN = 'X' .
append w_fldcat to i_fldcat.
w_fldcat-fieldname = 'MATNR'.
w_fldcat-tabname = 'GT_GOODS'.
w_fldcat-col_pos = 2.
w_fldcat-seltext_s = 'Materail no'.
w_fldcat-seltext_l = 'Material Number'.
append w_fldcat to i_fldcat.
w_fldcat-fieldname = 'WERKS'.
w_fldcat-tabname = 'GT_GOODS'.
w_fldcat-col_pos = 3.
w_fldcat-seltext_s = 'Plant'.
w_fldcat-seltext_l = 'Plant'.
append w_fldcat to i_fldcat.
w_fldcat-fieldname = 'SPMON'.
w_fldcat-tabname = 'GT_GOODS'.
w_fldcat-col_pos = 4.
w_fldcat-seltext_s = 'Month'.
w_fldcat-seltext_l = 'Month'.
append w_fldcat to i_fldcat.
w_fldcat-fieldname = 'SPTAG'.
w_fldcat-tabname = 'GT_GOODS'.
w_fldcat-col_pos = 5.
w_fldcat-seltext_s = 'Date'.
w_fldcat-seltext_l = 'Date'.
append w_fldcat to i_fldcat.
w_fldcat-fieldname = 'SPWOC'.
w_fldcat-tabname = 'GT_GOODS'.
w_fldcat-col_pos = 6.
w_fldcat-seltext_s = 'Week'.
w_fldcat-seltext_l = 'Week'.
append w_fldcat to i_fldcat.
w_fldcat-fieldname = 'SPBUP'.
w_fldcat-tabname = 'GT_GOODS'.
w_fldcat-col_pos = 7.
w_fldcat-seltext_s = 'Period'.
w_fldcat-seltext_l = 'Period'.
append w_fldcat to i_fldcat.
w_fldcat-fieldname = 'BASME'.
w_fldcat-tabname = 'GT_GOODS'.
w_fldcat-col_pos = 8.
w_fldcat-seltext_s = 'Unit'.
w_fldcat-seltext_l = 'Unit'.
append w_fldcat to i_fldcat.
w_fldcat-fieldname = 'WEMNG'.
w_fldcat-tabname = 'GT_GOODS'.
w_fldcat-col_pos = 9.
w_fldcat-do_sum = 'X'.
w_fldcat-no_zero = 'X'.
w_fldcat-seltext_s = 'Quantity of Goods Recieved'.
w_fldcat-seltext_l ='Quantity of Goods Recieved'.
append w_fldcat to i_fldcat.
wa_layout-subtotals_text = 'Sub Totals'.
*SORT GT_GOODS BY EKORG..
*
*LOOP AT GT_GOODS.
*
*AT FIRST.
*
*WRITE:/ 'Purchasing Organisation',
*50 'Material Number',
*70 'Plant',
*90 'Month',
*100 'Current Date',
*130 'Week',
*179 'Gr Account'.
*ENDAT.
*
*AT NEW EKORG.
*WRITE:/ GT_GOODS-EKORG.
*ENDAT.
*
*WRITE:/50 GT_GOODS-MATNR,
*70 GT_GOODS-WERKS,
*90 GT_GOODS-SPMON,
*100 GT_GOODS-SPTAG,
*130 GT_GOODS-SPWOC,
*160 GT_GOODS-SPBUP,
*170 GT_GOODS-WEMNG.
**TOTAL = TOTAL + GT_GOODS-WEWRT.
*
*AT END OF EKORG.
*sum .
*ULINE.
*WRITE:110 'TOTAL = ', gt_goods-WEMNG no-zero.
*ULINE.
*SKIP.
*CLEAR TOTAL.
*ENDAT.
*
*ENDLOOP.
ENDFORM. " DISPLAY_DATA
&----
*& Form build_sort
&----
FORM build_sort .
wa_sort-fieldname = 'EKORG'.
wa_sort-up = 'X'.
wa_sort-subtot = 'X'.
append wa_sort to i_sort.
ENDFORM. " build_sort
&----
*& Form list_display
&----
FORM list_display .
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = sy-repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_STRUCTURE_NAME =
IS_LAYOUT = wa_layout
IT_FIELDCAT = i_fldcat
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
IR_SALV_LIST_ADAPTER =
IT_EXCEPT_QINFO =
I_SUPPRESS_EMPTY_DATA = ABAP_FALSE
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = GT_GOODS
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. " list_display
‎2008 Apr 10 6:29 AM
Hi jaya...
Full name is not coming???
in that case increase u r output length
w_fldcat-outputlen = '15'.
‎2008 Apr 10 6:35 AM
‎2008 Apr 10 6:35 AM
‎2008 Apr 10 6:42 AM
Hi,
can u pls execute my code ...
So u will see that the purchasing oragainsation full name is not dispalyed..
pls check..
‎2008 Apr 10 6:45 AM
hi jaya...
do like this
w_fldcat-fieldname = 'EKORG'.
*w_fldcat-ref_tabname = 'S012'.
w_fldcat-tabname = 'GT_GOODS'.
w_fldcat-col_pos = 1.
w_fldcat-seltext_s = 'Purchase Org'.
w_fldcat-seltext_l = 'Purchase Organisation'.
w_fldcat-OUTPUTLEN = '30'.
also write clear w_fldcat after append w_fldcat.
‎2008 Apr 10 6:52 AM
Hi Rahul,
Thanks a lot.
i HAVE Q SMALL DOUBT.
iF I NEED TO DISPLAY THE WORD "TOTAL'
WHAT SHUD I DO?
‎2008 Apr 10 6:57 AM
‎2008 Apr 08 6:50 AM
here is a peice of sample code that may help u out
plz reward if useful
&----
*& Report Z9D_PO_GOODSRECEIPT
*&
&----
*&
*&
&----
report z9d_po_goodsreceipt
message-id z9d_po
no standard page heading line-size 200 line-count 200.
types : begin of type_ekkoekpo,
ebeln type ebeln, "Purchasing Document Number
ebelp type ebelp, "Item Number of Purchasing Document
lifnr type elifn, "Vendor's account number
bedat type ebdat, "Purchasing Document Date
menge type bstmg, "Purchase order quantity
end of type_ekkoekpo.
types : begin of type_ekbe,
ebeln type ebeln, "Purchasing Document Number
ebelp type ebelp, "Item Number of Purchasing Document
zekkn type dzekkn, "Sequential number of account assignment
vgabe type vgabe, "Transaction/event type, purchase order history
gjahr type mjahr, "Material Document Year
belnr type mblnr, "Number of Material Document
buzei type mblpo, "Item in Material Document
budat type budat, "Posting Date in the Document
menge type menge_d, "Quantity
end of type_ekbe.
types : begin of type_lfa1,
lifnr type lifnr, "Account Number of Vendor or Creditor
name1 type name1_gp, "Name 1
end of type_lfa1.
types : type_t_ekkoekpo type type_ekkoekpo,
type_t_ekbe type type_ekbe,
type_t_lfa1 type type_lfa1.
*&---internal tables
data : it_ekbe type standard table of type_t_ekbe,
it_ekkoekpo type standard table of type_t_ekkoekpo,
it_lfa1 type standard table of type_t_lfa1.
*&----work areas
data : wa_ekbe type type_ekbe,
wa_ekkoekpo type type_ekkoekpo,
wa_lfa1 type type_t_lfa1.
*&---data for selection-screen
data : v_lifnr type lifnr,
v_name1 type name1,
v_ebeln type ebeln,
v_ebelp type ebelp,
v_bedat type bedat.
*&-----field symbol for the ekbe
field-symbols: <fekbe> type type_ekbe.
*&---data declaration
data : lvsum type menge_d value 0,
lvleft type menge_d value 0,
name1_low type name1,
name1_high type name1.
*&----
constants
constants : c_bw type i value '101'.
*&---initialization.
initialization.
clear wa_ekkoekpo.
clear wa_ekbe.
clear wa_lfa1.
refresh it_ekkoekpo.
refresh it_ekbe.
refresh it_lfa1.
*&----
defining the selection-screen
selection-screen begin of block bl1 with frame title text001.
select-options : s_lifnr for v_lifnr obligatory.
select-options : s_name1 for v_name1.
select-options : s_ebeln for v_ebeln.
select-options : s_ebelp for v_ebelp.
select-options : s_bedat for v_bedat.
selection-screen end of block bl1.
*&----
validation for selection-screen
at selection-screen on s_lifnr.
if s_lifnr[] is initial.
set cursor field 's_lifnr-low'.
message e001.
else.
select lifnr into v_lifnr
from lfa1
up to 1 rows
where lifnr in s_lifnr.
endselect.
if sy-subrc <> 0.
set cursor field 's_lifnr-low'.
message e001.
endif.
endif.
at selection-screen on s_name1.
select name1 into v_name1
from lfa1
up to 1 rows
where name1 in s_name1.
endselect.
if sy-subrc <> 0.
set cursor field 's_name1-low'.
message e002.
endif.
at selection-screen on s_ebeln.
select ebeln into v_ebeln
from ekko
up to 1 rows
where ebeln in s_ebeln.
endselect.
if sy-subrc <> 0.
set cursor field 's_ebeln-low'.
message e003.
endif.
at selection-screen on s_ebelp.
select ebelp into v_ebelp
from ekpo
up to 1 rows
where ebelp in s_ebelp.
endselect.
if sy-subrc <> 0.
set cursor field 's_ebelp-low'.
message e004.
endif.
*&---main logic
start-of-selection.
*&--populate the data from ekko & ekpo
select a~ebeln "Purchasing Document Number
b~ebelp "Item Number of Purchasing Document
a~lifnr "Vendor's account number
a~bedat "Purchasing Document Date
b~menge "Purchase order quantity
into table it_ekkoekpo
from ekko as a inner join ekpo as b
on aebeln = bebeln
where a~lifnr in s_lifnr and
a~ebeln in s_ebeln and
b~ebelp in s_ebelp and
a~bedat in s_bedat.
*&--populate the data from ekbe
if it_ekkoekpo[] is not initial.
select ebeln "Purchasing Document Number
ebelp "Item Number of Purchasing Document
zekkn "Sequential number of account assignment
vgabe "Transaction/event type, purchase order history
gjahr "Material Document Year
belnr "Number of Material Document
buzei "Item in Material Document
budat "Posting Date in the Document
menge "Quantity
into table it_ekbe
from ekbe
for all entries in it_ekkoekpo
where ebeln = it_ekkoekpo-ebeln and
ebelp = it_ekkoekpo-ebelp.
endif.
*&---populate the data from lfa1
if it_lfa1[] is not initial.
endif.
*&----
printing on the output clasical report
format color 5 on.
write:/2 'vendor name' , 16 'vendor name' , 54 'po no' , 64 'po item no' , 80 'po qty' , 101 'qty received' , 126 'qty pending'.
format color 5 off.
format color 7 on.
write:/2 'gr no' , 16 'gr item no ' , 34 'gr qty' , 45 'gr date'.
format color 7 off.
uline.
*&-----populate the data from lfa1
loop at it_ekkoekpo into wa_ekkoekpo.
format color 5 on.
read table it_lfa1 into wa_lfa1 with key lifnr = wa_ekkoekpo-lifnr.
if sy-subrc <> 0.
select single lifnr
name1
into wa_lfa1
from lfa1
FOR ALL ENTRIES IN it_lfa1
where lifnr = wa_lfa1-lifnr.
if sy-subrc = 0.
append wa_lfa1 to it_lfa1.
write:/2 wa_lfa1-lifnr , sy-vline ,
16 wa_lfa1-name1 , sy-vline ,
54 wa_ekkoekpo-ebeln , sy-vline ,
64 wa_ekkoekpo-ebelp , sy-vline ,
80 wa_ekkoekpo-menge , sy-vline .
endif.
else.
write:/2 wa_lfa1-lifnr , sy-vline ,
16 wa_lfa1-name1 , sy-vline ,
54 wa_ekkoekpo-ebeln , sy-vline ,
64 wa_ekkoekpo-ebelp , sy-vline ,
80 wa_ekkoekpo-menge , sy-vline .
endif.
endloop.
*&----caluculate the (qty received)
loop at it_ekbe into wa_ekbe .
lvsum = lvsum + wa_ekbe-menge.
endloop.
*&-----caluculate the qty pending
lvleft = wa_ekkoekpo-menge - lvsum.
write:101 lvsum , 126 lvleft.
clear : lvsum , lvleft.
uline.
format color 5 off.
loop at it_ekbe into wa_ekbe where ebeln = wa_ekkoekpo-ebeln and
ebelp = wa_ekkoekpo-ebelp.
format color 7 on.
write: sy-vline.
write:2 wa_ekbe-belnr , sy-vline ,
16 wa_ekbe-buzei , sy-vline ,
34 wa_ekbe-menge , sy-vline ,
45 wa_ekbe-budat , sy-vline , 138 sy-vline.
format color 7 off.
uline.
endloop.
‎2008 Apr 08 9:06 AM
Hi Vivek,
Thanks so much for responding.
I was understanding ur code.
I got stuck up with these lines.
I need to populate the data from lafa1 ..right?
so
i thought of using the code
select lifnr name` lifnr to table it_lifnr for all entries in it_ekbe where lifnr = it_ekbe-lifnr
is this right ?
*&---populate the data from lfa1
*if itlfa1[] is not initial.*_
endif.
here only my doubt starts?????????????
*&----
printing on the output clasical report
format color 5 on.
write:/2 'vendor name' , 16 'vendor name' , 54 'po no' , 64 'po item no' , 80 'po qty' , 101 'qty received' , 126 'qty pending'.
format color 5 off.
format color 7 on.
write:/2 'gr no' , 16 'gr item no ' , 34 'gr qty' , 45 'gr date'.
format color 7 off.
uline.
*&-----populate the data from lfa1
loop at it_ekkoekpo into wa_ekkoekpo.
format color 5 on.
read table it_lfa1 into wa_lfa1 with key lifnr = wa_ekkoekpo-lifnr.
if sy-subrc 0.
select single lifnr
name1
into wa_lfa1
from lfa1
FOR ALL ENTRIES IN it_lfa1
where lifnr = wa_lfa1-lifnr.
if sy-subrc = 0.
append wa_lfa1 to it_lfa1.
write:/2 wa_lfa1-lifnr , sy-vline ,
16 wa_lfa1-name1 , sy-vline ,
54 wa_ekkoekpo-ebeln , sy-vline ,
64 wa_ekkoekpo-ebelp , sy-vline ,
80 wa_ekkoekpo-menge , sy-vline .
endif.
else.
write:/2 wa_lfa1-lifnr , sy-vline ,
16 wa_lfa1-name1 , sy-vline ,
54 wa_ekkoekpo-ebeln , sy-vline ,
64 wa_ekkoekpo-ebelp , sy-vline ,
80 wa_ekkoekpo-menge , sy-vline .
endif.
endloop.
*&----caluculate the (qty received)
loop at it_ekbe into wa_ekbe .
lvsum = lvsum + wa_ekbe-menge.
endloop.
*&-----caluculate the qty pending
lvleft = wa_ekkoekpo-menge - lvsum.
write:101 lvsum , 126 lvleft.
clear : lvsum , lvleft.
uline.
format color 5 off.
loop at it_ekbe into wa_ekbe where ebeln = wa_ekkoekpo-ebeln and
ebelp = wa_ekkoekpo-ebelp.
format color 7 on.
write: sy-vline.
write:2 wa_ekbe-belnr , sy-vline ,
16 wa_ekbe-buzei , sy-vline ,
34 wa_ekbe-menge , sy-vline ,
45 wa_ekbe-budat , sy-vline , 138 sy-vline.
format color 7 off.
uline.
endloop.