• 【ABAP】EXIT_SAPLMBMB_001无法Debug调试问题处理


    【ABAP】EXIT_SAPLMBMB_001无法Debug调试问题处理

    不久前看到SAP Community里面有这样一个问题,可能比较老了,但个人觉得比较新奇,就去做了下面一个测试。

    首先通过事务代码“CMOD”对增强“MB_CF001”(更新物料凭证时的客户功能出口)进行实现。

    其中增强代码主要功能是采购入库后将产生的物料凭证自动发送至其他外部系统(如WMS系统),部分关键代码选摘如下:

    1. BREAK SAP_001.
    2.   DATA : LT_TAB LIKE TABLE OF ZWMS_TAB WITH HEADER LINE.
    3.   LOOP AT XMKPF.
    4.     LOOP AT XMSEG WHERE MBLNR EQ XMKPF-MBLNR
    5.                     AND MJAHR EQ XMKPF-MJAHR.
    6.       IF XMSEG-EBELN <> ''
    7.         AND ( XMSEG-BWART = '101' OR XMSEG-BWART = '102' OR XMSEG-BWART = '161' OR XMSEG-BWART = '162' ).
    8.         CLEAR LT_TAB.
    9.         MOVE-CORRESPONDING XMSEG TO LT_TAB.
    10.         LT_TAB-BUDAT = XMKPF-BUDAT.
    11.         LT_TAB-ERDAT = SY-DATUM.
    12.         LT_TAB-ERZET = SY-UZEIT.
    13.         LT_TAB-ERNAM = SY-UNAME.
    14.         APPEND LT_TAB.
    15.       ENDIF.
    16.     ENDLOOP.
    17.   ENDLOOP.
    18.   IF LT_TAB[] IS NOT INITIAL.
    19.     ”发送到外部系统的逻辑
    20.   ENDIF.


     

    本人用SAP账号“SAP_001”对某采购订单进行收货操作,能正常产生物料凭证,也正确传输到了外部WMS系统中,但是其间未进入到该Exit中进行Debuging。

    费解之余在SAP Note“453577”中找到了相关解释:

    功能模块MB_UPDATE_TASKS是一个更新模块,因此会在更新任务中被调用,它又调用更新任务中的功能模块(MB_POST_DOCUMENT)。这不是必需的,并且在某些情况下,会导致功能模块MB_POST_DOCUMENT中的调试,特别是位于功能模块中的用户出口变得很困难或不可能。

    另外,更新任务中函数模块MB_POST_DOCUMENT的内部调用是不必要的性能负载。

    “Update task”是用于对话或报表中实现同步和异步更新数据库的功能,在Update之前还有一个Before Update,用于更新数据前的检查,当二者都执行完,才会进行到后面的Commit,当before update成功执行,而update不成功,会报错如下,显示数据回滚:

    Express document "Update was terminated" received from author "SAP_001".SAP is detecting that and rolling back the body of work that was just committed to the database.

    如果我们需要进入“Update task”进行调试,则需要在“SAPMM07M ~ MM07MFB9_BUCHEN_AUSFUEHREN”打上内部断点,在“MB_UPDATE_TASKS ”函数中打上外部断点,等到采购订单收货时则会进入Debugging。

    在进入的Debuging界面的菜单“设置”-“更改调试器参数文件/设置”中将“更新调试”复选框勾选。

    然后会在“MIGO”操作界面中提示“已触发更新调试”(详见下图),紧接着就跳转进入到“MB_UPDATE_TASKS ”函数中进行Debugging。

    逐步调试则会来到我们增强实现的地方“CALL CUSTOMER-FUNCTION '001' ”。

    好了,上面就是调试“Update Task”的方法。

  • 相关阅读:
    Socket网络编程
    发现 Cargo 的魅力:优雅地构建、发布和管理 Rust 项目
    大模型应用开发:编写插件获取实时天气信息
    ubuntu20部署3d高斯
    隔离这几天开发了一个带控制台的OAuth2授权服务器分享给大家
    Java并发常见面试题(二)
    Oracle-CDB容器数据库主备切换步骤
    关于小程序如何做到强制更新
    等保2.0一个中心三重防护指的是什么?如何理解?
    大厂程序员:杭州小公司给不了40k?网友群嘲
  • 原文地址:https://blog.csdn.net/zhongguomao/article/details/128044226