Sei sulla pagina 1di 7

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

*& Report ZSALES_4


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

REPORT zsales_4 NO STANDARD PAGE HEADING LINE-SIZE 250.

*& sales order


TYPES: BEGIN OF ty_vbak, " header
vbeln TYPE vbak-vbeln,
erdat TYPE vbak-erdat,
kunnr TYPE kunnr,
END OF ty_vbak.

TYPES: BEGIN OF ty_vbap, " item


vbeln TYPE vbap-vbeln,
posnr TYPE vbap-posnr,
matnr TYPE vbap-matnr,
END OF ty_vbap.

*& delivery doc


TYPES: BEGIN OF ty_likp, " header
vbeln TYPE likp-vbeln,
erdat TYPE likp-erdat, " delivery date
vkorg TYPE likp-vkorg, " sales org
kunnr TYPE likp-kunnr,
END OF ty_likp.

TYPES: BEGIN OF ty_lips, " item


vbeln TYPE lips-vbeln,
posnr TYPE lips-posnr,
matnr TYPE lips-matnr,
vgbel TYPE lips-vgbel,
END OF ty_lips.

*& Billing Doc


TYPES: BEGIN OF ty_vbrk, " header
vbeln TYPE vbrk-vbeln,
fkart TYPE vbrk-fkart,
kunrg TYPE vbrk-kunrg,
END OF ty_vbrk.

TYPES: BEGIN OF ty_vbrp, " item.


vbeln TYPE vbrp-vbeln,
posnr TYPE vbrp-posnr,
aubel TYPE vbrp-aubel,
END OF ty_vbrp.

*& customer
TYPES: BEGIN OF ty_kna1,
kunnr TYPE kna1-kunnr,
name1 TYPE kna1-name1,
name2 TYPE kna1-name2,
END OF ty_kna1.

TYPES: BEGIN OF ty_vbuk,


vbeln TYPE vbuk-vbeln,
gbstk TYPE vbuk-gbstk,
END OF ty_vbuk.

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

TYPES: BEGIN OF ty_final, " header


svbeln TYPE vbak-vbeln,
serdat TYPE vbak-erdat,
skunnr TYPE kunnr, " sold to party

sposnr TYPE vbap-posnr,


smatnr TYPE vbap-matnr,

dvbeln TYPE likp-vbeln,


derdat TYPE likp-erdat, " delivery date
dvkorg TYPE likp-vkorg, " sales org
dkunnr TYPE likp-kunnr, "ship to party

dposnr TYPE lips-posnr,


dmatnr TYPE lips-matnr,
dvgbel TYPE lips-vgbel,

bvbeln TYPE vbrk-vbeln,


bfkart TYPE vbrk-fkart,
bkunrg TYPE vbrk-kunrg, " payer

bposnr TYPE vbrp-posnr,


baubel TYPE vbrp-aubel,

kname1 TYPE kna1-name1,


kname2 TYPE kna1-name2,

ovbeln TYPE vbuk-vbeln,


ogbstk TYPE vbuk-gbstk,
status TYPE c LENGTH 20,
END OF ty_final.
*&----------------------------------------
*&----------------------------------------

*& data declarations


*& gt => global IT
*& gs => global strture , work area

DATA : gt_vbak TYPE TABLE OF ty_vbak,


gs_vbak TYPE ty_vbak,

gt_vbap TYPE TABLE OF ty_vbap,


gs_vbap TYPE ty_vbap,

gt_likp TYPE TABLE OF ty_likp,


gs_likp TYPE ty_likp,

gt_lips TYPE TABLE OF ty_lips,


gs_lips TYPE ty_lips,
gt_vbrk TYPE TABLE OF ty_vbrk,
gs_vbrk TYPE ty_vbrk,

gt_vbrp TYPE TABLE OF ty_vbrp,


gs_vbrp TYPE ty_vbrp,

gt_kna1 TYPE TABLE OF ty_kna1,


gs_kna1 TYPE ty_kna1,

gt_vbuk TYPE TABLE OF ty_vbuk, " sales order status


gs_vbuk TYPE ty_vbuk,

gt_final TYPE TABLE OF ty_final,


gs_final TYPE ty_final.

*& selection screen

SELECT-OPTIONS : s_erdat FOR gs_likp-erdat, " date craeted on


s_vkorg FOR gs_likp-vkorg NO INTERVALS. " sales organisation

INITIALIZATION.

s_erdat-low = '19970124'.
s_erdat-option = 'EQ'.
s_erdat-sign = 'I'.
APPEND s_erdat.

s_vkorg-low = '1000'.
s_vkorg-option = 'EQ'.
s_vkorg-sign = 'I'.
APPEND s_vkorg.

AT SELECTION-SCREEN.

*PERFORM validation_selection_screen.

START-OF-SELECTION.

PERFORM get_data.

PERFORM process_data.

PERFORM print_data.

*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_data .
SELECT vbeln " del doc details
erdat
vkorg
kunnr
FROM likp
INTO TABLE gt_likp
WHERE erdat IN s_erdat
AND vkorg IN s_vkorg.

IF sy-subrc = 0.
SELECT vbeln " del doc
posnr
matnr
vgbel " sales doc
FROM lips
INTO TABLE gt_lips
FOR ALL ENTRIES IN gt_likp
WHERE vbeln = gt_likp-vbeln.

IF sy-subrc = 0 .
SELECT vbeln " sales doc
erdat
kunnr
FROM vbak
INTO TABLE gt_vbak
FOR ALL ENTRIES IN gt_lips
WHERE vbeln = gt_lips-vgbel.

IF sy-subrc = 0.
SELECT vbeln
posnr
matnr
FROM vbap
INTO TABLE gt_vbap
FOR ALL ENTRIES IN gt_vbak
WHERE vbeln = gt_vbak-vbeln.

IF gt_vbak IS NOT INITIAL.


SELECT vbeln " billing doc
posnr
aubel " sales do cno
FROM vbrp
INTO TABLE gt_vbrp
FOR ALL ENTRIES IN gt_vbak
WHERE aubel = gt_vbak-vbeln.

IF sy-subrc = 0 .
SELECT vbeln
fkart
kunrg
FROM vbrk
INTO TABLE gt_vbrk
FOR ALL ENTRIES IN gt_vbrp
WHERE vbeln = gt_vbrp-vbeln.

ENDIF.

SELECT kunnr
name1
name2
FROM kna1
INTO TABLE gt_kna1
FOR ALL ENTRIES IN gt_vbak
WHERE kunnr = gt_vbak-kunnr.

SELECT vbeln
gbstk
FROM vbuk
INTO TABLE gt_vbuk
FOR ALL ENTRIES IN gt_vbak
WHERE vbeln = gt_vbak-vbeln.

ENDIF.

ENDIF.

ENDIF.
ENDIF.

ENDFORM. " GET_DATA


*&---------------------------------------------------------------------*
*& Form PROCESS_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM process_data .

LOOP AT gt_lips INTO gs_lips.

READ TABLE gt_likp INTO gs_likp WITH KEY vbeln = gs_lips-vbeln.

IF sy-subrc = 0 .
READ TABLE gt_vbap INTO gs_vbap WITH KEY vbeln = gs_lips-vgbel
posnr = gs_lips-posnr.
IF sy-subrc = 0 .
READ TABLE gt_vbak INTO gs_vbak WITH KEY vbeln = gs_lips-vgbel.

IF sy-subrc = 0.
READ TABLE gt_kna1 INTO gs_kna1 WITH KEY kunnr = gs_vbak-kunnr.

IF sy-subrc = 0 .
READ TABLE gt_vbrp INTO gs_vbrp WITH KEY aubel = gs_vbap-vbeln
posnr = gs_vbap-posnr.

IF sy-subrc = 0 .
READ TABLE gt_vbrk into gs_vbrk with key vbeln = gs_vbrp-vbeln.

IF sy-subrc = 0 .
READ TABLE gt_vbuk into gs_vbuk WITH KEY vbeln = gs_vbap-vbeln.

IF sy-subrc = 0.

gs_final-svbeln = gs_vbak-vbeln.
gs_final-serdat = gs_vbak-erdat.
gs_final-skunnr = gs_vbak-kunnr .
gs_final-sposnr = gs_vbap-posnr.
gs_final-smatnr = gs_vbap-matnr.

gs_final-dvbeln = gs_likp-vbeln.
gs_final-derdat = gs_likp-erdat.
gs_final-dvkorg = gs_likp-vkorg.
gs_final-dkunnr = gs_likp-kunnr.

gs_final-dposnr = gs_lips-posnr.
gs_final-dmatnr = gs_lips-matnr.
gs_final-dvgbel = gs_lips-vgbel.

gs_final-bvbeln = gs_vbrk-vbeln.
gs_final-bfkart = gs_vbrk-fkart.
gs_final-bkunrg = gs_vbrk-kunrg.

gs_final-bposnr = gs_vbrp-posnr.
gs_final-baubel = gs_vbrp-aubel.

gs_final-kname1 = gs_kna1-name1..
gs_final-kname2 = gs_kna1-name2.

gs_final-ovbeln = gs_vbuk-vbeln.
gs_final-ogbstk = gs_vbuk-gbstk.
IF gs_final-ogbstk = 'A'.
gs_final-status = 'Not yet processed'.
ELSEIF gs_final-ogbstk = 'B'.
gs_final-status = 'Partially processed'.
elseif gs_final-ogbstk = 'C'.
gs_final-status = 'Completely processed'.
ENDIF.
APPEND gs_final to gt_final.

ENDIF.
ENDIF.
ENDIF.

ENDIF.
ENDIF.
ENDIF.

ENDIF.

ENDLOOP.

ENDFORM. " PROCESS_DATA


*&---------------------------------------------------------------------*
*& Form PRINT_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM print_data .

LOOP AT gt_final into gs_final.


WRITE : / gs_final-svbeln COLOR 2,
gs_final-serdat,
* gs_final-skunnr,

gs_final-sposnr,
gs_final-smatnr,

gs_final-dvbeln COLOR 3,
gs_final-derdat,
gs_final-dvkorg,
* gs_final-dkunnr,

gs_final-dposnr,
gs_final-dmatnr,
* gs_final-dvgbel,

gs_final-bvbeln COLOR 4,
gs_final-bfkart,
* gs_final-bkunrg,

gs_final-bposnr,
* gs_final-baubel,

gs_final-kname1,
gs_final-kname2,

* gs_final-ovbeln,
* gs_final-ogbstk,
gs_final-status.

ENDLOOP.

ENDFORM. " PRINT_DATA

Potrebbero piacerti anche