MAPL 分配任务清单到物料
MATNR 物料号 PLNNR 任务清单组码 PLNAL 组计数器 组+组计数器 确定一个物料
PLKZ 任务清单-主表头
PLNTY 类型 PLNNR 组码 PLNAL组计数器
AEDAT 最后一次更改的日期 AEUZEIT 最后一次修改的时间 AENAM 更改人员
PLKO 任务清单 - 表头
PLNTY 任务清单类型 PLNNR 任务清单组码 PLNAL 组计数器
VERWE 用途
PLAS
PLPO 任务清单 - 工序/作业
PLNNR 任务清单组码 PLNKN 任务清单节点数(按物料计数工序) ZAEHL 内部计数器(按组+组计数器计数工序)
VORNR 工序 LTXA1 工序短文本
LOEKZ 删除标识(还要连PLAS看有没有删)
ARBID 对象标识(连接CRHD取工作中心)
PREIS 净价
工艺路线工序是无法删除的,删除后会增加删除标识,不在前台显示,但后台是有数据的,所以没有重新计数的问题
注:PLPO~ARBID连接CRHD~OBJNR
PLAS(充当PLPO MAPL连接的中间表)
PLNNR 任务清单组码 PLNAL 组计数器 组码 + 计数器 确定一个物料
PLNKN 任务清单节点数 组码 + 计数器 + 节点 确定一个 物料 + 工序
ZAEHL 内部计数器(组计数器下的工序计数,删除再新建工序时可以使用相同的工序号,而内部计数器只会递增,即新增工序永远都不会使用已使用过的内部计数器。在新的 组+组计数器 下内部计数器会被清空重新计数)
LOEKZ 删除标识(CA02删除了工序数据还在LOEKZ='X')
PLMZ 分配工序到BOM组件(如果BOM变了,没有重新分配,PLMZ和STPO关联和CA03对不上,此时需要计算出STPO的KANTE和PLMZ匹配)
函数CARO_ROUTING_READ取组件有时候有bug和CA03对不上(没有考虑KANTE)
PLMZ-PLNKN 工序的任务清单节点号 PLMZ-STLKN BOM节点编号
STLKN 组件节点(连接STPO-STVKN,note2741311有解释 ,但其实是不够的)
select
mapl~werks,mapl~matnr,
makt~maktx,
plko~plnnr,plko~ktext,
* plko~datuv,
plpo~datuv,
plko~verwe,plko~plnnr_alt,plko~plnal,
* plpo~plnty as plnty_plpo,plpo~plnnr as plnnr_plpo,plpo~plnkn as plnkn_plpo,plpo~zaehl as zaehl_plpo,
plpo~vornr,plpo~ltxa1,plpo~vge01,plpo~vgw01,plpo~meinh,plpo~bmsch,plpo~aennr,
plpo~anzma,plpo~usr04,plpo~usr05,plpo~usr06,plpo~usr00,plpo~usr02,plpo~usr01,plpo~usr03,
aenr~aegru,
crhd~arbpl,
plmz~stlty,plmz~stlal,plmz~stlnr,plmz~stlkn,
mast~stlan
* stpo~posnr,stpo~idnrk,stpo~menge,stpo~meins
into corresponding fields of table @gt_alv
from mapl
left join makt on mapl~matnr = makt~matnr and makt~spras = @sy-langu
inner join plko on plko~plnty = mapl~plnty and plko~plnnr = mapl~plnnr and plko~plnal = mapl~plnal and plko~loekz = '' and plko~datuv <= @sy-datum and plko~valid_to >= @sy-datum
inner join plas on plko~plnty = plas~plnty and plko~plnnr = plas~plnnr and plko~plnal = plas~plnal and plas~loekz = '' and plas~datuv <= @sy-datum and plas~valid_to >= @sy-datum
inner join plpo on plas~plnty = plpo~plnty and plas~plnnr = plpo~plnnr and plas~plnkn = plpo~plnkn and plpo~loekz = '' and plpo~datuv <= @sy-datum and plpo~valid_to >= @sy-datum
left join aenr on plpo~aennr = aenr~aennr
* inner join plpo on plko~plnty = plpo~plnty and plko~plnnr = plpo~plnnr and plko~zaehl = plpo~zaehl and plpo~loekz = ''
left join crhd on plpo~arbid = crhd~objid and crhd~objty = 'A'
left join plmz on plpo~plnty = plmz~plnty and plpo~plnnr = plmz~plnnr and plpo~plnkn = plmz~plnkn and plmz~loekz = '' and plmz~datuv <= @sy-datum and plmz~valid_to >= @sy-datum
left join mast on plmz~stlnr = mast~stlnr and plmz~stlal = mast~stlal
* left join stpo on plmz~stlty = stpo~stlty and plmz~stlnr = stpo~stlnr and plmz~stlkn = stpo~stlkn
where mapl~loekz = '' and mapl~plnty = 'N' and mapl~datuv <= @sy-datum and mapl~valid_to >= @sy-datum
and mapl~matnr in @s_matnr and mapl~werks in @s_werks and mapl~plnnr in @s_plnnr and mapl~plnal in @s_plnal
and plko~verwe in @s_verwe
and crhd~arbpl in @s_arbpl.
sort gt_alv by stlnr stlkn.
delete adjacent duplicates from gt_alv comparing stlnr stlkn. "排除函数写入的错误重复数据
*组件
*BOM有变更,只保留最新的BOM
types:begin of ty_stpo_datuv,
stlty like stpo-stlty,
stlnr like stpo-stlnr,
datuv like stpo-datuv,
end of ty_stpo_datuv.
data lt_stpo_datuv type sorted table of ty_stpo_datuv with unique key stlty stlnr datuv with header line.
select
stlty,stlnr,stlkn,stpoz,
posnr,stvkn,idnrk,menge,meins,datuv
into table @data(lt_stpo)
from stpo
for all entries in @gt_alv
where stpo~stlty = @gt_alv-stlty and stpo~stlnr = @gt_alv-stlnr and stpo~stvkn = @gt_alv-stlkn
and stpo~datuv <= @sy-datum.
sort lt_stpo by stlty stlnr stvkn datuv descending.
loop at lt_stpo into data(ls_stpo).
read table lt_stpo_datuv with key stlty = ls_stpo-stlty stlnr = ls_stpo-stlnr binary search.
if sy-subrc ne 0.
move-corresponding ls_stpo to lt_stpo_datuv.
insert table lt_stpo_datuv.
endif.
endloop.
loop at lt_stpo into ls_stpo.
read table lt_stpo_datuv with key stlty = ls_stpo-stlty stlnr = ls_stpo-stlnr datuv = ls_stpo-datuv binary search.
if sy-subrc ne 0.
delete lt_stpo.
endif.
endloop.
loop at gt_alv.
read table lt_stpo into ls_stpo with key stlty = gt_alv-stlty stlnr = gt_alv-stlnr stvkn = gt_alv-stlkn binary search.
if sy-subrc = 0.
gt_alv-idnrk = ls_stpo-idnrk.
gt_alv-menge = ls_stpo-menge.
gt_alv-meins = ls_stpo-meins.
gt_alv-posnr = ls_stpo-posnr.
else.
delete gt_alv.
continue.
endif.
modify gt_alv.
endloop.