MIGO 屏幕增强 基于自建领料单功能 (即部分预留数量过账)

MIGO 基于自建领料单功能(部分预留数据) 页签增强
最终效果图,如下:
效果图

步骤1

创建增强页签所需的结构和表
1.创建抬头表 ZMIGO 在这里插入图片描述
2. 所需结构: 插入上图创建的表 (ZMIGOH) 即可 操作如下图:
在这里插入图片描述

步骤2

  1. 新建函数组(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增强点

  1. 查找标准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 基于自建领料单过账程序大的框架就已经完成了
如有不足或者错误的地方 欢迎大佬指出和交流~

猜你喜欢

转载自blog.csdn.net/Right_an/article/details/105949579