Sie sind auf Seite 1von 3

REPORT zdbcpy NO STANDARD PAGE HEADING.

TABLES : mkpf,
mseg,
zppmseg,
zj1ig_recd_543.

DATA : lv_msg TYPE STANDARD TABLE OF zppmseg,


wa_msg TYPE zppmseg.
DATA : lv_msi TYPE STANDARD TABLE OF zj1ig_recd_543,
wa_msi TYPE zj1ig_recd_543.

DATA : tt_msg TYPE STANDARD TABLE OF mseg WITH HEADER LINE,


tt_msg544 TYPE STANDARD TABLE OF mseg WITH HEADER LINE.

SELECT-OPTIONS : s_datee FOR mkpf-budat,


s_bwart FOR mseg-bwart,
s_werks FOR mseg-werks,
s_mblnr FOR mseg-mblnr,
s_lifnr FOR mseg-lifnr NO-DISPLAY.
PARAMETERS : sch AS CHECKBOX.
PARAMETERS : up1 AS CHECKBOX,
up2 AS CHECKBOX.

INITIALIZATION.

START-OF-SELECTION.
FREE s_lifnr.
s_lifnr-low = '0000002001'.
s_lifnr-option = 'EQ'.
s_lifnr-sign = 'I'.
APPEND s_lifnr.
s_lifnr-low = '0000002002'.
s_lifnr-option = 'EQ'.
s_lifnr-sign = 'I'.
APPEND s_lifnr.
IF sch EQ 'X'.
FREE s_datee.
s_datee-low = sy-datum - 1.
s_datee-high = sy-datum - 1.
s_datee-option = 'BT'.
s_datee-sign = 'I'.
APPEND s_datee.

ENDIF.
IF up1 EQ 'X'.
SELECT
mblnr
mjahr
zeile
bwart
matnr
werks
lgort
charg
shkzg
bwtar
menge
meins
smbln
smblp
aufnr
umcha
budat_mkpf FROM mseg INTO CORRESPONDING FIELDS OF
TABLE lv_msg WHERE budat_mkpf IN s_datee
AND bwart IN s_bwart AND
werks IN s_werks.

IF lv_msg[] IS NOT INITIAL.

INSERT zppmseg FROM TABLE lv_msg ACCEPTING DUPLICATE KEYS.


COMMIT WORK.
IF sy-subrc EQ 0.
MESSAGE 'Data updated...' TYPE 'I'..
ENDIF.
ENDIF.
ENDIF.
IF up2 = 'X'.
SELECT * FROM mseg
INTO CORRESPONDING FIELDS OF
TABLE tt_msg WHERE budat_mkpf IN s_datee
AND bwart IN s_bwart AND
werks IN s_werks AND
lifnr IN s_lifnr AND
bwart IN ('542','543','544').

tt_msg544[] = tt_msg[].

DELETE tt_msg544 WHERE bwart = '543'.


DELETE tt_msg544 WHERE bwart = '542'.
DELETE tt_msg WHERE bwart = '544'.

"?Knock off 543 with 544 (Reversal)


SORT tt_msg BY mblnr mjahr zeile.
SORT tt_msg544 BY sjahr smbln smblp.
DELETE tt_msg544 WHERE smbln IS INITIAL.
LOOP AT tt_msg544.
DELETE tt_msg
WHERE
mblnr = tt_msg544-smbln AND
mjahr = tt_msg544-sjahr AND
zeile = tt_msg544-smblp.
IF sy-subrc EQ 0.
COMMIT WORK.
ENDIF.

* READ TABLE tt_msg WITH KEY mblnr = tt_msg544-smbln


* mjahr = tt_msg544-sjahr
* zeile = tt_msg544-smblp.
* IF sy-subrc EQ 0.
* ENDIF.
ENDLOOP.
":EOF: Knock off--------------------------------------------

* Delete Second line in 542 and keep only special stock lines
DELETE tt_msg WHERE bwart EQ '542' AND sobkz NE 'O'.
** Putting Rejection Percentage and Qty
DATA : rejp TYPE p DECIMALS 2,
rejq TYPE p DECIMALS 3,
lv_meins TYPE meins.

DELETE tt_msg WHERE mblnr IN s_mblnr. " Delete Document unwanted 543
rejection document of govind.
LOOP AT tt_msg." WHERE bwart = '543'.
CLEAR : rejp,rejq,lv_meins.
SELECT SINGLE meins INTO lv_meins FROM mara WHERE matnr = tt_msg-matnr.

MOVE-CORRESPONDING tt_msg TO wa_msi.


IF tt_msg-bwart = '543'.
SELECT SINGLE zrej_percent INTO rejp FROM marc
WHERE matnr = tt_msg-matnr AND werks = tt_msg-werks.
IF rejp = 999.
rejp = 0.
ENDIF.
IF lv_meins = 'NO' OR lv_meins = 'ROL' OR lv_meins = 'SET'.
rejq = ( tt_msg-menge * ( rejp / 100 ) ).
rejq = round( val = rejq dec = 0 ).
ELSE.
rejq = ( tt_msg-menge * ( rejp / 100 ) ).
ENDIF.
wa_msi-rejp = rejp.
wa_msi-rejq = rejq.
wa_msi-total_menge = ( wa_msi-menge + wa_msi-rejq ).
ELSE.
rejp = 0.rejq = 0.
wa_msi-total_menge = ( wa_msi-menge + wa_msi-rejq ).
ENDIF.
APPEND wa_msi TO lv_msi.
CLEAR wa_msi.
ENDLOOP.
***--------------------------------------
IF lv_msi[] IS NOT INITIAL.
INSERT zj1ig_recd_543 FROM TABLE lv_msi ACCEPTING DUPLICATE KEYS.
COMMIT WORK.
IF sy-subrc EQ 0.
MESSAGE 'Data updated...' TYPE 'I'..
ENDIF.
ENDIF.
ENDIF.

Das könnte Ihnen auch gefallen