UPDATE_ENTITY実行

1.クラスZCL_Z_EPM_RKT_DPC_EXTのクラスビルダ画面から、SALESORDERS_UPDATE_ENTITYメソッドを選択し、右クリックで、再定義をクリックします。

2.以下のソースコードように変更内容を編集します。

method SALESORDERS_UPDATE_ENTITY.

    DATA: lv_id(10)            TYPE          N,
          ls_id                TYPE          bapi_epm_so_id.
    DATA: ls_headerdata        TYPE          bapi_epm_so_header,
          lt_return            TYPE TABLE OF bapiret2,
          ls_return            TYPE          bapiret2,
          err_msg              TYPE          string,
          lo_message_container TYPE REF TO   /iwbep/if_message_container.
    DATA: ls_message           TYPE          scx_t100key,
          lt_keys       TYPE                 /iwbep/t_mgw_tech_pairs.
    DATA  ls_headerdatax       TYPE          bapi_epm_so_headerx.

    FIELD-SYMBOLS: <ls_key>    TYPE /iwbep/s_mgw_tech_pair.

    lt_keys = io_tech_request_context->get_keys( ).

    READ TABLE lt_keys WITH KEY name = 'SO_ID'
      ASSIGNING <ls_key>.

    IF sy-subrc EQ 0.
      lv_id = <ls_key>-value.
    ENDIF.


    IF lv_id IS INITIAL.
      ls_message-msgid = 'SY'.
      ls_message-msgno = '002'.
      ls_message-attr1 = 'No Sales Order ID provided'.
      RAISE EXCEPTION TYPE /iwbep/cx_mgw_busi_exception
        EXPORTING
          textid = ls_message.
    ENDIF.

    io_data_provider->read_entry_data( IMPORTING es_data = ls_headerdata ).

    ls_id-so_id = lv_id.

    " EPM: Sales Order header data fields that can be updated
    " using the OData service

    ls_headerdatax-so_id = lv_id.
    ls_headerdatax-note = 'X'.
    ls_headerdatax-LIFECYCLE_STATUS = 'X'.
    ls_headerdatax-BILLING_STATUS = 'X'.
    ls_headerdatax-DELIVERY_STATUS = 'X'.

    CALL FUNCTION 'BAPI_EPM_SO_CHANGE'
      EXPORTING
        SO_ID               = ls_id
        SOHEADERDATA        = ls_headerdata
        SOHEADERDATAX       = ls_headerdatax
      TABLES
        RETURN              = lt_return
              .

    IF lt_return IS NOT INITIAL.

      LOOP AT lt_return INTO ls_return.

        err_msg = ls_return-message .

      ENDLOOP.

      ls_message-msgid = 'SY'.
      ls_message-msgno = '002'.
      ls_message-attr1 = err_msg.

      RAISE EXCEPTION TYPE /iwbep/cx_mgw_busi_exception
        EXPORTING
          textid = ls_message.

    ENDIF.

    MOVE-CORRESPONDING ls_headerdata TO er_entity.

endmethod. 

  

4.有効化します。

※警告が表示された場合は、コードを再確認し、間違いがあれば修正してから、もう一度[有効化]をクリックしてください。

 

转载于:https://www.cnblogs.com/yjyongil/p/10636251.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值