You are on page 1of 12

CREATE A REPORT FOR FOLLOWING DETAIL:

REQUIREMENT:

1) Get Data from VBRK based on selection screen input Fields


Vbrk-vbeln populating Data into it_vbrk.
2) Get Fields Data VBELN POSNR FKIMG VGBEL VGPOS from VBRP
Where VBRP-VBELN = for all entries of it_vbrk-vbeln
From 2nd Step populate Data in IT_VBRP.
IT_VBRP is having Delivery Doc number in VGBEL and Del Item. No in VGPOS
IT_VBRPcopy (VBELN, TOTBILL qty, Corresponding Delivery number VGBEL)
3) Get Data From LIPS table for the fields VBELN POSNR LFIMG VGBEL
VGPOS
where LIPS-VBELN = for all entries IT_VBRP-vgbel and
LIPS-posnr = for all entries IT_VBRP-vgpos
From 3rd Step populate Data in IT_lips.

IT_lipscopy (VBELN, TOt del item qty, Corresponding Sales ord.no VGBEL)
4) Get Data From VBAP table for the fields VBELN POSNR kwmeng
where vbap-VBELN = for all entries IT_lips-vgbel and
vbap-posnr = for all entries IT_lips-vgpos
From 4th Step populate Data in IT_vbap.
IT_vbapcopy (VBELN, TOt sord item qty,)
1

5) Final Internal Table: it_final:


Sales Doc No, Tot Item qty for SORDno, Delidoc no, Tot Item qty for Del.NO,
Billing Doc no, Tot Item qty for Bill Doc.NO .
loop at it_vbapcopy.
it_final-sordno = it_vbapcopy-vbeln.
it_final-sordqty = it_vbapcopy-TOt sord item qty.
read IT_lipscopy with key vgbel = it_vbapcopy-vbeln.
if record found then populate

it_final-Delidocno = IT_lipscopy-vbeln
it_final-Tot Item qty for Del.NO = IT_lipscopy-TOt del item qty.
read it_vbrpcopy with key vgbel = IT_lipscopy-vbeln.
if record found then populate
it_final-Billdocno = it_vbrpcopy-vbeln
it_final-Tot Item qty for Bill Doc.NO = it_vbrpcopy-TOTBILL qty.
Add Record to it_final internal table

endloop.

CODING:
2

*&---------------------------------------------------------------------*
*& Report ZROUGH3
*& package name : zrproject
*&---------------------------------------------------------------------*
*&transport request number: e01k901774
*&
*&---------------------------------------------------------------------*
REPORT ZPROJECT_12 LINE-COUNT 20(2) LINE-SIZE 255.
TYPES: BEGIN OF TY_VBRK,
VBELN TYPE VBRK-VBELN,
"BILLING DOCUMENT NUMBER
END OF TY_VBRK.
DATA: TA_VBRK TYPE TABLE OF TY_VBRK,
WA_VBRK TYPE TY_VBRK.
TYPES: BEGIN OF TY_VBRP,
VBELN TYPE VBRP-VBELN,
POSNR TYPE VBRP-POSNR,
FKIMG TYPE VBRP-FKIMG,
VGBEL TYPE VBRP-VGBEL,
VGPOS TYPE VBRP-VGPOS,
END OF TY_VBRP.

"BILLING DOCUMENT NUMBER


"BILLING ITEM
"INVOICED QUANTITY
"DOC NUMB OF REF DOC
"ITEM NUMB OF REF ITEM

DATA: TA_VBRP TYPE TABLE OF TY_VBRP,


WA_VBRP TYPE TY_VBRP,
WA_VBRP_N TYPE TY_VBRP.
"DUMMY WORK AREA TO TRANSFER VALUES
TYPES: BEGIN OF TY_VBRPCOPY,
VBELN TYPE VBRP-VBELN,
TOT_BQ TYPE VBRP-fkimg,
VGBEL TYPE VBRP-VGBEL,
END OF TY_VBRPCOPY.

"TOTAL BILLING ITEM


"CORREPONDING DOC NUMBER

DATA: TA_VBRPCOPY TYPE TABLE OF TY_VBRPcopy,


WA_VBRPCOPY TYPE TY_VBRPcopy.
*data: sub_tot_bq type vbrp-fkimg,
*
tot_bq type vbrp-fkimg.
***declaration of delivery document table***
TYPES: BEGIN OF TY_LIPS,
VBELN TYPE LIPS-VBELN,
POSNR TYPE LIPS-POSNR,
LFIMG TYPE LIPS-LFIMG,
VGBEL TYPE LIPS-VGBEL,
VGPOS TYPE LIPS-VGPOS,
END OF TY_LIPS.

"DELIVERY NUMBER
"DELIVERY ITEM
"ACTUAL QUAN DELIVERED
"DOC NUMB OF REF DOC
"ITEM NUMB OF REF ITEM

DATA: TA_LIPS TYPE TABLE OF TY_LIPS,


WA_LIPS TYPE TY_LIPS,
wa_lips_n type ty_lips.
TYPES: BEGIN OF TY_LIPSCOPY,
VBELN TYPE LIPS-VBELN,
TOT_DIQ TYPE LIPS-lfimg,
VGBEL TYPE LIPS-VGBEL,
END OF TY_LIPSCOPY.

"TOTAL DELIVER ITEM QUANTITY

DATA: TA_LIPSCOPY TYPE TABLE OF TY_LIPSCOPY,


WA_LIPSCOPY TYPE TY_LIPSCOPY.
TYPES: BEGIN OF TY_VBAP,
VBELN TYPE VBAP-VBELN,
POSNR TYPE VBAP-POSNR,
KWMENG TYPE VBAP-KWMENG,
END OF TY_VBAP.

"SALES DOC NO
"SALES DOC ITEM
"CUMULATIVE ORDER QUANTITY IN SALES

DATA: TA_VBAP TYPE TABLE OF TY_VBAP,


WA_VBAP TYPE TY_VBAP,
WA_VBAP_N TYPE TY_VBAP.
TYPES: BEGIN OF TY_VBAPCOPY,
VBELN TYPE VBAP-VBELN,
TOT_SIQ TYPE VBAP-KWMENG,

"TOTAL SALES ORDER ITEM QUANTITY

END OF TY_VBAPCOPY.
DATA: TA_VBAPCOPY TYPE TABLE OF TY_VBAPCOPY,
WA_VBAPCOPY TYPE TY_VBAPCOPY.
***DECLARATION OF FINAL TABLE***
TYPES: BEGIN OF TY_FINAL,
VBELN TYPE VBAP-VBELN,
TOT_SIQ TYPE VBAP-KWMENG,
P_VBELN TYPE LIPS-VBELN,
TOT_DIQ TYPE LIPS-LFIMG,
Q_VBELN TYPE VBRP-VBELN,
TOT_BQ TYPE VBRP-FKIMG,
END OF TY_FINAL.
DATA: TA_FINAL TYPE TABLE OF TY_FINAL,
WA_FINAL TYPE TY_FINAL.
***DESIGNING SELECTION SCREEN***

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.


SELECT-OPTIONS: SO_VBELN FOR WA_VBRK-VBELN.
SELECTION-SCREEN END OF BLOCK B1.
***START-OF-SELECTION. ***
START-OF-SELECTION.
SELECT VBELN FROM VBRK INTO TABLE TA_VBRK WHERE VBELN IN SO_VBELN.
IF SY-SUBRC NE 0.
MESSAGE 'INVALID DOCUMENT NUMBER' TYPE 'E'.
ENDIF.
IF TA_VBRK IS NOT INITIAL.
SELECT VBELN POSNR FKIMG VGBEL VGPOS FROM VBRP INTO CORRESPONDING FIELDS
OF TABLE TA_VBRP
FOR ALL ENTRIES IN TA_VBRK
WHERE VBELN = TA_VBRK-VBELN.
ENDIF.
IF TA_VBRP IS NOT INITIAL.
SELECT vBELN POSNR LFIMG VGBEL VGPOS FROM LIPS INTO CORRESPONDING FIELDS O
F TABLE TA_LIPS
FOR ALL ENTRIES IN TA_VBRP
WHERE VBELN = TA_VBRP-VGBEL AND
POSNR = TA_VBRP-VGPOS.
ENDIF.
IF TA_LIPS IS NOT INITIAL.
SELECT VBELN POSNR KWMENG FROM VBAP INTO TABLE TA_VBAP FOR ALL ENTRIES I
N TA_LIPS
WHERE VBELN = TA_LIPS-VGBEL AND
POSNR = TA_LIPS-VGPOS.
ENDIF.
sort ta_vbrp by vbeln.
delete ADJACENT DUPLICATES FROM ta_vbrp COMPARING ALL FIELDS.
loop at ta_vbrp into wa_vbrp.
clear wa_vbrp_n.
wa_vbrp_n = wa_vbrp.
at new vbeln.

wa_vbrpcopy-vbeln = wa_vbrp-vbeln.

ENDAT.
wa_vbrpcopy-vgbel = wa_vbrp-vgbel.
wa_vbrpcopy-tot_bq = wa_vbrpcopy-tot_bq + wa_vbrp_n-fkimg.
*tot_bq = tot_bq + sub_tot_bq.

at END OF vbeln.
append wa_vbrpcopy to ta_vbrpcopy.
clear wa_vbrpcopy-tot_bq.
ENDAT.
ENDLOOP.
***FOR DELIVERY DOCUMENT***
sort ta_LIPS by vbeln.
delete ADJACENT DUPLICATES FROM ta_LIPS COMPARING ALL FIELDS.
loop at ta_LIPS into wa_LIPS.
clear wa_LIPS_n.
wa_LIPS_n = wa_LIPS.
at new vbeln.

wa_LIPScopy-vbeln = wa_LIPS-vbeln.

ENDAT.
wa_LIPScopy-vgbel = wa_LIPS-vgbel.
wa_LIPScopy-tot_DIq = wa_LIPScopy-tot_DIq + wa_LIPS-LFImg.
*tot_bq = tot_bq + sub_tot_bq.

at END OF vbeln.
append wa_LIPScopy to ta_LIPScopy.
clear wa_LIPScopy-tot_DIq.
ENDAT.
ENDLOOP.

***SALES DOCUMENT***
sort ta_VBAP by vbeln.
delete ADJACENT DUPLICATES FROM ta_VBAP COMPARING ALL FIELDS.
loop at ta_VBAP into wa_VBAP.
clear wa_VBAP_n.
wa_VBAP_n = wa_VBAP.
at new vbeln.

wa_VBAPcopy-vbeln = wa_VBAP-vbeln.

ENDAT.
wa_VBAPcopY-tot_SIq = wa_VBAPcopy-tot_SIq + wa_VBAP-KWMENG.
*tot_bq = tot_bq + sub_tot_bq.

at END OF vbeln.
append wa_VBAPcopy to ta_VBAPcopy.
clear wa_VBAPcopy-tot_SIq.
ENDAT.
ENDLOOP.
loop at ta_vbapcopy into wa_vbapcopy.
wa_final-vbeln = wa_vbapcopy-vbeln.
wa_final-tot_siq = wa_vbapcopy-tot_siq.
read TABLE ta_lipscopy into wa_lipscopy with key vgbel = wa_vbapcopy-vbeln.
if sy-subrc = 0.
wa_final-p_vbeln = wa_lipscopy-vbeln.
wa_final-tot_diq = wa_lipscopy-tot_diq.
endif.
read TABLE ta_vbrpcopy into wa_vbrpcopy with key vgbel = wa_lipscopy-vbeln.
if sy-subrc = 0.
wa_final-q_vbeln = wa_vbrpcopy-vbeln.
wa_final-tot_bq = wa_vbrpcopy-tot_bq.
ENDIF.

*modify ta_final FROM wa_final.


APPEND wa_final to ta_final.
clear wa_final.
endloop.
***end-of-SELECTION.***
end-of-SELECTION.
if ta_final is NOT INITIAL.
loop at ta_final INTO wa_final.
write:/ wa_final-vbeln , 20 wa_final-tot_siq , 40 wa_final-p_vbeln , 60 wa
_final-tot_diq,
80 wa_final-q_vbeln , 100 wa_final-tot_bq.
ENDLOOP.
ELSE.
MESSAGE 'NO DOCUMENT AVAILABLE' TYPE 'E'.
endif.
***TOP-OF-page***
TOP-OF-page.
write:/ 'sales document number' , 20 'saled item quantity', 40 'delivery doc.n
o' ,
60 'delivered quantity' ,80 'billing doc.no' ,100 'billed
quantity'.

OUTPUT:

NEGATIVE TESTING:

10

FOR WRONG DATA

11

NON AVAILABILITY OF DOCUMENT

12

You might also like