*&---------------------------------------------------------------------*
*& Include ZXMBCU01
*&---------------------------------------------------------------------*
*Sequence Author Date Description *
*M1 Jimmy 2013.01.16 Add Insert PO OA to table zpooa
* the latest update : 2013.01.16 18:00
*--------------------------------------------------------------------- *
break-point.
"M1 add
read table xmseg index 1.
if xmseg-bwart = '101' and xmseg-ebeln is not initial
and xmseg-mblnr is not initial
and xmseg-mjahr is not initial
and xmseg-zeile is not initial.
data:begin of it_ekes occurs 0,
ebeln like ekes-ebeln,
ebelp like ekes-ebelp,
etens like ekes-etens,
eindt like ekes-eindt,
menge like ekes-menge,
dabmg like ekes-dabmg,
ebtyp like ekes-ebtyp,
end of it_ekes.
data:it_vc like it_ekes occurs 0 with header line.
data:begin of it_eket occurs 0,
ebeln like ekes-ebeln,
ebelp like ekes-ebelp,
etenr like eket-etenr,
eindt like ekes-eindt,
menge like eket-menge,
wemng like eket-wemng,
end of it_eket.
data:it_zpooa like zpooavc occurs 0 with header line.
data:it_zpooavc1 like zpooavc occurs 0 with header line.
data:begin of it_oa1 occurs 0,
ebeln like ekes-ebeln,
ebelp like ekes-ebelp,
zoaetens like eket-etenr,
menge like eket-menge,
end of it_oa1.
data:it_oa like it_oa1 occurs 0 with header line.
data:it_zpooavc like it_oa1 occurs 0 with header line.
data:lv_menge like mseg-menge,
lv_menge_oa like mseg-menge,
lv_menge2 like mseg-menge,
lv_menge3 like mseg-menge,
lv_tabix like sy-tabix.
select ebeln ebelp etenr menge wemng eindt
into corresponding fields of table it_eket
from eket
for all entries in xmseg
where ebeln = xmseg-ebeln
and ebelp = xmseg-ebelp.
sort it_eket by ebeln ebelp.
"OA
select ebeln ebelp etens eindt menge dabmg ebtyp
into corresponding fields of table it_ekes
from ekes
for all entries in xmseg
where ebeln = xmseg-ebeln
and ebelp = xmseg-ebelp
and ebtyp = 'OA'
and loekz = space.
delete it_ekes where eindt eq '00000000' .
delete it_ekes where dabmg eq 0 .
if it_ekes[] is not initial.
sort it_ekes by ebeln ebelp ascending eindt descending.
select distinct ebeln ebelp zoaetens menge
into corresponding fields of table it_oa1
from zpooavc
for all entries in it_ekes
where ebeln = it_ekes-ebeln
and ebelp = it_ekes-ebelp
and zoaetens = it_ekes-etens.
if it_oa1[] is not initial.
loop at it_oa1.
move-corresponding it_oa1 to it_oa.
collect it_oa.
endloop.
sort it_oa by ebeln ebelp zoaetens.
loop at it_ekes.
lv_tabix = sy-tabix.
read table it_oa with key ebeln = it_ekes-ebeln ebelp = it_ekes-ebelp zoaetens = it_ekes-etens binary search.
if sy-subrc eq 0.
if it_oa-menge >= it_ekes-dabmg.
delete it_ekes index lv_tabix.
else.
it_ekes-dabmg = it_ekes-dabmg - it_oa-menge.
modify it_ekes index lv_tabix.
endif.
endif.
endloop.
endif.
endif.
sort it_ekes by ebeln ebelp eindt.
"VC FI
select ebeln ebelp etens eindt menge dabmg ebtyp
into corresponding fields of table it_vc
from ekes
for all entries in xmseg
where ebeln = xmseg-ebeln
and ebelp = xmseg-ebelp
and ebtyp in ('VC' ,'FI')
and loekz = space.
delete it_vc where eindt eq '00000000' .
sort it_vc by ebeln ebelp ebtyp ascending eindt descending.
if it_vc[] is not initial.
select *
into corresponding fields of table it_zpooavc1
from zpooavc
for all entries in it_vc
where ebeln = it_vc-ebeln
and ebelp = it_vc-ebelp
and zvcetens = it_vc-etens.
if it_zpooavc1[] is not initial.
loop at it_zpooavc1.
it_zpooavc-ebeln = it_zpooavc1-ebeln.
it_zpooavc-ebelp = it_zpooavc1-ebelp.
it_zpooavc-zoaetens = it_zpooavc1-zvcetens.
it_zpooavc-menge = it_zpooavc1-zvcmenge.
collect it_zpooavc.
endloop.
sort it_zpooavc by ebeln ebelp zoaetens.
loop at it_vc.
lv_tabix = sy-tabix.
read table it_zpooavc with key ebeln = it_vc-ebeln ebelp = it_vc-ebelp zoaetens = it_vc-etens binary search.
if sy-subrc eq 0.
if it_zpooavc-menge >= it_vc-menge.
delete it_vc index lv_tabix.
else.
it_vc-dabmg = it_zpooavc-menge.
modify it_vc index lv_tabix.
endif.
endif.
endloop.
endif.
endif.
sort it_vc by ebeln ebelp ascending ebtyp descending eindt ascending.
loop at xmseg.
lv_menge = xmseg-menge.
read table it_ekes with key ebeln = xmseg-ebeln ebelp = xmseg-ebelp.
if sy-subrc eq 0.
loop at it_ekes where ebeln = xmseg-ebeln and ebelp = xmseg-ebelp and dabmg > 0.
loop at it_vc.
if it_vc-menge <= it_vc-dabmg.
delete it_vc.
endif.
endloop.
if it_vc[] is not initial.
sort it_vc by ebeln ebelp ascending ebtyp descending eindt ascending.
endif.
lv_menge2 = it_ekes-dabmg.
it_zpooa-mblnr = xmseg-mblnr .
it_zpooa-mjahr = xmseg-mjahr.
it_zpooa-zeile = xmseg-zeile.
it_zpooa-ebeln = xmseg-ebeln .
it_zpooa-ebelp = xmseg-ebelp.
it_zpooa-zoaetens = it_ekes-etens.
it_zpooa-zoaebtyp = it_ekes-ebtyp.
it_zpooa-zoaeindt = it_ekes-eindt.
it_zpooa-bwart = xmseg-bwart .
if lv_menge2 >= lv_menge.
it_zpooa-menge = lv_menge.
lv_menge_oa = lv_menge .
read table it_vc with key ebeln = xmseg-ebeln ebelp = xmseg-ebelp.
if sy-subrc eq 0.
loop at it_vc where ebeln = xmseg-ebeln and ebelp = xmseg-ebelp .
lv_tabix = sy-tabix.
lv_menge3 = it_vc-menge - it_vc-dabmg.
it_zpooa-zvcetens = it_vc-etens.
it_zpooa-zvcebtyp = it_vc-ebtyp.
it_zpooa-zvceindt = it_vc-eindt.
if lv_menge3 >= lv_menge_oa.
it_zpooa-zvcmenge = lv_menge_oa.
append it_zpooa.
it_vc-dabmg = it_vc-dabmg + it_zpooa-zvcmenge.
modify it_vc index lv_tabix.
clear:lv_menge3.
exit.
else.
it_zpooa-zvcmenge = lv_menge3.
it_vc-dabmg = it_vc-dabmg + it_zpooa-zvcmenge.
modify it_vc index lv_tabix.
append it_zpooa.
endif.
lv_menge_oa = lv_menge_oa - lv_menge3 .
endloop.
else.
clear:it_zpooa-zvcetens, it_zpooa-zvcebtyp ,it_zpooa-zvceindt, it_zpooa-zvcmenge.
append it_zpooa.
endif.
clear:it_zpooa,lv_menge,lv_menge_oa.
exit.
else.
it_zpooa-menge = lv_menge2.
lv_menge_oa = lv_menge2 .
read table it_vc with key ebeln = xmseg-ebeln ebelp = xmseg-ebelp.
if sy-subrc eq 0.
loop at it_vc where ebeln = xmseg-ebeln and ebelp = xmseg-ebelp.
lv_tabix = sy-tabix.
lv_menge3 = it_vc-menge - it_vc-dabmg.
it_zpooa-zvcetens = it_vc-etens.
it_zpooa-zvcebtyp = it_vc-ebtyp.
it_zpooa-zvceindt = it_vc-eindt.
if lv_menge3 >= lv_menge_oa.
it_zpooa-zvcmenge = lv_menge_oa.
append it_zpooa.
it_vc-dabmg = it_vc-dabmg + it_zpooa-zvcmenge.
modify it_vc index lv_tabix.
clear:lv_menge3.
exit.
else.
it_zpooa-zvcmenge = lv_menge3.
append it_zpooa.
it_vc-dabmg = it_vc-dabmg + it_zpooa-zvcmenge.
modify it_vc index lv_tabix.
endif.
lv_menge_oa = lv_menge_oa - lv_menge3 .
endloop.
else.
clear:it_zpooa-zvcetens, it_zpooa-zvcebtyp ,it_zpooa-zvceindt, it_zpooa-zvcmenge.
append it_zpooa.
endif.
endif.
lv_menge = lv_menge - lv_menge2 .
endloop.
if lv_menge > 0.
read table it_eket with key ebeln = xmseg-ebeln ebelp = xmseg-ebelp.
if sy-subrc eq 0.
it_zpooa-mblnr = xmseg-mblnr .
it_zpooa-mjahr = xmseg-mjahr.
it_zpooa-zeile = xmseg-zeile.
it_zpooa-ebeln = xmseg-ebeln .
it_zpooa-ebelp = xmseg-ebelp.
it_zpooa-zoaetens = it_eket-etenr.
it_zpooa-zoaeindt = it_eket-eindt.
it_zpooa-bwart = xmseg-bwart .
it_zpooa-menge = lv_menge.
append it_zpooa.
clear:it_zpooa.
endif.
endif.
else.
read table it_eket with key ebeln = xmseg-ebeln ebelp = xmseg-ebelp.
if sy-subrc eq 0.
it_zpooa-mblnr = xmseg-mblnr .
it_zpooa-mjahr = xmseg-mjahr.
it_zpooa-zeile = xmseg-zeile.
it_zpooa-ebeln = xmseg-ebeln .
it_zpooa-ebelp = xmseg-ebelp.
it_zpooa-zoaetens = it_eket-etenr.
it_zpooa-zoaeindt = it_eket-eindt.
it_zpooa-bwart = xmseg-bwart .
it_zpooa-menge = lv_menge.
append it_zpooa.
clear:it_zpooa.
endif.
endif.
clear:lv_menge.
endloop.
if not it_zpooa[] is initial.
modify zpooavc from table it_zpooa.
refresh it_zpooa.
free:it_zpooa,it_eket,it_eket,it_zpooavc,it_zpooavc1,it_vc,it_oa,it_oa1.
endif.
endif.
*M1 end
*&---------------------------------------------------------------------*
*& Include ZXMBCU02
*&---------------------------------------------------------------------*
*Sequence Author Date Description *
*M1 Jimmy 2013.01.04 Check Migo FG Qty && CO03 Confirmed Qty
*M2 Jimmy 2013.01.09 No check production order < 1000000
* the latest update : 2013.01.04 18:00
*--------------------------------------------------------------------- *
data:lv_auth type c.
if i_mseg-bwart = '101'.
*M2 add
check i_mseg-aufnr is not initial.
data:lv_aufnr like mseg-aufnr,
lv_len type i.
call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
exporting
input = i_mseg-aufnr
importing
output = lv_aufnr.
lv_len = strlen( lv_aufnr ).
check lv_len > 6.
*M2 End
data:it_afko like afko occurs 5 with header line.
data:it_afpo like afpo occurs 0 with header line.
data:it_afvv like afvv occurs 0 with header line.
data:lv_psmng like afpo-psmng , " total qty
lv_wemng like afpo-wemng , " deliver qty
lv_lmnga like afvv-lmnga . " Confirmed qty
select * into corresponding fields of table it_afko
from afko
where aufnr = i_mseg-aufnr.
if it_afko[] is not initial.
select * into corresponding fields of table it_afpo
from afpo
for all entries in it_afko
where aufnr = it_afko-aufnr.
sort it_afpo by posnr descending.
select * into corresponding fields of table it_afvv
from afvv
for all entries in it_afko
where aufpl = it_afko-aufpl.
sort it_afvv by aplzl descending.
read table it_afpo index 1 .
if sy-subrc eq 0.
lv_psmng = it_afpo-psmng .
lv_wemng = it_afpo-wemng .
endif.
read table it_afvv index 1 .
if sy-subrc eq 0.
lv_lmnga = it_afvv-lmnga.
endif.
lv_wemng = lv_wemng + i_mseg-menge.
if lv_wemng > lv_lmnga.
lv_auth = 'X'.
endif.
endif.
if lv_auth = 'X'.
message e007(zmm).
endif.
endif.