" (...)
cl_http_client=>create_by_url(
EXPORTING
url = me->lv_url
ssl_id = 'DFAULT'
proxy_host = '##INPUT'
proxy_service = '##INPUT'
IMPORTING
client = lo_http_client ).
lo_http_client->propertytype_logon_popup = 0.
lo_http_client->request->set_method( EXPORTING method = 'GET' ).
" (...)
lo_http_client->request->set_header_field( name = 'x-sap-sac-custom-auth' value = 'true' ).
lo_http_client->request->set_header_field( name = 'x-csrf-token' value = 'fetch' ).
" (...)
TRY.
cl_oauth2_client=>create(
EXPORTING
i_profile = '##INPUT'
i_configuration = '##INPUT'
RECEIVING
ro_oauth2_client = DATA(lo_a2c_client)
).
CATCH cx_oa2c INTO DATA(lx_oa2c).
WRITE: 'Error calling create.'.
WRITE: / lx_oa2c->get_text( ).
RETURN.
ENDTRY.
TRY.
lo_a2c_client->set_token(
EXPORTING
io_http_client = lo_http_client
i_param_kind = lc_param_kind
).
CATCH cx_oa2c INTO lx_oa2c.
" (...)
TRY.
lo_a2c_client->execute_cc_flow( ).
CATCH cx_oa2c INTO lx_oa2c.
WRITE: 'Error calling create.'.
WRITE: / lx_oa2c->get_text( ).
RETURN.
ENDTRY.
" (...)
TRY.
lo_a2c_client->set_token(
EXPORTING
io_http_client = lo_http_client
i_param_kind = lc_param_kind
).
CATCH cx_oa2c INTO lx_oa2c.
WRITE: 'Error calling create.'.
WRITE: / lx_oa2c->get_text( ).
RETURN.
ENDTRY.
ENDTRY.
" (...)
lo_http_client->send(
EXPORTING
timeout = 9999
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3
http_invalid_timeout = 4
OTHERS = 5
).
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
lo_http_client->receive(
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3
OTHERS = 4
).
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
" (...)
lo_http_client->response->get_status(
IMPORTING
code = lv_status_code
reason = lv_reason
).
" (...)
IF lv_status_code = 200.
CALL METHOD lo_http_client->response->get_cdata
RECEIVING
data = lv_response_data.
ENDIF.
" (...)
lo_http_client->close(
EXCEPTIONS
http_invalid_state = 1
OTHERS = 2
).
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
FIELD-SYMBOLS:
<fs_table> TYPE ANY TABLE,
<fs_models_tab> TYPE ANY TABLE,
<fs_data> TYPE data,
<field_value> TYPE data.
" (...)
lv_response_data = |\{"d":{ lv_response_data }\}|.
CALL METHOD /ui2/cl_json=>deserialize
EXPORTING
json = lv_response_data
pretty_name = /ui2/cl_json=>pretty_mode-user
assoc_arrays = abap_true
CHANGING
data = lr_data.
" (...)
IF lr_data IS BOUND.
ASSIGN lr_data->* TO <fs_data>.
" ---------------------
" (...)
" ---------------------
ASSIGN COMPONENT 'd' OF STRUCTURE <fs_data> TO FIELD-SYMBOL(<fs_results>).
ASSIGN <fs_results>->* TO <fs_table>.
LOOP AT <fs_table> ASSIGNING FIELD-SYMBOL(<fs_table_row>).
ASSIGN <fs_table_row>->* TO FIELD-SYMBOL(<data>).
ASSIGN COMPONENT 'NAME' OF STRUCTURE <data> TO FIELD-SYMBOL(<field>).
IF <field> IS ASSIGNED.
lr_data = <field>.
ASSIGN lr_data->* TO <field_value>.
ls_parsed_result_story-name = <field_value>.
ENDIF.
UNASSIGN: <field>, <field_value>.
ASSIGN COMPONENT 'DESCRIPTION' OF STRUCTURE <data> TO <field>.
IF <field> IS ASSIGNED.
lr_data = <field>.
ASSIGN lr_data->* TO <field_value>...
" --------------
" (...)
" --------------
ASSIGN COMPONENT 'MODELS' OF STRUCTURE <data> TO FIELD-SYMBOL(<fs_models>).
ASSIGN <fs_models>->* TO <fs_models_tab>.
LOOP AT <fs_models_tab> ASSIGNING FIELD-SYMBOL(<fs_models_row>).
ASSIGN <fs_models_row>->* TO FIELD-SYMBOL(<data_models>).
" (...)
ls_parsed_result_stor_x_models = CORRESPONDING #( ls_parsed_result_story ).
" (...)
ASSIGN COMPONENT 'ID' OF STRUCTURE <data_models> TO <field>.
IF <field> IS ASSIGNED.
lr_data = <field>.
ASSIGN lr_data->* TO <field_value>.
ls_parsed_result_stor_x_models-model_id = <field_value>.
ENDIF.
UNASSIGN: <field>, <field_value>.
ASSIGN COMPONENT 'DESCRIPTION' OF STRUCTURE <data_models> TO <field>.
IF <field> IS ASSIGNED.
lr_data = <field>...
UNASSIGN: <field>, <field_value>.
" --------------
" (...)
" --------------
ASSIGN COMPONENT 'REMOTECONNECTION' OF STRUCTURE <data_models> TO FIELD-SYMBOL(<fs_models_conn>).
" Some models don't have remote connection information
IF <fs_models_conn> IS ASSIGNED.
ASSIGN <fs_models_conn>->* TO FIELD-SYMBOL(<fs_models_conn_struc>).
ASSIGN COMPONENT 'HOST' OF STRUCTURE <fs_models_conn_struc> TO <field>.
IF <field> IS ASSIGNED.
lr_data = <field>.
ASSIGN lr_data->* TO <field_value>.
ls_parsed_result_stor_x_models-model_remoteconnection_host = <field_value>.
ENDIF.
UNASSIGN: <field>, <field_value>.
ASSIGN COMPONENT 'NAME' OF STRUCTURE <fs_models_conn_struc> TO <field>.
IF <field> IS ASSIGNED.
lr_data = <field>.
ASSIGN lr_data->* TO <field_value>.
ls_parsed_result_stor_x_models-model_remoteconnection_name = <field_value>.
ENDIF.
UNASSIGN: <field>, <field_value>.
ENDIF.
UNASSIGN <fs_models_conn>.
" (...)
APPEND ls_parsed_result_stor_x_models TO lt_parsed_result.
CLEAR ls_parsed_result_stor_x_models.
" (...)
AT LAST.
CLEAR ls_parsed_result_story.
ENDAT.
ENDLOOP.
ENDLOOP.
ENDIF.
MODIFY lt_parsed_result FROM VALUE #(
request_date = sy-datum
request_time = sy-uzeit
)
TRANSPORTING
request_date
request_time
WHERE
id IS NOT INITIAL.
CALL FUNCTION 'RSDSO_WRITE_API'
EXPORTING
i_adsonm = lc_adso_sac_metadata
i_allow_new_sids = rs_c_true
i_activate_data = rs_c_false
it_data = lt_parsed_result
IMPORTING
e_lines_inserted = e_lines_inserted
e_cold_lines_inserted = e_cold_lines_inserted
et_msg = et_msg
e_upd_req_tsn = e_upd_req_tsn
et_act_req_tsn = et_act_req_tsn
EXCEPTIONS
write_failed = 1
activation_failed = 2
datastore_not_found = 3
OTHERS = 4.
rc = sy-subrc.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
9 | |
8 | |
5 | |
5 | |
4 | |
4 | |
4 | |
3 | |
3 | |
3 |