MIGO批次增强总结&技巧

本文详细介绍在SAP系统中,如何通过增强程序ZXVBZU02实现同物料&工厂生成相同批次的方法,以及如何使用自建表分配不同批次,避免跳号问题,确保批次连续性和准确性。

1、批次增强的出口包含程序是ZXVBZU02,在ZXVBZU02中添加如下代码可实现同物料&工厂生成同一个批次

*&---------------------------------------------------------------------*
*& 包含               ZXVBZU02
*&---------------------------------------------------------------------*
*data z_bncom like bncom.
*data num(10) type c.
*z_bncom = x_bncom.
*concatenate sy-datum+2(6) new_charg+6(4) into num.
*new_charg = num.

TABLES MCHB.
DATALAST_CHARG  LIKE MCHB-CHARG,
      DATE_STR(6TYPE C,
      SERIAL(4)   TYPE C.
SELECT MAXCHARG )  INTO LAST_CHARG
  
FROM  MCHB
  
WHERE MATNR  X_BNCOM-MATNR
    
AND WERKS  X_BNCOM-WERKS
    
AND ERSDA  SY-DATUM+2(6).


DATE_STR SY-DATUM+2(6).

IF LAST_CHARG IS INITIAL.

  CONCATENATE DATE_STR  '0001' INTO NEW_CHARG.

ELSE.
  NEW_CHARG LAST_CHARG + 1.
*   if serial < 10 .
*     CONCATENATE '0' serial into serial.
*   endif.

*   CONCATENATE date_str  serial  into new_charg.
ENDIF.

2、如果同物料&工厂有多行,并且想要分配不同批次则需要使用自建表,并在每次调用增强是进行存储操作,具体代码如下。

*&---------------------------------------------------------------------*
*& 包含               ZXVBZU02
*&---------------------------------------------------------------------*
*data z_bncom like bncom.
*data num(10) type c.
*z_bncom = x_bncom.
*concatenate sy-datum+2(6) new_charg+6(4) into num.
*new_charg = num.

TABLES MCHB.
DATALAST_CHARG  LIKE MCHB-CHARG,
      LV_ZBATCH   TYPE ZBATCH,
      DATE_STR(6TYPE C,
      SERIAL(4)   TYPE C.
SELECT MAXCHARG )  INTO LAST_CHARG
  
FROM  ZBATCH
  
WHERE MATNR   X_BNCOM-MATNR
    
AND WERKS   X_BNCOM-WERKS
    
AND CHARG_C SY-DATUM+2(6).


DATE_STR SY-DATUM+2(6).

IF LAST_CHARG IS INITIAL.

  CONCATENATE DATE_STR  '0001' INTO NEW_CHARG.

ELSE.
  NEW_CHARG LAST_CHARG + 1.
*   if serial < 10 .
*     CONCATENATE '0' serial into serial.
*   endif.

*   CONCATENATE date_str  serial  into new_charg.
ENDIF.
CLEAR LV_ZBATCH .
LV_ZBATCH-MATNR   X_BNCOM-MATNR .
LV_ZBATCH-WERKS   X_BNCOM-WERKS .
LV_ZBATCH-ERSDA   SY-DATUM .
LV_ZBATCH-CHARG   NEW_CHARG .
LV_ZBATCH-CHARG_C LV_ZBATCH-CHARG(6) .

MODIFY ZBATCH FROM LV_ZBATCH .

自建表格式:

MANDTXMANDTCLNT30集团
MATNRXMATNRCHAR400物料编号
WERKSXWERKS_DCHAR40工厂
CHARGXCHARG_DCHAR100批号
CHARG_C  CHAR60批号截取
ERSDA ERSDADATS80创建日期

 

这样做的弊端是:

1*如果MIGO操作只进行了检查没有保存或保存不成功就会产生跳号的现象

2*系统期初导入的批次数据无法自动流入自建表

 

3、如何使导入的期初数据自动流入自建表且能避免跳号问题?我的思路是由于批次是不可跨天累计的,所以可以在进入MIGO界面并伴有PAI动作时将自建批次表当天的数据清空,并将MCHB当天的数据更新进入自建表,这样便可以解决上面两个问题。具体做法如下:

此处加入如下代码

 

*{   INSERT         D01K900321                                        1
  DATA GT_MCHB   TYPE TABLE OF MCHB WITH HEADER LINE .
  DATA GT_ZBATCH TYPE TABLE OF ZBATCH WITH HEADER LINE .
  IF SY-TCODE 'MIGO'.
    DELETE FROM ZBATCH WHERE ERSDA SY-DATUM .
    CLEAR GT_MCHB[] .
    SELECT INTO CORRESPONDING FIELDS OF TABLE GT_MCHB[] FROM MCHB
      
WHERE ERSDA SY-DATUM
      
.
    LOOP AT GT_MCHB.
      GT_ZBATCH-MATNR GT_MCHB-MATNR.
      GT_ZBATCH-WERKS GT_MCHB-WERKS.
      GT_ZBATCH-CHARG GT_MCHB-CHARG.
      GT_ZBATCH-ERSDA GT_MCHB-ERSDA.
      GT_ZBATCH-CHARG_C GT_MCHB-CHARG(6).
      APPEND GT_ZBATCH .
      CLEAR GT_MCHB .
      CLEAR GT_ZBATCH .
    ENDLOOP.
    MODIFY ZBATCH FROM TABLE GT_ZBATCH[] .
  ENDIF.
*}   INSERT

&lt;think&gt;好的,我现在需要帮助用户了解MIGO事务代码的屏幕增强功能使用说明。首先,用户提到了参考内容里的工厂特定材料状态字段,这可能与MIGO中的字段增强有关。不过,用户的问题更广泛,是关于MIGO屏幕增强的整体说明。 首先,我应该回忆SAP中如何进行屏幕增强。通常,SAP的增强方式有User Exit、BADI、Enhancement Framework等。MIGO作为复杂的事务代码,可能涉及到这些技术。需要确认MIGO可用的增强点,比如程序名、屏幕号,以及常见的增强方法。 接下来,用户可能需要步骤指导。例如,使用增强点追加自定义字段,或者通过BADI来添加业务逻辑。可能需要分步骤说明,比如查找增强点、创建增强项目、编写代码、激活等。同时,可能涉及屏幕字段的校验、默认值设置,或者自定义子屏幕的添加。 另外,要注意权限和传输请求的问题,因为修改需要传输到生产系统。还要提醒用户测试的重要性,避免影响现有流程。可能还需要举例说明,比如添加一个自定义字段到MIGO界面,并如何在保存时校验该字段。 最后,生成相关问题,帮助用户进一步了解。例如,如何找到MIGO增强点,或者增强后如何调试。需要确保信息准确,参考SAP官方文档或常见实施方法,避免错误。&lt;/think&gt;### MIGO屏幕增强功能使用说明 在SAP系统中,$MIGO$(物料移动过账)的屏幕增强功能主要通过**增强点(Enhancement Points)**或**隐式增强**实现,用于在标准事务中添加自定义字段或逻辑。以下是具体步骤: --- #### 1. **确定增强点** - **程序与屏幕定位**: $MIGO$ 的主程序为 `RM07MMBD`,屏幕号为 `9000`。用户可通过 `/H` 调试模式或事务代码 `SE80` 查找具体屏幕元素[^1]。 - **关键增强点**: - `EXIT_SAPMM07M_XXX` 系列用户出口(User Exits) - BAdI(Business Add-In) `MB_MIGO_BADI` --- #### 2. **通过隐式增强添加字段** - **步骤**: 1. 使用事务代码 `SE80` 打开程序 `RM07MMBD`。 2. 定位到屏幕 `9000`,右键选择 **Enhancement &rarr; Create Enhancement**。 3. 在屏幕布局中添加自定义字段(如工厂特定状态字段),并绑定数据字典(如 `ZSTRU_MIGO`)。 ```abap DATA: z_custom_field TYPE zstru_migo-zfield. ``` 4. 激活增强并生成包含文件(Include Program)。 --- #### 3. **使用BAdI添加逻辑** - **BAdI `MB_MIGO_BADI`** 支持在保存前校验或填充字段: ```abap METHOD if_ex_mb_migo_badi~check_before_save. IF cs_mseg-zfield IS INITIAL. MESSAGE &#39;自定义字段不能为空&#39; TYPE &#39;E&#39;. ENDIF. ENDMETHOD. ``` --- #### 4. **屏幕字段校验与默认值** - 在增强项目中,通过 `PBO`(Process Before Output)和 `PAI`(Process After Input)事件控制字段行为: ```abap MODULE customize_pbo OUTPUT. LOOP AT SCREEN. IF screen-name = &#39;Z_FIELD&#39;. screen-required = &#39;1&#39;. MODIFY SCREEN. ENDIF. ENDLOOP. ENDMODULE. ``` --- #### 5. **注意事项** - **权限与传输**:需申请 `S_DEVELOP` 权限,并通过传输请求(Transport Request)发布变更。 - **兼容性**:增强需兼容SAP版本升级,避免使用非标准表或直接修改SAP代码。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值