• 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.有効化します。

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

  • 相关阅读:
    Notice: Only variable references should be returned by reference(PHP版本兼容性问题)
    App 开发:Hybrid 架构下的 HTML5 应用加速方案
    Hybrid App是如何实现网页语言与程序语言的混合?谁占主体?
    前端切图+网页排版的注意事项和经验分享
    php提示 Notice: Use of undefined constant name
    如何预测一个互联网产品的未来—一套关于产品的数学模型
    以 MAMP 为 Mac OS X 安装并设置 PHP开发环境
    关于EINTR错误的理解【转】
    socket中的函数遇见EINTR的处理【转】
    Ubuntu10.04中利用V4L2读取摄像头数据并保存成文件【转】
  • 原文地址:https://www.cnblogs.com/yjyongil/p/10636251.html
Copyright © 2020-2023  润新知