如何用'BAPI_BUS2054_CHANGE_MULTI'更新wbs_element?

2020-08-25 16:41发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在尝试更新数据库中的wbs元素。

我需要从PRPS表中更改特定的自定义字段(MUNIC)。

我正在使用" BAPI_BUS2054_CHANGE_MULTI",但没有任何反应。 记录未更改。

当BAPI_PS_PRECOMMIT时,这些消息以" LT_PRE_RETURN"返回。 用免费的英语:

1-I CNIF_PI081对象数据WBS元素INGC/22/UHPF/AMPL/555/08尚未修改

2-S CNIF_PI 070项目定义和WBS元素的最终检查:没有错误。

3-已执行S CJ 001替换WBS元素

4-S CJ 001验证定义项目已执行

5-已执行S CJ 001验证WBS元素

第一个消息是5,最后一个消息是1。

尽管如此,还是调用了BAPI_TRANSACTION_COMMIT。 请注意,任何错误都会发生。 但是什么都没有改变。

遵循代码。

以T_PRPS圈入WA_PRPS。

 清除LS_WBS_ELEMENT。
 清除LT_WBS_ELEMENT。
 清除LS_WBS_ELEMENT_UP。
 清除LT_WBS_ELEMENT_UP。
 清除LS_TE_WBS_ELEMENT。
 清除LT_EXTENSIONIN。
 清除lt_pre_return。


 通话功能" CONVERSION_EXIT_ABPSN_INPUT"
 出口
 输入= WA_PRPS-PSPNR
 输入
 输出= WA_PRPS-POSID。


 *通话功能'CONVERSION_EXIT_KONPD_OUTPUT'
 *出口
 *输入= wa_prps-psphi
 *重要
 *输出= lv_project_def。

 *项目
 lv_project_def = WA_PRPS-DEF_PROJ。
 * -------------------------------------------------  ------------------- *
 ls_wbs_element-WBS_ELEMENT = wa_prps-POSID。
 附加ls_wbs_element至lt_wbs_element。

 * -------------------------------------------------  ------------------- *
 ls_wbs_element_up-wbs_element = wa_prps-POSID。
 附录ls_wbs_element_up至lt_wbs_element_up。

 * -------------------------------------------------  ------------------- *
 清除ls_extensionin。
 ls_extensionin-structure ='bapi_te_wbs_element'。 扩展结构

 *传递钥匙。.重要
 ls_te_wbs_element-wbs_element = wa_prps-POSID。 识别自定义字段的关键

 *这些是自定义字段。 您将拥有自己的逻辑来获取数据
 *要填充
 ls_te_wbs_element-MUNIC = wa_prps-MUNIC。

 ls_extensionin-valuepart1 = ls_te_wbs_element-MUNIC。

 将ls_extensionin附加到lt_extensionin中。
 * -------------------------------------------------  ------------------- *
 *初始化当前处理单元
 通话功能" BAPI_PS_INITIALIZATION"。

 * BAPI更新自定义WBS元素
 通话功能'BAPI_BUS2054_CHANGE_MULTI'
 出口
 i_project_definition = lv_project_def
 桌子
 it_wbs_element = lt_wbs_element
 it_update_wbs_element = lt_wbs_element_up
 et_return = lt_return
 extensionin = lt_extensionin。  "这里有自定义字段

 *提交前检查
 通话功能'BAPI_PS_PRECOMMIT'
 桌子
 et_return = lt_pre_return。

 *寻找错误
 读表lt_pre_return进入具有键类型='E'的ls_return。
 如果sy-subrc EQ 0。
 在t_message INTO wa_msg处循环播放,其中message_type EQ为'E'。
 message-msgty = wa_msg-message_type。
 message-msgid = wa_msg-message_id。
 message-msgno = wa_msg-message_number。
 message-msgv1 = wa_msg-message_text。
 message-msgv2 = wa_msg-message_text + 50。

 将消息添加到lt_message。
 清除消息。
 结局。
 *根据要求添加您的错误消息

 *回滚
 通话功能" BAPI_TRANSACTION_ROLLBACK"。

 其他。
 *根据要求添加您的成功消息

 *进行提交
 通话功能'BAPI_TRANSACTION_COMMIT'
 出口
 等待='X'。

 万一。
 清除WA_PRPS。
 结局。

 ENDFORM。
 

请帮助我。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在尝试更新数据库中的wbs元素。

我需要从PRPS表中更改特定的自定义字段(MUNIC)。

我正在使用" BAPI_BUS2054_CHANGE_MULTI",但没有任何反应。 记录未更改。

当BAPI_PS_PRECOMMIT时,这些消息以" LT_PRE_RETURN"返回。 用免费的英语:

1-I CNIF_PI081对象数据WBS元素INGC/22/UHPF/AMPL/555/08尚未修改

2-S CNIF_PI 070项目定义和WBS元素的最终检查:没有错误。

3-已执行S CJ 001替换WBS元素

4-S CJ 001验证定义项目已执行

5-已执行S CJ 001验证WBS元素

第一个消息是5,最后一个消息是1。

尽管如此,还是调用了BAPI_TRANSACTION_COMMIT。 请注意,任何错误都会发生。 但是什么都没有改变。

遵循代码。

以T_PRPS圈入WA_PRPS。

 清除LS_WBS_ELEMENT。
 清除LT_WBS_ELEMENT。
 清除LS_WBS_ELEMENT_UP。
 清除LT_WBS_ELEMENT_UP。
 清除LS_TE_WBS_ELEMENT。
 清除LT_EXTENSIONIN。
 清除lt_pre_return。


 通话功能" CONVERSION_EXIT_ABPSN_INPUT"
 出口
 输入= WA_PRPS-PSPNR
 输入
 输出= WA_PRPS-POSID。


 *通话功能'CONVERSION_EXIT_KONPD_OUTPUT'
 *出口
 *输入= wa_prps-psphi
 *重要
 *输出= lv_project_def。

 *项目
 lv_project_def = WA_PRPS-DEF_PROJ。
 * -------------------------------------------------  ------------------- *
 ls_wbs_element-WBS_ELEMENT = wa_prps-POSID。
 附加ls_wbs_element至lt_wbs_element。

 * -------------------------------------------------  ------------------- *
 ls_wbs_element_up-wbs_element = wa_prps-POSID。
 附录ls_wbs_element_up至lt_wbs_element_up。

 * -------------------------------------------------  ------------------- *
 清除ls_extensionin。
 ls_extensionin-structure ='bapi_te_wbs_element'。 扩展结构

 *传递钥匙。.重要
 ls_te_wbs_element-wbs_element = wa_prps-POSID。 识别自定义字段的关键

 *这些是自定义字段。 您将拥有自己的逻辑来获取数据
 *要填充
 ls_te_wbs_element-MUNIC = wa_prps-MUNIC。

 ls_extensionin-valuepart1 = ls_te_wbs_element-MUNIC。

 将ls_extensionin附加到lt_extensionin中。
 * -------------------------------------------------  ------------------- *
 *初始化当前处理单元
 通话功能" BAPI_PS_INITIALIZATION"。

 * BAPI更新自定义WBS元素
 通话功能'BAPI_BUS2054_CHANGE_MULTI'
 出口
 i_project_definition = lv_project_def
 桌子
 it_wbs_element = lt_wbs_element
 it_update_wbs_element = lt_wbs_element_up
 et_return = lt_return
 extensionin = lt_extensionin。  "这里有自定义字段

 *提交前检查
 通话功能'BAPI_PS_PRECOMMIT'
 桌子
 et_return = lt_pre_return。

 *寻找错误
 读表lt_pre_return进入具有键类型='E'的ls_return。
 如果sy-subrc EQ 0。
 在t_message INTO wa_msg处循环播放,其中message_type EQ为'E'。
 message-msgty = wa_msg-message_type。
 message-msgid = wa_msg-message_id。
 message-msgno = wa_msg-message_number。
 message-msgv1 = wa_msg-message_text。
 message-msgv2 = wa_msg-message_text + 50。

 将消息添加到lt_message。
 清除消息。
 结局。
 *根据要求添加您的错误消息

 *回滚
 通话功能" BAPI_TRANSACTION_ROLLBACK"。

 其他。
 *根据要求添加您的成功消息

 *进行提交
 通话功能'BAPI_TRANSACTION_COMMIT'
 出口
 等待='X'。

 万一。
 清除WA_PRPS。
 结局。

 ENDFORM。
 

请帮助我。

付费偷看设置
发送
2条回答
大道至简
1楼 · 2020-08-25 17:00.采纳回答

字段MUNIC是Z字段。 " BAPI_BUS2054_CHANGE_MULTI"仅接受由Z开头的自定义字段。因此,我将自定义字段更改为ZMUNIC,它可以工作。

半个程序猿
2楼-- · 2020-08-25 16:50

当您与所有人共享代码时,请使用代码按钮,此按钮将对所有人清晰。

能否使用BAPI_BUS2054_GETDATA检查FM需要传递的详细信息是什么? 使用此FM,您可以检查您的参数是否正确通过。

一周热门 更多>