欠料表问题

[复制链接]
查看11 | 回复1 | 2005-12-30 09:49:44 | 显示全部楼层 |阅读模式
本人现在在做欠料报表
根据成品需求数据,除去库存数量,得到欠料清单,包括各个阶层。

内表:
i_itab:
成品需求数量
werks
工厂
matnr
物料
gsmng
需求数量


i_stock:
物料库存数量
werks
工厂
matnr
物料
labst
库存数量


itab1:
保存BOM数据
werks
工厂
matnr
物料
stufe
阶层
werks1
工厂
matnr1
子物料
bmeng
用量
程序如下:
data: q type f,
p type f.
data: a like mard-werks,
b like mard-matnr,
c like plaf-gsmng.

form process_data.
clear itab1.
refresh itab1.
clear p.
clear q.
loop at i_itab.
perform bom_data using i_itab-matnr i_itab-werks."" 得到所有物料的BOM表
endloop.
dele itab1 where stufe ne 1. 只保留第一下阶物料
loop at i_itab.
perform decide_data using i_itab-werks i_itab-matnr i_itab-gsmng.
endloop.
endform

form decide_data using r_werks type mard-werks r_matnr type mard-matnr r_gsmng type plaf-gsmng.
read table i_stock with key werks = r_werks matnr = r_matnr."" 如果库存有物料
if sy-subrc eq 0.
q = i_stock-labst - r_gsmng.
"" 库存物料与需求数量比较
if q gt 0 or q eq 0.
i_stock-labst = i_stock-labst - r_gsmng."" 假如库存数量大于需求数量,直接减去,得到库存剩余可用数量(正值的话,表示可以满足需求)
modify i_stock index sy-tabix.
else.
p = r_gsmng -i_stock-labst
"" 假如库存数量小于需求数量 ,剩下需要下阶物料来生产
i_stock-labst = i_stock-labst - r_gsmng. "" 假如库存数量小于需求数量,直接减去,得到库存剩余可用数量(负值的话,表示欠料的数量)
modify i_stock index sy-tabix.
loop at itab1.
if itab1-werks = r_werks and itab1-matnr = r_matnr."" 计算需要的各个下阶物料数量
a = itab1-werks1.
b = itab1-matnr1.
c = itab1-bmeng * p.
perform decide_data using a b c.递归计算子物料
endif.
endloop.
endif.
endif.
endform.
但是,运行的数据总是不对。
请各个大侠看看是什么问题????谢谢~~~~~~~~~
回复

使用道具 举报

千问 | 2005-12-30 09:49:44 | 显示全部楼层
这个,没办法给你解释,首先你说数据不对,参考数据呢?错误数据呢?没有对比,其次,各个内表的取数逻辑呢?
所以你这个问题无解。
以后问问题别问这种不知如何解答的问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行