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

前言:

在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'

WHERE TADIR.DEVCLASS LIKE 'CS%' AND ( TADIR.OBJ_NAME LIKE '%MESSAGE%' OR TADIR.OBJ_NAME LIKE '%LOG%' OR TADIR.OBJ_NAME LIKE '%MSG%' )
 

为此,未找到入法眼的条目。

又想着:专科医生搞不掂。就找急诊科吧。

思路:

寻找BAPI消息返回的功能。

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

SELECT TFDIR.*,ENLFDIR.AREA,TFDIR.FUNCNAME FROM TFDIR
 INNER JOIN ENLFDIR ON ENLFDIR.FUNCNAME = TFDIR.FUNCNAME
WHERE TFDIR.FUNCNAME LIKE 'BAPI%' AND ( TFDIR.FUNCNAME LIKE '%MESSAGE%' OR TFDIR.FUNCNAME LIKE '%LOG%' OR TFDIR.FUNCNAME LIKE '%MSG%' )

 

找到入法眼的条目:

BAPI_LOG_CLOSE
BAPI_LOG_INIT
BAPI_DIALOG
 

经过程序编码,调试,最终发现需要获取嵌套调过的BAPI函数的消息,需要按以下步骤:

(一)初始化

调函数CSAP_MAT_BOM_MAINTAIN前,先调用

CALL FUNCTION 'BAPI_LOG_INIT'." 若不初始化会报错:没有为对象 CAPI 和子对象 CAPI_LOG 创建日志

(二)调函数CSAP_MAT_BOM_MAINTAIN

(三)收集消息,并根据消息决定后续逻辑

核心代码:

        CALL FUNCTION 'BAPI_LOG_CLOSE'
          TABLES
            return = lt_bapi_msg.
        LOOP AT lt_bapi_msg WHERE type = 'E' OR type = 'A'.
          lv_icon = icon_red_light.
          len = strlen( lv_msg ).
          IF len > 0.
            lv_msg = lv_msg && ';' && lt_bapi_msg-message.
          ELSE.
            lv_msg = lt_bapi_msg-message.
          ENDIF.
        ENDLOOP.

到此,可获取函数CSAP_MAT_BOM_MAINTAIN的详细消息。

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: csap_mat_bom_maintainSAP系统中的一个功能模块,用于维护物料清单(BOM)。BOM是指将一个产品的所有组成部分和子组件列出来的清单,包括每个组件的数量和位置。通过使用csap_mat_bom_maintain,用户可以添加、修改或删除BOM中的组件,以及调整它们的数量和位置。这个功能模块在SAP生产和物流管理中非常重要,可以帮助企业实现高效的生产和供应链管理。 ### 回答2: CSAP_MAT_BOM_MAINTAIN指的是SAP系统中物料清单维护的功能模块。物料清单是一种重要的物料管理工具,它记录了一个产品的组成部分,包含了父物料、子物料以及它们之间的关系。通过对物料清单进行维护,用户可以更加有效地组织和管理产品数据,减少了流程中的错误和重复。 该功能模块的主要作用是维护物料清单,包括添加、修改、删除或复制一个物料清单。用户可以在物料清单中添加父物料和子物料,设定组件数量,从而构建一个完整的产品结构。 此外,CSAP_MAT_BOM_MAINTAIN还提供了一些其他的功能,例如: 1. 支持多种物料清单类型,例如标准物料清单、可选物料清单、变式物料清单等。 2. 支持对物料清单的版本管理,用户可以通过版本管理功能对物料清单的变更进行控制。 3. 支持对物料清单的有效性、系统状态的检查。 4. 支持对物料清单进行导入和导出。 综上所述,CSAP_MAT_BOM_MAINTAIN是一款非常强大的物料清单维护工具,为用户提供了多种维护物料清单的功能和选项,可以帮助用户更加有效地管理产品数据,提高工作效率。 ### 回答3: csap_mat_bom_maintainSAP系统中一个很重要的模块,其主要功能是帮助企业维护物料BOM(Bill of Materials,物料清单)数据。物料清单记录了制造一个产品所需材料的详细信息,可以让企业在制造过程中掌握材料的成本、数量和质量等重要信息。因此,物料清单的维护非常重要,它能够直接影响企业的制造成本和效率。 该模块主要有以下功能: 1.维护BOM信息:通过该模块,用户可以轻松地创建、修改和删除物料BOM,包括材料清单的组成和数量、工序、工时和费用等信息。 2.发布BOM信息:当BOM信息维护完成后,可以选择发布BOM,让相关部门可以查看和使用该BOM。 3.版本管理:BOM的版本管理是该模块的重要功能之一,它能够记录和管理BOM的版本信息,让企业在制造过程中随时查看和控制BOM的变更。 4.结构显示:结构显示功能可以让用户直观地查看BOM的结构,包括BOM的层次结构、物料组成、数量等重要信息。 总之,csap_mat_bom_maintain模块是SAP系统中非常重要的一部分,它能够帮助企业高效地维护物料BOM信息,从而提高制造效率和降低成本,是现代企业管理制造流程必不可少的工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值