如何获取SAP函数CSAP_MAT_BOM_MAINTAIN详细消息

文章讲述了在SAP中遇到CSAP_MAT_BOM_MAINTAIN函数调用成功但数据未更新的异常情况,通过调试发现是由于上游函数错误消息处理问题。解决方案是通过初始化BAPI_LOG,收集并显示嵌套调用的BAPI函数消息,确保正确处理和返回给用户友好的提示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

在SAP编写程序批量维护BOM时,可能会用到函数CSAP_MAT_BOM_MAINTAIN等。

而测试程序会发现一些“诡异情况”--函数调用成功,sy-subrc = 0,而数据却未更新。

该如何处理?

调试:

调试发现,函数CSAP_MAT_BOM_MAINTAIN,会进一步调用函数CS_DI_HEADER_OBJECT_CHECK/CS_DI_HEADER_CHECK/,而这些函数的调用发现的错误消息并没有直接返回到函数CSAP_MAT_BOM_MAINTAIN当中,FL_WARNING被置'X'。

方案:

原因是找到了,但是如何处理呢?

如何准确的判断上游函数执行的消息,并作为友好的消息返回给用户?

医界有句老话,毒物附近必有解药。

根据以往经验,就优先查找函数CSAP_MAT_BOM_MAINTAIN的函数组CSAP的其他函数,拎出了列表,初步一看表述,有点失望。

想着:被蛇咬不可能旁边就是解药,于是扩大范围:

表 TADIR

包 DEVCLASS LIKE 'CS*'

对象类型 OBJECT = 'FUGR'

再根据此函数组清单,找表 TFDIR的相关函数。

这个过程可简化为以下使用事务DB02,执行SQL:

SELECT TFDIR.*,ENLFDIR.AREA,TADIR.DEVCLASS,TADIR.AUTHOR FROM TFDIR
 INNER JOIN ENLFDIR ON ENLFDIR.FUNCNAME = TFDIR.FUNCNAME
 INNER JOIN TADIR ON ENLFDIR.AREA = TADIR.OBJ_NAME AND TADIR.PGMID = 'R3TR' AND TADIR.OBJECT = 'FUGR'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值