网上找到的,明天试试
REPORTZTY_MM_0018MESSAGE-IDzwwerrors.
*程序名称:包材分配表(ZTY_MM_0018)
*功能描述:自动分配包装材料库存
*程序建立日期:2004-09-14
*最后修改日期日期
performprint-header.
tables:makt, "物料管理
mkol, "供应商的特殊库存
mard, "物料的仓储位置数据
mara,
ekpo, "采购订单行项目
ekko, "采购订单表头
t023t, "物料组描述
eket, "计划协议计划行
equk, "配额文件:标题
equp, "配额文件:项目
resb, "预定/相关需求
jest, "对象状态
aufk, "订单主数据
afpo, "订单项
lfa1. "供应商主数据
data:beginofitemoccurs0,
matkllikeekpo-matkl, "物料组
WGBEZliket023t-WGBEZ, "物料组描述
matnrlikemakt-matnr, "物料编码
maktxlikemakt-maktx, "物料描述
fullname(50)typec, "供应商组合
wponumlikeekpo-menge, "供应商未清订单
wmengelikeekpo-menge, "供应商寄售库存
SLABSlikemkol-SLABS, "包材库存
labstlikemard-labst, "包料在线库存
lifnrlikelfa1-lifnr, "供应商编码
groeslikemara-groes, "大小/量纲
wqyhlikeekpo-menge, "未清要货计划
fpjhlikeekpo-menge, "分配计划
endofitem.
data:struclikeitem.
data:itemclikeitemoccurs0withheaderline.
data:beginoftekpooccurs0,
ebelnlikeekpo-ebeln, "采购订单号
ebelplikeekpo-ebelp, "行项目号
matnrlikeekpo-matnr, "物料编码
mengelikeekpo-menge, "订单数量
endoftekpo.
data:beginoftekkooccurs0,
ebelnlikeekko-ebeln, "采购订单号
lifnrlikeekko-lifnr, "供应商编号
endoftekko.
dataflagtypeivalue0.
data:beginofteketoccurs0,
ebelnlikeeket-ebeln, "采购订单号
ebelplikeeket-ebelp, "行项目号
wemnglikeeket-wemng, "数量
endofteket.
data:beginoftwpooccurs0,
ebelnlikeekpo-ebeln, "采购订单号
ebelplikeekpo-ebelp, "行项目号
matnrlikeekpo-matnr, "物料编码
mengelikeekpo-menge, "订单数量
lifnrlikeekko-lifnr, "供应商
endoftwpo.
data:beginoftwpo2occurs0,
matnrlikeekpo-matnr, "物料编码
mengelikeekpo-menge, "未清数量
lifnrlikeekko-lifnr, "供应商编码
endoftwpo2.
data:beginoftitempoccurs0,
matnrlikeekpo-matnr, "物料编码
lifnrlikeekko-lifnr, "供应商编码
wponumlikeekpo-menge, "供应商未清订单
wmengelikeekpo-menge, "供应商寄售库存
slabslikemkol-slabs, "包材库存
labstlikemard-labst, "包材在线库存
wqyhlikeekpo-menge, "未清要货计划
fpjhlikeekpo-menge, "分配计划
endoftitemp.
constantsmatnrlow(18)typecvalue'000000000002300000'.
constantsmatnrhigh(18)typecvalue'000000000002399999'.
datayearlikesy-datum.
datacyear(4)typec.
data:beginoftmaraoccurs0,
matnrlikemara-matnr, "物料编码
matkllikemara-matkl, "物料组
groeslikemara-groes, "大小/量纲
endoftmara.
SELECTION-SCREEN:BEGINOFBLOCKFRAME01
WITHFRAMETITLEText-001.
select-optionss_lifnrforlfa1-lifnr.
select-options:s_matnrformakt-matnr.
select-options:s_matklfort023t-matkl.
parametersp_werkslikevbap-werksobligatorydefault'8000'.
select-options:s_SPARTformara-spart.
SELECTION-SCREEN:ENDOFBLOCKFRAME01.
SELECTION-SCREEN:BEGINOFBLOCKFRAME02
WITHFRAMETITLETEXT-002.
SELECTION-SCREENCOMMENT/5(68)TEXT-003.
SELECTION-SCREEN:ENDOFBLOCKFRAME02.
SELECTION-SCREEN:BEGINOFBLOCKFRAME03
WITHFRAMETITLETEXT-004.
SELECTION-SCREENCOMMENT/5(68)TEXT-005.
SELECTION-SCREEN:ENDOFBLOCKFRAME03.
start-of-selection.
year=sy-datum.
cyear=year+0(4).
*获取符合条件的记录
select*intocorrespondingfieldsoftabletmarafrommara
wheremtart='ZVER'andmatklins_matkl
andmatnrins_matnrandLVORM<>'X'andspartins_spart.
select*intocorrespondingfieldsoftabletekpofromekpo
wherematnrins_matnrandmatklins_matkl
andloekz<>'L'andmatnrbetweenmatnrlowandmatnrhigh
andwerks=p_werks.
sorttekpobyebelnebelp.
select*intocorrespondingfieldsoftabletekkofromekko
whereloekz<>'L'andlifnrins_lifnr.
sorttekkobyebeln.
ifnots_lifnrisinitial.
flag=0.
loopattekpo.
loopattekkowhereebeln=tekpo-ebeln.
flag=1.
exit.
endloop.
ifflag=0.
deletetekpo.
else.
flag=0.
endif.
endloop.
endif.
*减去已清PO
loopattekpo.
select*appendingcorrespondingfieldsoftableteketfromeket
whereebeln=tekpo-ebelnandebelp=tekpo-ebelp.
endloop.
sortteketbyebelnebelp.
loopattekpo.
loopatteketwhereebeln=tekpo-ebelnandebelp=tekpo-ebelp.
tekpo-menge=tekpo-menge-teket-wemng.
modifytekpo.
endloop.
endloop.
data:beginoftlifoccurs0,
lifnrlikelfa1-lifnr, "供应商编号
endoftlif.
loopattekpo.
twpo-ebeln=tekpo-ebeln.
twpo-ebelp=tekpo-ebelp.
twpo-matnr=tekpo-matnr.
twpo-menge=tekpo-menge.
loopattekkowhereebeln=tekpo-ebeln.
twpo-lifnr=tekko-lifnr.
exit.
endloop.
appendtwpo.
endloop.
*按物料,供应商编码合并记录
sorttwpobymatnrlifnr.
readtabletwpoindex1.
twpo2-matnr=twpo-matnr.
twpo2-menge=0.
twpo2-lifnr=twpo-lifnr.
loopattwpo.
iftwpo-matnr=twpo2-matnrandtwpo-lifnr=twpo2-lifnr.
twpo2-menge=twpo2-menge+twpo-menge.
else.
appendtwpo2.
twpo2-matnr=twpo-matnr.
twpo2-menge=twpo-menge.
twpo2-lifnr=twpo-lifnr.
endif.
endloop.
appendtwpo2.
sorttekkobylifnr.
readtabletekkoindex1.
tlif-lifnr =tekko-lifnr.
loopattekko.
iftlif-lifnr<>tekko-lifnr.
appendtlif.
tlif-lifnr=tekko-lifnr.
endif.
endloop.
appendtlif.
sorttlifbylifnr.
*供应商寄售库存
data:beginoftmkoloccurs0,
matnrlikemkol-matnr,
lifnrlikemkol-lifnr,
slabslikemkol-slabs,
endoftmkol.
data:tmkol1liketmkoloccurs0withheaderline.
loopattlif.
select*appendingcorrespondingfieldsoftabletmkolfrommkol
wherelifnr=tlif-lifnr
andlvorm<>'X'andwerks=p_werks.
endloop.
loopattmkol.
tmkol1-matnr=tmkol-matnr.
tmkol1-lifnr=tmkol-lifnr.
tmkol1-slabs=tmkol-slabs.
collecttmkol1.
endloop.
loopattwpo2.
titemp-matnr=twpo2-matnr.
titemp-lifnr=twpo2-lifnr.
titemp-wponum=twpo2-menge.
appendtitemp.
endloop.
flag=0.
loopattmkol1.
loopattitempwherematnr=tmkol1-matnrandlifnr=tmkol1-lifnr.
titemp-wmenge=tmkol1-slabs.
modifytitemp.
flag=1.
endloop.
ifflag=1.
deletetmkol1.
flag=0.
endif.
endloop.
ifnottmkol1[]isinitial.
loopattmkol1.
titemp-matnr=tmkol1-matnr.
titemp-lifnr=tmkol1-lifnr.
titemp-wmenge=tmkol1-slabs.
appendtitemp.
endloop.
endif.
data:beginoftmardoccurs0,
matnrlikemard-matnr, "物料编码
labstlikemard-labst, "非限制库存
endoftmard.
data:beginofmainmardoccurs0,
matnrlikemard-matnr,
bckclikemard-labst,
zxkclikemard-labst,
endofmainmard.
data:finmardlikemainmardoccurs0withheaderline.
data:onlinemardliketmardoccurs0withheaderline.
select*intocorrespondingfieldsoftabletmardfrommard
wherematnrbetweenmatnrlowandmatnrhigh
and(lgort='0040'orlgort='6040')
andlabst<>0andwerks=p_werks.
select*intocorrespondingfieldsoftableonlinemardfrommard
wherematnrbetweenmatnrlowandmatnrhigh
and(lgort='0041'orlgort='6041')
andlabst<>0andwerks=p_werks.
loopattmard.
mainmard-matnr=tmard-matnr.
mainmard-bckc=tmard-labst.
mainmard-zxkc=0.
appendmainmard.
endloop.
loopatonlinemard.
mainmard-matnr=onlinemard-matnr.
mainmard-bckc=0.
mainmard-zxkc=onlinemard-labst.
appendmainmard.
endloop.
loopatmainmard.
finmard-matnr=mainmard-matnr.
finmard-bckc=mainmard-bckc.
finmard-zxkc=mainmard-zxkc.
collectfinmard.
endloop.
ifnotfinmard[]isinitial.
flag=0.
loopatfinmard.
loopattitempwherematnr=titemp-matnr.
titemp-slabs=finmard-bckc.
titemp-labst=finmard-zxkc.
modifytitemp.
flag=1.
endloop.
ifflag=1.
deletefinmard.
flag=0.
endif.
endloop.
endif.
ifnotfinmard[]isinitial.
loopatfinmard.
titemp-matnr=finmard-matnr.
titemp-slabs=finmard-bckc.
titemp-labst=finmard-zxkc.
appendtitemp.
endloop.
endif.
*未清要货计划
data:beginoftekesoccurs0,
ebelnlikeekes-ebeln,
ebelplikeekes-ebelp,
mengelikeekes-menge,
dabmglikeekes-dabmg,
endoftekes.
data:beginoftwqsloccurs0,
matnrlikeekpo-matnr,
lifnrlikeekko-lifnr,
wqslikeekes-menge,
endoftwqsl.
select*intocorrespondingfieldsoftabletekesfromekes
whereeindt=sy-datum.
loopattekes.
selectsinglematnrfromekpointotwqsl-matnrwhere
ebeln=tekes-ebelnandebelp=tekes-ebelp.
selectsinglelifnrfromekkointotwqsl-lifnrwhere
ebeln=tekes-ebeln.
twqsl-wqs=tekes-menge-tekes-dabmg.
collecttwqsl.
endloop.
flag=0.
loopattwqsl.
loopattitempwherematnr=twqsl-matnrandlifnr=twqsl-lifnr.
titemp-wqyh=twqsl-wqs.
modifytitemp.
flag=1.
endloop.
ifflag=1.
deletetwqsl.
flag=0.
endif.
endloop.
ifnottwqsl[]isinitial.
titemp-matnr=twqsl-matnr.
titemp-lifnr=twqsl-lifnr.
titemp-wqyh=twqsl-wqs.
appendtitemp.
endif.
*包材分配计划
data:beginoftresboccurs0,
matnrlikeresb-matnr,
bdmnglikeresb-bdmng,
aufnrlikeresb-aufnr,
endoftresb.
select*intocorrespondingfieldsoftabletresbfromresb
wherekzear<>'X'andxloek<>'X'andbdart='AR'
andmatnrbetweenmatnrlowandmatnrhigh
andbdter=sy-datum.
* tj02t表,汉字描述
data:beginoftaufkoccurs0,
aufnrlikeaufk-aufnr,
objnrlikeaufk-objnr,
statlikejest-stat,
endoftaufk.
loopattresb.
selectsingleaufnrobjnrfromaufkinto(taufk-aufnr,taufk-objnr)
whereaufnr=tresb-aufnr.
selectsinglestatfromjestintotaufk-stat
whereobjnr=taufk-objnrandinact<>'X'.
appendtaufk.
endloop.
loopattaufk.
iftaufk-stat='I0009'.
deletetaufk.
endif.
endloop.
flag=0.
loopattresb.
loopattaufkwhereaufnr=tresb-aufnr.
flag=1.
exit.
endloop.
ifflag=0.
deletetresb.
else.
flag=0.
endif.
endloop.
data:beginoftequkoccurs0,
matnrlikeequk-matnr,
qunumlikeequk-qunum,
endoftequk.
select*intocorrespondingfieldsoftabletequkfromequk
wherematnrbetweenmatnrlowandmatnrhigh
andvdatu<=sy-datumandbdatu>=sy-datum.
data:beginoftequpoccurs0,
qunumlikeequp-qunum,
lifnrlikeequp-lifnr,
quotelikeequp-quote,
endoftequp.
loopattequk.
select*appendingcorrespondingfieldsoftabletequpfromequp
wherequnum=tequk-qunum.
endloop.
data:beginoftpeoccurs0,
matnrlikeequk-matnr,
lifnrlikeequp-lifnr,
quotelikeequp-quote,
endoftpe.
loopattequp.
tpe-lifnr=tequp-lifnr.
tpe-quote=tequp-quote.
loopattequkwherequnum=tequp-qunum.
tpe-matnr=tequk-matnr.
exit.
endloop.
appendtpe.
endloop.
data:beginoftfpoccurs0,
matnrlikemakt-matnr,
lifnrlikeekko-lifnr,
mengelikeresb-bdmng,
endoftfp.
loopattpe.
tfp-matnr=tpe-matnr.
tfp-lifnr=tpe-lifnr.
loopattresbwherematnr=tpe-matnr.
tfp-menge=tresb-bdmng*tpe-quote/100.
endloop.
appendtfp.
endloop.
loopattitemp.
loopattfpwherematnr=titemp-matnrandlifnr=titemp-lifnr.
titemp-fpjh=tfp-menge.
modifytitemp.
exit.
endloop.
endloop.
flag=0.
loopattitemp.
loopattmarawherematnr=titemp-matnr.
flag=1.
exit.
endloop.
ifflag=0.
deletetitemp.
else.
flag=0.
endif.
endloop.
data:name111likelfa1-name1.
loopattitemp.
item-matnr=titemp-matnr.
selectsinglemaktxfrommaktintoitem-maktx
wherematnr=titemp-matnrandspras='1'.
loopattmarawherematnr=titemp-matnr.
item-matkl=tmara-matkl.
item-groes=tmara-groes.
exit.
endloop.
selectsingleWGBEZfromt023tintoitem-wgbez
whereSPRAS='1'andmatkl=item-matkl.
item-lifnr=titemp-lifnr.
selectsinglename1fromlfa1intoname111
wherelifnr=item-lifnr.
SHIFTitem-lifnrLEFTDELETINGLEADING'0'.
concatenatename111'('item-lifnr')'intoitem-fullname.
item-wponum=titemp-wponum.
item-wmenge=titemp-wmenge.
item-slabs=titemp-slabs.
item-labst=titemp-labst.
item-wqyh=titemp-wqyh.
item-fpjh=titemp-fpjh.
appenditem.
endloop.
ifitem[]isinitial.
messageE001.
endif.
sortitembymatnrlifnr.
readtableitemindex1.
struc-matkl=item-matkl.
struc-wgbez=item-wgbez.
struc-matnr=item-matnr.
struc-maktx=item-maktx.
struc-fullname=item-fullname.
struc-lifnr=item-lifnr.
struc-wponum=0.
struc-wmenge=0.
struc-slabs=0.
struc-labst=0.
struc-lifnr=item-lifnr.
struc-groes=item-groes.
struc-wqyh=0.
struc-fpjh=0.
loopatitem.
ifstruc-matnr=item-matnr.
itemc-matkl=item-matkl.
itemc-wgbez=item-wgbez.
itemc-matnr=item-matnr.
itemc-maktx=item-maktx.
itemc-fullname=item-fullname.
itemc-lifnr=item-lifnr.
itemc-wponum=item-wponum.
itemc-wmenge=item-wmenge.
itemc-slabs=item-slabs.
itemc-labst=item-labst.
itemc-lifnr=item-lifnr.
itemc-groes=item-groes.
itemc-wqyh=item-wqyh.
itemc-fpjh=item-fpjh.
appenditemc.
struc-matkl=item-matkl.
struc-wgbez='小计'.
struc-matnr=item-matnr.
struc-maktx=item-maktx.
struc-wponum=struc-wponum+item-wponum.
struc-wmenge=struc-wmenge+item-wmenge.
struc-slabs=struc-slabs+item-slabs.
struc-labst=struc-labst+item-labst.
struc-groes=item-groes.
struc-wqyh=struc-wqyh+item-wqyh.
struc-fpjh=struc-fpjh+item-fpjh.
else.
appendstructoitemc.
itemc-matkl=item-matkl.
itemc-wgbez=item-wgbez.
itemc-matnr=item-matnr.
itemc-maktx=item-maktx.
itemc-fullname=item-fullname.
itemc-lifnr=item-lifnr.
itemc-wponum=item-wponum.
itemc-wmenge=item-wmenge.
itemc-slabs=item-slabs.
itemc-labst=item-labst.
itemc-lifnr=item-lifnr.
itemc-groes=item-groes.
itemc-wqyh=item-wqyh.
itemc-fpjh=item-fpjh.
appenditemc.
struc-matkl=item-matkl.
struc-wgbez=item-wgbez.
struc-matnr=item-matnr.
struc-maktx=item-maktx.
struc-wponum=item-wponum.
struc-wmenge=item-wmenge.
struc-slabs=item-slabs.
struc-labst=item-labst.
struc-groes=item-groes.
struc-wqyh=item-wqyh.
struc-fpjh=item-fpjh.
endif.
endloop.
appendstructoitemc.
loopatitemcwherewgbez='小计'.
itemc-matkl=''.
itemc-fullname=''.
itemc-lifnr=''.
modifyitemc.
endloop.
ifitemc[]isinitial.
messageE001.
endif.
end-of-selection.
PERFORMole_excel
TABLESitemc
USING 'd:\sapdata\ty_mm_0018\ty_mm_0018.xls'.
FORMole_excel
TABLESitab
USINGappl_file_nameTYPEstring.
INCLUDE ole2incl.
DATA: excelTYPE ole2_object.
DATA: booksTYPEole2_object.
DATA: rangeTYPEole2_object.
DATA: bookTYPEole2_object.
DATA: filenameLIKErcgfiletr-ftfront.
DATA: appl_file_pathTYPEstring.
DATA: appl_filenameLIKErcgfiletr-ftfront.
filename='d:\sapdata\ty_mm_0018\ty_mm_0018.xls'.
appl_file_path='d:\sapdata\ty_mm_0018\'.
CALLFUNCTION'WS_DOWNLOAD'
EXPORTING
filename='d:\sapdata\ty_mm_0018\itab.dat'
filetype='DAT'
TABLES
data_tab=itab.
FREEitab.
CONCATENATEappl_file_pathappl_file_nameINTOappl_filename.
CALLFUNCTION'C13Z_FILE_DOWNLOAD_BINARY'
EXPORTING
i_file_front_end=filename
i_file_appl =appl_filename
i_file_overwrite='X'.
CALLFUNCTION'WS_EXECUTE'
EXPORTING
document='X'
COMMANDLINE=filename
PROGRAM ='EXCEL'.
ENDFORM.
FORMprint-header.
WRITE:/'Programstartedby',SY-UNAME,
/'onhost',SY-HOST,
'date:',SY-DATUM,'time:',SY-UZEIT,
/'程序名称:包材分配表'.
ULINE.
ENDFORM.