Code: Alles auswählen.
TYPES: BEGIN OF type_batches,
matnr TYPE matnr,
werks TYPE werks_d,
charg TYPE charg_d,
lvorm TYPE lvoca,
ersda TYPE ersda,
lwedt TYPE lwedt,
clabs LIKE mchb-clabs,
END OF type_batches.Code: Alles auswählen.
FORM check_batch_stock TABLES pi_batches TYPE table_batches.
DATA: lt_batches TYPE LINE OF table_batches.
DATA: BEGIN OF fl_mchb,
clabs TYPE labst,
cumlm TYPE umlmd,
cinsm TYPE insme,
ceinm TYPE einme,
cspem TYPE speme,
cretm TYPE retme,
END OF fl_mchb.
DATA: BEGIN OF fl_mkol,
slabs TYPE klabs,
sinsm TYPE kinsm,
seinm TYPE keinm,
sspem TYPE kspem,
END OF fl_mkol.
DATA: BEGIN OF fl_msca,
calab TYPE labst,
cains TYPE insme,
caspe TYPE speme,
END OF fl_msca.
DATA: BEGIN OF fl_mska,
kalab TYPE labst,
kains TYPE insme,
kaspe TYPE speme,
END OF fl_mska.
DATA: BEGIN OF fl_msku,
kulab TYPE labst,
kuins TYPE insme,
END OF fl_msku.
DATA: BEGIN OF fl_mslb,
lblab TYPE labst,
lbins TYPE insme,
END OF fl_mslb.
DATA: BEGIN OF fl_mspr,
prlab TYPE labst,
prins TYPE insme,
prspe TYPE speme,
END OF fl_mspr.
DATA: BEGIN OF fl_mseg,
mblnr TYPE mblnr,
END OF fl_mseg.
DATA: l_sum_labst TYPE labst.
LOOP AT pi_batches INTO lt_batches.
CLEAR l_sum_labst.
* Summing batch stocks
SELECT SUM( clabs ) SUM( cumlm ) SUM( cinsm ) SUM( ceinm )
SUM( cspem ) SUM( cretm ) INTO fl_mchb
FROM mchb WHERE matnr = lt_batches-matnr
AND charg = lt_batches-charg.
IF sy-subrc = 0.
DO.
ASSIGN COMPONENT sy-index OF STRUCTURE fl_mchb TO <f1>.
IF sy-subrc <> 0.
EXIT.
ELSE.
ADD <f1> TO l_sum_labst.
ENDIF.
ENDDO.
IF NOT l_sum_labst IS INITIAL.
DELETE pi_batches WHERE matnr = lt_batches-matnr
AND charg = lt_batches-charg.
ENDIF.
CHECK l_sum_labst IS INITIAL.
ENDIF.
* Summing special stocks from vendor
SELECT SUM( slabs ) SUM( sinsm ) SUM( seinm ) SUM( sspem )
INTO fl_mkol FROM mkol WHERE matnr = lt_batches-matnr
AND charg = lt_batches-charg.
IF sy-subrc = 0.
DO.
ASSIGN COMPONENT sy-index OF STRUCTURE fl_mkol TO <f1>.
IF sy-subrc <> 0.
EXIT.
ELSE.
ADD <f1> TO l_sum_labst.
ENDIF.
ENDDO.
IF NOT l_sum_labst IS INITIAL.
DELETE pi_batches WHERE matnr = lt_batches-matnr
AND charg = lt_batches-charg.
ENDIF.
CHECK l_sum_labst IS INITIAL.
ENDIF.
* Summing sales orders on hand with vendor
SELECT SUM( calab ) SUM( cains ) SUM( caspe ) INTO fl_msca FROM msca
WHERE matnr = lt_batches-matnr
AND charg = lt_batches-charg.
IF sy-subrc = 0.
DO.
ASSIGN COMPONENT sy-index OF STRUCTURE fl_msca TO <f1>.
IF sy-subrc <> 0.
EXIT.
ELSE.
ADD <f1> TO l_sum_labst.
ENDIF.
ENDDO.
IF NOT l_sum_labst IS INITIAL.
DELETE pi_batches WHERE matnr = lt_batches-matnr
AND charg = lt_batches-charg.
ENDIF.
CHECK l_sum_labst IS INITIAL.
ENDIF.
* Summing sales order stock
SELECT SUM( kalab ) SUM( kains ) SUM( kaspe ) INTO fl_mska FROM mska
WHERE matnr = lt_batches-matnr
AND charg = lt_batches-charg.
IF sy-subrc = 0.
DO.
ASSIGN COMPONENT sy-index OF STRUCTURE fl_mska TO <f1>.
IF sy-subrc <> 0.
EXIT.
ELSE.
ADD <f1> TO l_sum_labst.
ENDIF.
ENDDO.
IF NOT l_sum_labst IS INITIAL.
DELETE pi_batches WHERE matnr = lt_batches-matnr
AND charg = lt_batches-charg.
ENDIF.
CHECK l_sum_labst IS INITIAL.
ENDIF.
* Summing special stock with customer
SELECT SUM( kulab ) SUM( kuins ) INTO fl_msku FROM msku
WHERE matnr = lt_batches-matnr
AND charg = lt_batches-charg.
IF sy-subrc = 0.
DO.
ASSIGN COMPONENT sy-index OF STRUCTURE fl_msku TO <f1>.
IF sy-subrc <> 0.
EXIT.
ELSE.
ADD <f1> TO l_sum_labst.
ENDIF.
ENDDO.
IF NOT l_sum_labst IS INITIAL.
DELETE pi_batches WHERE matnr = lt_batches-matnr
AND charg = lt_batches-charg.
ENDIF.
CHECK l_sum_labst IS INITIAL.
ENDIF.
* Summing special stock with vendor
SELECT SUM( lblab ) SUM( lbins ) INTO fl_mslb FROM mslb
WHERE matnr = lt_batches-matnr
AND charg = lt_batches-charg.
IF sy-subrc = 0.
DO.
ASSIGN COMPONENT sy-index OF STRUCTURE fl_mslb TO <f1>.
IF sy-subrc <> 0.
EXIT.
ELSE.
ADD <f1> TO l_sum_labst.
ENDIF.
ENDDO.
IF NOT l_sum_labst IS INITIAL.
DELETE pi_batches WHERE matnr = lt_batches-matnr
AND charg = lt_batches-charg.
ENDIF.
CHECK l_sum_labst IS INITIAL.
ENDIF.
* Summing project stock
SELECT SUM( prlab ) SUM( prins ) SUM( prspe ) INTO fl_mspr FROM mspr
WHERE matnr = lt_batches-matnr
AND charg = lt_batches-charg.
IF sy-subrc = 0.
DO.
ASSIGN COMPONENT sy-index OF STRUCTURE fl_mspr TO <f1>.
IF sy-subrc <> 0.
EXIT.
ELSE.
ADD <f1> TO l_sum_labst.
ENDIF.
ENDDO.
IF NOT l_sum_labst IS INITIAL.
DELETE pi_batches WHERE matnr = lt_batches-matnr
AND charg = lt_batches-charg.
ENDIF.
CHECK l_sum_labst IS INITIAL.
ENDIF.
* check if material document is existing
SELECT mblnr INTO fl_mseg FROM mseg
WHERE matnr = lt_batches-matnr
AND charg = lt_batches-charg.
IF sy-subrc = 0.
DELETE pi_batches WHERE matnr = lt_batches-matnr
AND charg = lt_batches-charg.
ENDIF.
CHECK fl_mseg IS INITIAL.
ENDSELECT.
ENDLOOP.
ENDFORM. " check_batch_stock