You are on page 1of 4

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

*& Report ZZY_SALES_INTERNAL_SUBROUTINE


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zzy_sales_internal_subroutine LINE-COUNT 20(4) LINE-SIZE 300
MESSAGE-ID zzy_msg.
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.
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.
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,
v_count TYPE i.
TOP-OF-PAGE.
PERFORM design_header.
START-OF-SELECTION.
PERFORM header_data CHANGING it_vbak.
IF it_vbak[] IS NOT INITIAL.
PERFORM join_data USING
it_vbak
CHANGING it_vbap
it_final.

*
*

ELSE.
MESSAGE 'Header Data Not Found' TYPE 'I'.
MESSAGE i000. "(zzy_msg).
MESSAGE i398(00) WITH 'Header Data Not Found'.
LEAVE LIST-PROCESSING.
ENDIF.

END-OF-PAGE.
WRITE: /1(10) 'PAGE :' COLOR 3, sy-pagno.
END-OF-SELECTION.
PERFORM display_data USING it_final
CHANGING v_count.
IF it_final[] IS NOT INITIAL.
MESSAGE 'Report Displayed Successfully' TYPE 'S'.
MESSAGE s002 WITH v_count. "(zzy_msg).
ENDIF.
*&---------------------------------------------------------------------*
*&
Form design_header
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM design_header .
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.
ENDFORM.
" design_header
*&---------------------------------------------------------------------*
*&
Form header_data
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
<--P_IT_VBAK text
*----------------------------------------------------------------------*
FORM header_data CHANGING fp_it_vbak TYPE ty_t_vbak.
SELECT vbeln
erdat
ernam FROM vbak INTO TABLE fp_it_vbak
WHERE vbtyp = 'C'.
ENDFORM.
" header_data
*&---------------------------------------------------------------------*
*&
Form join_data
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*

*
-->P_IT_VBAK text
*
<--P_IT_VBAP text
*
<--P_IT_FINAL text
*----------------------------------------------------------------------*
FORM join_data USING
fp_it_vbak TYPE ty_t_vbak
CHANGING fp_it_vbap TYPE ty_t_vbap
fp_it_final TYPE ty_t_final.
DATA: wa_vbap TYPE ty_vbap,
wa_vbak TYPE ty_vbak,
wa_final TYPE ty_final.
SELECT vbeln
posnr
matnr
kwmeng
netwr
FROM vbap INTO TABLE fp_it_vbap
FOR ALL ENTRIES IN fp_it_vbak
WHERE vbeln = fp_it_vbak-vbeln.

"Joining Condition

IF sy-subrc = 0.
LOOP AT fp_it_vbap INTO wa_vbap.
wa_vbap-tot_pr = wa_vbap-kwmeng * wa_vbap-netwr.
MODIFY fp_it_vbap FROM wa_vbap TRANSPORTING tot_pr.
ENDLOOP.
ELSE.
*
MESSAGE 'Item Data Not Found' TYPE 'I'.
MESSAGE i001. "(zzy_msg).
LEAVE LIST-PROCESSING.
ENDIF.
*Program Join Begins
LOOP AT fp_it_vbap INTO wa_vbap.
wa_final-vbeln = wa_vbap-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 fp_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 fp_it_final.
ENDLOOP.
*Program Join Ends
ENDFORM.
" join_data
*&---------------------------------------------------------------------*
*&
Form display_data
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_IT_FINAL text
*
<--P_V_COUNT text
*----------------------------------------------------------------------*
FORM display_data USING
fp_it_final TYPE ty_t_final
CHANGING fp_v_count TYPE i.
*

DATA: wa_final TYPE ty_final.


LOOP AT fp_it_final INTO wa_final.
fp_v_count = fp_v_count + 1.
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.
ENDFORM.

" display_data

You might also like