MDG convenience API示例代码

参考自
https://blogs.sap.com/2020/06/16/automatic-creation-and-submission-of-change-request-for-customer/

DATA:lr_key_str       TYPE REF TO DATA,
lr_key_tab       TYPE REF TO DATA,
lr_data_str      TYPE REF TO DATA,
lr_data_tab      TYPE REF TO DATA,
lt_entity_key    TYPE usmd_gov_api_ts_ent_tabl,
ls_entity_key    TYPE usmd_gov_api_s_ent_tabl,
ls_entity        TYPE usmd_gov_api_s_ent_tabl,
lt_entity        TYPE usmd_gov_api_ts_ent_tabl,
lt_entity_data   TYPE usmd_gov_api_ts_ent_data,
ls_entity_data   TYPE usmd_gov_api_s_ent_data.

TRY.
  DATA(lo_gov_api) = cl_usmd_conv_som_gov_api=>get_instance(  'YP' ).
CATCH cx_usmd_conv_som_gov_api INTO DATA(lo_som_error).
  data(lv_message) = lo_som_error->get_text( ).
  lo_gov_api->refresh_buffers( ).
CATCH cx_usmd_app_context_cons_error INTO DATA(lo_context_error).
  lv_message = lo_context_error->get_text( ).
  lo_gov_api->refresh_buffers( ).
CATCH cx_usmd_gov_api INTO DATA(lo_gov_api_error).
  lv_message = lo_context_error->get_text( ).
  lo_gov_api->refresh_buffers( ).
ENDTRY.

data(lo_workflow) = cl_usmd_wf_service=>get_instance( ).

TRY.
lo_gov_api->get_entity_structure(
EXPORTING
  iv_entity_name = 'SITE'
  iv_struct_type = cl_usmd_conv_som_gov_api=>gc_struct_key
IMPORTING
  er_structure   = lr_key_str
  er_table       = lr_key_tab
  ).

lo_gov_api->get_entity_structure(
EXPORTING
  iv_entity_name = 'SITE'
  iv_struct_type = cl_usmd_conv_som_gov_api=>gc_struct_key_attr
IMPORTING
  er_structure   = lr_data_str
  er_table       = lr_data_tab
  ).

CATCH cx_usmd_gov_api INTO lo_gov_api_error.
  lv_message = lo_gov_api_error->get_text( ).
  lo_gov_api->refresh_buffers( ).
ENDTRY.

FIELD-symbols:
<ls_key>      TYPE ANY,
<lt_key>      TYPE SORTED  TABLE,
<ls_data>     TYPE ANY,
<lt_data>     TYPE SORTED  TABLE.

ASSIGN lr_key_str->* TO <ls_key>.
ASSIGN lr_key_tab->* TO <lt_key>.
ASSIGN lr_data_str->* TO <ls_data>.
ASSIGN lr_data_tab->* TO <lt_data>.

TRY.
  lo_gov_api->set_environment(
  EXPORTING
    iv_crequest_type = 'YP1C1'
    iv_create_crequest = abap_true ).

  data(lv_crequest) = lo_gov_api->get_crequest_id( ).
CATCH cx_usmd_conv_som_gov_api_env INTO DATA(lo_env_error).
  lv_message = lo_env_error->get_text( ).
  lo_gov_api->refresh_buffers( ).
ENDTRY.

TRY .
  lo_gov_api->set_crequest_attributes(
  iv_crequest_text = 'test from se38:YPWK_UPDATE_YP'
  ).
CATCH cx_usmd_gov_api_core_error INTO DATA(lo_core_error).
  lv_message = lo_core_error->get_text( ).
  lo_gov_api->refresh_buffers( ).
CATCH cx_usmd_gov_api INTO lo_gov_api_error.
  lv_message = lo_gov_api_error->get_text( ).
  lo_gov_api->refresh_buffers( ).
ENDTRY.


CLEAR <ls_key>.
CLEAR ls_entity_key.
ASSIGN COMPONENT 'SITE' of STRUCTURE <ls_key> to FIELD-SYMBOL(<fs_key>).
<fs_key> = '2'.
APPEND <ls_key> TO <lt_key>.

ls_entity_key-entity = 'SITE'.
ls_entity_key-tabl = lr_key_tab.
APPEND ls_entity_key TO lt_entity_key.

TRY.
  lo_gov_api->enqueue_entity(
  it_entity_keys = lt_entity_key
  ).

CATCH cx_usmd_gov_api_core_error INTO lo_core_error.
  lv_message = lo_core_error->get_text( ).
  lo_gov_api->refresh_buffers( ).
CATCH cx_usmd_gov_api_entity_lock INTO DATA(lo_lock_error).
  lv_message = lo_lock_error->get_text( ).
  lo_gov_api->refresh_buffers( ).
CATCH cx_usmd_gov_api INTO lo_gov_api_error.
  lv_message = lo_gov_api_error->get_text( ).
  lo_gov_api->refresh_buffers( ).
ENDTRY.

CLEAR lt_entity_data.

CLEAR ls_entity_data.
CLEAR <ls_data>.
data:ls_data type YYP_S_YP_PP_SITE.

ls_data-site = '2'.
ls_data-name = 'test 2'.
MOVE-corresponding:ls_data TO <ls_data>.
APPEND <ls_data> TO <lt_data>.
ls_entity_data-entity = 'SITE'.
ls_entity_data-entity_data = lr_data_tab.
APPEND ls_entity_data TO  lt_entity_data.

TRY.
  lo_gov_api->write_entity_data(
    it_entity_data = lt_entity_data
  ).
CATCH cx_usmd_gov_api_core_error INTO lo_core_error.
  lv_message = lo_core_error->get_text( ).
  lo_gov_api->refresh_buffers( ).
CATCH cx_usmd_gov_api_entity_write INTO DATA(lo_write_error).
  lv_message = lo_write_error->get_text( ).
  lo_gov_api->refresh_buffers( ).
CATCH cx_usmd_gov_api INTO lo_gov_api_error.
  lv_message = lo_gov_api_error->get_text( ).
  lo_gov_api->refresh_buffers( ).
ENDTRY.

TRY .
  lo_gov_api->validate_crequest( ).

  lo_gov_api->get_cr_validation_result(
  IMPORTING
    et_validation_results = data(lt_messages)
    ).
CATCH cx_usmd_gov_api_core_error INTO lo_core_error.
  lv_message = lo_core_error->get_text( ).
  lo_gov_api->refresh_buffers( ).
CATCH  cx_usmd_conv_som_gov_api INTO lo_som_error .
  lv_message = lo_som_error->get_text( ).
  lo_gov_api->refresh_buffers( ).
ENDTRY.

LOOP AT lt_messages INTO data(ls_error_message) WHERE msgty CA 'AEX'.
  EXIT.
ENDLOOP.
IF ls_error_message IS NOT INITIAL.
  lo_gov_api->refresh_buffers( ).
  RETURN.
ENDIF.

TRY.
"  lo_gov_api->set_action( '03' )."optiona
  lo_gov_api->save( ).
CATCH cx_usmd_gov_api_core_error INTO lo_core_error.
  lv_message = lo_core_error->get_text( ).
  lo_gov_api->refresh_buffers( ).
CATCH  cx_usmd_gov_api INTO lo_gov_api_error .
  lv_message = lo_gov_api_error->get_text( ).
  lo_gov_api->refresh_buffers( ).
ENDTRY.

TRY ..
    lo_gov_api->dequeue_entity(
    it_entity_keys = lt_entity_key
    ).

  lo_gov_api->dequeue_crequest(  ).

CATCH cx_usmd_gov_api INTO lo_gov_api_error.
  lv_message = lo_gov_api_error->get_text( ).
  lo_gov_api->refresh_buffers( ).
ENDTRY.

COMMIT WORK AND WAIT.

lo_workflow->start_crequest_workflow( id_crequest = lv_crequest ).

lt_messages =   lo_gov_api->get_messages( ).
LOOP AT lt_messages INTO ls_error_message WHERE msgty CA 'AEX'.
  EXIT.
ENDLOOP.

lo_gov_api->refresh_buffers( ).

猜你喜欢

转载自blog.csdn.net/u012232542/article/details/109367708