如何使用数据源名称BAPI_EMP_SO_CHANGE映射SalesOrder的更新操作

2020-09-27 02:43发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好,我正在尝试使用以下BAP...

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

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


大家好,我正在尝试使用以下BAPI作为实体类型来提供OData服务:

-BAPI_SO_EMP_SO_GETLIST;
-BAPI_SO_EMP_SO_GETDETAIL;

我遵循了指南(非常有用!),但是,他仅映射了Read和Query操作。 我可以修改数据映射向导并映射"创建和删除"操作(我已按预期进行了测试和工作),但是,我无法映射"更新操作"。 我尝试了以下方法:

但是当我尝试更新/IWFND/GW_CLIENT事务中的条目时,出现以下错误:

我的逻辑解决方案是更改数据源参数,如下所示:

我遇到了一个新错误,我无法推断出任何解决方案:

我该如何解决? 我什至考虑过要去ABAP工作台重新定义UpdateEntity方法,但是我对ABAP的了解几乎为零。 令我更加困惑的是,我正在使用RFC模块创建oData服务,为什么它输出无效的BOR密钥?

预先感谢

威廉

attempt1.jpg (44.8 kB)
4条回答
闻人可可
2020-09-27 03:27

谢谢您的回答! 最后,我在ABAP工作台中完成了所有工作,最终我了解了SOHEADERDATAX的用途。 如果有人偶然发现类似问题,这是我的ABAP代码:

 METHOD SALESORDER_UPDATE_ENTITY。
     数据:
           lwa_key_tab TYPE/iwbep/s_mgw_name_value_pair,
           lv_so_id类型bapi_epm_so_id,
           ls_salesorder像er_entity,
           ls_headerdata类型bapi_epm_so_header,
           ls_headerdatax类型bapi_epm_so_headerx,
           lt_return bapiret2的标准类型表,
           ld_persist_to_db类型BAPI_EPM_BOOLEAN。
 *将运行时请求映射到RFC-仅映射属性
 io_data_provider-> read_entry_data(IMPORTING es_data = ls_salesorder)。
     读取表it_​​key_tab并使用键名='SoId'进入lwa_key_tab。
     如果sy-subrc = 0。
       lv_so_id = lwa_key_tab值。
     万一。
 * Alpha转换
     通话功能" CONVERSION_EXIT_ALPHA_INPUT"
     出口
       输入= lv_so_id
     输入
       输出= lv_so_id。

 *从服务中读取需要更新的新数据io_data_provider-> read_entry_data
     通话功能'BAPI_EPM_SO_GET_DETAIL'
     出口
       so_id = lv_so_id
     输入
       headerdata = ls_headerdata。
 *更新数据
     ld_persist_to_db = ABAP_TRUE。
     ls_headerdata-Note = ls_salesorder-note。
     ls_headerdata-Buyer_Id = ls_salesorder-Buyer_Id。
     ls_headerdata-Buyer_Name = ls_salesorder-Buyer_Name。
     ls_headerdata-currency_code = ls_salesorder-currency_code。
     ls_headerdatax-so_id = lv_so_id。
     ls_headerdatax-currency_code ='X'。
     ls_headerdatax-note ='X'。
     ls_headerdatax-Buyer_Id ='X'。
     ls_headerdatax-Buyer_Name ='X'。
     通话功能'BAPI_EPM_SO_CHANGE'
       出口
         so_id = lv_so_id
         soheaderdata = ls_headerdata
         soheaderdatax = ls_headerdatax
 * PERSIST_TO_DB = ABAP_TRUE
         persist_to_db = ld_persist_to_db
       桌子
         return = lt_return。
       如果lt_return是INITIAL。
         er_entity = ls_salesorder。
       万一。
  终结法。
 **尝试。
 *呼叫方法SUPER-> SALESORDER_UPDATE_ENTITY
 *出口
 * IV_ENTITY_NAME =
 * IV_ENTITY_SET_NAME =
 * IV_SOURCE_NAME =
 * IT_KEY_TAB =
 ** IO_TECH_REQUEST_CONTEXT =
 * IT_NAVIGATION_PATH =
 ** IO_DATA_PROVIDER =
 **进口
 ** ER_ENTITY =
 *。
 **抓/IWBEP/CX_MGW_BUSI_EXCEPTION。
 ** CATCH/IWBEP/CX_MGW_TECH_EXCEPTION。
 ** ENDTRY。
 

一周热门 更多>