‎2006 Nov 01 10:56 PM
Hi All,
This is Open Delivery Report and I have to add one column Order number to it, with document type ZDPC. As this report is very big, I got confused.
I am thinking the following changes to the report will work.
Please help me if it is right or do I need any more changes.
DATA: BEGIN OF ITAB_VBAK OCCURS 0,
VBELN LIKE VBAK-VBELN,
AUART LIKE VBAK-AUART,
BSTNK LIKE VBAK-BSTNK,
END OF ITAB_VBAK.
READ TABLE ITAB_VBAK WITH KEY VBELN = ITAB_LIPS-VBELN
AND AUART = ZDPC BINARY SEARCH.
And adding VBAK-VBELN to write statement.
Thanks,
Veni.
TABLES: LIKP,
LIPS,
VBFA,
VBRK,
VBRP,
VBAK,
KNA1.
DATA: LIN TYPE I,
TVGBEL LIKE LIPS-VGBEL.
* Internal Tables.
DATA: BEGIN OF ITAB_LIKP OCCURS 0,
VBELN LIKE LIKP-VBELN,
ERDAT LIKE LIKP-ERDAT,
KUNNR LIKE LIKP-KUNNR,
WADAT LIKE LIKP-WADAT_IST,
END OF ITAB_LIKP.
DATA: BEGIN OF ITAB_LIPS OCCURS 0,
VBELN LIKE LIPS-VBELN,
POSNR LIKE LIPS-POSNR,
MATNR LIKE LIPS-MATNR,
WERKS LIKE LIPS-WERKS,
LFIMG LIKE LIPS-LFIMG,
ARKTX LIKE LIPS-ARKTX,
VGBEL LIKE LIPS-VGBEL,
END OF ITAB_LIPS.
DATA: BEGIN OF ITAB_VBFA OCCURS 0,
VBELV LIKE VBFA-VBELV,
POSNV LIKE VBFA-POSNV,
VBELN LIKE VBFA-VBELN,
POSNN LIKE VBFA-POSNN,
END OF ITAB_VBFA.
DATA: BEGIN OF ITAB_VBFA1 OCCURS 0, "Neelima
VBELV LIKE VBFA-VBELV,
POSNV LIKE VBFA-POSNV,
PICKNO LIKE VBFA-VBELN,
ERDAT LIKE VBFA-ERDAT,
END OF ITAB_VBFA1.
DATA: BEGIN OF ITAB_VBRK OCCURS 0,
VBELN LIKE VBRK-VBELN,
FKDAT LIKE VBRK-FKDAT,
END OF ITAB_VBRK.
DATA: BEGIN OF ITAB_VBRP OCCURS 0,
VBELN LIKE VBRP-VBELN,
POSNR LIKE VBRP-POSNR,
KZWI1 LIKE VBRP-KZWI1,
NETWR LIKE VBRP-NETWR,
END OF ITAB_VBRP.
DATA: BEGIN OF ITAB_VBAK OCCURS 0,
VBELN LIKE VBAK-VBELN,
AUART LIKE VBAK-AUART,
BSTNK LIKE VBAK-BSTNK,
END OF ITAB_VBAK.
DATA: BEGIN OF ITAB_KNA1 OCCURS 0,
KUNNR LIKE KNA1-KUNNR,
NAME1 LIKE KNA1-NAME1,
END OF ITAB_KNA1.
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
SELECT-OPTIONS: SVBELN FOR LIKP-VBELN,
SERDAT FOR LIKP-ERDAT,
SWADAT FOR LIKP-WADAT_IST,
SKUNAG FOR LIKP-KUNAG,
SBSTNK FOR VBAK-BSTNK,
SWERKS FOR LIPS-WERKS,
SMATNR FOR LIPS-MATNR.
SELECTION-SCREEN END OF BLOCK B1.
*----------------------------------------------------------------------*
* Event START-OF-SELECTION.
START-OF-SELECTION.
SELECT VBELN ERDAT KUNNR WADAT_IST FROM LIKP INTO TABLE ITAB_LIKP
WHERE VBELN IN SVBELN
AND ERDAT IN SERDAT
AND WADAT_IST IN SWADAT
AND KUNAG IN SKUNAG.
DESCRIBE TABLE ITAB_LIKP LINES LIN.
IF LIN EQ 0.
WRITE: 'NO DATA FOUND'.
ELSE.
SORT ITAB_LIKP BY VBELN.
SELECT VBELN POSNR MATNR WERKS LFIMG ARKTX VGBEL
FROM LIPS INTO TABLE ITAB_LIPS
FOR ALL ENTRIES IN ITAB_LIKP
WHERE VBELN = ITAB_LIKP-VBELN
AND MATNR IN SMATNR
AND WERKS IN SWERKS.
SORT ITAB_LIPS BY VBELN POSNR.
SELECT KUNNR NAME1
FROM KNA1 INTO TABLE ITAB_KNA1
FOR ALL ENTRIES IN ITAB_LIKP
WHERE KUNNR = ITAB_LIKP-KUNNR.
ENDIF.
*----------------------------------------------------------------------*
* Checking for the customer PO.
LOOP AT ITAB_LIPS.
TVGBEL = ITAB_LIPS-VGBEL.
AT NEW VBELN.
SELECT SINGLE BSTNK FROM VBAK INTO VBAK-BSTNK
WHERE VBELN = TVGBEL.
ITAB_VBAK-VBELN = ITAB_LIPS-VBELN.
ITAB_VBAK-BSTNK = VBAK-BSTNK.
APPEND ITAB_VBAK.
CLEAR ITAB_VBAK.
ENDAT.
CLEAR TVGBEL.
ENDLOOP.
IF SBSTNK NE ' '.
LOOP AT ITAB_VBAK.
IF ITAB_VBAK-BSTNK IN SBSTNK.
CONTINUE.
ELSE.
DELETE ITAB_LIPS WHERE VBELN = ITAB_VBAK-VBELN.
DELETE ITAB_VBAK.
ENDIF.
ENDLOOP.
ENDIF.
SORT ITAB_VBAK BY VBELN.
SELECT VBELV POSNV VBELN ERDAT FROM VBFA INTO TABLE ITAB_VBFA1
FOR ALL ENTRIES IN ITAB_LIPS
WHERE VBELV = ITAB_LIPS-VBELN
AND POSNV = ITAB_LIPS-POSNR
AND VBTYP_N = 'Q'.
SELECT VBELV POSNV VBELN POSNN FROM VBFA INTO TABLE ITAB_VBFA
FOR ALL ENTRIES IN ITAB_LIPS
WHERE VBELV = ITAB_LIPS-VBELN
AND POSNV = ITAB_LIPS-POSNR
AND ( VBTYP_N = 'M' OR VBTYP_N = 'O' ).
DESCRIBE TABLE ITAB_VBFA LINES LIN.
IF LIN NE 0.
SELECT VBELN POSNR KZWI1 NETWR FROM VBRP INTO TABLE ITAB_VBRP
FOR ALL ENTRIES IN ITAB_VBFA
WHERE VBELN = ITAB_VBFA-VBELN
AND POSNR = ITAB_VBFA-POSNN.
SELECT VBELN FKDAT FROM VBRK INTO TABLE ITAB_VBRK
FOR ALL ENTRIES IN ITAB_VBRP
WHERE VBELN = ITAB_VBRP-VBELN.
SORT ITAB_VBRK BY VBELN FKDAT.
DELETE ADJACENT DUPLICATES FROM ITAB_VBRK.
*----------------------------------------------------------------------*
SORT ITAB_VBFA BY VBELV POSNV.
ULINE /(289).
LOOP AT ITAB_LIPS.
READ TABLE ITAB_LIKP WITH KEY VBELN = ITAB_LIPS-VBELN BINARY SEARCH.
READ TABLE ITAB_VBAK WITH KEY VBELN = ITAB_LIPS-VBELN BINARY SEARCH.
READ TABLE ITAB_VBFA WITH KEY VBELV = ITAB_LIPS-VBELN
POSNV = ITAB_LIPS-POSNR.
READ TABLE ITAB_VBFA1 WITH KEY VBELV = ITAB_LIPS-VBELN
POSNV = ITAB_LIPS-POSNR.
READ TABLE ITAB_KNA1 WITH KEY KUNNR = ITAB_LIKP-KUNNR.
IF SY-SUBRC EQ 0.
READ TABLE ITAB_VBRP WITH KEY VBELN = ITAB_VBFA-VBELN
POSNR = ITAB_VBFA-POSNN.
READ TABLE ITAB_VBRK WITH KEY VBELN = ITAB_VBRP-VBELN BINARY SEARCH.
WRITE: /01 SY-VLINE,
02 ITAB_LIPS-VBELN,
13 SY-VLINE,
14 ITAB_VBFA1-PICKNO,
25 SY-VLINE,
26 ITAB_VBFA1-ERDAT,
37 SY-VLINE,
38 ITAB_LIKP-ERDAT,
49 SY-VLINE,
50 ITAB_LIKP-KUNNR,
61 SY-VLINE,
62 ITAB_KNA1-NAME1,
98 SY-VLINE,
99 ITAB_LIPS-WERKS,
104 SY-VLINE,
105 ITAB_LIPS-POSNR,
112 SY-VLINE,
113 ITAB_LIPS-MATNR,
132 SY-VLINE,
133 ITAB_LIPS-ARKTX,
174 SY-VLINE,
175 ITAB_LIPS-LFIMG,
192 SY-VLINE,
193 ITAB_LIKP-WADAT,
204 SY-VLINE,
205 ITAB_VBRP-VBELN,
216 SY-VLINE,
217 ITAB_VBRK-FKDAT,
228 SY-VLINE,
229 ITAB_VBRP-KZWI1,
246 SY-VLINE,
247 ITAB_VBRP-NETWR,
267 SY-VLINE,
268 ITAB_VBAK-BSTNK,
289 SY-VLINE.
‎2006 Nov 02 1:27 AM
Hi,
Move the transporting after the with key addition..
READ TABLE ITAB_VBAK INTO WA_BSTNK
WITH KEY VBELN = ITAB_LIPS-VGBEL
TRANSPORTING BSTNK.
WA_BSTNK-BSTNK will have the purchase order number.
READ TABLE ITAB_VBAK INTO WA_ORDER
WITH KEY VBELN = ITAB_LIPS-VGBEL
AUART = 'ZDPC'
TRANSPORTING VBELN.
Thanks,
Naren
‎2006 Nov 01 11:01 PM
Hi,
I think you should use VGBEL instead of VBELN for the order number..Also in the read table you have to remove the AND
READ TABLE ITAB_VBAK WITH KEY VBELN = ITAB_LIPS-<b>VGBEL</b>
AUART = ZDPC BINARY SEARCH.
Thanks,
Naren
‎2006 Nov 01 11:15 PM
Hi,
READ TABLE ITAB_VBAK WITH KEY VBELN = ITAB_LIPS-VBELN BINARY SEARCH.
This is getting ITAB_VBAK-BSTNK,
By changing the stmt
READ TABLE ITAB_VBAK WITH KEY VBELN = <b>ITAB_LIPS-VGBEL</b>
AUART = ZDPC BINARY SEARCH.
and getting ITAB_VBAK-BSTNK and ITAB_VBAK-VBELN
will not effect right Naren.
Thanks
Veni.
‎2006 Nov 01 11:29 PM
Hi,
In your code..You are storing delivery number in the field ITAB_VBAK-VBELN...
I am not sure why you are doing that...As I don't know your requirement..
If you are storing delivery number in vbeln then you have to use ITAB_LIPS-VBELN instead of ITAB_LIPS-VGBEL...
LOOP AT ITAB_LIPS.
TVGBEL = ITAB_LIPS-VGBEL.
AT NEW VBELN.
SELECT SINGLE BSTNK FROM VBAK INTO VBAK-BSTNK
WHERE VBELN = TVGBEL.
<b>ITAB_VBAK-VBELN = ITAB_LIPS-VBELN.</b>
ITAB_VBAK-BSTNK = VBAK-BSTNK.
APPEND ITAB_VBAK.
CLEAR ITAB_VBAK.
ENDAT.
CLEAR TVGBEL.
ENDLOOP.
To avoid this confusion..do the following..The changes are marked in BOLD..
<b>DATA WA_ORDER LIKE ITAB_VBAK.
DATA WA_BSTNK LIKE ITAB_VBAK.</b>
ITAB_VBAK-VBELN = <b>TVGBEL</b>.
ITAB_VBAK-BSTNK = VBAK-BSTNK.
APPEND ITAB_VBAK.
READ TABLE ITAB_VBAK INTO WA_BSTNK
TRANSPORTING BSTNK
WITH KEY VBELN = <b>ITAB_LIPS-VGBEL</b>
BINARY SEARCH.
WA_BSTNK-BSTNK will have the purchase order number.
READ TABLE ITAB_VBAK INTO WA_ORDER
TRANSPORTING VBELN
WITH KEY VBELN = <b>ITAB_LIPS-VGBEL</b>
<b>AUART = 'ZDPC'</b>.
WA_ORDER-VBELN will have the order number for ZDPC..
use the WA_BSTNK-BSTNK and WA_ORDER-VBELN to display the values..
Hope this helps..
Thanks,
Naren
‎2006 Nov 02 12:56 AM
Hi Naren,
I am getting syntax error saying 'No component exists with the name "WITH".'
at
READ TABLE ITAB_VBAK INTO WA_BSTNK
TRANSPORTING BSTNK
WITH KEY VBELN = ITAB_LIPS-VGBEL
BINARY SEARCH.
This is a open delivery report, but users wants to have order num with ordtype ZDPC along with delivery number.
Thank you.
Regards
Veni.
‎2006 Nov 02 1:27 AM
Hi,
Move the transporting after the with key addition..
READ TABLE ITAB_VBAK INTO WA_BSTNK
WITH KEY VBELN = ITAB_LIPS-VGBEL
TRANSPORTING BSTNK.
WA_BSTNK-BSTNK will have the purchase order number.
READ TABLE ITAB_VBAK INTO WA_ORDER
WITH KEY VBELN = ITAB_LIPS-VGBEL
AUART = 'ZDPC'
TRANSPORTING VBELN.
Thanks,
Naren