基本逻辑是:
先找出负库存的信息:工厂、物料、批次、仓库号,然后在根据这些信息查询所有不为0的仓位信息。根据选择的两个仓位信息,为创建TO准备目标和源的信息,调用函数L_TO_CREATE_SINGL创建TO,同时完成确认。欢迎大家修改成为一个后台自动清除负库存的程序。
*&---------------------------------------------------------------------*
*& Report ZWMR_010
*&---------------------------------------------------------------------*
*&清除异常库存,每次选择一对进行处理
*&这种错误的原因之一是允许存在负库存
*&多数发生在质量检验后,质量状态的物料没有成功移动
*&导致902的Q状态的为正,922的Q状态库存为负
*&Author: Andy Tang
*&Date:20250506
*&---------------------------------------------------------------------*
REPORT zwmr_010.
TABLES:ltak,ltap,lqua,ltak_vb,ltap_vb.
* 输入参数定义
SELECTION-SCREEN BEGIN OF BLOCK bk01 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: s_lgnum FOR lqua-lgnum, "库存号
s_werks FOR lqua-werks, "工厂
s_lgort FOR lqua-lgort, "库存地点
s_matnr FOR lqua-matnr, "物料
s_charg FOR lqua-charg. "批次
SELECTION-SCREEN END OF BLOCK bk01.
* 最终输出数据结构(只包含需要显示的字段)
TYPES: BEGIN OF ty_output,
ld_i_lgnum TYPE lqua-lgnum, "库存号
ld_i_werks TYPE lqua-werks, "工厂
ld_i_lgort TYPE lqua-lgort, "库存地点
ld_i_matnr TYPE lqua-matnr, "物料号码
ld_i_charg TYPE lqua-charg, "批次号
ld_i_anfme TYPE lqua-gesme, "数量
ld_i_altme TYPE lqua-meins, "单位
ld_i_bestq TYPE lqua-bestq, "物料在库存的状态:q为质检状态
ld_i_vltyp TYPE lqua-lgtyp, "源仓储类型
ld_i_vlber TYPE ltap-vlber, "默认为001
ld_i_vlpla TYPE lqua-lgpla, "源仓位bin
ld_i_nltyp TYPE lqua-lgtyp, "目标仓储类型
ld_i_nlber TYPE ltap-vlber, "001
ld_i_nlpla TYPE lqua-lgpla, "目标仓位bin
ld_i_bname TYPE ltak-bname, "用户名
ld_i_bwlvs TYPE ltak-bwlvs, "移动类型999
ld_i_squit TYPE rl03a-squit, "自动确认 x
ld_i_kompl TYPE rl03a-squit, "默认值为x
ld_i_commit_work TYPE rl03b-comit, "提交,默认为x
END OF ty_output.
TYPES: BEGIN OF ty_s_to_input,
lgnum TYPE lqua-lgnum,
bwlvs TYPE ltak-bwlvs,
matnr TYPE lqua-matnr,
werks TYPE lqua-werks,
lgort TYPE lqua-lgort,
charg TYPE lqua-charg,
best

最低0.47元/天 解锁文章
1701

被折叠的 条评论
为什么被折叠?



