MIGO 基于自建领料单功能(部分预留数据) 页签增强
最终效果图,如下:
步骤1
创建增强页签所需的结构和表
1.创建抬头表 ZMIGO
2. 所需结构: 插入上图创建的表 (ZMIGOH) 即可 操作如下图:
步骤2
- 新建函数组(ZMIGO)
在函数中创建全局数据
FUNCTION-POOL zmigo. "MESSAGE-ID …
TABLES: zmigoh,zmigo_badi.
DATA : g_goaction TYPE goaction.
DATA : g_refdoc TYPE refdoc.
DATA : g_action TYPE action.
2. 创建传递页签命令函数
3. 自建子屏幕
在PBO写逻辑 选择什么页签时调用此屏幕 (A07时可编辑 其他页签不可编辑)
LOOP AT SCREEN.
CASE g_action.
WHEN 'A07' .
screen-input = 1.
WHEN OTHERS.
screen-input = 0.
ENDCASE.
MODIFY SCREEN .
ENDLOOP.
在PAI 写逻辑 输入领料单后 带出预留号
IF zppt013-znum IS NOT INITIAL .
SELECT SINGLE rsnum INTO zppt013-rsnum FROM zppt013 WHERE znum = zppt013-znum.
IF sy-subrc <> 0 .
CLEAR : zppt013-rsnum.
MESSAGE '领料单号不存在!' TYPE 'I'.
LEAVE LIST-PROCESSING.
ENDIF.
SELECT COUNT(*) FROM zppt013 WHERE znum = zppt013-znum AND mblnr <> ''.
IF sy-subrc = 0 .
CLEAR : zppt013-rsnum.
MESSAGE '领料单已过账!' TYPE 'I'.
LEAVE TO TRANSACTION 'MIGO'.
ENDIF.
ENDIF.
SET PARAMETER ID 'ZNUM' FIELD zppt013-znum.
SET PARAMETER ID 'RES' FIELD zppt013-rsnum.
到此,增强屏幕已经准备完毕.
查找BADI增强点
- 查找标准BADI 增强点 (MB_MIGO_BADI) 新建 ZEI_MB_MIGO_BADI
2. 创建所需变量
传递抬头参数
添加调用自建子屏幕
若为领料单过账的预留,所对应的行 确认行直接打钩
检查领料单过账时抬头过账类型是否为Z31,若不等于Z31报错
若为领料单部分行过账,则自建表中过账标识 = ‘X’ ,视为本领料单已全部过账,不可二次过账
GET PARAMETER ID 'RES' FIELD DATA(lv_rsnum).
GET PARAMETER ID 'ZNUM' FIELD DATA(lv_znum).
IF lv_znum <> '0000000000' AND lv_rsnum <> '0000000000' .
gv_flag = 'X'.
ENDIF.
IF gv_flag = 'X' .
SELECT SINGLE * FROM zppt013 INTO @DATA(ls_zppt013) WHERE znum = @lv_znum AND matnr = @ls_goitem-matnr AND xloek <> 'X'.
IF sy-subrc = 0 .
IF ls_goitem-erfmg <> ls_zppt013-zllsl.
ls_bapiret-type = 'E'.
ls_bapiret-id = 'ZSD01'.
ls_bapiret-number = '024'.
APPEND ls_bapiret TO et_bapiret2.
CLEAR ls_bapiret.
ELSE.
"""判断选中行标识
ls_zppt013-zgzbs = 'X'.
MODIFY zppt013 FROM ls_zppt013.
IF sy-subrc = 0.
COMMIT WORK .
ENDIF.
ENDIF.
ELSE.
ls_bapiret-type = 'E'.
ls_bapiret-id = 'ZSD01'.
ls_bapiret-number = '025'.
APPEND ls_bapiret TO et_bapiret2.
CLEAR ls_bapiret.
ENDIF.
CLEAR gv_flag.
ENDIF.
最后一步 更新自建表的物料凭证
首先 按创建成功的物料凭证号消息号查找需要更新逻辑的位置
找到位置后,添加更新逻辑代码进去即可。
至此,结束。MIGO 基于自建领料单过账程序大的框架就已经完成了
如有不足或者错误的地方 欢迎大佬指出和交流~