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