REPORT ZSALES_VOLUME2.
TABLES:MARA,MAKT,VBRK,VBPA,KNA1,VBRP.
types : BEGIN OF TY_KNA1,
KUNNR TYPE KNA1-KUNNR,
NAME1 TYPE KNA1-NAME1,
END OF TY_KNA1.
START-OF-SELECTION.
IF R1 = 'X'.
PERFORM GET_KNA1.
PERFORM GET_FINAL.
ELSEIF R2 = 'X'.
PERFORM GET_VBRK.
PERFORM GET_TVFKT.
PERFORM GET_FINAL_DOC.
ELSEIF R4 = 'X'.
PERFORM GET_VBRP.
PERFORM GET_MAKT.
PERFORM GET_VBPA.
PERFORM GET_FINAL_MAT.
ENDIF.
*&---------------------------------------------------------------------*
*& Form GET_KNA1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_KNA1 .
select
kunnr
name1
FROM kna1 into TABLE i_kna1 where kunnr in s_kunnr.
ENDFORM. " GET_KNA1
*&---------------------------------------------------------------------*
*& Form GET_VBPA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_VBPA .
IF R4 = 'X'.
SELECT VBELN KUNNR FROM VBPA INTO TABLE I_VBPA
FOR ALL ENTRIES IN I_VBRP WHERE VBELN = I_VBRP-VBELN.
ELSE.
SELECT VBELN KUNNR FROM VBPA INTO TABLE I_VBPA
FOR ALL ENTRIES IN I_KNA1 WHERE KUNNR = I_KNA1-KUNNR
AND VBELN IN S_VBELN.
ENDIF.
ENDFORM. " GET_VBPA
*&---------------------------------------------------------------------*
*& Form GET_VBRK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_VBRK .
SELECT VBELN
NETWR
WAERK
FKART
FROM VBRK INTO TABLE I_VBRK FOR ALL ENTRIES IN I_VBPA WHERE
VBELN = I_VBPA-VBELN.
ENDFORM. " GET_VBRK
*&---------------------------------------------------------------------*
*& Form GET_FINAL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_FINAL .
LOOP AT I_VBPA INTO WA_VBPA.
READ TABLE I_VBRK WITH KEY VBELN = WA_VBPA-VBELN INTO
WA_VBRK.
IF SY-SUBRC = 0.
READ TABLE I_KNA1 WITH KEY KUNNR = WA_VBPA-KUNNR INTO
WA_KNA1.
IF SY-SUBRC = 0.
WA_FINAL-KUNNR = WA_KNA1-KUNNR.
WA_FINAL-NAME1 = WA_KNA1-NAME1.
* VBELN TYPE VBPA-VBELN,
WA_FINAL-NETWR = WA_VBRK-NETWR.
WA_FINAL-WAERK = WA_VBRK-WAERK.
ENDIF.
ENDIF.
* APPEND WA_FINAL TO I_FINAL.
COLLECT WA_FINAL INTO I_FINAL.
CLEAR: WA_KNA1,WA_VBRK,WA_VBPA,WA_FINAL.
ENDLOOP.
ENDFORM. " GET_FINAL
*&---------------------------------------------------------------------*
*& Form GET_TVFKT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_TVFKT .
SELECT
FKART
VTEXT
FROM TVFKT INTO TABLE I_TVFKT FOR ALL ENTRIES IN I_VBRK
WHERE FKART = I_VBRK-FKART.
* IF SY-SUBRC = 0.
* MESSAGE I100(00) .
* ENDIF.
WA_FINAL_DOC-KUNNR = WA_KNA1-KUNNR.
WA_FINAL_DOC-VBELN = WA_VBRK-VBELN.
* VBELN TYPE VBPA-VBELN,
WA_FINAL_DOC-NETWR = WA_VBRK-NETWR.
WA_FINAL_DOC-WAERK = WA_VBRK-WAERK.
WA_FINAL_DOC-VTEXT = WA_TVFKT-VTEXT.
ENDIF.
ENDIF.
ENDIF.
* APPEND WA_FINAL TO I_FINAL.
COLLECT WA_FINAL_DOC INTO I_FINAL_DOC.
CLEAR: WA_KNA1,WA_VBRK,WA_VBPA,WA_FINAL_DOC,WA_TVFKT.
ENDLOOP.
* WA_FINAL_MAT-KUNNR = WA_KNA1-KUNNR.
* WA_FINAL_MAT-MATNR = WA_VBRK-VBELN.
** VBELN TYPE VBPA-VBELN,
* WA_FINAL_MAT-ARKTX = WA_
* WA_FINAL_MAT-NETWR = WA_VBRK-NETWR.
* WA_FINAL_MAT-WAERK = WA_VBRK-WAERK.
* WA_FINAL_MAT-VTEXT = WA_TVFKT-VTEXT.
WA_FINAL_MAT-KUNNR = WA_VBPA-KUNNR.
WA_FINAL_MAT-MATNR = WA_MAKT-MATNR.
WA_FINAL_MAT-MAKTX = WA_MAKT-MAKTX.
WA_FINAL_MAT-POSNR = WA_VBRP-POSNR.
WA_FINAL_MAT-MEINS = WA_VBRP-MEINS.
WA_FINAL_MAT-NETWR = WA_VBRP-NETWR.
APPEND WA_FINAL_MAT TO I_FINAL_MAT.
* ENDIF.
ENDIF.
ENDIF.
* APPEND WA_FINAL_MAT TO I_FINAL.
* COLLECT WA_FINAL_MAT INTO I_FINAL_MAT.
CLEAR: WA_VBPA,WA_VBRP,WA_FINAL_MAT,WA_MAKT.
ENDLOOP.
ENDFORM. " GET_FINAL_MAT
*&---------------------------------------------------------------------*
*& Form GET_VBRP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_VBRP .
SELECT
matnr
VBELN
POSNR
MEINS
NETWR FROM VBRP INTO TABLE I_VBRP where MATNR IN S_MATNR.