下面这个程序演示了如何使用 SAP ABAP 程序,在 SAP C4C 系统里创建 Opportunity 数据:
REPORT ZCREATE_OPP. define insert_line. lv_body = lv_body && &1. lv_body = lv_body && cl_abap_char_utilities=>newline. end-of-DEFINITION. DATA:lo_http_client TYPE REF TO if_http_client, lv_status TYPE i, lt_fields TYPE tihttpnvp, lv_sysubrc TYPE sysubrc. CALL METHOD cl_http_client=>create_by_url EXPORTING url = 'https://sap.com/sap/c4c/odata/v1/c4codata/$batch' IMPORTING client = lo_http_client EXCEPTIONS argument_not_found = 1 plugin_not_active = 2 internal_error = 3 OTHERS = 4. ASSERT sy-subrc = 0. CALL METHOD lo_http_client->request->set_method( if_http_request=>co_request_method_post ). lo_http_client->request->set_header_field( name = 'Content-Type' value = 'multipart/mixed; boundary=batch_1' ). lo_http_client->request->set_header_field( name = 'x-csrf-token' value = 'fA_ZUYNfTF_Jdl_kff2G6A==' ). lo_http_client->request->set_header_field( name = 'Authorization' value = 'Basic 123456' ). DATA: lv_body TYPE string. insert_line '--batch_1'. insert_line 'Content-Type: multipart/mixed; boundary=changeset_1'. lv_body = lv_body && cl_abap_char_utilities=>cr_lf. * insert_line '--changeset_1'. insert_line 'Content-Type: application/http'. insert_line 'Content-Transfer-Encoding: binary'. lv_body = lv_body && cl_abap_char_utilities=>cr_lf. insert_line 'POST OpportunityCollection HTTP/1.1'. insert_line 'Content-Length: 5000'. insert_line 'Accept: application/json'. insert_line 'Content-Type: application/json'. lv_body = lv_body && cl_abap_char_utilities=>cr_lf. insert_line '{'. insert_line '"AccountID": "8000018122",'. insert_line '"OwnerID": "8000018122",'. insert_line `"Name": {"content": "Testing ticket creation via OData Jerry1"}`. insert_line '}'. insert_line '--changeset_1--'. lv_body = lv_body && cl_abap_char_utilities=>cr_lf. insert_line '--batch_1--'. lo_http_client->request->set_cdata( data = lv_body ). CALL METHOD lo_http_client->send EXCEPTIONS http_communication_failure = 1 http_invalid_state = 2 http_processing_failed = 3. ASSERT sy-subrc = 0. CALL METHOD lo_http_client->receive EXCEPTIONS http_communication_failure = 1 http_invalid_state = 2 http_processing_failed = 3. IF sy-subrc <> 0. CALL METHOD lo_http_client->get_last_error IMPORTING code = lv_sysubrc message = DATA(ev_message). WRITE: / |error occurred during receive data: { ev_message } | COLOR COL_NEGATIVE. RETURN. ENDIF. DATA(lv_json) = lo_http_client->response->get_cdata( ). BREAK-POINT.