You are on page 1of 3

*&---------------------------------------------------------------------*

*& Report ZZY_SALES_REPORT_1


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zzy_sales_report_1 LINE-COUNT 20(4) LINE-SIZE 300.
TYPES: BEGIN OF ty_vbap,
vbeln TYPE vbap-vbeln, "Sales Document
posnr TYPE vbap-posnr, "Line Item Number
matnr TYPE vbap-matnr, "Material
kwmeng TYPE vbap-kwmeng, "Quantity
netwr TYPE vbap-netwr, "Unit Price
tot_pr TYPE vbap-netwr, "Total Price
END OF ty_vbap,
BEGIN OF ty_vbak,
vbeln TYPE vbak-vbeln,
erdat TYPE vbak-erdat,
ernam TYPE vbak-ernam,
END OF ty_vbak,
BEGIN OF ty_final,
vbeln TYPE vbap-vbeln, "Sales Document
posnr TYPE vbap-posnr, "Line Item Number
matnr TYPE vbap-matnr, "Material
kwmeng TYPE vbap-kwmeng, "Quantity
netwr TYPE vbap-netwr, "Unit Price
tot_pr TYPE vbap-netwr, "Total Price
erdat TYPE vbak-erdat, "Date
ernam TYPE vbak-ernam, "Person
END OF ty_final,
BEGIN OF ty_tmp,
vbeln TYPE vbap-vbeln,
END OF ty_tmp.
TYPES: ty_t_vbap TYPE STANDARD TABLE OF ty_vbap,
* ty_t_vbak TYPE STANDARD TABLE OF ty_vbak,
ty_t_vbak TYPE SORTED TABLE OF ty_vbak
WITH NON-UNIQUE KEY vbeln,
ty_t_final TYPE STANDARD TABLE OF ty_final,
ty_t_tmp TYPE STANDARD TABLE OF ty_tmp.
DATA: it_vbap TYPE ty_t_vbap,
it_vbak TYPE ty_t_vbak,
it_final TYPE ty_t_final,
wa_vbap TYPE ty_vbap,
wa_vbak TYPE ty_vbak,
wa_final TYPE ty_final,
it_tmp TYPE ty_t_tmp,
wa_tmp TYPE ty_tmp,
v_cnt TYPE i.
TOP-OF-PAGE.
WRITE: /1(10) 'REPORT :' COLOR 4, sy-repid.
WRITE: /1(10) 'DATE :' COLOR 4, sy-datum.
WRITE: /1(10) 'TIME :' COLOR 4, sy-uzeit.
WRITE: /1(20) 'SALES DOCUMENT LIST REPORT' COLOR 4.
SKIP 1.
WRITE: /1(10) 'S.O. No.' COLOR 6,
13(10) 'Items' COLOR 6,
26(20) 'Material' COLOR 6,
48(20) 'Quantity' COLOR 6,
70(15) 'Unit Price' COLOR 6,
88(20) 'Total Price' COLOR 6,
112(10) 'Date' COLOR 6,
125(10) 'Person' COLOR 6.
START-OF-SELECTION.
SELECT vbeln
posnr
matnr
kwmeng
netwr
FROM vbap INTO TABLE it_vbap.
IF it_vbap[] IS NOT INITIAL.
LOOP AT it_vbap INTO wa_vbap.
wa_tmp-vbeln = wa_vbap-vbeln.
APPEND wa_tmp TO it_tmp.
ENDLOOP.
SORT it_tmp BY vbeln.
DELETE ADJACENT DUPLICATES FROM it_tmp
COMPARING ALL FIELDS.
* SORT it_vbak BY vbeln.
SELECT vbeln
erdat
ernam FROM vbak INTO TABLE it_vbak
FOR ALL ENTRIES IN it_tmp
WHERE vbeln = it_tmp-vbeln AND
vbtyp = 'C'.
IF sy-subrc = 0.
FREE it_tmp.
LOOP AT it_vbap INTO wa_vbap.
wa_vbap-tot_pr = wa_vbap-kwmeng * wa_vbap-netwr.
MODIFY it_vbap FROM wa_vbap TRANSPORTING tot_pr.
ENDLOOP.
ENDIF.
*Program Join Begins
LOOP AT it_vbap INTO wa_vbap.
* wa_final-vbeln = wa_vbap-vbeln.
MOVE wa_vbap-vbeln TO wa_final-vbeln.
wa_final-posnr = wa_vbap-posnr.
wa_final-matnr = wa_vbap-matnr.
wa_final-kwmeng = wa_vbap-kwmeng.
wa_final-netwr = wa_vbap-netwr.
wa_final-tot_pr = wa_vbap-tot_pr.
READ TABLE it_vbak INTO wa_vbak WITH KEY vbeln = wa_vbap-vbeln.
* BINARY SEARCH.
IF sy-subrc = 0.
wa_final-erdat = wa_vbak-erdat.
wa_final-ernam = wa_vbak-ernam.
ENDIF.
APPEND wa_final TO it_final.
ENDLOOP.
*Program Join Ends
ENDIF.
END-OF-PAGE.
WRITE: /1(10) 'PAGE :' COLOR 3, sy-pagno.
END-OF-SELECTION.
LOOP AT it_final INTO wa_final.
WRITE: /1(10) wa_final-vbeln,
13(10) wa_final-posnr,
26(20) wa_final-matnr,
48(20) wa_final-kwmeng,
70(15) wa_final-netwr,
88(20) wa_final-tot_pr,
112(10) wa_final-erdat,
125(10) wa_final-ernam.
ENDLOOP.
IF it_final[] IS NOT INITIAL.
DESCRIBE TABLE it_final LINES v_cnt.
MESSAGE s002(zzy_msg) WITH v_cnt. "sy-tfill.
ENDIF.

You might also like