************************************************************************
* Program : ZRPP143 REL : 4.6c Author : Dainel Jiang *
* Created : 03-11-2011 APP : All Type : REPORT *
* Title : EIL MU Analysis Report *
* Reference : ZRPP143 *
*----------------------------------------------------------------------*
*------Update list-----------------------------------------------------*
* 03 Nov 2011 Daniel the first version
** M1 Daniel 2012.03.02 Add One Column of Currency
* M2 Daniel 2012.03.29 fix bug for complete date
* M3 Daniel 2012.05.07 display the material main information from
* Material Master for M to M material without PO.
* the latest update: 2012-05-11 16:30
*--------------------------------------------------------------------- *
REPORT ZRPP143.
*----------------------------------------------------------------------*
* Table structure *
*----------------------------------------------------------------------*
tables: vbak, vbap,vbrp,konv ,jest, jcds, t005t, ztfty, kna1, makt, tvm1t,
mbew,mara, mseg, ekko,ekpo,mchb.
data: begin of gt_so occurs 0,
vbeln like vbak-vbeln,
udate like jcds-udate,
end of gt_so.
data: begin of it_vbak occurs 0,
vbeln like vbak-vbeln,
vkgrp like vbak-vkgrp,
kunnr like vbak-kunnr,
zzco like vbak-zzco,
bname like vbak-bname, "style no
mvgr1 like vbap-mvgr1, "product division
bezei like tvm1t-bezei, "product type tvm2t-bezei
aedat like ekko-aedat, "Complete Date
zzfty like vbak-zzfty,
netwr like vbak-netwr,
zzcom like vbak-zzcom,
waers like vbak-waerk,
bukrs like vbak-bukrs_vf,
werks like vbap-werks,
vrkme like vbap-vrkme,
uom(3) type c,
matnr like vbap-matnr,
maktx like makt-maktx, "material description
name1 like kna1-name1, "customer name
landx like t005t-landx, "Country Name
zzftyd like t001w-name1, ""Description - Factory Name
kwmeng like vbap-kwmeng,
kbetr like konv-kbetr,
fkdat like vbrk-fkdat, "Billing date for billing index and printout
udate like jcds-udate, "SO Close Date
aprice like konv-kwert,
mteam like vbpa-kunnr, "Merchanising team
zzprogram like vbak-zzprogram, "Program name
zzseason like vbak-zzseason,
end of it_vbak.
data: begin of it_vbrp occurs 0,
vbeln like vbrp-vgbel,
j_4kscat like ekpo-j_4kscat,
fkdat like vbrk-fkdat,
invno like vbrk-vbeln,
fkart like vbrk-fkart,
sfakn like vbrk-sfakn,
posnr like vbrp-posnr,
end of it_vbrp.
**For BOM
data: begin of ta_stpo occurs 0,
stlnr like stpo-stlnr,
stlkn like stpo-stlkn,
stpoz like stpo-stpoz,
hindex(20) type c,
idnrk like stpo-idnrk,
maktx like makt-maktx,
menge like stpo-menge,
meins like stpo-meins,
bom type c,
* status(4) type c,
* lifnr like lfa1-lifnr,
ausch like stpo-ausch, "scrap %
bmeng like stko-bmeng, "base qty
hmat like mara-matnr,
mtart like mara-mtart,
sortf like stpo-sortf,
ERSKZ LIKE STPO-erskz,
twist type c,
* ref type c,
buom like mara-meins,
req like ZMMFGSKU-menge,
oreq like ZMMFGSKU-menge,
matnr like mast-matnr,
werks like vbap-werks,
vbeln like vbak-vbeln,
avgmng like stpo-menge, "average the cons from sku
end of ta_stpo.
data: ta_stpo2 like ta_stpo occurs 0 with header line.
data: it_vbep like vbep occurs 0 with header line.
data: it_abdsi like j_3abdsi occurs 0 with header line.
data: begin of it_abomd occurs 0,
stlnr like j_3abomd-stlnr,
stlkn like j_3abomd-stlkn,
j_3akordx like j_3abomd-j_3akordx,
j_3akordxl like j_3abomd-j_3akordxl,
menge like j_3abomd-menge,
end of it_abomd.
data: begin of it_mast occurs 0,
stlnr like mast-stlnr,
end of it_mast.
types: begin of tt_zmmfgsku.
types: stlnr like stpo-stlnr,
hindex(20) type c, "flag for mark column
idnrk like mara-matnr,
vbeln like vbap-vbeln.
include structure zmmfgsku.
types: sortseq type zsortseq,
oreq like zmmfgsku-menge,
mtart like mara-mtart,
werks like vbap-werks, "M3 add
end of tt_zmmfgsku.
DATA: ta_sku type tt_zmmfgsku occurs 0 with header line.
DATA: ta_zcpsku type tt_zmmfgsku occurs 0 with header line.
data: tp_zcpsku like ta_zcpsku occurs 0 with header line.
data: p_num1(20) type n.
**
data: wa_umrez like marm-umrez,
wa_umren like marm-umren,
tmp_um like marm-umrez.
data: wa_input type p,
wa_output type p.
data: wa_meins like mara-meins.
data: begin of it_matnr occurs 0,
werks like vbap-werks, " add on 2012.02.20
j_4kscat like ekpo-j_4kscat,
matnr like mara-matnr,
mtart like mara-mtart,
yield(30) type c,
width(30) type c, "Order fabric width
ftype(30) type c, "Fabric Type
ycout(30) type c,
vshag(30) type c,
hshag(30) type c,
fcont(30) type c, "Fibre Content
flag type c,
bklas type mbew-bklas,
end of it_matnr.
data i type i.
data lv_tabix type i.
data: begin of it_po occurs 0,
ebeln like ekko-ebeln,
ebelp like ekpo-ebelp,
etenr like eket-etenr,
matnr like ekpo-matnr,
j_3asize like ta_sku-j_3asize,
poqty like ekpo-menge,
pouom like ekpo-meins,
j_4kscat like eket-j_4kscat,
konnr like ekpo-konnr,
lifnr like ekko-lifnr,
name1 like lfa1-name1,
waers like ekko-waers,
netwr like ekpo-netwr,
bedat like ekko-bedat,
bukrs like ekko-bukrs,
adrnr like ekko-adrnr,
zzwash like ekko-zzwash,
autlf like ekko-autlf, "Complete Delivery
netwr_us like ekpo-netwr,
menge like ekpo-menge,
meins like ekpo-meins,
yield(30) type c,
width(30) type c,
ftype(30) type c,
*" add yarn count shrinkage v/h
ycout(30) type c,
vshag(30) type c,
hshag(30) type c,
fcont(30) type c,
wtext like zmm_wash-wtext,
zztest like ekpo-zztest, "M1
zzsample like ekpo-zzsample, "M1
end of it_po.
*data: begin of it_rpo occurs 0,
* j_4kscat like it_gr-j_4ksca,
* matnr like it_gr-matnr,
* menge like it_gr-menge,
* meins like it_gr-meins,
* end of it_rpo.
data: begin of it_po_mat occurs 0,
vbeln like vbak-vbeln,
matnr like ekpo-matnr,
j_3asize like ta_sku-j_3asize,
poqty like ekpo-menge,
pouom like ekpo-meins,
lifnr like ekko-lifnr,
name1 like lfa1-name1,
zzwash like ekko-zzwash,
wtext like zmm_wash-wtext,
left_qty like mchb-clabs,
maktx2 like makt-maktx,
j_3aentx8 type J_3AENTX8,
j_3aentx type J_3AENTX,
J_3ANOTE TYPE J_3ANOTE,
yield(30) type c,
width(30) type c,
ftype(30) type c,
*" add yarn count shrinkage v/h
ycout(30) type c,
vshag(30) type c,
hshag(30) type c,
fcont(30) type c,
end of it_po_mat.
data: it_gr like mseg occurs 0 with header line.
* Add Qty Received and Foc Qty Received Detail
data: begin of it_gr_detail occurs 0,
matnr like mseg-matnr,
j_4ksca like mseg-j_4ksca,
j_3asiz like mseg-j_3asiz,
lgort like mseg-lgort,
bwart like mseg-bwart,
gr_menge like mseg-menge,
foc_menge like mseg-menge,
sample_qty like mseg-menge,
lifnr like mseg-lifnr,
end of it_gr_detail.
data: *it_gr_detail like it_gr_detail occurs 0 with header line.
* YD & LB conversion factor
data: begin of it_conv occurs 0,
matnr like mara-matnr,
maktx like makt-maktx,
type(20) type c,
scale type i,
bweig type i, "weight(BW)
gwdth type i, "gross width
factor type p decimals 14,
end of it_conv.
data: begin of it_ship occurs 0,
vbeln like vbrp-vgbel,
* aubel like vbrp-aubel,
j_4kscat like ekpo-j_4kscat,
fkdat like vbrk-fkdat,
invno like vbrk-vbeln,
fkart like vbrk-fkart,
sfakn like vbrk-sfakn,
fkimg like vbrp-fkimg,
vrkme like vbrp-vrkme,
kidno like vbrk-kidno,
posnr like vbrp-posnr,
* 15/11/06 : for cancelled billing doc
end of it_ship.
data: begin of it_out_mf occurs 0,
vbeln like vbak-vbeln,
vkgrp like vbak-vkgrp, "sales group
kunnr like vbak-kunnr,
zzco like vbak-zzco, "Country of Origin / Production Line / Base
bname like vbak-bname, "style no
mvgr1 like vbap-mvgr1, "product division
bezei like tvm1t-bezei, "product type
aedat like ekko-aedat, "Complete Date
zzfty like vbak-zzfty, "Factory / Factory Group
netwr like vbak-netwr,
zzcom like vbak-zzcom,
waers like vbak-waerk,
bukrs like vbak-bukrs_vf,
werks like vbap-werks,
vrkme like vbap-vrkme,
uom(3) type c,
matnr like vbap-matnr,
maktx like makt-maktx, "material description
name1 like kna1-name1, "customer name
landx like t005t-landx, "Country Name
zzftyd like t001w-name1, ""Description - Factory Group
kwmeng like vbap-kwmeng,
kbetr like konv-kbetr,
fkdat like vbrk-fkdat, "Billing date for billing index and printout
udate like jcds-udate, "SO Close Date
aprice like konv-kwert,
mteam like vbpa-kunnr, "Merchanising team
zzprogram like vbak-zzprogram, "Program name
zzseason like vbak-zzseason, "season
"po info
j_3asize like ta_sku-j_3asize, "grid
color(12) type c , "color
color_remark(40) type c, "conversion remark
poqty like ekpo-menge, " Fabric Qty Purchased
pouom like ekpo-meins, "unit
lifnr like ekko-lifnr, "vendor code
name like lfa1-name1, "vendor name
maktx2 like makt-maktx, "material description
* zzwash like ekko-zzwash, "washing method
" gr info
gr_qty like mseg-menge,
foc_qty like mseg-menge,
sample_qty like mseg-menge,
" mm info
width(30) type c, "washing method
wtext(50) type c,
ycout(30) type c,
vshag(30) type c,
hshag(30) type c,
ftype(30) type c,
fcont(30) type c, "Fibre Content
ttlshipqty like vbrp-FKIMG,
left_qty like mchb-clabs,
waerk like vbak-waerk, "M1 add
end of it_out_mf.
data: begin of it_out_ms occurs 0,
matnr like mara-matnr,
posnr like vbep-posnr,
etenr like vbep-etenr,
kunnr like vbak-kunnr,
name1 like kna1-name1, "customer name
j_3asize like vbep-j_3asize,
* grid type CHAR20,
grid type j_3aentx8,
remark(40) type c,
size type J_3ASIZE,
ordqty like vbep-wmeng,
delqty like vbep-lmeng,
end of it_out_ms.
data: begin of itab1 occurs 0,
text(1000),
end of itab1.
data itab2 like itab1 occurs 0 with header line.
data itab3 like itab1 occurs 0 with header line.
data itab4 like itab1 occurs 0 with header line.
data: begin of it_fab_mtm occurs 0,
matnr like mseg-matnr,
j_4ksca like mseg-j_4ksca,
j_3asiz like mseg-j_3asiz,
bwart like mseg-bwart,
menge like mseg-menge,
meins like mseg-meins,
j_4kumsc like mseg-j_4kumsc,
shkzg like mseg-shkzg,
status type c,
j_3aentx8 type J_3AENTX8,
j_3aentx type J_3AENTX,
J_3ANOTE TYPE J_3ANOTE,
end of it_fab_mtm.
data: begin of it_fg_mtm occurs 0.
include structure it_fab_mtm.
data: grid type j_3aentx8,
remark(40) type c,
size type J_3ASIZE,
end of it_fg_mtm.
*----------------------------------------------------------------------*
* Parameter & Select-Options
*----------------------------------------------------------------------*
select-options: s_vbeln for vbak-vbeln. " obligatory.
select-options: s_zzfty for vbak-zzfty obligatory.
select-options: s_werks for vbrp-werks.
select-options: s_udate for jcds-udate obligatory. "so close date
*select-options: s_udate for vbak-erdat no-display.
*select-options: s_mdate for vbak-erdat no-display.
*select-options: mm_matnr for mara-matnr no-display.
selection-screen skip.
parameter: gvfield1 like rlgrap-filename.
selection-screen begin of block 2.
parameter: zfgd radiobutton group job default 'X'.
parameter: zbgd radiobutton group job.
selection-screen end of block 2.
data:gvfielda like rlgrap-filename.
data:gvfieldb like rlgrap-filename.
data:gvfieldc like rlgrap-filename.
data:gvfieldd like rlgrap-filename.
*----------------------------------------------------------------------*
* INITIALIZATION *
*----------------------------------------------------------------------*
initialization.
s_udate-sign = 'I'.
s_udate-option = 'EQ'.
s_udate-low = sy-datum - 1.
clear s_udate-high.
append s_udate. clear s_udate.
*----------------------------------------------------------------------*
* AT SELECTION-SCREEN *
*----------------------------------------------------------------------*
at selection-screen on value-request for gvfield1.
call function 'WS_FILENAME_GET'
exporting
def_path = 'C:\'
mask = ',*.*,*.*.'
mode = 'O'
importing
filename = gvfield1
exceptions
selection_cancel = 1
selection_error = 2
others = 3.
at selection-screen.
if gvfield1 is initial.
message i058(zpp01) with 'You must enter a download path!'.
stop.
endif.
*----------------------------------------------------------------------*
* Start of Processing *
*----------------------------------------------------------------------*
start-of-selection.
perform get_so.
perform get_so_detail.
perform get_bom_from_so.
perform get_po.
perform get_gr.
perform get_shipped.
perform join_data_mf.
perform get_garment_ship.
perform get_gr_mtm.
perform down_file.
end-of-selection.
*&---------------------------------------------------------------------*
*& Form GET_SO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_SO .
data lt_jcds like jcds occurs 0 with header line.
data l_objnr like jcds-objnr.
data l_vbeln like vbak-vbeln.
data wa_stat like jest-stat.
l_objnr(3) = 'VB%' .
select * into table lt_jcds from jcds
where objnr like l_objnr
and stat = 'E0004'
and udate in s_udate
and inact = space.
loop at lt_jcds.
clear l_vbeln.
l_vbeln = lt_jcds-objnr+2(10).
check l_vbeln in s_vbeln.
clear wa_stat.
select single stat into wa_stat from jest
where objnr = lt_jcds-objnr
and inact = space.
if wa_stat ne 'E0004'.
continue.
endif.
select single * from vbak
where vbeln eq l_vbeln
and zzfty in s_zzfty
and vkorg in s_werks.
if sy-subrc = 0.
gt_so-vbeln = l_vbeln.
gt_so-udate = lt_jcds-udate.
collect gt_so.
endif.
endloop.
if gt_so[] is initial.
message i058(zpp01) with 'No record!'.
stop.
endif.
ENDFORM. " GET_SO
*&---------------------------------------------------------------------*
*& Form GET_SO_DETAIL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_SO_DETAIL .
data lv_tabix type i.
check gt_so[] is not initial.
data: *vbrp like it_vbrp occurs 0 with header line.
data l_mvgr1 like vbap-mvgr1.
select distinct b~aubel as vbeln b~matnr as j_4kscat a~fkdat a~vbeln as invno a~fkart a~sfakn
into corresponding fields of table it_vbrp
from vbrk as a
inner join vbrp as b on a~vbeln = b~vbeln
inner join vbak as c on b~aubel = c~vbeln
for all entries in gt_so
where b~aubel eq gt_so-vbeln
and c~zzfty in s_zzfty
and a~fkart in ('F2', 'S1')
and b~werks in s_werks.
*vbrp[] = it_vbrp[].
loop at it_vbrp where fkart = 'F2'.
lv_tabix = sy-tabix.
read table *vbrp with key sfakn = it_vbrp-invno.
if sy-subrc = 0.
delete it_vbrp index lv_tabix.
endif.
endloop.
delete it_vbrp where fkart = 'S1'.
select vbeln vkgrp kunnr zzco zzfty netwr zzcom waerk as waers
bukrs_vf as bukrs
zzprogram zzseason zzcom bname
into corresponding fields of table it_vbak
from vbak
for all entries in gt_so
where vbeln = gt_so-vbeln.
*sort it_vbak by bukrs.
*loop at it_vbak.
* at new bukrs.
* AUTHORITY-CHECK OBJECT 'Z_CO_PLANT'
* ID 'ACTVT' FIELD '01'
* ID 'BUKRS' FIELD it_vbak-bukrs
* ID 'WERKS' DUMMY.
* if sy-subrc ne 0.
* message e001(zzco) with
* 'You don''t have the authorization for company code'(005) it_vbak-bukrs.
* exit.
* endif.
* endat.
*endloop.
sort gt_so by vbeln udate descending.
loop at it_vbak.
lv_tabix = sy-tabix.
read table gt_So with key vbeln = it_vbak-vbeln.
if sy-subrc = 0.
it_vbak-udate = gt_so-udate.
endif.
clear: l_mvgr1 .
select single matnr werks vrkme mvgr2
into (it_vbak-matnr, it_vbak-werks, it_vbak-vrkme, l_mvgr1)
from vbap
where vbeln = it_vbak-vbeln
and abgru = space.
if sy-subrc = 0.
select single maktx into it_vbak-maktx from makt "material description
where matnr = it_vbak-matnr.
* select single bezei into it_vbak-bezei "get product type
* from tvm2t
* where mvgr2 = l_mvgr1.
it_vbak-bezei = l_mvgr1. " add by daniel on 2012.02.20
endif.
perform get_last_FG_div_date.
perform get_last_invoice_date.
it_vbak-uom = 'PC'.
if it_vbak-zzcom > 0.
it_vbak-kwmeng = it_vbak-kwmeng * it_vbak-zzcom.
endif.
select single landx into it_vbak-landx from t005t "Country Name
where spras = sy-langu
and land1 = it_vbak-zzco.
select single description into it_vbak-zzftyd from ztfty "Description - Factory Group
where zzfty = it_vbak-zzfty.
select single name1 into it_vbak-name1 from kna1 "customer name
where kunnr = it_vbak-kunnr.
select sum( kwmeng ) into it_vbak-kwmeng from vbap "order qty
where vbeln = it_vbak-vbeln
and abgru = space.
clear it_vbak-aprice.
perform get_average_price.
* 18/04/06 : SET/PACK
if it_vbak-kwmeng ne 0.
it_vbak-kbetr = it_vbak-aprice / it_vbak-kwmeng.
else.
it_vbak-kbetr = '0'.
endif.
* 18/04/06 : get mechanising team
select single kunnr into it_vbak-mteam from
vbpa where vbeln = it_vbak-vbeln and
posnr = '000000' and
parvw = 'Z2'.
modify it_vbak index lv_tabix.
endloop.
ENDFORM. " GET_SO_DETAIL
*&---------------------------------------------------------------------*
*& Form GET_AVERAGE_PRICE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_AVERAGE_PRICE .
data : r_knumv like vbrk-knumv.
data : begin of t_bill occurs 0,
kwert like konv-kwert,
end of t_bill.
select single knumv into r_knumv from vbak
where vbeln = it_vbak-vbeln.
select * from vbap where vbeln = it_vbak-vbeln
and abgru = space.
select * from konv where knumv = r_knumv and
kschl in ('ZCKB', 'ZCKP') and
kinak = space and
kposn = vbap-posnr.
move-corresponding konv to t_bill.
collect t_bill.
endselect.
endselect.
read table t_bill index 1.
if sy-subrc = 0.
it_vbak-aprice = t_bill-kwert.
else.
it_vbak-aprice = '0'.
endif.
ENDFORM. " GET_AVERAGE_PRICE
*&---------------------------------------------------------------------*
*& Form GET_LAST_FG_DIV_DATE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_LAST_FG_DIV_DATE .
*M2 remark
* select single a~aedat into it_vbak-aedat
* from ekko as a inner join ekpo as b on a~ebeln = b~ebeln
* where b~j_4kscat = it_vbak-vbeln
* and b~loekz = space
* and a~autlf = 'X'
* and a~bsart in ('ZPF', 'ZPM').
*M2 end
*M2 add
*" get Ex-fty Date
select max( a~j_3aasdt ) into it_vbak-aedat from vbrp as a
inner join vbap as b
on a~aubel = b~vbeln and a~aupos = b~posnr
inner join vbrk as c
on a~vbeln = c~vbeln
where a~aubel = it_vbak-vbeln
and b~abgru eq space
and c~sfakn eq space.
*M2 end
ENDFORM. " GET_LAST_FG_DIV_DATE
*&---------------------------------------------------------------------*
*& Form GET_LAST_INVOICE_DATE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_LAST_INVOICE_DATE .
data: r_fkdat like vbrk-fkdat.
clear r_fkdat.
loop at it_vbrp where vbeln = it_vbak-vbeln.
if it_vbrp-fkdat > r_fkdat.
r_fkdat = it_vbrp-fkdat.
endif.
endloop.
if r_fkdat ne '00000000'.
it_vbak-fkdat = r_fkdat.
endif.
ENDFORM. " GET_LAST_INVOICE_DATE
*&---------------------------------------------------------------------*
*& Form GET_BOM_FROM_SO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_BOM_FROM_SO .
data: lv_downfile(1) type c.
clear: ta_stpo[], ta_sku[], it_matnr[].
loop at it_vbak.
clear ta_stpo2[].
p_num1 = 0.
perform get_bom using it_vbak-vbeln p_num1.
describe table ta_stpo2 lines i.
if i > 0.
perform get_component_requirement.
endif.
loop at ta_stpo2.
clear ta_stpo.
move ta_stpo2 to ta_stpo.
append ta_stpo.
endloop.
endloop.
sort ta_stpo by hindex stlnr stlkn.
delete ta_stpo where mtart ne 'ZFAB'.
delete it_matnr where mtart ne 'ZFAB'.
data: *matnr like it_matnr occurs 0 with header line.
data: it_mbew like mbew occurs 0 with header line.
* check fabric type
loop at it_matnr.
clear it_mbew[].
select * into table it_mbew from mbew where matnr = it_matnr-matnr
and bwtar = 'NORMAL'
and bklas = '3000'
and bwkey = it_matnr-werks. "add on 2012.02.20
read table it_mbew index 1.
if sy-subrc = 0.
move it_matnr to *matnr.
*matnr-bklas = it_mbew-bklas.
append *matnr.
endif.
endloop.
it_matnr[] = *matnr[].
clear it_conv[].
loop at it_matnr.
it_conv-matnr = it_matnr-matnr.
case it_matnr-bklas.
when '3000'.
it_conv-type = 'Main Fabric'.
endcase.
select single maktx into it_conv-maktx from makt
where matnr = it_conv-matnr.
it_conv-scale = '1'.
append it_conv.
endloop.
describe table it_conv lines i.
if i <= 0.
message i058(zpp01) with 'No record found '.
stop.
endif.
ENDFORM. " GET_BOM_FROM_SO
*&---------------------------------------------------------------------*
*& Form GET_BOM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_IT_VBAK_VBELN text
* -->P_P_NUM1 text
*----------------------------------------------------------------------*
FORM GET_BOM USING p_matnr p_num.
data: wa_stpo like ta_stpo.
data: wa_return like BAPIRET2 occurs 0 with header line.
data: t_num like p_num1.
data: wa_mtart like mara-mtart.
clear: wa_stpo. ", ta_bom.
select d~bmeng a~stlnr a~stlkn a~stpoz a~idnrk c~maktx a~menge
a~meins mtart sortf erskz ausch e~meins as buom b~werks " add werks by daniel
* RFPNT as status
into corresponding fields of wa_stpo
from stpo as a inner join mast as b on a~stlnr = b~stlnr
inner join makt as c on a~idnrk = c~matnr
inner join stko as d on d~stlnr = a~stlnr
inner join mara as e on e~matnr = a~idnrk
where b~matnr = p_matnr
and b~werks = it_vbak-werks
and d~stlty = 'M'.
move wa_stpo to ta_stpo2.
* if ta_stpo2-status = space.
* ta_stpo2-status = 'BFC'.
* endif.
ta_stpo2-hmat = p_matnr.
ta_stpo2-werks = it_vbak-werks.
ta_stpo2-vbeln = it_vbak-vbeln.
select single mtart into wa_mtart from mara where matnr = p_matnr.
if wa_mtart = 'ZYRN'.
ta_stpo2-twist = 'X'.
else.
clear ta_stpo2-twist.
endif.
refresh wa_return.
CALL FUNCTION 'BAPI_MAT_BOM_EXISTENCE_CHECK'
EXPORTING
MATERIAL = wa_stpo-idnrk
PLANT = it_vbak-werks
BOMUSAGE = '1'
TABLES
RETURN = wa_return.
p_num = p_num + 1.
ta_stpo2-hindex = p_num.
read table wa_return index 1.
if sy-subrc ne 0.
ta_stpo2-bom = 'X'.
t_num = p_num * 100.
append ta_stpo2.
perform get_bom using wa_stpo-idnrk t_num.
else.
append ta_stpo2.
endif.
clear wa_stpo.
endselect.
ENDFORM. " GET_BOM
*&---------------------------------------------------------------------*
*& Form GET_COMPONENT_REQUIREMENT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_COMPONENT_REQUIREMENT .
data: begin of it_j_3abomd occurs 0,
vbeln like vbap-vbeln,
j_3akordx like j_3abomd-j_3akordx,
j_3akordxl like j_3abomd-j_3akordxl,
menge like j_3abomd-menge,
end of it_j_3abomd.
data: wa_comqty like stpo-menge.
data: wa_hindex like ta_stpo-hindex,
cal_menge like ta_zcpsku-menge.
data: wa_char3(8) type c,
wa_len3 type i.
data: wa_col1 like it_j_3abomd-j_3akordxl.
data: tp_hindex like wa_hindex.
data: wa_matnr like mara-matnr.
data: lv_menge like stpo-menge.
data: no_sku type i.
concatenate it_vbak-vbeln '%' into wa_matnr.
clear: it_mast[], it_abomd[], it_vbep[], it_abdsi[].
* select stlnr into table it_mast from mast
* where matnr like wa_matnr.
loop at ta_stpo2.
it_mast-stlnr = ta_stpo2-stlnr.
collect it_mast.
endloop.
select stlnr stlkn j_3akordx j_3akordxl menge
into table it_abomd
from j_3abomd
for all entries in it_mast
where stlnr = it_mast-stlnr.
select * into table it_vbep from vbep
where vbeln = it_vbak-vbeln
and wmeng > 0
and J_3AABGRU = space.
select * into table it_abdsi from j_3abdsi
where j_4krcat = it_vbak-vbeln.
sort ta_stpo2 by hindex stlnr stlkn ERSKZ.
clear ta_zcpsku[].
loop at ta_stpo2 where vbeln = it_vbak-vbeln.
lv_tabix = sy-tabix.
tp_zcpsku[] = ta_zcpsku[].
clear wa_comqty.
refresh it_j_3abomd.
clear: lv_menge, no_sku.
loop at it_abomd where stlnr = ta_stpo2-stlnr
and stlkn = ta_stpo2-stlkn.
* if it_abomd-J_3AKORDX ne 'ZZZ'.
* add it_j_3abomd-menge to lv_menge.
* add 1 to no_sku.
* endif.
if ta_stpo2-twist = 'X'.
wa_col1 = it_abomd-j_3akordxl.
tp_hindex = ta_stpo2-hindex(18).
shift tp_hindex right deleting trailing space.
overlay tp_hindex with '00000000000000000000' only space.
read table ta_zcpsku with key hindex = tp_hindex
j_3asize = wa_col1.
if sy-subrc eq 0.
move-corresponding it_abomd to it_j_3abomd.
append it_j_3abomd.
endif.
else.
tp_hindex = ta_stpo2-hindex(18).
shift tp_hindex right deleting trailing space.
overlay tp_hindex with '00000000000000000000' only space.
read table it_vbep with key vbeln = it_vbak-vbeln
j_3asize = it_abomd-j_3akordxl.
if sy-subrc eq 0.
move-corresponding it_abomd to it_j_3abomd.
append it_j_3abomd.
endif.
endif.
endloop.
read table it_j_3abomd index 1.
if sy-subrc ne 0.
continue.
endif.
clear ta_zcpsku.
sort it_j_3abomd by j_3akordx.
clear: lv_menge, no_sku.
loop at it_j_3abomd.
add it_j_3abomd-menge to lv_menge.
add 1 to no_sku.
clear wa_hindex.
ta_zcpsku-idnrk = ta_stpo2-idnrk.
ta_zcpsku-hindex = ta_stpo2-hindex.
ta_zcpsku-stlnr = ta_stpo2-stlnr.
ta_zcpsku-vbeln = it_vbak-vbeln.
ta_zcpsku-j_3asize = it_j_3abomd-j_3akordx.
ta_zcpsku-mtart = ta_stpo2-mtart.
ta_zcpsku-werks = ta_stpo2-werks. "m3 add
if ta_stpo2-meins ne ta_stpo2-buom.
CALL FUNCTION 'MATERIAL_UNIT_CONVERSION'
EXPORTING
INPUT = wa_input
MATNR = ta_stpo2-idnrk
MEINH = ta_stpo2-meins
IMPORTING
OUTPUT = wa_output
UMREN = WA_UMREN
UMREZ = WA_UMREZ.
else.
wa_umren = 1.
wa_umrez = 1.
endif.
if ta_stpo2-hindex < 100.
loop at it_vbep where vbeln = it_vbak-vbeln
and j_3asize = it_j_3abomd-j_3akordxl.
cal_menge = it_j_3abomd-menge * it_vbep-wmeng
/ ta_stpo2-bmeng * ( 1 + ta_stpo2-ausch / 100 )
* wa_umrez / wa_umren.
ta_zcpsku-menge = ta_zcpsku-menge + cal_menge.
ta_zcpsku-oreq = it_j_3abomd-menge.
endloop.
else.
wa_len3 = strlen( it_j_3abomd-j_3akordxl ).
wa_char3 = it_j_3abomd-j_3akordxl.
loop at tp_zcpsku where hindex = tp_hindex
and j_3asize = it_j_3abomd-j_3akordxl.
cal_menge = it_j_3abomd-menge * tp_zcpsku-menge
/ ta_stpo2-bmeng * ( 1 + ta_stpo2-ausch / 100 )
* wa_umrez / wa_umren.
ta_zcpsku-menge = ta_zcpsku-menge + cal_menge.
ta_zcpsku-oreq = it_j_3abomd-menge.
endloop.
endif.
* at end of j_3akordx.
CALL FUNCTION 'Z_CONVERSION_VALUE'
EXPORTING
MATNR = ta_stpo2-idnrk
J_3ASIZE = ta_zcpsku-j_3ASIZE
IMPORTING
CONV_LENTRY = ta_zcpsku-lentry
CONV_GENTRY = ta_zcpsku-gentry
SORTSEQ = ta_zcpsku-sortseq.
* wa_comqty = wa_comqty + ta_zcpsku-menge.
append ta_zcpsku.
clear ta_zcpsku.
* endat.
endloop.
ta_stpo2-oreq = ta_stpo2-menge.
* ta_stpo2-req = wa_comqty.
if no_sku <> 0.
ta_stpo2-avgmng = lv_menge / no_sku.
endif.
modify ta_stpo2 index lv_tabix.
endloop.
loop at ta_zcpsku.
clear ta_sku.
move ta_zcpsku to ta_sku.
collect ta_sku.
clear it_matnr.
it_matnr-j_4kscat = it_vbak-vbeln.
it_matnr-matnr = ta_sku-idnrk.
it_matnr-mtart = ta_sku-mtart.
it_matnr-werks = it_vbak-werks. "add by daniel on 2012.02.20
collect it_matnr.
endloop.
ENDFORM. " GET_COMPONENT_REQUIREMENT
*&---------------------------------------------------------------------*
*& Form GET_PO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_PO .
data: wa_banfn like eban-banfn.
data: l_waers like ekko-waers value 'USD'.
clear it_po[].
* clear it_rpo[].
check not it_matnr[] is initial.
*"Get Material, Color and PO qty
select c~ebeln c~ebelp c~etenr b~matnr c~j_3asize c~menge
b~meins as meins
b~j_4kscat b~konnr a~lifnr d~name1 a~waers b~netwr a~bedat
a~bukrs a~adrnr a~zzwash "b~zztest b~zzsample
into table it_po
from ekko as a inner join ekpo as b on a~ebeln = b~ebeln
inner join eket as c on b~ebeln = c~ebeln and
b~ebelp = c~ebelp
inner join lfa1 as d on a~lifnr = d~lifnr
for all entries in it_matnr
where b~matnr = it_matnr-matnr
and b~j_4kscat = it_matnr-j_4kscat
and b~j_4kscat in s_vbeln
and b~loekz = space
and b~zzsample = space
and b~zztest = space
and a~bstyp = 'F'
and a~bsart in ('ZER', 'ZAR').
*M3 add
perform get_mat_without_po.
sort it_po by j_4kscat matnr j_3asize.
*M3 end
loop at it_po.
lv_tabix = sy-tabix.
perform get_material_attribute using it_po-matnr.
read table it_matnr with key matnr = it_po-matnr flag = 'X'.
if sy-subrc = 0.
it_po-yield = it_matnr-yield.
it_po-width = it_matnr-width.
* 18/04/06 : fabric type for CAL
if it_matnr-j_4kscat(1) = '5'.
*"Add yarn count shrinkage v/h
concatenate it_matnr-ycout it_matnr-ftype into it_matnr-ftype
separated by space.
it_po-ftype = it_matnr-ftype.
else.
select * from ekpo where ebeln = it_po-ebeln and
loekz = space and
zzfabtyp <> space
order by zzfabtyp descending.
it_po-ftype = ekpo-zzfabtyp.
endselect.
endif.
it_po-fcont = it_matnr-fcont.
*"Add yarn count shrinkage v/h
if it_matnr-j_4kscat(1) = '5' or it_matnr-j_4kscat(1) = '6'.
it_po-vshag = it_matnr-vshag.
it_po-hshag = it_matnr-hshag.
endif.
endif.
select single wtext into it_po-wtext from zmm_wash
where bukrs = it_po-bukrs
and zzwash = it_po-zzwash.
if sy-subrc ne 0.
it_po-wtext = it_po-zzwash.
endif.
modify it_po index lv_tabix.
endloop.
loop at it_po.
it_po_mat-vbeln = it_po-j_4kscat.
it_po_mat-matnr = it_po-matnr.
it_po_mat-j_3asize = it_po-j_3asize.
it_po_mat-poqty = it_po-poqty.
it_po_mat-pouom = it_po-pouom.
it_po_mat-lifnr = it_po-lifnr.
it_po_mat-name1 = it_po-name1.
it_po_mat-zzwash = it_po-zzwash.
it_po_mat-wtext = it_po-wtext.
collect it_po_mat.
endloop.
loop at it_po_mat.
lv_tabix = sy-tabix.
select sum( clabs ) into it_po_mat-left_qty from mchb
where matnr = it_po_mat-matnr
and J_4KSCAT = it_po_mat-vbeln
and j_3asize = it_po_mat-j_3asize
and lgort like '5%7'.
select single maktx into it_po_mat-maktx2 from makt "material description
where matnr = it_po_mat-matnr.
CALL FUNCTION 'Z_CONVERSION_VALUE'
EXPORTING
MATNR = it_po_mat-MATNR
J_3ASIZE = it_po_mat-j_3ASIZE
IMPORTING
J_3AENTX8 = it_po_mat-J_3AENTX8
J_3AENTX = it_po_mat-J_3AENTX
J_3ANOTE = it_po_mat-J_3ANOTE.
modify it_po_mat index lv_tabix.
endloop.
ENDFORM. " GET_PO
*&---------------------------------------------------------------------*
*& Form GET_GR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_GR .
clear: it_gr[],it_gr_detail[].
check not it_matnr[] is initial.
*"Get GR
select * into corresponding fields of table it_gr
from mseg as b inner join mkpf as a on a~mblnr = b~mblnr
for all entries in it_matnr
where b~matnr = it_matnr-matnr and
b~j_4ksca = it_matnr-j_4kscat and
b~j_4ksca in s_vbeln and
b~bwart in ('101', '102', '511', '512', '309', '310',
'122', '123', '922', '923', '933','934') .
loop at it_gr.
lv_tabix = sy-tabix.
if it_gr-bwart = '102' or it_gr-bwart = '512' or
it_gr-bwart = '122' or it_gr-bwart = '922' or it_gr-bwart = '934'.
it_gr-menge = 0 - it_gr-menge.
it_gr-erfmg = 0 - it_gr-erfmg.
endif.
if it_gr-bwart = '102'.
it_gr-bwart = '101'.
endif.
if it_gr-bwart = '122'.
it_gr-bwart = '123'.
endif.
if it_gr-bwart = '922'.
it_gr-bwart = '923'.
endif.
if it_gr-bwart = '512'.
it_gr-bwart = '511'.
endif.
if it_gr-bwart = '934'.
it_gr-bwart = '933'.
endif.
modify it_gr index lv_tabix.
endloop.
sort it_gr by j_4ksca matnr j_3asiz bwart lifnr.
loop at it_gr.
clear it_gr_detail.
it_gr_detail-matnr = it_gr-matnr.
it_gr_detail-j_4ksca = it_gr-j_4ksca.
it_gr_detail-j_3asiz = it_gr-j_3asiz.
if ( it_gr-bwart = '101' or it_gr-bwart = '123' or it_gr-bwart = '923' )
and it_gr-lgort <> '1062' and it_gr-lgort <> '1052' .
it_gr_detail-gr_menge = it_gr-menge.
endif.
if it_gr-bwart = '511' and it_gr-lgort <> '1062' and it_gr-lgort <> '1052'.
it_gr_detail-foc_menge = it_gr-menge.
endif.
if it_gr-lgort = '1052' " or it_gr-lgort = '1062' )
and it_gr-bwart = '933'.
it_gr_detail-sample_qty = it_gr-menge.
endif.
* it_Gr_detail-lifnr = it_Gr-lifnr.
collect it_gr_detail.
endloop.
ENDFORM. " GET_GR
*&---------------------------------------------------------------------*
*& Form GET_MATERIAL_ATTRIBUTE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_IT_PO_MAT_MATNR text
*----------------------------------------------------------------------*
FORM GET_MATERIAL_ATTRIBUTE USING P_MATNR.
data: lv_tabix like sy-tabix.
* CLASS and allocated Characteristic DATA
DATA: L_CLASS TYPE KLASSE_D,
L_CLASSTYPE TYPE KLASSENART VALUE '001'.
* API DATA
DATA: LT_CLA_CH_AT type standard table of CLA_CH_AT initial size 20,
LF_CLA_CH_AT like line of lt_CLA_CH_AT,
LT_CHA_VALDSC type standard table of cha_valdsc initial size 20.
data: t_atwrt(14) type c value 'it_matnr-'.
field-symbols: <f_atwrt>.
*"Get Material Classification
clear lv_tabix.
read table it_matnr with key matnr = p_matnr
flag = 'X'.
if sy-subrc ne 0.
read table it_matnr with key matnr = p_matnr.
if sy-subrc = 0.
lv_tabix = sy-tabix.
endif.
endif.
if lv_tabix ne 0.
l_class = it_matnr-mtart.
*"Get Attribute Name
CALL FUNCTION 'CARD_CLASS_READ_CHARACTS'
EXPORTING
class = L_CLASS
class_type = L_CLASSTYPE
tables
characteristics = LT_CLA_CH_AT
characteristics_values = LT_CHA_VALDSC
EXCEPTIONS
ERROR_MESSAGE = 1
OTHERS = 2.
if sy-subrc = 0.
loop at lt_cla_ch_at into lf_cla_ch_at.
t_atwrt+9(5) = ''.
case lf_cla_ch_at-charact+5(25).
when 'GROUP'.
t_atwrt+9(5) = 'FTYPE'.
assign (t_atwrt) to <f_atwrt>.
when 'FIBRE_CONTENT'.
t_atwrt+9(5) = 'FCONT'.
assign (t_atwrt) to <f_atwrt>.
when 'GROSS_WIDTH'.
t_atwrt+9(5) = 'WIDTH'.
assign (t_atwrt) to <f_atwrt>.
* M1
* when 'WEIGHT_AW'.
when 'WEIGTH_BW'.
t_atwrt+9(5) = 'YIELD'.
assign (t_atwrt) to <f_atwrt>.
*"Add yarn count shrinkage v/h
when 'YARN_COUNT'.
t_atwrt+9(5) = 'YCOUT'.
assign (t_atwrt) to <f_atwrt>.
when 'SHRINKAGE_VERTICAL'.
t_atwrt+9(5) = 'VSHAG'.
assign (t_atwrt) to <f_atwrt>.
when 'SHRINKAGE_HORIZONTAL'.
t_atwrt+9(5) = 'HSHAG'.
assign (t_atwrt) to <f_atwrt>.
*"End modification
endcase.
* get classification value
if t_atwrt+9(5) ne ''.
select single a~atwrt into <f_atwrt>
from ausp as a inner join cabn as b on a~atinn = b~atinn
where a~objek = p_matnr
and atnam = lf_cla_ch_at-charact.
endif.
endloop.
* set the BW & Width for LB to YD conversion
perform set_conv_factor using it_matnr-matnr
it_matnr-yield it_matnr-width.
endif.
it_matnr-flag = 'X'.
modify it_matnr index lv_tabix.
endif.
ENDFORM. " GET_MATERIAL_ATTRIBUTE
*&---------------------------------------------------------------------*
*& Form SET_CONV_FACTOR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_IT_MATNR_MATNR text
* -->P_IT_MATNR_YIELD text
* -->P_IT_MATNR_WIDTH text
*----------------------------------------------------------------------*
FORM SET_CONV_FACTOR USING i_matnr i_yield i_width.
data: wa_width type p,
wa_yield type p,
wa_div type p decimals 8,
p_yield(30) type c,
p_width(30) type c.
p_yield = i_yield.
p_width = i_width.
loop at it_conv where matnr = i_matnr.
* BM weight
shift p_yield up to 'GMS' circular.
if sy-subrc = 0.
condense p_yield.
wa_yield = p_yield+4(10).
else.
shift p_yield up to 'gms' circular.
if sy-subrc = 0.
condense p_yield.
wa_yield = p_yield+4(10).
else.
shift p_yield up to 'GSM' circular.
if sy-subrc = 0.
condense p_yield.
wa_yield = p_yield+4(10).
else.
shift p_yield up to 'gsm' circular.
if sy-subrc = 0.
condense p_yield.
wa_yield = p_yield+4(10).
else.
wa_yield = 0.
endif.
endif.
endif.
endif.
* Gross width
shift p_width up to '"' circular.
if sy-subrc = 0.
condense p_width.
wa_width = p_width+1(10).
else.
wa_width = 0.
endif.
wa_div = '0.00082' * wa_yield * wa_width * it_conv-scale.
if wa_div > 0.
it_conv-factor = wa_div / 16.
else.
it_conv-factor = 0.
endif.
it_conv-bweig = wa_yield.
it_conv-gwdth = wa_width.
modify it_conv.
endloop.
ENDFORM. " SET_CONV_FACTOR
*&---------------------------------------------------------------------*
*& Form GET_SHIPPED
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_SHIPPED .
data: *ship like it_ship occurs 0 with header line.
data: l_fkdat like vbrk-fkdat.
clear it_ship[].
check not it_vbak[] is initial.
loop at it_vbak.
select aubel aubel fkdat a~vbeln fkart sfakn fkimg vrkme kidno
into it_ship
from vbrk as a inner join vbrp as b on a~vbeln = b~vbeln
where b~aubel = it_vbak-vbeln
and a~fkart in ('F2', 'S1').
collect it_ship.
endselect.
endloop.
*ship[] = it_ship[].
loop at it_ship where fkart = 'F2'.
lv_tabix = sy-tabix.
read table *ship with key sfakn = it_ship-invno
fkart = 'S1'.
if sy-subrc = 0.
delete it_ship index lv_tabix.
else.
* : fix user invoice cancellation error.
read table *ship with key kidno = it_ship-invno
fkart = 'S1'.
if sy-subrc = 0.
delete it_ship index lv_tabix.
endif.
endif.
endloop.
delete it_ship where fkart = 'S1'.
ENDFORM. " GET_SHIPPED
*&---------------------------------------------------------------------*
*& Form JOIN_DATA_MF
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM JOIN_DATA_MF .
sort it_gr_detail by matnr j_4ksca j_3asiz.
sort it_po by matnr j_4kscat.
sort it_ship by vbeln.
loop at it_po_mat.
clear it_gr_detail.
read table it_gr_detail with key matnr = it_po_mat-matnr
j_4ksca = it_po_mat-vbeln
j_3asiz = it_po_mat-j_3asize.
* lifnr = it_po_mat-lifnr.
if sy-subrc = 0.
it_out_mf-gr_qty = it_gr_detail-gr_menge.
it_out_mf-foc_qty = it_gr_detail-foc_menge.
it_out_mf-sample_qty = it_gr_detail-sample_qty.
endif.
clear it_po.
read table it_po with key matnr = it_po_mat-matnr
j_4kscat = it_po_mat-vbeln.
if sy-subrc = 0.
it_out_mf-width = it_po-width.
it_out_mf-vshag = it_po-vshag.
it_out_mf-hshag = it_po-hshag.
it_out_mf-ftype = it_po-ftype.
it_out_mf-fcont = it_po-fcont. "Fibre Content
endif.
clear it_vbak.
read table it_vbak with key vbeln = it_po_mat-vbeln.
if sy-subrc = 0.
move-corresponding it_vbak to it_out_mf.
endif.
loop at it_ship where vbeln = it_po_mat-vbeln.
add it_ship-fkimg to it_out_mf-ttlshipqty.
endloop.
it_out_mf-vbeln = it_po_mat-vbeln.
it_out_mf-matnr = it_po_mat-matnr.
it_out_mf-j_3asize = it_po_mat-j_3asize.
it_out_mf-poqty = it_po_mat-poqty.
it_out_mf-pouom = it_po_mat-pouom.
select single meins into it_out_mf-uom from mara where matnr = it_out_mf-matnr.
it_out_mf-lifnr = it_po_mat-lifnr.
it_out_mf-name = it_po_mat-name1.
it_out_mf-wtext = it_po_mat-wtext.
it_out_mf-left_qty = it_po_mat-left_qty.
it_out_mf-maktx2 = it_po_mat-maktx2.
it_out_mf-j_3asize = it_po_mat-j_3aentx8.
it_out_mf-color = it_po_mat-j_3aentx.
it_out_mf-color_remark = it_po_mat-j_3anote.
*M1 add
select single waerk into it_out_mf-waerk from vbak where vbeln = it_out_mf-vbeln.
*M1 end
append it_out_mf.
clear it_out_mf.
endloop.
*M3 add
data tmp_mf like it_out_mf occurs 0 with header line.
data tmp_mf2 like it_out_mf occurs 0 with header line.
tmp_mf2[] = it_out_mf[].
loop at it_out_mf.
lv_tabix = sy-tabix.
if lv_tabix > 1.
read table tmp_mf with key matnr = it_out_mf-matnr
vbeln = it_out_mf-vbeln
j_3asize = it_out_mf-j_3asize.
if sy-subrc = 0.
delete it_out_mf index lv_Tabix.
else.
append it_out_mf to tmp_mf.
endif.
else.
append it_out_mf to tmp_mf.
endif.
endloop.
loop at it_out_mf.
lv_tabix = sy-tabix.
clear it_out_mf-poqty.
loop at tmp_mf2 where matnr = it_out_mf-matnr
and vbeln = it_out_mf-vbeln
and j_3asize = it_out_mf-j_3asize.
it_out_mf-poqty = it_out_mf-poqty + tmp_mf2-poqty.
endloop.
modify it_out_mf index lv_Tabix transporting poqty.
endloop.
*M3 end
ENDFORM. " JOIN_DATA_MF
*&---------------------------------------------------------------------*
*& Form DOWN_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DOWN_FILE .
perform write_itab1.
perform write_itab2.
perform write_itab3.
perform write_itab4.
if itab1[] is not initial.
perform create_fname using gvfield1 'M' sy-datum sy-uzeit
changing gvfielda .
endif.
if itab2[] is not initial.
perform create_fname using gvfield1 'S' sy-datum sy-uzeit
changing gvfieldb.
endif.
if itab3[] is not initial.
perform create_fname using gvfield1 'F' sy-datum sy-uzeit
changing gvfieldc.
endif.
if itab4[] is not initial.
perform create_fname using gvfield1 'G' sy-datum sy-uzeit
changing gvfieldd.
endif.
IF zbgd eq 'X'.
PERFORM batch_dl_mf.
PERFORM batch_dl_fg_ship.
PERFORM batch_dl_fab_io.
perform batch_dl_fg_io.
ELSE.
PERFORM DOWN_FILE_mf.
PERFORM DOWN_FILE_FG_ship.
PERFORM DOWN_FILE_FAB_io.
PERFORM DOWN_FILE_FG_io.
ENDIF.
ENDFORM. " DOWN_FILE
*&---------------------------------------------------------------------*
*& Form WRITE_ITAB1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM WRITE_ITAB1 .
data: lv_texts(1000).
data: l_qty type i.
data: wa_fabio like mseg-menge.
data: r_fkdat like vbrk-fkdat.
data: r_form like vbrk-fkdat,
r_to like vbrk-fkdat.
ranges: r_data for vbrk-fkdat.
data: lv_fkimg2 like vbrp-fkimg.
data: lv_fkimg3 like vbrp-fkimg.
data: lv_fkart like vbrk-fkart.
data: lv_mvgr1 like vbap-mvgr1.
data: lv_bezei2 like tvm1t-bezei.
data: lv_landx(15) type c,
lv_zzftyd(30) type c,
lv_maktx(40) type c,
lv_bname(35) type c,
lv_vbeln(10) type c,
lv_name1(35) type c,
lv_vkgrp(3) type c,
lv_zzprogram(12) type c,
lv_bezei(50) type c, "product type
lv_zzseason(4) type c,
lv_kwmeng(20) type c,
lv_kbetr(15) type c, "selling price
lv_aedat(10) type c, " complete date
lv_fkdat(10) type c, " invoice date
lv_matnr(18) type c,
lv_maktx2(40) type c, "Fabric Description
lv_lifnr(16) type c, "Vendor code
lv_name2(35) type c, "Fabric Vendor
lv_grid(8) type c,
lv_color(16) type c,
lv_remark(40) type c,
lv_poqty(16) type c,
lv_grqty(16) type c,
lv_focqty(16) type c,
lv_simpleqty(16) type c,
lv_buom(8) type c,
lv_width(30) type c,
lv_wtext(50) type c, "washing method
lv_hshag(30) type c,
lv_vshag(30) type c,
lv_left(16) type c,
lv_ftype(30) type c,
lv_fcont(30) type c,
lv_fkimg(16) type c,
lv_udate(10) type c.
data lv_waerk(5) type c. "m1 add
check it_out_mf[] is not initial.
clear:lv_texts.
concatenate 'Prod. Site ' '|'
'Factory' '|'
'Description' '|'
'Style' '|'
'SO Number' '|'
'Customer' '|'
'Sales Group' '|'
'Program Name' '|'
'Product Type' '|'
'Season' '|'
'Order Quantity' '|'
'Selling Price' '|'
'Complete Date' '|'
'Invoice Date' '|'
'Fabric Material code' '|'
'Fabric Description' '|'
'Vendor Code' '|'
'Fabric Vendor' '|'
'Grid' '|'
'Color' '|'
'Conversion Remark' '|'
'Fabric Qty Purchased' '|'
'Fabric Qty Received' '|'
'Fabric Free of Charge' '|'
'Sample Qty Purchased' '|'
'BUOM' '|'
'Order fabric width' '|'
'Washing Method' '|'
'Shrinkage Horizontal' '|'
'Shrinkage Vertical' '|'
'Leftover Fabric' '|'
'Fabric Type' '|'
'Fibre Content' '|'
'Shipped Qty' '|'
'SO Closed Date' '|'
'Currency' "M1 add
into lv_texts.
move lv_texts to itab1-text.
APPEND itab1.
clear:lv_texts.
loop at it_out_mf.
lv_landx = it_out_mf-landx.
lv_zzftyd = it_out_mf-zzftyd.
lv_maktx = it_out_mf-maktx.
lv_bname = it_out_mf-bname.
lv_vbeln = it_out_mf-vbeln.
lv_name1 = it_out_mf-name1.
lv_vkgrp = it_out_mf-vkgrp.
lv_zzprogram = it_out_mf-zzprogram.
lv_bezei = it_out_mf-bezei.
lv_zzseason = it_out_mf-zzseason.
l_qty = it_out_mf-kwmeng.
lv_kwmeng = l_qty.
lv_kbetr = it_out_mf-kbetr.
* lv_aedat = it_out_mf-aedat.
clear lv_aedat. "m2 add
if it_out_mf-aedat ne '00000000'.
concatenate it_out_mf-aedat+6(2) '.' it_out_mf-aedat+4(2) '.'
it_out_mf-aedat(4) into lv_aedat.
endif.
if it_out_mf-fkdat ne '00000000'.
concatenate it_out_mf-fkdat+6(2) '.' it_out_mf-fkdat+4(2) '.'
it_out_mf-fkdat(4) into lv_fkdat.
endif.
if it_out_mf-udate ne '00000000'.
concatenate it_out_mf-udate+6(2) '.' it_out_mf-udate+4(2) '.'
it_out_mf-udate(4) into lv_udate.
endif.
lv_matnr = it_out_mf-matnr.
lv_maktx2 = it_out_mf-maktx2.
lv_lifnr = it_out_mf-lifnr.
lv_name2 = it_out_mf-name.
lv_grid = it_out_mf-j_3asize.
lv_color = it_out_mf-color.
lv_remark = it_out_mf-color_remark.
lv_poqty = it_out_mf-poqty.
lv_grqty = it_out_mf-gr_qty.
lv_focqty = it_out_mf-foc_qty.
lv_simpleqty = it_out_mf-sample_qty.
lv_width = it_out_mf-width.
lv_wtext = it_out_mf-wtext.
lv_hshag = it_out_mf-hshag.
lv_vshag = it_out_mf-vshag.
lv_left = it_out_mf-left_qty.
lv_ftype = it_out_mf-ftype.
lv_fcont = it_out_mf-fcont.
lv_fkimg = it_out_mf-ttlshipqty.
lv_buom = it_out_mf-uom.
lv_waerk = it_out_mf-waerk. "M1 add
concatenate
lv_landx '|'
lv_zzftyd '|'
lv_maktx '|'
lv_bname '|'
lv_vbeln '|'
lv_name1 '|'
lv_vkgrp '|'
lv_zzprogram '|'
lv_bezei '|'
lv_zzseason '|'
lv_kwmeng '|'
lv_kbetr '|' "selling price
lv_aedat '|' " complete date
lv_fkdat '|' " invoice date
lv_matnr '|'
lv_maktx2 '|' "Fabric Description
lv_lifnr '|' "Vendor code
lv_name2 '|' "Fabric Vendor
lv_grid '|'
lv_color '|'
lv_remark '|'
lv_poqty '|'
lv_grqty '|'
lv_focqty '|'
lv_simpleqty '|'
lv_buom '|'
lv_width '|'
lv_wtext '|' "washing method
lv_hshag '|'
lv_vshag '|'
lv_left '|'
lv_ftype '|'
lv_fcont '|'
lv_fkimg '|'
lv_udate '|'
lv_waerk '|' "m1 add
into lv_texts.
condense lv_texts.
move lv_texts to itab1-text.
append itab1.
endloop.
ENDFORM. " WRITE_ITAB1
*&---------------------------------------------------------------------*
*& Form BATCH_DL_MF
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BATCH_DL_MF .
data: lv_strlen type i.
data: gvfield1 like rlgrap-filename.
* data: lv_message(300).
data: fflag type c.
check itab1[] is not initial.
open dataset gvfielda for output in text mode encoding UTF-8 WITH BYTE-ORDER MARK
WITH SMART LINEFEED."in text mode encoding default.
if sy-subrc = 0.
*//download data to file
loop at itab1.
transfer itab1 to gvfielda.
endloop.
close dataset gvfielda.
lv_strlen = strlen( gvfielda ).
write:/ 'File saved to ', gvfielda(lv_strlen).
else.
raise file_open_error.
endif.
ENDFORM. " BATCH_DL_MF
*&---------------------------------------------------------------------*
*& Form DOWN_FILE_MF
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DOWN_FILE_MF .
data: gvfield1 like rlgrap-filename.
data: lv_file_name type string.
data: lv_strlen type i.
data: fflag type c.
check itab1[] is not initial.
lv_file_name = gvfielda.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = lv_file_name
filetype = 'ASC'
codepage = '4110' "'4103'
* replacement = '#'
* write_field_separator = 'X'
write_bom = 'X'
TABLES
data_tab = itab1.
* call function 'WS_DOWNLOAD'
* exporting
* filename = gvfielda
* filetype = 'ASC'
* tables
* data_tab = itab1
* exceptions
* file_open_error = 1
* file_write_error = 2
* invalid_filesize = 3
* invalid_type = 4
* no_batch = 5
* unknown_error = 6
* invalid_table_width = 7
* gui_refuse_filetransfer = 8
* customer_error = 9
* others = 10.
if sy-subrc = 0.
lv_strlen = strlen( gvfielda ).
write:/ 'File saved to ', gvfielda(lv_strlen).
endif.
ENDFORM. " DOWN_FILE_MF
*&---------------------------------------------------------------------*
*& Form CREATE_FNAME
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GVFIELD1 text
* -->P_3970 text
* -->P_SY_DATUM text
* -->P_SY_UZEIT text
*----------------------------------------------------------------------*
FORM CREATE_FNAME USING p_fname p_type p_rundate p_time
changing p_name.
data: lv_fname(100) type c.
data: lv_i type i.
data: lv_c(1) type c.
write p_rundate to lv_fname yymmdd.
concatenate 'MU' p_type s_zzfty-low lv_fname p_time into lv_fname.
concatenate lv_fname '.txt' into lv_fname.
lv_i = strlen( p_fname ).
lv_i = lv_i - 1 .
if lv_i > 1.
lv_c = p_fname+lv_i(1).
endif.
if lv_c eq '\'.
concatenate p_fname lv_fname into p_name.
else.
concatenate p_fname '\' lv_fname into p_name.
endif.
ENDFORM. " CREATE_FNAME
*&---------------------------------------------------------------------*
*& Form WRITE_ITAB2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM WRITE_ITAB2 .
data: lv_texts(1000).
data: lv_vbeln(18) type c,
lv_kunnr(10) type c,
lv_name1(40) type c,
lv_grid(8) type c,
lv_remark(40) type c,
lv_size(8) type c,
lv_ordqty(16) type c,
lv_delqty(16) type c.
check it_out_ms[] is not initial.
clear:lv_texts.
concatenate 'SO' '|'
'Customer Code' '|'
'Customer' '|'
'Grid Value' '|'
'Conversion remark' '|'
'Size' '|'
'Order Qty' '|'
'Delivery Qty' '|'
into lv_texts.
move lv_texts to itab2-text.
APPEND itab2.
clear:lv_texts.
loop at it_out_ms.
lv_vbeln = it_out_ms-matnr.
lv_kunnr = it_out_ms-kunnr.
lv_name1 = it_out_ms-name1.
lv_grid = it_out_ms-grid.
lv_remark = it_out_ms-remark.
lv_size = it_out_ms-size.
lv_ordqty = it_out_ms-ordqty.
lv_delqty = it_out_ms-delqty.
concatenate lv_vbeln '|'
lv_kunnr '|'
lv_name1 '|'
lv_grid '|'
lv_remark '|'
lv_size '|'
lv_ordqty '|'
lv_delqty
into lv_texts.
condense lv_texts.
move lv_texts to itab2-text.
append itab2.
endloop.
ENDFORM. " WRITE_ITAB2
*&---------------------------------------------------------------------*
*& Form BATCH_DL_FG_SHIP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BATCH_DL_FG_SHIP .
data: lv_strlen type i.
data: fflag type c.
check itab2[] is not initial.
*** U1
* open dataset gvfieldb for output in text mode encoding default.
open dataset gvfieldb for output in text mode encoding UTF-8 WITH BYTE-ORDER MARK
WITH SMART LINEFEED.
if sy-subrc = 0.
*//download data to file
loop at itab2.
transfer itab2 to gvfieldb.
endloop.
close dataset gvfieldb.
lv_strlen = strlen( gvfieldb ).
write:/ 'File saved to ', gvfieldb(lv_strlen).
else.
raise file_open_error.
endif.
ENDFORM. " BATCH_DL_FG_SHIP
*&---------------------------------------------------------------------*
*& Form DOWN_FILE_FG_SHIP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DOWN_FILE_FG_SHIP .
data: gvfield1 like rlgrap-filename.
data: lv_file_name type string.
data: lv_strlen type i.
data: fflag type c.
check itab2[] is not initial.
lv_file_name = gvfieldb.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = lv_file_name
filetype = 'ASC'
codepage = '4110'
* replacement = '#'
* write_field_separator = 'X'
write_bom = 'X'
TABLES
data_tab = itab2.
* call function 'WS_DOWNLOAD'
* exporting
* filename = gvfieldb
* filetype = 'ASC'
* tables
* data_tab = itab2
* exceptions
* file_open_error = 1
* file_write_error = 2
* invalid_filesize = 3
* invalid_type = 4
* no_batch = 5
* unknown_error = 6
* invalid_table_width = 7
* gui_refuse_filetransfer = 8
* customer_error = 9
* others = 10.
if sy-subrc = 0.
lv_strlen = strlen( gvfieldb ).
write:/ 'File saved to ', gvfieldb(lv_strlen).
endif.
ENDFORM. " DOWN_FILE_FG_SHIP
*&---------------------------------------------------------------------*
*& Form GET_GARMENT_SHIP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_GARMENT_SHIP .
data: wa_lfimg like lips-lfimg.
data: wa_lfimg2 like lips-lfimg.
clear it_vbep[].
data tmp_ms like it_out_ms occurs 0 with header line.
select vbeln as matnr posnr ETENR j_3asize wmeng as ordqty "lmeng as delqty
into corresponding fields of table it_out_ms from vbep
for all entries in it_vbak
where vbeln = it_vbak-vbeln
and wmeng > 0
and J_3AABGRU = space.
loop at it_out_ms.
lv_tabix = sy-tabix.
clear: it_out_ms-posnr, it_out_ms-etenr.
move it_out_ms to tmp_ms.
collect tmp_ms.
modify it_out_ms index lv_tabix.
endloop.
it_out_ms[] = tmp_ms[].
clear: tmp_ms[].
loop at it_out_ms.
lv_tabix = sy-tabix.
clear it_vbak.
clear: it_out_ms-posnr, it_out_ms-etenr.
read table it_vbak with key vbeln = it_out_ms-matnr.
if sy-subrc = 0.
it_out_ms-kunnr = it_vbak-kunnr.
it_out_ms-name1 = it_vbak-name1.
endif.
CALL FUNCTION 'Z_CONVERSION_VALUE'
EXPORTING
MATNR = it_out_ms-matnr
J_3ASIZE = it_out_ms-j_3ASIZE
IMPORTING
* CONV_LENTRY = it_out_ms-grid
J_3AENTX8 = it_out_ms-grid
J_SIZE = it_out_ms-size
J_3ANOTE = it_out_ms-remark.
clear: wa_lfimg, wa_lfimg2.
select sum( lfimg ) into wa_lfimg from lips where vgbel = it_out_ms-matnr
and j_3asize = it_out_ms-j_3asize
and bwart = '601'.
select sum( lfimg ) into wa_lfimg2 from lips where vgbel = it_out_ms-matnr
and j_3asize = it_out_ms-j_3asize
and bwart = '602'.
it_out_ms-delqty = wa_lfimg - wa_lfimg2.
modify it_out_ms index lv_tabix.
endloop.
loop at it_out_ms.
move it_out_ms to tmp_ms.
collect tmp_ms.
endloop.
clear it_out_ms[].
it_out_ms[] = tmp_ms[].
ENDFORM. " GET_GARMENT_SHIP
*&---------------------------------------------------------------------*
*& Form GET_GR_MTM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_GR_MTM .
data: begin of it_gr_mtm occurs 0,
mblnr like mseg-mblnr,
mjahr like mseg-mjahr,
zeile like mseg-zeile,
matnr like mseg-matnr,
j_4ksca like mseg-j_4ksca,
j_3asiz like mseg-j_3asiz,
bwart like mseg-bwart,
menge like mseg-menge,
meins like mseg-meins,
j_4kumsc like mseg-j_4kumsc,
shkzg like mseg-shkzg,
status type c,
end of it_gr_mtm.
data tmp_mtm like it_fab_mtm occurs 0 with header line.
data lv_mtart like mara-mtart.
data: it_mbew like mbew occurs 0 with header line.
select mblnr mjahr zeile matnr j_4ksca j_3asiz menge meins j_4kumsc shkzg bwart
into corresponding fields of table it_gr_mtm
from mseg
for all entries in it_matnr
where j_4ksca = it_matnr-J_4KSCAT
and bwart in ('309', '310').
loop at it_gr_mtm.
lv_tabix = sy-tabix.
*modify on 2011.12.13
* if it_gr_mtm-shkzg = 'H'.
* it_gr_mtm-status = 'O'.
* it_gr_mtm-menge = 0 - it_gr_mtm-menge.
* else.
* it_gr_mtm-status = 'I'.
* endif.
if it_gr_mtm-shkzg = 'H'.
if it_gr_mtm-bwart = '309'.
it_gr_mtm-status = 'O'.
else.
it_gr_mtm-status = 'I'.
it_gr_mtm-menge = 0 - it_gr_mtm-menge.
endif.
else.
if it_gr_mtm-bwart = '309'.
it_gr_mtm-status = 'I'.
else.
it_gr_mtm-status = 'O'.
it_gr_mtm-menge = 0 - it_gr_mtm-menge.
endif.
endif.
*end
clear: it_gr_mtm-mblnr, it_gr_mtm-mjahr, it_gr_mtm-zeile,
it_gr_mtm-shkzg, it_gr_mtm-bwart.
modify it_Gr_mtm index lv_tabix.
endloop.
sort it_gr_mtm by j_4ksca matnr j_3asiz status.
loop at it_gr_mtm.
clear tmp_mtm.
move-corresponding it_gr_mtm to tmp_mtm.
collect tmp_mtm.
endloop.
delete tmp_mtm where menge = 0.
"remark on 2011.12.13
*loop at tmp_mtm.
* lv_tabix = sy-tabix.
* if tmp_mtm-menge > 0.
* tmp_mtm-status = 'I'.
* else.
* tmp_mtm-status = 'O'.
* tmp_mtm-menge = 0 - tmp_mtm-menge.
* endif.
* modify tmp_mtm index lv_tabix.
*endloop.
*end
loop at tmp_mtm.
clear: lv_mtart , it_mbew[].
lv_tabix = sy-tabix.
clear lv_mtart.
select single mtart into lv_mtart from mara
where matnr = tmp_mtm-matnr.
if lv_mtart eq 'ZFAB'.
clear it_mbew[].
select * into table it_mbew from mbew where matnr = tmp_mtm-matnr.
read table it_mbew with key bklas = '3000'.
if sy-subrc = 0.
move tmp_mtm to it_fab_mtm.
collect it_fab_mtm.
endif.
elseif lv_mtart eq 'ZCFG'.
move tmp_mtm to it_fg_mtm.
collect it_fg_mtm.
endif.
endloop.
sort it_fab_mtm by j_4ksca matnr j_3asiz status.
sort it_fg_mtm by j_4ksca matnr j_3asiz status.
loop at it_fab_mtm.
lv_tabix = sy-tabix.
CALL FUNCTION 'Z_CONVERSION_VALUE'
EXPORTING
MATNR = it_fab_mtm-matnr
J_3ASIZE = it_fab_mtm-j_3ASIZ
IMPORTING
J_3AENTX8 = it_fab_mtm-J_3AENTX8
J_3AENTX = it_fab_mtm-J_3AENTX
J_3ANOTE = it_fab_mtm-J_3ANOTE.
modify it_Fab_mtm index lv_tabix.
endloop.
loop at it_fg_mtm.
lv_tabix = sy-tabix.
CALL FUNCTION 'Z_CONVERSION_VALUE'
EXPORTING
MATNR = it_fg_mtm-matnr
J_3ASIZE = it_fg_mtm-j_3ASIZ
IMPORTING
* CONV_LENTRY = it_fg_mtm-grid
J_3AENTX8 = it_fg_mtm-grid
J_SIZE = it_fg_mtm-size
J_3ANOTE = it_fg_mtm-remark.
modify it_fg_mtm index lv_tabix.
endloop.
ENDFORM. " GET_GR_MTM
*&---------------------------------------------------------------------*
*& Form WRITE_ITAB3
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM WRITE_ITAB3 .
data: lv_texts(1000).
data: lv_vbeln(18) type c,
lv_matnr(20) type c,
lv_grid(8) type c,
lv_color(20) type c,
lv_remark(40) type c,
lv_qty(16) type c,
lv_uom(5) type c,
lv_status(2) type c,
lv_so(18) type c.
check it_fab_mtm[] is not initial.
clear:lv_texts.
concatenate 'SO #' '|'
'Material Code' '|'
'Grid' '|'
'Color' '|'
'Conversion remark' '|'
'Fabric Quantity' '|'
'UOM' '|'
'Status' '|'
'From SO# / To SO#'
into lv_texts.
move lv_texts to itab3-text.
APPEND itab3.
clear:lv_texts.
loop at it_fab_mtm.
lv_vbeln = it_fab_mtm-j_4ksca.
lv_matnr = it_fab_mtm-matnr.
lv_grid = it_fab_mtm-j_3aentx8.
lv_color = it_fab_mtm-j_3aentx.
lv_remark = it_fab_mtm-j_3anote.
lv_qty = it_fab_mtm-menge.
lv_uom = it_fab_mtm-meins.
lv_status = it_fab_mtm-status.
lv_so = it_fab_mtm-j_4kumsc.
concatenate lv_vbeln '|'
lv_matnr '|'
lv_grid '|'
lv_color '|'
lv_remark '|'
lv_qty '|'
lv_uom '|'
lv_status '|'
lv_so
into lv_texts.
condense lv_texts.
move lv_texts to itab3-text.
append itab3.
endloop.
ENDFORM. " WRITE_ITAB3
*&---------------------------------------------------------------------*
*& Form WRITE_ITAB4
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM WRITE_ITAB4 .
data: lv_texts(1000).
data: lv_vbeln(18) type c,
lv_matnr(20) type c,
lv_grid(8) type c,
lv_remark(40) type c,
lv_size(8) type c,
lv_qty(16) type c,
lv_uom(5) type c,
lv_status(2) type c,
lv_so(18) type c.
check it_fg_mtm[] is not initial.
clear:lv_texts.
concatenate 'SO #' '|'
'Material Code' '|'
'Grid' '|'
* 'Color' '|'
'Conversion remark' '|'
'Size' '|'
'Garment Quantity' '|'
'UOM' '|'
'Status' '|'
'From SO# / To SO#'
into lv_texts.
move lv_texts to itab4-text.
APPEND itab4.
clear:lv_texts.
loop at it_fg_mtm.
lv_vbeln = it_fg_mtm-j_4ksca.
lv_matnr = it_fg_mtm-matnr.
lv_grid = it_fg_mtm-grid.
lv_remark = it_fg_mtm-remark.
lv_size = it_fg_mtm-size.
lv_qty = it_fg_mtm-menge.
lv_uom = it_fg_mtm-meins.
lv_status = it_fg_mtm-status.
lv_so = it_fg_mtm-j_4kumsc.
concatenate lv_vbeln '|'
lv_matnr '|'
lv_grid '|'
lv_remark '|'
lv_size '|'
lv_qty '|'
lv_uom '|'
lv_status '|'
lv_so
into lv_texts.
condense lv_texts.
move lv_texts to itab4-text.
append itab4.
endloop.
ENDFORM. " WRITE_ITAB4
*&---------------------------------------------------------------------*
*& Form BATCH_DL_FAB_IO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BATCH_DL_FAB_IO .
data: lv_strlen type i.
data: fflag type c.
check itab3[] is not initial.
*** U1
* open dataset gvfieldc for output in text mode encoding default.
open dataset gvfieldc for output in text mode encoding UTF-8 WITH BYTE-ORDER MARK
WITH SMART LINEFEED.
if sy-subrc = 0.
*//download data to file
loop at itab3.
transfer itab3 to gvfieldc.
endloop.
close dataset gvfieldc.
lv_strlen = strlen( gvfieldc ).
write:/ 'File saved to ', gvfieldc(lv_strlen).
else.
raise file_open_error.
endif.
ENDFORM. " BATCH_DL_FAB_IO
*&---------------------------------------------------------------------*
*& Form BATCH_DL_FG_IO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BATCH_DL_FG_IO .
data: lv_strlen type i.
data: fflag type c.
check itab4[] is not initial.
*** U1
* open dataset gvfieldd for output in text mode encoding default.
open dataset gvfieldd for output in text mode encoding UTF-8 WITH BYTE-ORDER MARK
WITH SMART LINEFEED.
if sy-subrc = 0.
*//download data to file
loop at itab4.
transfer itab4 to gvfieldd.
endloop.
close dataset gvfieldd.
lv_strlen = strlen( gvfieldd ).
write:/ 'File saved to ', gvfieldd(lv_strlen).
else.
raise file_open_error.
endif.
ENDFORM. " BATCH_DL_FG_IO
*&---------------------------------------------------------------------*
*& Form DOWN_FILE_FAB_IO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DOWN_FILE_FAB_IO .
data: gvfield1 like rlgrap-filename.
data: lv_file_name type string.
data: lv_strlen type i.
data: fflag type c.
check itab3[] is not initial.
lv_file_name = gvfieldc.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = lv_file_name
filetype = 'ASC'
codepage = '4110'
* replacement = '#'
* write_field_separator = 'X'
write_bom = 'X'
TABLES
data_tab = itab3.
* call function 'WS_DOWNLOAD'
* exporting
* filename = gvfieldc
* filetype = 'ASC'
* tables
* data_tab = itab3
* exceptions
* file_open_error = 1
* file_write_error = 2
* invalid_filesize = 3
* invalid_type = 4
* no_batch = 5
* unknown_error = 6
* invalid_table_width = 7
* gui_refuse_filetransfer = 8
* customer_error = 9
* others = 10.
if sy-subrc = 0.
lv_strlen = strlen( gvfieldc ).
write:/ 'File saved to ', gvfieldc(lv_strlen).
endif.
ENDFORM. " DOWN_FILE_FAB_IO
*&---------------------------------------------------------------------*
*& Form DOWN_FILE_FG_IO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DOWN_FILE_FG_IO .
data: gvfield1 like rlgrap-filename.
data: lv_file_name type string.
data: lv_strlen type i.
data: fflag type c.
lv_file_name = gvfieldd.
check itab4[] is not initial.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = lv_file_name
filetype = 'ASC'
codepage = '4110'
* replacement = '#'
* write_field_separator = 'X'
write_bom = 'X'
TABLES
data_tab = itab4.
* call function 'WS_DOWNLOAD'
* exporting
* filename = gvfieldd
* filetype = 'ASC'
* tables
* data_tab = itab4
* exceptions
* file_open_error = 1
* file_write_error = 2
* invalid_filesize = 3
* invalid_type = 4
* no_batch = 5
* unknown_error = 6
* invalid_table_width = 7
* gui_refuse_filetransfer = 8
* customer_error = 9
* others = 10.
if sy-subrc = 0.
lv_strlen = strlen( gvfieldd ).
write:/ 'File saved to ', gvfieldd(lv_strlen).
endif.
ENDFORM. " DOWN_FILE_FG_IO
*&---------------------------------------------------------------------*
*& Form GET_MAT_WITHOUT_PO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
*M3 add
FORM GET_MAT_WITHOUT_PO .
data: it_mbew like mbew occurs 0 with header line.
clear it_po.
delete ta_sku where mtart ne 'ZFAB'.
loop at ta_sku.
read table it_po with key j_4kscat = ta_sku-vbeln
matnr = ta_sku-idnrk
j_3asize = ta_sku-j_3asize.
if sy-subrc <> 0.
clear it_po.
it_po-j_4kscat = ta_sku-vbeln.
it_po-matnr = ta_sku-idnrk.
it_po-j_3asize = ta_sku-j_3asize.
clear it_mbew[].
select * into table it_mbew from mbew where matnr = ta_sku-idnrk
and bwtar = 'NORMAL'
and bklas = '3000'
and bwkey = ta_sku-werks.
read table it_mbew index 1.
if sy-subrc = 0.
append it_po.
endif.
endif.
endloop.
ENDFORM. " GET_MAT_WITHOUT_PO
*M3 end
* Program : ZRPP143 REL : 4.6c Author : Dainel Jiang *
* Created : 03-11-2011 APP : All Type : REPORT *
* Title : EIL MU Analysis Report *
* Reference : ZRPP143 *
*----------------------------------------------------------------------*
*------Update list-----------------------------------------------------*
* 03 Nov 2011 Daniel the first version
** M1 Daniel 2012.03.02 Add One Column of Currency
* M2 Daniel 2012.03.29 fix bug for complete date
* M3 Daniel 2012.05.07 display the material main information from
* Material Master for M to M material without PO.
* the latest update: 2012-05-11 16:30
*--------------------------------------------------------------------- *
REPORT ZRPP143.
*----------------------------------------------------------------------*
* Table structure *
*----------------------------------------------------------------------*
tables: vbak, vbap,vbrp,konv ,jest, jcds, t005t, ztfty, kna1, makt, tvm1t,
mbew,mara, mseg, ekko,ekpo,mchb.
data: begin of gt_so occurs 0,
vbeln like vbak-vbeln,
udate like jcds-udate,
end of gt_so.
data: begin of it_vbak occurs 0,
vbeln like vbak-vbeln,
vkgrp like vbak-vkgrp,
kunnr like vbak-kunnr,
zzco like vbak-zzco,
bname like vbak-bname, "style no
mvgr1 like vbap-mvgr1, "product division
bezei like tvm1t-bezei, "product type tvm2t-bezei
aedat like ekko-aedat, "Complete Date
zzfty like vbak-zzfty,
netwr like vbak-netwr,
zzcom like vbak-zzcom,
waers like vbak-waerk,
bukrs like vbak-bukrs_vf,
werks like vbap-werks,
vrkme like vbap-vrkme,
uom(3) type c,
matnr like vbap-matnr,
maktx like makt-maktx, "material description
name1 like kna1-name1, "customer name
landx like t005t-landx, "Country Name
zzftyd like t001w-name1, ""Description - Factory Name
kwmeng like vbap-kwmeng,
kbetr like konv-kbetr,
fkdat like vbrk-fkdat, "Billing date for billing index and printout
udate like jcds-udate, "SO Close Date
aprice like konv-kwert,
mteam like vbpa-kunnr, "Merchanising team
zzprogram like vbak-zzprogram, "Program name
zzseason like vbak-zzseason,
end of it_vbak.
data: begin of it_vbrp occurs 0,
vbeln like vbrp-vgbel,
j_4kscat like ekpo-j_4kscat,
fkdat like vbrk-fkdat,
invno like vbrk-vbeln,
fkart like vbrk-fkart,
sfakn like vbrk-sfakn,
posnr like vbrp-posnr,
end of it_vbrp.
**For BOM
data: begin of ta_stpo occurs 0,
stlnr like stpo-stlnr,
stlkn like stpo-stlkn,
stpoz like stpo-stpoz,
hindex(20) type c,
idnrk like stpo-idnrk,
maktx like makt-maktx,
menge like stpo-menge,
meins like stpo-meins,
bom type c,
* status(4) type c,
* lifnr like lfa1-lifnr,
ausch like stpo-ausch, "scrap %
bmeng like stko-bmeng, "base qty
hmat like mara-matnr,
mtart like mara-mtart,
sortf like stpo-sortf,
ERSKZ LIKE STPO-erskz,
twist type c,
* ref type c,
buom like mara-meins,
req like ZMMFGSKU-menge,
oreq like ZMMFGSKU-menge,
matnr like mast-matnr,
werks like vbap-werks,
vbeln like vbak-vbeln,
avgmng like stpo-menge, "average the cons from sku
end of ta_stpo.
data: ta_stpo2 like ta_stpo occurs 0 with header line.
data: it_vbep like vbep occurs 0 with header line.
data: it_abdsi like j_3abdsi occurs 0 with header line.
data: begin of it_abomd occurs 0,
stlnr like j_3abomd-stlnr,
stlkn like j_3abomd-stlkn,
j_3akordx like j_3abomd-j_3akordx,
j_3akordxl like j_3abomd-j_3akordxl,
menge like j_3abomd-menge,
end of it_abomd.
data: begin of it_mast occurs 0,
stlnr like mast-stlnr,
end of it_mast.
types: begin of tt_zmmfgsku.
types: stlnr like stpo-stlnr,
hindex(20) type c, "flag for mark column
idnrk like mara-matnr,
vbeln like vbap-vbeln.
include structure zmmfgsku.
types: sortseq type zsortseq,
oreq like zmmfgsku-menge,
mtart like mara-mtart,
werks like vbap-werks, "M3 add
end of tt_zmmfgsku.
DATA: ta_sku type tt_zmmfgsku occurs 0 with header line.
DATA: ta_zcpsku type tt_zmmfgsku occurs 0 with header line.
data: tp_zcpsku like ta_zcpsku occurs 0 with header line.
data: p_num1(20) type n.
**
data: wa_umrez like marm-umrez,
wa_umren like marm-umren,
tmp_um like marm-umrez.
data: wa_input type p,
wa_output type p.
data: wa_meins like mara-meins.
data: begin of it_matnr occurs 0,
werks like vbap-werks, " add on 2012.02.20
j_4kscat like ekpo-j_4kscat,
matnr like mara-matnr,
mtart like mara-mtart,
yield(30) type c,
width(30) type c, "Order fabric width
ftype(30) type c, "Fabric Type
ycout(30) type c,
vshag(30) type c,
hshag(30) type c,
fcont(30) type c, "Fibre Content
flag type c,
bklas type mbew-bklas,
end of it_matnr.
data i type i.
data lv_tabix type i.
data: begin of it_po occurs 0,
ebeln like ekko-ebeln,
ebelp like ekpo-ebelp,
etenr like eket-etenr,
matnr like ekpo-matnr,
j_3asize like ta_sku-j_3asize,
poqty like ekpo-menge,
pouom like ekpo-meins,
j_4kscat like eket-j_4kscat,
konnr like ekpo-konnr,
lifnr like ekko-lifnr,
name1 like lfa1-name1,
waers like ekko-waers,
netwr like ekpo-netwr,
bedat like ekko-bedat,
bukrs like ekko-bukrs,
adrnr like ekko-adrnr,
zzwash like ekko-zzwash,
autlf like ekko-autlf, "Complete Delivery
netwr_us like ekpo-netwr,
menge like ekpo-menge,
meins like ekpo-meins,
yield(30) type c,
width(30) type c,
ftype(30) type c,
*" add yarn count shrinkage v/h
ycout(30) type c,
vshag(30) type c,
hshag(30) type c,
fcont(30) type c,
wtext like zmm_wash-wtext,
zztest like ekpo-zztest, "M1
zzsample like ekpo-zzsample, "M1
end of it_po.
*data: begin of it_rpo occurs 0,
* j_4kscat like it_gr-j_4ksca,
* matnr like it_gr-matnr,
* menge like it_gr-menge,
* meins like it_gr-meins,
* end of it_rpo.
data: begin of it_po_mat occurs 0,
vbeln like vbak-vbeln,
matnr like ekpo-matnr,
j_3asize like ta_sku-j_3asize,
poqty like ekpo-menge,
pouom like ekpo-meins,
lifnr like ekko-lifnr,
name1 like lfa1-name1,
zzwash like ekko-zzwash,
wtext like zmm_wash-wtext,
left_qty like mchb-clabs,
maktx2 like makt-maktx,
j_3aentx8 type J_3AENTX8,
j_3aentx type J_3AENTX,
J_3ANOTE TYPE J_3ANOTE,
yield(30) type c,
width(30) type c,
ftype(30) type c,
*" add yarn count shrinkage v/h
ycout(30) type c,
vshag(30) type c,
hshag(30) type c,
fcont(30) type c,
end of it_po_mat.
data: it_gr like mseg occurs 0 with header line.
* Add Qty Received and Foc Qty Received Detail
data: begin of it_gr_detail occurs 0,
matnr like mseg-matnr,
j_4ksca like mseg-j_4ksca,
j_3asiz like mseg-j_3asiz,
lgort like mseg-lgort,
bwart like mseg-bwart,
gr_menge like mseg-menge,
foc_menge like mseg-menge,
sample_qty like mseg-menge,
lifnr like mseg-lifnr,
end of it_gr_detail.
data: *it_gr_detail like it_gr_detail occurs 0 with header line.
* YD & LB conversion factor
data: begin of it_conv occurs 0,
matnr like mara-matnr,
maktx like makt-maktx,
type(20) type c,
scale type i,
bweig type i, "weight(BW)
gwdth type i, "gross width
factor type p decimals 14,
end of it_conv.
data: begin of it_ship occurs 0,
vbeln like vbrp-vgbel,
* aubel like vbrp-aubel,
j_4kscat like ekpo-j_4kscat,
fkdat like vbrk-fkdat,
invno like vbrk-vbeln,
fkart like vbrk-fkart,
sfakn like vbrk-sfakn,
fkimg like vbrp-fkimg,
vrkme like vbrp-vrkme,
kidno like vbrk-kidno,
posnr like vbrp-posnr,
* 15/11/06 : for cancelled billing doc
end of it_ship.
data: begin of it_out_mf occurs 0,
vbeln like vbak-vbeln,
vkgrp like vbak-vkgrp, "sales group
kunnr like vbak-kunnr,
zzco like vbak-zzco, "Country of Origin / Production Line / Base
bname like vbak-bname, "style no
mvgr1 like vbap-mvgr1, "product division
bezei like tvm1t-bezei, "product type
aedat like ekko-aedat, "Complete Date
zzfty like vbak-zzfty, "Factory / Factory Group
netwr like vbak-netwr,
zzcom like vbak-zzcom,
waers like vbak-waerk,
bukrs like vbak-bukrs_vf,
werks like vbap-werks,
vrkme like vbap-vrkme,
uom(3) type c,
matnr like vbap-matnr,
maktx like makt-maktx, "material description
name1 like kna1-name1, "customer name
landx like t005t-landx, "Country Name
zzftyd like t001w-name1, ""Description - Factory Group
kwmeng like vbap-kwmeng,
kbetr like konv-kbetr,
fkdat like vbrk-fkdat, "Billing date for billing index and printout
udate like jcds-udate, "SO Close Date
aprice like konv-kwert,
mteam like vbpa-kunnr, "Merchanising team
zzprogram like vbak-zzprogram, "Program name
zzseason like vbak-zzseason, "season
"po info
j_3asize like ta_sku-j_3asize, "grid
color(12) type c , "color
color_remark(40) type c, "conversion remark
poqty like ekpo-menge, " Fabric Qty Purchased
pouom like ekpo-meins, "unit
lifnr like ekko-lifnr, "vendor code
name like lfa1-name1, "vendor name
maktx2 like makt-maktx, "material description
* zzwash like ekko-zzwash, "washing method
" gr info
gr_qty like mseg-menge,
foc_qty like mseg-menge,
sample_qty like mseg-menge,
" mm info
width(30) type c, "washing method
wtext(50) type c,
ycout(30) type c,
vshag(30) type c,
hshag(30) type c,
ftype(30) type c,
fcont(30) type c, "Fibre Content
ttlshipqty like vbrp-FKIMG,
left_qty like mchb-clabs,
waerk like vbak-waerk, "M1 add
end of it_out_mf.
data: begin of it_out_ms occurs 0,
matnr like mara-matnr,
posnr like vbep-posnr,
etenr like vbep-etenr,
kunnr like vbak-kunnr,
name1 like kna1-name1, "customer name
j_3asize like vbep-j_3asize,
* grid type CHAR20,
grid type j_3aentx8,
remark(40) type c,
size type J_3ASIZE,
ordqty like vbep-wmeng,
delqty like vbep-lmeng,
end of it_out_ms.
data: begin of itab1 occurs 0,
text(1000),
end of itab1.
data itab2 like itab1 occurs 0 with header line.
data itab3 like itab1 occurs 0 with header line.
data itab4 like itab1 occurs 0 with header line.
data: begin of it_fab_mtm occurs 0,
matnr like mseg-matnr,
j_4ksca like mseg-j_4ksca,
j_3asiz like mseg-j_3asiz,
bwart like mseg-bwart,
menge like mseg-menge,
meins like mseg-meins,
j_4kumsc like mseg-j_4kumsc,
shkzg like mseg-shkzg,
status type c,
j_3aentx8 type J_3AENTX8,
j_3aentx type J_3AENTX,
J_3ANOTE TYPE J_3ANOTE,
end of it_fab_mtm.
data: begin of it_fg_mtm occurs 0.
include structure it_fab_mtm.
data: grid type j_3aentx8,
remark(40) type c,
size type J_3ASIZE,
end of it_fg_mtm.
*----------------------------------------------------------------------*
* Parameter & Select-Options
*----------------------------------------------------------------------*
select-options: s_vbeln for vbak-vbeln. " obligatory.
select-options: s_zzfty for vbak-zzfty obligatory.
select-options: s_werks for vbrp-werks.
select-options: s_udate for jcds-udate obligatory. "so close date
*select-options: s_udate for vbak-erdat no-display.
*select-options: s_mdate for vbak-erdat no-display.
*select-options: mm_matnr for mara-matnr no-display.
selection-screen skip.
parameter: gvfield1 like rlgrap-filename.
selection-screen begin of block 2.
parameter: zfgd radiobutton group job default 'X'.
parameter: zbgd radiobutton group job.
selection-screen end of block 2.
data:gvfielda like rlgrap-filename.
data:gvfieldb like rlgrap-filename.
data:gvfieldc like rlgrap-filename.
data:gvfieldd like rlgrap-filename.
*----------------------------------------------------------------------*
* INITIALIZATION *
*----------------------------------------------------------------------*
initialization.
s_udate-sign = 'I'.
s_udate-option = 'EQ'.
s_udate-low = sy-datum - 1.
clear s_udate-high.
append s_udate. clear s_udate.
*----------------------------------------------------------------------*
* AT SELECTION-SCREEN *
*----------------------------------------------------------------------*
at selection-screen on value-request for gvfield1.
call function 'WS_FILENAME_GET'
exporting
def_path = 'C:\'
mask = ',*.*,*.*.'
mode = 'O'
importing
filename = gvfield1
exceptions
selection_cancel = 1
selection_error = 2
others = 3.
at selection-screen.
if gvfield1 is initial.
message i058(zpp01) with 'You must enter a download path!'.
stop.
endif.
*----------------------------------------------------------------------*
* Start of Processing *
*----------------------------------------------------------------------*
start-of-selection.
perform get_so.
perform get_so_detail.
perform get_bom_from_so.
perform get_po.
perform get_gr.
perform get_shipped.
perform join_data_mf.
perform get_garment_ship.
perform get_gr_mtm.
perform down_file.
end-of-selection.
*&---------------------------------------------------------------------*
*& Form GET_SO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_SO .
data lt_jcds like jcds occurs 0 with header line.
data l_objnr like jcds-objnr.
data l_vbeln like vbak-vbeln.
data wa_stat like jest-stat.
l_objnr(3) = 'VB%' .
select * into table lt_jcds from jcds
where objnr like l_objnr
and stat = 'E0004'
and udate in s_udate
and inact = space.
loop at lt_jcds.
clear l_vbeln.
l_vbeln = lt_jcds-objnr+2(10).
check l_vbeln in s_vbeln.
clear wa_stat.
select single stat into wa_stat from jest
where objnr = lt_jcds-objnr
and inact = space.
if wa_stat ne 'E0004'.
continue.
endif.
select single * from vbak
where vbeln eq l_vbeln
and zzfty in s_zzfty
and vkorg in s_werks.
if sy-subrc = 0.
gt_so-vbeln = l_vbeln.
gt_so-udate = lt_jcds-udate.
collect gt_so.
endif.
endloop.
if gt_so[] is initial.
message i058(zpp01) with 'No record!'.
stop.
endif.
ENDFORM. " GET_SO
*&---------------------------------------------------------------------*
*& Form GET_SO_DETAIL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_SO_DETAIL .
data lv_tabix type i.
check gt_so[] is not initial.
data: *vbrp like it_vbrp occurs 0 with header line.
data l_mvgr1 like vbap-mvgr1.
select distinct b~aubel as vbeln b~matnr as j_4kscat a~fkdat a~vbeln as invno a~fkart a~sfakn
into corresponding fields of table it_vbrp
from vbrk as a
inner join vbrp as b on a~vbeln = b~vbeln
inner join vbak as c on b~aubel = c~vbeln
for all entries in gt_so
where b~aubel eq gt_so-vbeln
and c~zzfty in s_zzfty
and a~fkart in ('F2', 'S1')
and b~werks in s_werks.
*vbrp[] = it_vbrp[].
loop at it_vbrp where fkart = 'F2'.
lv_tabix = sy-tabix.
read table *vbrp with key sfakn = it_vbrp-invno.
if sy-subrc = 0.
delete it_vbrp index lv_tabix.
endif.
endloop.
delete it_vbrp where fkart = 'S1'.
select vbeln vkgrp kunnr zzco zzfty netwr zzcom waerk as waers
bukrs_vf as bukrs
zzprogram zzseason zzcom bname
into corresponding fields of table it_vbak
from vbak
for all entries in gt_so
where vbeln = gt_so-vbeln.
*sort it_vbak by bukrs.
*loop at it_vbak.
* at new bukrs.
* AUTHORITY-CHECK OBJECT 'Z_CO_PLANT'
* ID 'ACTVT' FIELD '01'
* ID 'BUKRS' FIELD it_vbak-bukrs
* ID 'WERKS' DUMMY.
* if sy-subrc ne 0.
* message e001(zzco) with
* 'You don''t have the authorization for company code'(005) it_vbak-bukrs.
* exit.
* endif.
* endat.
*endloop.
sort gt_so by vbeln udate descending.
loop at it_vbak.
lv_tabix = sy-tabix.
read table gt_So with key vbeln = it_vbak-vbeln.
if sy-subrc = 0.
it_vbak-udate = gt_so-udate.
endif.
clear: l_mvgr1 .
select single matnr werks vrkme mvgr2
into (it_vbak-matnr, it_vbak-werks, it_vbak-vrkme, l_mvgr1)
from vbap
where vbeln = it_vbak-vbeln
and abgru = space.
if sy-subrc = 0.
select single maktx into it_vbak-maktx from makt "material description
where matnr = it_vbak-matnr.
* select single bezei into it_vbak-bezei "get product type
* from tvm2t
* where mvgr2 = l_mvgr1.
it_vbak-bezei = l_mvgr1. " add by daniel on 2012.02.20
endif.
perform get_last_FG_div_date.
perform get_last_invoice_date.
it_vbak-uom = 'PC'.
if it_vbak-zzcom > 0.
it_vbak-kwmeng = it_vbak-kwmeng * it_vbak-zzcom.
endif.
select single landx into it_vbak-landx from t005t "Country Name
where spras = sy-langu
and land1 = it_vbak-zzco.
select single description into it_vbak-zzftyd from ztfty "Description - Factory Group
where zzfty = it_vbak-zzfty.
select single name1 into it_vbak-name1 from kna1 "customer name
where kunnr = it_vbak-kunnr.
select sum( kwmeng ) into it_vbak-kwmeng from vbap "order qty
where vbeln = it_vbak-vbeln
and abgru = space.
clear it_vbak-aprice.
perform get_average_price.
* 18/04/06 : SET/PACK
if it_vbak-kwmeng ne 0.
it_vbak-kbetr = it_vbak-aprice / it_vbak-kwmeng.
else.
it_vbak-kbetr = '0'.
endif.
* 18/04/06 : get mechanising team
select single kunnr into it_vbak-mteam from
vbpa where vbeln = it_vbak-vbeln and
posnr = '000000' and
parvw = 'Z2'.
modify it_vbak index lv_tabix.
endloop.
ENDFORM. " GET_SO_DETAIL
*&---------------------------------------------------------------------*
*& Form GET_AVERAGE_PRICE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_AVERAGE_PRICE .
data : r_knumv like vbrk-knumv.
data : begin of t_bill occurs 0,
kwert like konv-kwert,
end of t_bill.
select single knumv into r_knumv from vbak
where vbeln = it_vbak-vbeln.
select * from vbap where vbeln = it_vbak-vbeln
and abgru = space.
select * from konv where knumv = r_knumv and
kschl in ('ZCKB', 'ZCKP') and
kinak = space and
kposn = vbap-posnr.
move-corresponding konv to t_bill.
collect t_bill.
endselect.
endselect.
read table t_bill index 1.
if sy-subrc = 0.
it_vbak-aprice = t_bill-kwert.
else.
it_vbak-aprice = '0'.
endif.
ENDFORM. " GET_AVERAGE_PRICE
*&---------------------------------------------------------------------*
*& Form GET_LAST_FG_DIV_DATE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_LAST_FG_DIV_DATE .
*M2 remark
* select single a~aedat into it_vbak-aedat
* from ekko as a inner join ekpo as b on a~ebeln = b~ebeln
* where b~j_4kscat = it_vbak-vbeln
* and b~loekz = space
* and a~autlf = 'X'
* and a~bsart in ('ZPF', 'ZPM').
*M2 end
*M2 add
*" get Ex-fty Date
select max( a~j_3aasdt ) into it_vbak-aedat from vbrp as a
inner join vbap as b
on a~aubel = b~vbeln and a~aupos = b~posnr
inner join vbrk as c
on a~vbeln = c~vbeln
where a~aubel = it_vbak-vbeln
and b~abgru eq space
and c~sfakn eq space.
*M2 end
ENDFORM. " GET_LAST_FG_DIV_DATE
*&---------------------------------------------------------------------*
*& Form GET_LAST_INVOICE_DATE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_LAST_INVOICE_DATE .
data: r_fkdat like vbrk-fkdat.
clear r_fkdat.
loop at it_vbrp where vbeln = it_vbak-vbeln.
if it_vbrp-fkdat > r_fkdat.
r_fkdat = it_vbrp-fkdat.
endif.
endloop.
if r_fkdat ne '00000000'.
it_vbak-fkdat = r_fkdat.
endif.
ENDFORM. " GET_LAST_INVOICE_DATE
*&---------------------------------------------------------------------*
*& Form GET_BOM_FROM_SO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_BOM_FROM_SO .
data: lv_downfile(1) type c.
clear: ta_stpo[], ta_sku[], it_matnr[].
loop at it_vbak.
clear ta_stpo2[].
p_num1 = 0.
perform get_bom using it_vbak-vbeln p_num1.
describe table ta_stpo2 lines i.
if i > 0.
perform get_component_requirement.
endif.
loop at ta_stpo2.
clear ta_stpo.
move ta_stpo2 to ta_stpo.
append ta_stpo.
endloop.
endloop.
sort ta_stpo by hindex stlnr stlkn.
delete ta_stpo where mtart ne 'ZFAB'.
delete it_matnr where mtart ne 'ZFAB'.
data: *matnr like it_matnr occurs 0 with header line.
data: it_mbew like mbew occurs 0 with header line.
* check fabric type
loop at it_matnr.
clear it_mbew[].
select * into table it_mbew from mbew where matnr = it_matnr-matnr
and bwtar = 'NORMAL'
and bklas = '3000'
and bwkey = it_matnr-werks. "add on 2012.02.20
read table it_mbew index 1.
if sy-subrc = 0.
move it_matnr to *matnr.
*matnr-bklas = it_mbew-bklas.
append *matnr.
endif.
endloop.
it_matnr[] = *matnr[].
clear it_conv[].
loop at it_matnr.
it_conv-matnr = it_matnr-matnr.
case it_matnr-bklas.
when '3000'.
it_conv-type = 'Main Fabric'.
endcase.
select single maktx into it_conv-maktx from makt
where matnr = it_conv-matnr.
it_conv-scale = '1'.
append it_conv.
endloop.
describe table it_conv lines i.
if i <= 0.
message i058(zpp01) with 'No record found '.
stop.
endif.
ENDFORM. " GET_BOM_FROM_SO
*&---------------------------------------------------------------------*
*& Form GET_BOM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_IT_VBAK_VBELN text
* -->P_P_NUM1 text
*----------------------------------------------------------------------*
FORM GET_BOM USING p_matnr p_num.
data: wa_stpo like ta_stpo.
data: wa_return like BAPIRET2 occurs 0 with header line.
data: t_num like p_num1.
data: wa_mtart like mara-mtart.
clear: wa_stpo. ", ta_bom.
select d~bmeng a~stlnr a~stlkn a~stpoz a~idnrk c~maktx a~menge
a~meins mtart sortf erskz ausch e~meins as buom b~werks " add werks by daniel
* RFPNT as status
into corresponding fields of wa_stpo
from stpo as a inner join mast as b on a~stlnr = b~stlnr
inner join makt as c on a~idnrk = c~matnr
inner join stko as d on d~stlnr = a~stlnr
inner join mara as e on e~matnr = a~idnrk
where b~matnr = p_matnr
and b~werks = it_vbak-werks
and d~stlty = 'M'.
move wa_stpo to ta_stpo2.
* if ta_stpo2-status = space.
* ta_stpo2-status = 'BFC'.
* endif.
ta_stpo2-hmat = p_matnr.
ta_stpo2-werks = it_vbak-werks.
ta_stpo2-vbeln = it_vbak-vbeln.
select single mtart into wa_mtart from mara where matnr = p_matnr.
if wa_mtart = 'ZYRN'.
ta_stpo2-twist = 'X'.
else.
clear ta_stpo2-twist.
endif.
refresh wa_return.
CALL FUNCTION 'BAPI_MAT_BOM_EXISTENCE_CHECK'
EXPORTING
MATERIAL = wa_stpo-idnrk
PLANT = it_vbak-werks
BOMUSAGE = '1'
TABLES
RETURN = wa_return.
p_num = p_num + 1.
ta_stpo2-hindex = p_num.
read table wa_return index 1.
if sy-subrc ne 0.
ta_stpo2-bom = 'X'.
t_num = p_num * 100.
append ta_stpo2.
perform get_bom using wa_stpo-idnrk t_num.
else.
append ta_stpo2.
endif.
clear wa_stpo.
endselect.
ENDFORM. " GET_BOM
*&---------------------------------------------------------------------*
*& Form GET_COMPONENT_REQUIREMENT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_COMPONENT_REQUIREMENT .
data: begin of it_j_3abomd occurs 0,
vbeln like vbap-vbeln,
j_3akordx like j_3abomd-j_3akordx,
j_3akordxl like j_3abomd-j_3akordxl,
menge like j_3abomd-menge,
end of it_j_3abomd.
data: wa_comqty like stpo-menge.
data: wa_hindex like ta_stpo-hindex,
cal_menge like ta_zcpsku-menge.
data: wa_char3(8) type c,
wa_len3 type i.
data: wa_col1 like it_j_3abomd-j_3akordxl.
data: tp_hindex like wa_hindex.
data: wa_matnr like mara-matnr.
data: lv_menge like stpo-menge.
data: no_sku type i.
concatenate it_vbak-vbeln '%' into wa_matnr.
clear: it_mast[], it_abomd[], it_vbep[], it_abdsi[].
* select stlnr into table it_mast from mast
* where matnr like wa_matnr.
loop at ta_stpo2.
it_mast-stlnr = ta_stpo2-stlnr.
collect it_mast.
endloop.
select stlnr stlkn j_3akordx j_3akordxl menge
into table it_abomd
from j_3abomd
for all entries in it_mast
where stlnr = it_mast-stlnr.
select * into table it_vbep from vbep
where vbeln = it_vbak-vbeln
and wmeng > 0
and J_3AABGRU = space.
select * into table it_abdsi from j_3abdsi
where j_4krcat = it_vbak-vbeln.
sort ta_stpo2 by hindex stlnr stlkn ERSKZ.
clear ta_zcpsku[].
loop at ta_stpo2 where vbeln = it_vbak-vbeln.
lv_tabix = sy-tabix.
tp_zcpsku[] = ta_zcpsku[].
clear wa_comqty.
refresh it_j_3abomd.
clear: lv_menge, no_sku.
loop at it_abomd where stlnr = ta_stpo2-stlnr
and stlkn = ta_stpo2-stlkn.
* if it_abomd-J_3AKORDX ne 'ZZZ'.
* add it_j_3abomd-menge to lv_menge.
* add 1 to no_sku.
* endif.
if ta_stpo2-twist = 'X'.
wa_col1 = it_abomd-j_3akordxl.
tp_hindex = ta_stpo2-hindex(18).
shift tp_hindex right deleting trailing space.
overlay tp_hindex with '00000000000000000000' only space.
read table ta_zcpsku with key hindex = tp_hindex
j_3asize = wa_col1.
if sy-subrc eq 0.
move-corresponding it_abomd to it_j_3abomd.
append it_j_3abomd.
endif.
else.
tp_hindex = ta_stpo2-hindex(18).
shift tp_hindex right deleting trailing space.
overlay tp_hindex with '00000000000000000000' only space.
read table it_vbep with key vbeln = it_vbak-vbeln
j_3asize = it_abomd-j_3akordxl.
if sy-subrc eq 0.
move-corresponding it_abomd to it_j_3abomd.
append it_j_3abomd.
endif.
endif.
endloop.
read table it_j_3abomd index 1.
if sy-subrc ne 0.
continue.
endif.
clear ta_zcpsku.
sort it_j_3abomd by j_3akordx.
clear: lv_menge, no_sku.
loop at it_j_3abomd.
add it_j_3abomd-menge to lv_menge.
add 1 to no_sku.
clear wa_hindex.
ta_zcpsku-idnrk = ta_stpo2-idnrk.
ta_zcpsku-hindex = ta_stpo2-hindex.
ta_zcpsku-stlnr = ta_stpo2-stlnr.
ta_zcpsku-vbeln = it_vbak-vbeln.
ta_zcpsku-j_3asize = it_j_3abomd-j_3akordx.
ta_zcpsku-mtart = ta_stpo2-mtart.
ta_zcpsku-werks = ta_stpo2-werks. "m3 add
if ta_stpo2-meins ne ta_stpo2-buom.
CALL FUNCTION 'MATERIAL_UNIT_CONVERSION'
EXPORTING
INPUT = wa_input
MATNR = ta_stpo2-idnrk
MEINH = ta_stpo2-meins
IMPORTING
OUTPUT = wa_output
UMREN = WA_UMREN
UMREZ = WA_UMREZ.
else.
wa_umren = 1.
wa_umrez = 1.
endif.
if ta_stpo2-hindex < 100.
loop at it_vbep where vbeln = it_vbak-vbeln
and j_3asize = it_j_3abomd-j_3akordxl.
cal_menge = it_j_3abomd-menge * it_vbep-wmeng
/ ta_stpo2-bmeng * ( 1 + ta_stpo2-ausch / 100 )
* wa_umrez / wa_umren.
ta_zcpsku-menge = ta_zcpsku-menge + cal_menge.
ta_zcpsku-oreq = it_j_3abomd-menge.
endloop.
else.
wa_len3 = strlen( it_j_3abomd-j_3akordxl ).
wa_char3 = it_j_3abomd-j_3akordxl.
loop at tp_zcpsku where hindex = tp_hindex
and j_3asize = it_j_3abomd-j_3akordxl.
cal_menge = it_j_3abomd-menge * tp_zcpsku-menge
/ ta_stpo2-bmeng * ( 1 + ta_stpo2-ausch / 100 )
* wa_umrez / wa_umren.
ta_zcpsku-menge = ta_zcpsku-menge + cal_menge.
ta_zcpsku-oreq = it_j_3abomd-menge.
endloop.
endif.
* at end of j_3akordx.
CALL FUNCTION 'Z_CONVERSION_VALUE'
EXPORTING
MATNR = ta_stpo2-idnrk
J_3ASIZE = ta_zcpsku-j_3ASIZE
IMPORTING
CONV_LENTRY = ta_zcpsku-lentry
CONV_GENTRY = ta_zcpsku-gentry
SORTSEQ = ta_zcpsku-sortseq.
* wa_comqty = wa_comqty + ta_zcpsku-menge.
append ta_zcpsku.
clear ta_zcpsku.
* endat.
endloop.
ta_stpo2-oreq = ta_stpo2-menge.
* ta_stpo2-req = wa_comqty.
if no_sku <> 0.
ta_stpo2-avgmng = lv_menge / no_sku.
endif.
modify ta_stpo2 index lv_tabix.
endloop.
loop at ta_zcpsku.
clear ta_sku.
move ta_zcpsku to ta_sku.
collect ta_sku.
clear it_matnr.
it_matnr-j_4kscat = it_vbak-vbeln.
it_matnr-matnr = ta_sku-idnrk.
it_matnr-mtart = ta_sku-mtart.
it_matnr-werks = it_vbak-werks. "add by daniel on 2012.02.20
collect it_matnr.
endloop.
ENDFORM. " GET_COMPONENT_REQUIREMENT
*&---------------------------------------------------------------------*
*& Form GET_PO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_PO .
data: wa_banfn like eban-banfn.
data: l_waers like ekko-waers value 'USD'.
clear it_po[].
* clear it_rpo[].
check not it_matnr[] is initial.
*"Get Material, Color and PO qty
select c~ebeln c~ebelp c~etenr b~matnr c~j_3asize c~menge
b~meins as meins
b~j_4kscat b~konnr a~lifnr d~name1 a~waers b~netwr a~bedat
a~bukrs a~adrnr a~zzwash "b~zztest b~zzsample
into table it_po
from ekko as a inner join ekpo as b on a~ebeln = b~ebeln
inner join eket as c on b~ebeln = c~ebeln and
b~ebelp = c~ebelp
inner join lfa1 as d on a~lifnr = d~lifnr
for all entries in it_matnr
where b~matnr = it_matnr-matnr
and b~j_4kscat = it_matnr-j_4kscat
and b~j_4kscat in s_vbeln
and b~loekz = space
and b~zzsample = space
and b~zztest = space
and a~bstyp = 'F'
and a~bsart in ('ZER', 'ZAR').
*M3 add
perform get_mat_without_po.
sort it_po by j_4kscat matnr j_3asize.
*M3 end
loop at it_po.
lv_tabix = sy-tabix.
perform get_material_attribute using it_po-matnr.
read table it_matnr with key matnr = it_po-matnr flag = 'X'.
if sy-subrc = 0.
it_po-yield = it_matnr-yield.
it_po-width = it_matnr-width.
* 18/04/06 : fabric type for CAL
if it_matnr-j_4kscat(1) = '5'.
*"Add yarn count shrinkage v/h
concatenate it_matnr-ycout it_matnr-ftype into it_matnr-ftype
separated by space.
it_po-ftype = it_matnr-ftype.
else.
select * from ekpo where ebeln = it_po-ebeln and
loekz = space and
zzfabtyp <> space
order by zzfabtyp descending.
it_po-ftype = ekpo-zzfabtyp.
endselect.
endif.
it_po-fcont = it_matnr-fcont.
*"Add yarn count shrinkage v/h
if it_matnr-j_4kscat(1) = '5' or it_matnr-j_4kscat(1) = '6'.
it_po-vshag = it_matnr-vshag.
it_po-hshag = it_matnr-hshag.
endif.
endif.
select single wtext into it_po-wtext from zmm_wash
where bukrs = it_po-bukrs
and zzwash = it_po-zzwash.
if sy-subrc ne 0.
it_po-wtext = it_po-zzwash.
endif.
modify it_po index lv_tabix.
endloop.
loop at it_po.
it_po_mat-vbeln = it_po-j_4kscat.
it_po_mat-matnr = it_po-matnr.
it_po_mat-j_3asize = it_po-j_3asize.
it_po_mat-poqty = it_po-poqty.
it_po_mat-pouom = it_po-pouom.
it_po_mat-lifnr = it_po-lifnr.
it_po_mat-name1 = it_po-name1.
it_po_mat-zzwash = it_po-zzwash.
it_po_mat-wtext = it_po-wtext.
collect it_po_mat.
endloop.
loop at it_po_mat.
lv_tabix = sy-tabix.
select sum( clabs ) into it_po_mat-left_qty from mchb
where matnr = it_po_mat-matnr
and J_4KSCAT = it_po_mat-vbeln
and j_3asize = it_po_mat-j_3asize
and lgort like '5%7'.
select single maktx into it_po_mat-maktx2 from makt "material description
where matnr = it_po_mat-matnr.
CALL FUNCTION 'Z_CONVERSION_VALUE'
EXPORTING
MATNR = it_po_mat-MATNR
J_3ASIZE = it_po_mat-j_3ASIZE
IMPORTING
J_3AENTX8 = it_po_mat-J_3AENTX8
J_3AENTX = it_po_mat-J_3AENTX
J_3ANOTE = it_po_mat-J_3ANOTE.
modify it_po_mat index lv_tabix.
endloop.
ENDFORM. " GET_PO
*&---------------------------------------------------------------------*
*& Form GET_GR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_GR .
clear: it_gr[],it_gr_detail[].
check not it_matnr[] is initial.
*"Get GR
select * into corresponding fields of table it_gr
from mseg as b inner join mkpf as a on a~mblnr = b~mblnr
for all entries in it_matnr
where b~matnr = it_matnr-matnr and
b~j_4ksca = it_matnr-j_4kscat and
b~j_4ksca in s_vbeln and
b~bwart in ('101', '102', '511', '512', '309', '310',
'122', '123', '922', '923', '933','934') .
loop at it_gr.
lv_tabix = sy-tabix.
if it_gr-bwart = '102' or it_gr-bwart = '512' or
it_gr-bwart = '122' or it_gr-bwart = '922' or it_gr-bwart = '934'.
it_gr-menge = 0 - it_gr-menge.
it_gr-erfmg = 0 - it_gr-erfmg.
endif.
if it_gr-bwart = '102'.
it_gr-bwart = '101'.
endif.
if it_gr-bwart = '122'.
it_gr-bwart = '123'.
endif.
if it_gr-bwart = '922'.
it_gr-bwart = '923'.
endif.
if it_gr-bwart = '512'.
it_gr-bwart = '511'.
endif.
if it_gr-bwart = '934'.
it_gr-bwart = '933'.
endif.
modify it_gr index lv_tabix.
endloop.
sort it_gr by j_4ksca matnr j_3asiz bwart lifnr.
loop at it_gr.
clear it_gr_detail.
it_gr_detail-matnr = it_gr-matnr.
it_gr_detail-j_4ksca = it_gr-j_4ksca.
it_gr_detail-j_3asiz = it_gr-j_3asiz.
if ( it_gr-bwart = '101' or it_gr-bwart = '123' or it_gr-bwart = '923' )
and it_gr-lgort <> '1062' and it_gr-lgort <> '1052' .
it_gr_detail-gr_menge = it_gr-menge.
endif.
if it_gr-bwart = '511' and it_gr-lgort <> '1062' and it_gr-lgort <> '1052'.
it_gr_detail-foc_menge = it_gr-menge.
endif.
if it_gr-lgort = '1052' " or it_gr-lgort = '1062' )
and it_gr-bwart = '933'.
it_gr_detail-sample_qty = it_gr-menge.
endif.
* it_Gr_detail-lifnr = it_Gr-lifnr.
collect it_gr_detail.
endloop.
ENDFORM. " GET_GR
*&---------------------------------------------------------------------*
*& Form GET_MATERIAL_ATTRIBUTE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_IT_PO_MAT_MATNR text
*----------------------------------------------------------------------*
FORM GET_MATERIAL_ATTRIBUTE USING P_MATNR.
data: lv_tabix like sy-tabix.
* CLASS and allocated Characteristic DATA
DATA: L_CLASS TYPE KLASSE_D,
L_CLASSTYPE TYPE KLASSENART VALUE '001'.
* API DATA
DATA: LT_CLA_CH_AT type standard table of CLA_CH_AT initial size 20,
LF_CLA_CH_AT like line of lt_CLA_CH_AT,
LT_CHA_VALDSC type standard table of cha_valdsc initial size 20.
data: t_atwrt(14) type c value 'it_matnr-'.
field-symbols: <f_atwrt>.
*"Get Material Classification
clear lv_tabix.
read table it_matnr with key matnr = p_matnr
flag = 'X'.
if sy-subrc ne 0.
read table it_matnr with key matnr = p_matnr.
if sy-subrc = 0.
lv_tabix = sy-tabix.
endif.
endif.
if lv_tabix ne 0.
l_class = it_matnr-mtart.
*"Get Attribute Name
CALL FUNCTION 'CARD_CLASS_READ_CHARACTS'
EXPORTING
class = L_CLASS
class_type = L_CLASSTYPE
tables
characteristics = LT_CLA_CH_AT
characteristics_values = LT_CHA_VALDSC
EXCEPTIONS
ERROR_MESSAGE = 1
OTHERS = 2.
if sy-subrc = 0.
loop at lt_cla_ch_at into lf_cla_ch_at.
t_atwrt+9(5) = ''.
case lf_cla_ch_at-charact+5(25).
when 'GROUP'.
t_atwrt+9(5) = 'FTYPE'.
assign (t_atwrt) to <f_atwrt>.
when 'FIBRE_CONTENT'.
t_atwrt+9(5) = 'FCONT'.
assign (t_atwrt) to <f_atwrt>.
when 'GROSS_WIDTH'.
t_atwrt+9(5) = 'WIDTH'.
assign (t_atwrt) to <f_atwrt>.
* M1
* when 'WEIGHT_AW'.
when 'WEIGTH_BW'.
t_atwrt+9(5) = 'YIELD'.
assign (t_atwrt) to <f_atwrt>.
*"Add yarn count shrinkage v/h
when 'YARN_COUNT'.
t_atwrt+9(5) = 'YCOUT'.
assign (t_atwrt) to <f_atwrt>.
when 'SHRINKAGE_VERTICAL'.
t_atwrt+9(5) = 'VSHAG'.
assign (t_atwrt) to <f_atwrt>.
when 'SHRINKAGE_HORIZONTAL'.
t_atwrt+9(5) = 'HSHAG'.
assign (t_atwrt) to <f_atwrt>.
*"End modification
endcase.
* get classification value
if t_atwrt+9(5) ne ''.
select single a~atwrt into <f_atwrt>
from ausp as a inner join cabn as b on a~atinn = b~atinn
where a~objek = p_matnr
and atnam = lf_cla_ch_at-charact.
endif.
endloop.
* set the BW & Width for LB to YD conversion
perform set_conv_factor using it_matnr-matnr
it_matnr-yield it_matnr-width.
endif.
it_matnr-flag = 'X'.
modify it_matnr index lv_tabix.
endif.
ENDFORM. " GET_MATERIAL_ATTRIBUTE
*&---------------------------------------------------------------------*
*& Form SET_CONV_FACTOR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_IT_MATNR_MATNR text
* -->P_IT_MATNR_YIELD text
* -->P_IT_MATNR_WIDTH text
*----------------------------------------------------------------------*
FORM SET_CONV_FACTOR USING i_matnr i_yield i_width.
data: wa_width type p,
wa_yield type p,
wa_div type p decimals 8,
p_yield(30) type c,
p_width(30) type c.
p_yield = i_yield.
p_width = i_width.
loop at it_conv where matnr = i_matnr.
* BM weight
shift p_yield up to 'GMS' circular.
if sy-subrc = 0.
condense p_yield.
wa_yield = p_yield+4(10).
else.
shift p_yield up to 'gms' circular.
if sy-subrc = 0.
condense p_yield.
wa_yield = p_yield+4(10).
else.
shift p_yield up to 'GSM' circular.
if sy-subrc = 0.
condense p_yield.
wa_yield = p_yield+4(10).
else.
shift p_yield up to 'gsm' circular.
if sy-subrc = 0.
condense p_yield.
wa_yield = p_yield+4(10).
else.
wa_yield = 0.
endif.
endif.
endif.
endif.
* Gross width
shift p_width up to '"' circular.
if sy-subrc = 0.
condense p_width.
wa_width = p_width+1(10).
else.
wa_width = 0.
endif.
wa_div = '0.00082' * wa_yield * wa_width * it_conv-scale.
if wa_div > 0.
it_conv-factor = wa_div / 16.
else.
it_conv-factor = 0.
endif.
it_conv-bweig = wa_yield.
it_conv-gwdth = wa_width.
modify it_conv.
endloop.
ENDFORM. " SET_CONV_FACTOR
*&---------------------------------------------------------------------*
*& Form GET_SHIPPED
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_SHIPPED .
data: *ship like it_ship occurs 0 with header line.
data: l_fkdat like vbrk-fkdat.
clear it_ship[].
check not it_vbak[] is initial.
loop at it_vbak.
select aubel aubel fkdat a~vbeln fkart sfakn fkimg vrkme kidno
into it_ship
from vbrk as a inner join vbrp as b on a~vbeln = b~vbeln
where b~aubel = it_vbak-vbeln
and a~fkart in ('F2', 'S1').
collect it_ship.
endselect.
endloop.
*ship[] = it_ship[].
loop at it_ship where fkart = 'F2'.
lv_tabix = sy-tabix.
read table *ship with key sfakn = it_ship-invno
fkart = 'S1'.
if sy-subrc = 0.
delete it_ship index lv_tabix.
else.
* : fix user invoice cancellation error.
read table *ship with key kidno = it_ship-invno
fkart = 'S1'.
if sy-subrc = 0.
delete it_ship index lv_tabix.
endif.
endif.
endloop.
delete it_ship where fkart = 'S1'.
ENDFORM. " GET_SHIPPED
*&---------------------------------------------------------------------*
*& Form JOIN_DATA_MF
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM JOIN_DATA_MF .
sort it_gr_detail by matnr j_4ksca j_3asiz.
sort it_po by matnr j_4kscat.
sort it_ship by vbeln.
loop at it_po_mat.
clear it_gr_detail.
read table it_gr_detail with key matnr = it_po_mat-matnr
j_4ksca = it_po_mat-vbeln
j_3asiz = it_po_mat-j_3asize.
* lifnr = it_po_mat-lifnr.
if sy-subrc = 0.
it_out_mf-gr_qty = it_gr_detail-gr_menge.
it_out_mf-foc_qty = it_gr_detail-foc_menge.
it_out_mf-sample_qty = it_gr_detail-sample_qty.
endif.
clear it_po.
read table it_po with key matnr = it_po_mat-matnr
j_4kscat = it_po_mat-vbeln.
if sy-subrc = 0.
it_out_mf-width = it_po-width.
it_out_mf-vshag = it_po-vshag.
it_out_mf-hshag = it_po-hshag.
it_out_mf-ftype = it_po-ftype.
it_out_mf-fcont = it_po-fcont. "Fibre Content
endif.
clear it_vbak.
read table it_vbak with key vbeln = it_po_mat-vbeln.
if sy-subrc = 0.
move-corresponding it_vbak to it_out_mf.
endif.
loop at it_ship where vbeln = it_po_mat-vbeln.
add it_ship-fkimg to it_out_mf-ttlshipqty.
endloop.
it_out_mf-vbeln = it_po_mat-vbeln.
it_out_mf-matnr = it_po_mat-matnr.
it_out_mf-j_3asize = it_po_mat-j_3asize.
it_out_mf-poqty = it_po_mat-poqty.
it_out_mf-pouom = it_po_mat-pouom.
select single meins into it_out_mf-uom from mara where matnr = it_out_mf-matnr.
it_out_mf-lifnr = it_po_mat-lifnr.
it_out_mf-name = it_po_mat-name1.
it_out_mf-wtext = it_po_mat-wtext.
it_out_mf-left_qty = it_po_mat-left_qty.
it_out_mf-maktx2 = it_po_mat-maktx2.
it_out_mf-j_3asize = it_po_mat-j_3aentx8.
it_out_mf-color = it_po_mat-j_3aentx.
it_out_mf-color_remark = it_po_mat-j_3anote.
*M1 add
select single waerk into it_out_mf-waerk from vbak where vbeln = it_out_mf-vbeln.
*M1 end
append it_out_mf.
clear it_out_mf.
endloop.
*M3 add
data tmp_mf like it_out_mf occurs 0 with header line.
data tmp_mf2 like it_out_mf occurs 0 with header line.
tmp_mf2[] = it_out_mf[].
loop at it_out_mf.
lv_tabix = sy-tabix.
if lv_tabix > 1.
read table tmp_mf with key matnr = it_out_mf-matnr
vbeln = it_out_mf-vbeln
j_3asize = it_out_mf-j_3asize.
if sy-subrc = 0.
delete it_out_mf index lv_Tabix.
else.
append it_out_mf to tmp_mf.
endif.
else.
append it_out_mf to tmp_mf.
endif.
endloop.
loop at it_out_mf.
lv_tabix = sy-tabix.
clear it_out_mf-poqty.
loop at tmp_mf2 where matnr = it_out_mf-matnr
and vbeln = it_out_mf-vbeln
and j_3asize = it_out_mf-j_3asize.
it_out_mf-poqty = it_out_mf-poqty + tmp_mf2-poqty.
endloop.
modify it_out_mf index lv_Tabix transporting poqty.
endloop.
*M3 end
ENDFORM. " JOIN_DATA_MF
*&---------------------------------------------------------------------*
*& Form DOWN_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DOWN_FILE .
perform write_itab1.
perform write_itab2.
perform write_itab3.
perform write_itab4.
if itab1[] is not initial.
perform create_fname using gvfield1 'M' sy-datum sy-uzeit
changing gvfielda .
endif.
if itab2[] is not initial.
perform create_fname using gvfield1 'S' sy-datum sy-uzeit
changing gvfieldb.
endif.
if itab3[] is not initial.
perform create_fname using gvfield1 'F' sy-datum sy-uzeit
changing gvfieldc.
endif.
if itab4[] is not initial.
perform create_fname using gvfield1 'G' sy-datum sy-uzeit
changing gvfieldd.
endif.
IF zbgd eq 'X'.
PERFORM batch_dl_mf.
PERFORM batch_dl_fg_ship.
PERFORM batch_dl_fab_io.
perform batch_dl_fg_io.
ELSE.
PERFORM DOWN_FILE_mf.
PERFORM DOWN_FILE_FG_ship.
PERFORM DOWN_FILE_FAB_io.
PERFORM DOWN_FILE_FG_io.
ENDIF.
ENDFORM. " DOWN_FILE
*&---------------------------------------------------------------------*
*& Form WRITE_ITAB1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM WRITE_ITAB1 .
data: lv_texts(1000).
data: l_qty type i.
data: wa_fabio like mseg-menge.
data: r_fkdat like vbrk-fkdat.
data: r_form like vbrk-fkdat,
r_to like vbrk-fkdat.
ranges: r_data for vbrk-fkdat.
data: lv_fkimg2 like vbrp-fkimg.
data: lv_fkimg3 like vbrp-fkimg.
data: lv_fkart like vbrk-fkart.
data: lv_mvgr1 like vbap-mvgr1.
data: lv_bezei2 like tvm1t-bezei.
data: lv_landx(15) type c,
lv_zzftyd(30) type c,
lv_maktx(40) type c,
lv_bname(35) type c,
lv_vbeln(10) type c,
lv_name1(35) type c,
lv_vkgrp(3) type c,
lv_zzprogram(12) type c,
lv_bezei(50) type c, "product type
lv_zzseason(4) type c,
lv_kwmeng(20) type c,
lv_kbetr(15) type c, "selling price
lv_aedat(10) type c, " complete date
lv_fkdat(10) type c, " invoice date
lv_matnr(18) type c,
lv_maktx2(40) type c, "Fabric Description
lv_lifnr(16) type c, "Vendor code
lv_name2(35) type c, "Fabric Vendor
lv_grid(8) type c,
lv_color(16) type c,
lv_remark(40) type c,
lv_poqty(16) type c,
lv_grqty(16) type c,
lv_focqty(16) type c,
lv_simpleqty(16) type c,
lv_buom(8) type c,
lv_width(30) type c,
lv_wtext(50) type c, "washing method
lv_hshag(30) type c,
lv_vshag(30) type c,
lv_left(16) type c,
lv_ftype(30) type c,
lv_fcont(30) type c,
lv_fkimg(16) type c,
lv_udate(10) type c.
data lv_waerk(5) type c. "m1 add
check it_out_mf[] is not initial.
clear:lv_texts.
concatenate 'Prod. Site ' '|'
'Factory' '|'
'Description' '|'
'Style' '|'
'SO Number' '|'
'Customer' '|'
'Sales Group' '|'
'Program Name' '|'
'Product Type' '|'
'Season' '|'
'Order Quantity' '|'
'Selling Price' '|'
'Complete Date' '|'
'Invoice Date' '|'
'Fabric Material code' '|'
'Fabric Description' '|'
'Vendor Code' '|'
'Fabric Vendor' '|'
'Grid' '|'
'Color' '|'
'Conversion Remark' '|'
'Fabric Qty Purchased' '|'
'Fabric Qty Received' '|'
'Fabric Free of Charge' '|'
'Sample Qty Purchased' '|'
'BUOM' '|'
'Order fabric width' '|'
'Washing Method' '|'
'Shrinkage Horizontal' '|'
'Shrinkage Vertical' '|'
'Leftover Fabric' '|'
'Fabric Type' '|'
'Fibre Content' '|'
'Shipped Qty' '|'
'SO Closed Date' '|'
'Currency' "M1 add
into lv_texts.
move lv_texts to itab1-text.
APPEND itab1.
clear:lv_texts.
loop at it_out_mf.
lv_landx = it_out_mf-landx.
lv_zzftyd = it_out_mf-zzftyd.
lv_maktx = it_out_mf-maktx.
lv_bname = it_out_mf-bname.
lv_vbeln = it_out_mf-vbeln.
lv_name1 = it_out_mf-name1.
lv_vkgrp = it_out_mf-vkgrp.
lv_zzprogram = it_out_mf-zzprogram.
lv_bezei = it_out_mf-bezei.
lv_zzseason = it_out_mf-zzseason.
l_qty = it_out_mf-kwmeng.
lv_kwmeng = l_qty.
lv_kbetr = it_out_mf-kbetr.
* lv_aedat = it_out_mf-aedat.
clear lv_aedat. "m2 add
if it_out_mf-aedat ne '00000000'.
concatenate it_out_mf-aedat+6(2) '.' it_out_mf-aedat+4(2) '.'
it_out_mf-aedat(4) into lv_aedat.
endif.
if it_out_mf-fkdat ne '00000000'.
concatenate it_out_mf-fkdat+6(2) '.' it_out_mf-fkdat+4(2) '.'
it_out_mf-fkdat(4) into lv_fkdat.
endif.
if it_out_mf-udate ne '00000000'.
concatenate it_out_mf-udate+6(2) '.' it_out_mf-udate+4(2) '.'
it_out_mf-udate(4) into lv_udate.
endif.
lv_matnr = it_out_mf-matnr.
lv_maktx2 = it_out_mf-maktx2.
lv_lifnr = it_out_mf-lifnr.
lv_name2 = it_out_mf-name.
lv_grid = it_out_mf-j_3asize.
lv_color = it_out_mf-color.
lv_remark = it_out_mf-color_remark.
lv_poqty = it_out_mf-poqty.
lv_grqty = it_out_mf-gr_qty.
lv_focqty = it_out_mf-foc_qty.
lv_simpleqty = it_out_mf-sample_qty.
lv_width = it_out_mf-width.
lv_wtext = it_out_mf-wtext.
lv_hshag = it_out_mf-hshag.
lv_vshag = it_out_mf-vshag.
lv_left = it_out_mf-left_qty.
lv_ftype = it_out_mf-ftype.
lv_fcont = it_out_mf-fcont.
lv_fkimg = it_out_mf-ttlshipqty.
lv_buom = it_out_mf-uom.
lv_waerk = it_out_mf-waerk. "M1 add
concatenate
lv_landx '|'
lv_zzftyd '|'
lv_maktx '|'
lv_bname '|'
lv_vbeln '|'
lv_name1 '|'
lv_vkgrp '|'
lv_zzprogram '|'
lv_bezei '|'
lv_zzseason '|'
lv_kwmeng '|'
lv_kbetr '|' "selling price
lv_aedat '|' " complete date
lv_fkdat '|' " invoice date
lv_matnr '|'
lv_maktx2 '|' "Fabric Description
lv_lifnr '|' "Vendor code
lv_name2 '|' "Fabric Vendor
lv_grid '|'
lv_color '|'
lv_remark '|'
lv_poqty '|'
lv_grqty '|'
lv_focqty '|'
lv_simpleqty '|'
lv_buom '|'
lv_width '|'
lv_wtext '|' "washing method
lv_hshag '|'
lv_vshag '|'
lv_left '|'
lv_ftype '|'
lv_fcont '|'
lv_fkimg '|'
lv_udate '|'
lv_waerk '|' "m1 add
into lv_texts.
condense lv_texts.
move lv_texts to itab1-text.
append itab1.
endloop.
ENDFORM. " WRITE_ITAB1
*&---------------------------------------------------------------------*
*& Form BATCH_DL_MF
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BATCH_DL_MF .
data: lv_strlen type i.
data: gvfield1 like rlgrap-filename.
* data: lv_message(300).
data: fflag type c.
check itab1[] is not initial.
open dataset gvfielda for output in text mode encoding UTF-8 WITH BYTE-ORDER MARK
WITH SMART LINEFEED."in text mode encoding default.
if sy-subrc = 0.
*//download data to file
loop at itab1.
transfer itab1 to gvfielda.
endloop.
close dataset gvfielda.
lv_strlen = strlen( gvfielda ).
write:/ 'File saved to ', gvfielda(lv_strlen).
else.
raise file_open_error.
endif.
ENDFORM. " BATCH_DL_MF
*&---------------------------------------------------------------------*
*& Form DOWN_FILE_MF
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DOWN_FILE_MF .
data: gvfield1 like rlgrap-filename.
data: lv_file_name type string.
data: lv_strlen type i.
data: fflag type c.
check itab1[] is not initial.
lv_file_name = gvfielda.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = lv_file_name
filetype = 'ASC'
codepage = '4110' "'4103'
* replacement = '#'
* write_field_separator = 'X'
write_bom = 'X'
TABLES
data_tab = itab1.
* call function 'WS_DOWNLOAD'
* exporting
* filename = gvfielda
* filetype = 'ASC'
* tables
* data_tab = itab1
* exceptions
* file_open_error = 1
* file_write_error = 2
* invalid_filesize = 3
* invalid_type = 4
* no_batch = 5
* unknown_error = 6
* invalid_table_width = 7
* gui_refuse_filetransfer = 8
* customer_error = 9
* others = 10.
if sy-subrc = 0.
lv_strlen = strlen( gvfielda ).
write:/ 'File saved to ', gvfielda(lv_strlen).
endif.
ENDFORM. " DOWN_FILE_MF
*&---------------------------------------------------------------------*
*& Form CREATE_FNAME
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GVFIELD1 text
* -->P_3970 text
* -->P_SY_DATUM text
* -->P_SY_UZEIT text
*----------------------------------------------------------------------*
FORM CREATE_FNAME USING p_fname p_type p_rundate p_time
changing p_name.
data: lv_fname(100) type c.
data: lv_i type i.
data: lv_c(1) type c.
write p_rundate to lv_fname yymmdd.
concatenate 'MU' p_type s_zzfty-low lv_fname p_time into lv_fname.
concatenate lv_fname '.txt' into lv_fname.
lv_i = strlen( p_fname ).
lv_i = lv_i - 1 .
if lv_i > 1.
lv_c = p_fname+lv_i(1).
endif.
if lv_c eq '\'.
concatenate p_fname lv_fname into p_name.
else.
concatenate p_fname '\' lv_fname into p_name.
endif.
ENDFORM. " CREATE_FNAME
*&---------------------------------------------------------------------*
*& Form WRITE_ITAB2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM WRITE_ITAB2 .
data: lv_texts(1000).
data: lv_vbeln(18) type c,
lv_kunnr(10) type c,
lv_name1(40) type c,
lv_grid(8) type c,
lv_remark(40) type c,
lv_size(8) type c,
lv_ordqty(16) type c,
lv_delqty(16) type c.
check it_out_ms[] is not initial.
clear:lv_texts.
concatenate 'SO' '|'
'Customer Code' '|'
'Customer' '|'
'Grid Value' '|'
'Conversion remark' '|'
'Size' '|'
'Order Qty' '|'
'Delivery Qty' '|'
into lv_texts.
move lv_texts to itab2-text.
APPEND itab2.
clear:lv_texts.
loop at it_out_ms.
lv_vbeln = it_out_ms-matnr.
lv_kunnr = it_out_ms-kunnr.
lv_name1 = it_out_ms-name1.
lv_grid = it_out_ms-grid.
lv_remark = it_out_ms-remark.
lv_size = it_out_ms-size.
lv_ordqty = it_out_ms-ordqty.
lv_delqty = it_out_ms-delqty.
concatenate lv_vbeln '|'
lv_kunnr '|'
lv_name1 '|'
lv_grid '|'
lv_remark '|'
lv_size '|'
lv_ordqty '|'
lv_delqty
into lv_texts.
condense lv_texts.
move lv_texts to itab2-text.
append itab2.
endloop.
ENDFORM. " WRITE_ITAB2
*&---------------------------------------------------------------------*
*& Form BATCH_DL_FG_SHIP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BATCH_DL_FG_SHIP .
data: lv_strlen type i.
data: fflag type c.
check itab2[] is not initial.
*** U1
* open dataset gvfieldb for output in text mode encoding default.
open dataset gvfieldb for output in text mode encoding UTF-8 WITH BYTE-ORDER MARK
WITH SMART LINEFEED.
if sy-subrc = 0.
*//download data to file
loop at itab2.
transfer itab2 to gvfieldb.
endloop.
close dataset gvfieldb.
lv_strlen = strlen( gvfieldb ).
write:/ 'File saved to ', gvfieldb(lv_strlen).
else.
raise file_open_error.
endif.
ENDFORM. " BATCH_DL_FG_SHIP
*&---------------------------------------------------------------------*
*& Form DOWN_FILE_FG_SHIP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DOWN_FILE_FG_SHIP .
data: gvfield1 like rlgrap-filename.
data: lv_file_name type string.
data: lv_strlen type i.
data: fflag type c.
check itab2[] is not initial.
lv_file_name = gvfieldb.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = lv_file_name
filetype = 'ASC'
codepage = '4110'
* replacement = '#'
* write_field_separator = 'X'
write_bom = 'X'
TABLES
data_tab = itab2.
* call function 'WS_DOWNLOAD'
* exporting
* filename = gvfieldb
* filetype = 'ASC'
* tables
* data_tab = itab2
* exceptions
* file_open_error = 1
* file_write_error = 2
* invalid_filesize = 3
* invalid_type = 4
* no_batch = 5
* unknown_error = 6
* invalid_table_width = 7
* gui_refuse_filetransfer = 8
* customer_error = 9
* others = 10.
if sy-subrc = 0.
lv_strlen = strlen( gvfieldb ).
write:/ 'File saved to ', gvfieldb(lv_strlen).
endif.
ENDFORM. " DOWN_FILE_FG_SHIP
*&---------------------------------------------------------------------*
*& Form GET_GARMENT_SHIP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_GARMENT_SHIP .
data: wa_lfimg like lips-lfimg.
data: wa_lfimg2 like lips-lfimg.
clear it_vbep[].
data tmp_ms like it_out_ms occurs 0 with header line.
select vbeln as matnr posnr ETENR j_3asize wmeng as ordqty "lmeng as delqty
into corresponding fields of table it_out_ms from vbep
for all entries in it_vbak
where vbeln = it_vbak-vbeln
and wmeng > 0
and J_3AABGRU = space.
loop at it_out_ms.
lv_tabix = sy-tabix.
clear: it_out_ms-posnr, it_out_ms-etenr.
move it_out_ms to tmp_ms.
collect tmp_ms.
modify it_out_ms index lv_tabix.
endloop.
it_out_ms[] = tmp_ms[].
clear: tmp_ms[].
loop at it_out_ms.
lv_tabix = sy-tabix.
clear it_vbak.
clear: it_out_ms-posnr, it_out_ms-etenr.
read table it_vbak with key vbeln = it_out_ms-matnr.
if sy-subrc = 0.
it_out_ms-kunnr = it_vbak-kunnr.
it_out_ms-name1 = it_vbak-name1.
endif.
CALL FUNCTION 'Z_CONVERSION_VALUE'
EXPORTING
MATNR = it_out_ms-matnr
J_3ASIZE = it_out_ms-j_3ASIZE
IMPORTING
* CONV_LENTRY = it_out_ms-grid
J_3AENTX8 = it_out_ms-grid
J_SIZE = it_out_ms-size
J_3ANOTE = it_out_ms-remark.
clear: wa_lfimg, wa_lfimg2.
select sum( lfimg ) into wa_lfimg from lips where vgbel = it_out_ms-matnr
and j_3asize = it_out_ms-j_3asize
and bwart = '601'.
select sum( lfimg ) into wa_lfimg2 from lips where vgbel = it_out_ms-matnr
and j_3asize = it_out_ms-j_3asize
and bwart = '602'.
it_out_ms-delqty = wa_lfimg - wa_lfimg2.
modify it_out_ms index lv_tabix.
endloop.
loop at it_out_ms.
move it_out_ms to tmp_ms.
collect tmp_ms.
endloop.
clear it_out_ms[].
it_out_ms[] = tmp_ms[].
ENDFORM. " GET_GARMENT_SHIP
*&---------------------------------------------------------------------*
*& Form GET_GR_MTM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_GR_MTM .
data: begin of it_gr_mtm occurs 0,
mblnr like mseg-mblnr,
mjahr like mseg-mjahr,
zeile like mseg-zeile,
matnr like mseg-matnr,
j_4ksca like mseg-j_4ksca,
j_3asiz like mseg-j_3asiz,
bwart like mseg-bwart,
menge like mseg-menge,
meins like mseg-meins,
j_4kumsc like mseg-j_4kumsc,
shkzg like mseg-shkzg,
status type c,
end of it_gr_mtm.
data tmp_mtm like it_fab_mtm occurs 0 with header line.
data lv_mtart like mara-mtart.
data: it_mbew like mbew occurs 0 with header line.
select mblnr mjahr zeile matnr j_4ksca j_3asiz menge meins j_4kumsc shkzg bwart
into corresponding fields of table it_gr_mtm
from mseg
for all entries in it_matnr
where j_4ksca = it_matnr-J_4KSCAT
and bwart in ('309', '310').
loop at it_gr_mtm.
lv_tabix = sy-tabix.
*modify on 2011.12.13
* if it_gr_mtm-shkzg = 'H'.
* it_gr_mtm-status = 'O'.
* it_gr_mtm-menge = 0 - it_gr_mtm-menge.
* else.
* it_gr_mtm-status = 'I'.
* endif.
if it_gr_mtm-shkzg = 'H'.
if it_gr_mtm-bwart = '309'.
it_gr_mtm-status = 'O'.
else.
it_gr_mtm-status = 'I'.
it_gr_mtm-menge = 0 - it_gr_mtm-menge.
endif.
else.
if it_gr_mtm-bwart = '309'.
it_gr_mtm-status = 'I'.
else.
it_gr_mtm-status = 'O'.
it_gr_mtm-menge = 0 - it_gr_mtm-menge.
endif.
endif.
*end
clear: it_gr_mtm-mblnr, it_gr_mtm-mjahr, it_gr_mtm-zeile,
it_gr_mtm-shkzg, it_gr_mtm-bwart.
modify it_Gr_mtm index lv_tabix.
endloop.
sort it_gr_mtm by j_4ksca matnr j_3asiz status.
loop at it_gr_mtm.
clear tmp_mtm.
move-corresponding it_gr_mtm to tmp_mtm.
collect tmp_mtm.
endloop.
delete tmp_mtm where menge = 0.
"remark on 2011.12.13
*loop at tmp_mtm.
* lv_tabix = sy-tabix.
* if tmp_mtm-menge > 0.
* tmp_mtm-status = 'I'.
* else.
* tmp_mtm-status = 'O'.
* tmp_mtm-menge = 0 - tmp_mtm-menge.
* endif.
* modify tmp_mtm index lv_tabix.
*endloop.
*end
loop at tmp_mtm.
clear: lv_mtart , it_mbew[].
lv_tabix = sy-tabix.
clear lv_mtart.
select single mtart into lv_mtart from mara
where matnr = tmp_mtm-matnr.
if lv_mtart eq 'ZFAB'.
clear it_mbew[].
select * into table it_mbew from mbew where matnr = tmp_mtm-matnr.
read table it_mbew with key bklas = '3000'.
if sy-subrc = 0.
move tmp_mtm to it_fab_mtm.
collect it_fab_mtm.
endif.
elseif lv_mtart eq 'ZCFG'.
move tmp_mtm to it_fg_mtm.
collect it_fg_mtm.
endif.
endloop.
sort it_fab_mtm by j_4ksca matnr j_3asiz status.
sort it_fg_mtm by j_4ksca matnr j_3asiz status.
loop at it_fab_mtm.
lv_tabix = sy-tabix.
CALL FUNCTION 'Z_CONVERSION_VALUE'
EXPORTING
MATNR = it_fab_mtm-matnr
J_3ASIZE = it_fab_mtm-j_3ASIZ
IMPORTING
J_3AENTX8 = it_fab_mtm-J_3AENTX8
J_3AENTX = it_fab_mtm-J_3AENTX
J_3ANOTE = it_fab_mtm-J_3ANOTE.
modify it_Fab_mtm index lv_tabix.
endloop.
loop at it_fg_mtm.
lv_tabix = sy-tabix.
CALL FUNCTION 'Z_CONVERSION_VALUE'
EXPORTING
MATNR = it_fg_mtm-matnr
J_3ASIZE = it_fg_mtm-j_3ASIZ
IMPORTING
* CONV_LENTRY = it_fg_mtm-grid
J_3AENTX8 = it_fg_mtm-grid
J_SIZE = it_fg_mtm-size
J_3ANOTE = it_fg_mtm-remark.
modify it_fg_mtm index lv_tabix.
endloop.
ENDFORM. " GET_GR_MTM
*&---------------------------------------------------------------------*
*& Form WRITE_ITAB3
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM WRITE_ITAB3 .
data: lv_texts(1000).
data: lv_vbeln(18) type c,
lv_matnr(20) type c,
lv_grid(8) type c,
lv_color(20) type c,
lv_remark(40) type c,
lv_qty(16) type c,
lv_uom(5) type c,
lv_status(2) type c,
lv_so(18) type c.
check it_fab_mtm[] is not initial.
clear:lv_texts.
concatenate 'SO #' '|'
'Material Code' '|'
'Grid' '|'
'Color' '|'
'Conversion remark' '|'
'Fabric Quantity' '|'
'UOM' '|'
'Status' '|'
'From SO# / To SO#'
into lv_texts.
move lv_texts to itab3-text.
APPEND itab3.
clear:lv_texts.
loop at it_fab_mtm.
lv_vbeln = it_fab_mtm-j_4ksca.
lv_matnr = it_fab_mtm-matnr.
lv_grid = it_fab_mtm-j_3aentx8.
lv_color = it_fab_mtm-j_3aentx.
lv_remark = it_fab_mtm-j_3anote.
lv_qty = it_fab_mtm-menge.
lv_uom = it_fab_mtm-meins.
lv_status = it_fab_mtm-status.
lv_so = it_fab_mtm-j_4kumsc.
concatenate lv_vbeln '|'
lv_matnr '|'
lv_grid '|'
lv_color '|'
lv_remark '|'
lv_qty '|'
lv_uom '|'
lv_status '|'
lv_so
into lv_texts.
condense lv_texts.
move lv_texts to itab3-text.
append itab3.
endloop.
ENDFORM. " WRITE_ITAB3
*&---------------------------------------------------------------------*
*& Form WRITE_ITAB4
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM WRITE_ITAB4 .
data: lv_texts(1000).
data: lv_vbeln(18) type c,
lv_matnr(20) type c,
lv_grid(8) type c,
lv_remark(40) type c,
lv_size(8) type c,
lv_qty(16) type c,
lv_uom(5) type c,
lv_status(2) type c,
lv_so(18) type c.
check it_fg_mtm[] is not initial.
clear:lv_texts.
concatenate 'SO #' '|'
'Material Code' '|'
'Grid' '|'
* 'Color' '|'
'Conversion remark' '|'
'Size' '|'
'Garment Quantity' '|'
'UOM' '|'
'Status' '|'
'From SO# / To SO#'
into lv_texts.
move lv_texts to itab4-text.
APPEND itab4.
clear:lv_texts.
loop at it_fg_mtm.
lv_vbeln = it_fg_mtm-j_4ksca.
lv_matnr = it_fg_mtm-matnr.
lv_grid = it_fg_mtm-grid.
lv_remark = it_fg_mtm-remark.
lv_size = it_fg_mtm-size.
lv_qty = it_fg_mtm-menge.
lv_uom = it_fg_mtm-meins.
lv_status = it_fg_mtm-status.
lv_so = it_fg_mtm-j_4kumsc.
concatenate lv_vbeln '|'
lv_matnr '|'
lv_grid '|'
lv_remark '|'
lv_size '|'
lv_qty '|'
lv_uom '|'
lv_status '|'
lv_so
into lv_texts.
condense lv_texts.
move lv_texts to itab4-text.
append itab4.
endloop.
ENDFORM. " WRITE_ITAB4
*&---------------------------------------------------------------------*
*& Form BATCH_DL_FAB_IO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BATCH_DL_FAB_IO .
data: lv_strlen type i.
data: fflag type c.
check itab3[] is not initial.
*** U1
* open dataset gvfieldc for output in text mode encoding default.
open dataset gvfieldc for output in text mode encoding UTF-8 WITH BYTE-ORDER MARK
WITH SMART LINEFEED.
if sy-subrc = 0.
*//download data to file
loop at itab3.
transfer itab3 to gvfieldc.
endloop.
close dataset gvfieldc.
lv_strlen = strlen( gvfieldc ).
write:/ 'File saved to ', gvfieldc(lv_strlen).
else.
raise file_open_error.
endif.
ENDFORM. " BATCH_DL_FAB_IO
*&---------------------------------------------------------------------*
*& Form BATCH_DL_FG_IO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BATCH_DL_FG_IO .
data: lv_strlen type i.
data: fflag type c.
check itab4[] is not initial.
*** U1
* open dataset gvfieldd for output in text mode encoding default.
open dataset gvfieldd for output in text mode encoding UTF-8 WITH BYTE-ORDER MARK
WITH SMART LINEFEED.
if sy-subrc = 0.
*//download data to file
loop at itab4.
transfer itab4 to gvfieldd.
endloop.
close dataset gvfieldd.
lv_strlen = strlen( gvfieldd ).
write:/ 'File saved to ', gvfieldd(lv_strlen).
else.
raise file_open_error.
endif.
ENDFORM. " BATCH_DL_FG_IO
*&---------------------------------------------------------------------*
*& Form DOWN_FILE_FAB_IO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DOWN_FILE_FAB_IO .
data: gvfield1 like rlgrap-filename.
data: lv_file_name type string.
data: lv_strlen type i.
data: fflag type c.
check itab3[] is not initial.
lv_file_name = gvfieldc.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = lv_file_name
filetype = 'ASC'
codepage = '4110'
* replacement = '#'
* write_field_separator = 'X'
write_bom = 'X'
TABLES
data_tab = itab3.
* call function 'WS_DOWNLOAD'
* exporting
* filename = gvfieldc
* filetype = 'ASC'
* tables
* data_tab = itab3
* exceptions
* file_open_error = 1
* file_write_error = 2
* invalid_filesize = 3
* invalid_type = 4
* no_batch = 5
* unknown_error = 6
* invalid_table_width = 7
* gui_refuse_filetransfer = 8
* customer_error = 9
* others = 10.
if sy-subrc = 0.
lv_strlen = strlen( gvfieldc ).
write:/ 'File saved to ', gvfieldc(lv_strlen).
endif.
ENDFORM. " DOWN_FILE_FAB_IO
*&---------------------------------------------------------------------*
*& Form DOWN_FILE_FG_IO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DOWN_FILE_FG_IO .
data: gvfield1 like rlgrap-filename.
data: lv_file_name type string.
data: lv_strlen type i.
data: fflag type c.
lv_file_name = gvfieldd.
check itab4[] is not initial.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = lv_file_name
filetype = 'ASC'
codepage = '4110'
* replacement = '#'
* write_field_separator = 'X'
write_bom = 'X'
TABLES
data_tab = itab4.
* call function 'WS_DOWNLOAD'
* exporting
* filename = gvfieldd
* filetype = 'ASC'
* tables
* data_tab = itab4
* exceptions
* file_open_error = 1
* file_write_error = 2
* invalid_filesize = 3
* invalid_type = 4
* no_batch = 5
* unknown_error = 6
* invalid_table_width = 7
* gui_refuse_filetransfer = 8
* customer_error = 9
* others = 10.
if sy-subrc = 0.
lv_strlen = strlen( gvfieldd ).
write:/ 'File saved to ', gvfieldd(lv_strlen).
endif.
ENDFORM. " DOWN_FILE_FG_IO
*&---------------------------------------------------------------------*
*& Form GET_MAT_WITHOUT_PO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
*M3 add
FORM GET_MAT_WITHOUT_PO .
data: it_mbew like mbew occurs 0 with header line.
clear it_po.
delete ta_sku where mtart ne 'ZFAB'.
loop at ta_sku.
read table it_po with key j_4kscat = ta_sku-vbeln
matnr = ta_sku-idnrk
j_3asize = ta_sku-j_3asize.
if sy-subrc <> 0.
clear it_po.
it_po-j_4kscat = ta_sku-vbeln.
it_po-matnr = ta_sku-idnrk.
it_po-j_3asize = ta_sku-j_3asize.
clear it_mbew[].
select * into table it_mbew from mbew where matnr = ta_sku-idnrk
and bwtar = 'NORMAL'
and bklas = '3000'
and bwkey = ta_sku-werks.
read table it_mbew index 1.
if sy-subrc = 0.
append it_po.
endif.
endif.
endloop.
ENDFORM. " GET_MAT_WITHOUT_PO
*M3 end