SAP MDG · REPLICATION OUTBOUND

How do I implement a GTS validation and update outbound proxy in ABAP using the generated request structure and technical fault handling?

Use a small ABAP report to normalize customer input, perform a simple validation, fill `zmt_partner_transfer_gts_req`, call `zco_si_partner_transfer_gts_in`, and convert `cx_ai_system_fault` into a readable message.

Use a small ABAP report to normalize customer input, perform a simple validation, fill `zmt_partner_transfer_gts_req`, call `zco_si_partner_transfer_gts_in`, and convert `cx_ai_system_fault` into a readable message.

Use a report as a test harness: copy the customer input into local variables, uppercase name and address values, perform a basic validation check, build the nested GTS request structure, and call the generated proxy. The example pattern also shows how to handle `cx_ai_system_fault` and return a readable message.

Process flow

  1. Copy the incoming partner and customer values into local variables.
  2. Normalize company name, customer name, street, street supplement, and city to uppercase.
  3. Run a basic validation check before the update step.
  4. Populate the nested `zmt_partner_transfer_gts_req` request structure field by field.
  5. Set the technical control flags for the outbound update.
  6. Instantiate `zco_si_partner_transfer_gts_in` and call `si_partner_transfer_gts_inboun`.
  7. Catch `cx_ai_system_fault` and convert the technical text into a readable message.
  8. Output the validation result and final proxy status message.

Referenced tables

ObjectPurpose
zmdg_os_returnValidation result structure used to return a simple status and message.
zmt_partner_transfer_gts_reqGenerated outbound GTS request structure.
zmt_partner_transfer_gts_resGenerated outbound GTS response structure.

ILLUSTRATIVE ABAP SAMPLE

Source ABAP example

Exact relevant implementation excerpt from the knowledge document.

1"============================================================================== 2" Generic ABAP Example for GTS Validation and Update 3" Purpose: 4" - Show the end-to-end flow for validating customer data for GTS 5" - Build the outbound GTS request structure from customer and address data 6" - Call the generated proxy and handle technical exceptions 7" - Keep the code generic so it can be used as a pattern for similar proxy calls 8" Flow: 9" - Normalize input values 10" - Fill a request structure with nested partner data 11" - Optionally validate the business data before the update 12" - Create and call the proxy 13" - Catch system faults and convert them into a readable message 14"============================================================================== 15 16REPORT zsam_validate_update_gts_generic. 17 18PARAMETERS: 19 p_reqid TYPE char3, 20 p_soldto TYPE kunnr, 21 p_partner TYPE kunnr, 22 p_bukrs TYPE bukrs, 23 p_name1 TYPE name1_gp, 24 p_name2 TYPE name2_gp, 25 p_stras TYPE stras_gp, 26 p_stras2 TYPE stras_gp, 27 p_city TYPE ort01_gp, 28 p_state TYPE regio, 29 p_country TYPE land1, 30 p_postal TYPE pstlz, 31 p_taxid TYPE stcd1, 32 p_fax TYPE telfx, 33 p_tel1 TYPE telf1, 34 p_tel2 TYPE telf2, 35 p_guest TYPE char1 DEFAULT space. 36 37DATA: 38 ls_validate_return TYPE zmdg_os_return, 39 ls_gts_request TYPE zmt_partner_transfer_gts_req, 40 ls_gts_response TYPE zmt_partner_transfer_gts_res, 41 lo_proxy TYPE REF TO zco_si_partner_transfer_gts_in, 42 lv_message TYPE string, 43 lv_partner TYPE kunnr, 44 lv_company_name TYPE name1_gp, 45 lv_customer_name TYPE name2_gp, 46 lv_street TYPE stras_gp, 47 lv_street2 TYPE stras_gp, 48 lv_city TYPE ort01_gp. 49 50START-OF-SELECTION. 51 52 " Keep a local working copy of the user input. 53 lv_partner = p_partner. 54 lv_company_name = p_name1. 55 lv_customer_name = p_name2. 56 lv_street = p_stras. 57 lv_street2 = p_stras2. 58 lv_city = p_city. 59 60 " Normalize the strings so the receiver gets stable values. 61 TRANSLATE lv_company_name TO UPPER CASE. 62 TRANSLATE lv_customer_name TO UPPER CASE. 63 TRANSLATE lv_street TO UPPER CASE. 64 TRANSLATE lv_street2 TO UPPER CASE. 65 TRANSLATE lv_city TO UPPER CASE. 66 67 " Validate the business data before the update step. 68 " In a real implementation this is where country, name, and address checks would run. 69 IF lv_company_name IS INITIAL AND lv_customer_name IS INITIAL. 70 ls_validate_return-type = 'E'. 71 ls_validate_return-message = 'Customer name is missing'. 72 ELSE. 73 ls_validate_return-type = 'S'. 74 ls_validate_return-message = 'Validation passed'. 75 ENDIF. 76 77 " Build the GTS payload using a nested request structure. 78 " The mapping below mirrors the live utility pattern, but stays generic and readable. 79 ls_gts_request-mt_partner_transfer_gts_req-partner_inbound_gts-partner-partner_key-partner_id = lv_partner. 80 ls_gts_request-mt_partner_transfer_gts_req-partner_inbound_gts-partner-partner_key-partner_typ = '02'. 81 ls_gts_request-mt_partner_transfer_gts_req-partner_inbound_gts-partner-partner_key-org_logsystem = sy-sysid. 82 83 ls_gts_request-mt_partner_transfer_gts_req-partner_inbound_gts-partner-partner_head-extern_no = lv_partner. 84 ls_gts_request-mt_partner_transfer_gts_req-partner_inbound_gts-partner-partner_head-partn_cat = '2'. 85 ls_gts_request-mt_partner_transfer_gts_req-partner_inbound_gts-partner-partner_head-partnerrole = 'SLLCPC'. 86 87 ls_gts_request-mt_partner_transfer_gts_req-partner_inbound_gts-partner-central-partnerexternal = lv_partner. 88 ls_gts_request-mt_partner_transfer_gts_req-partner_inbound_gts-partner-central-searchterm1 = lv_company_name(10). 89 90 ls_gts_request-mt_partner_transfer_gts_req-partner_inbound_gts-partner-central_org-name1 = lv_company_name. 91 ls_gts_request-mt_partner_transfer_gts_req-partner_inbound_gts-partner-central_org-name2 = lv_customer_name. 92 ls_gts_request-mt_partner_transfer_gts_req-partner_inbound_gts-partner-central_org-name4 = lv_street2. 93 94 ls_gts_request-mt_partner_transfer_gts_req-partner_inbound_gts-partner-partner_address-standardaddress = abap_true. 95 ls_gts_request-mt_partner_transfer_gts_req-partner_inbound_gts-partner-partner_address-city = lv_city. 96 ls_gts_request-mt_partner_transfer_gts_req-partner_inbound_gts-partner-partner_address-postal_code = p_postal. 97 ls_gts_request-mt_partner_transfer_gts_req-partner_inbound_gts-partner-partner_address-street = lv_street. 98 ls_gts_request-mt_partner_transfer_gts_req-partner_inbound_gts-partner-partner_address-str_suppl1 = lv_street2. 99 ls_gts_request-mt_partner_transfer_gts_req-partner_inbound_gts-partner-partner_address-country = p_country. 100 ls_gts_request-mt_partner_transfer_gts_req-partner_inbound_gts-partner-partner_address-region = p_state. 101 ls_gts_request-mt_partner_transfer_gts_req-partner_inbound_gts-partner-partner_address-langu = 'EN'. 102 103 ls_gts_request-mt_partner_transfer_gts_req-partner_inbound_gts-partner-partner_ad1vl-name1 = lv_company_name. 104 ls_gts_request-mt_partner_transfer_gts_req-partner_inbound_gts-partner-partner_ad1vl-name2 = lv_customer_name. 105 ls_gts_request-mt_partner_transfer_gts_req-partner_inbound_gts-partner-partner_ad1vl-name4 = lv_street2. 106 ls_gts_request-mt_partner_transfer_gts_req-partner_inbound_gts-partner-partner_ad1vl-city = lv_city. 107 ls_gts_request-mt_partner_transfer_gts_req-partner_inbound_gts-partner-partner_ad1vl-langu = 'EN'. 108 ls_gts_request-mt_partner_transfer_gts_req-partner_inbound_gts-partner-partner_ad1vl-postl_cod1 = p_postal. 109 ls_gts_request-mt_partner_transfer_gts_req-partner_inbound_gts-partner-partner_ad1vl-street = lv_street. 110 ls_gts_request-mt_partner_transfer_gts_req-partner_inbound_gts-partner-partner_ad1vl-country = p_country. 111 ls_gts_request-mt_partner_transfer_gts_req-partner_inbound_gts-partner-partner_ad1vl-region = p_state. 112 113 " Set the technical flags that control whe

The remaining configuration, implementation details, and testing guidance continue from this answer more…

Related questions and keywords

Alternative questions

  • How do I build and call the GTS outbound proxy from customer data?
  • How do I validate customer data before sending it to GTS?
  • How do I handle technical exceptions in a GTS proxy call?

Possible questions

  • What is the ABAP pattern for validating and updating GTS data?
  • Which proxy class and request structure are used for GTS outbound processing?
  • How do I map partner, address, and control flags into the GTS request?
  • How do I catch and display GTS system faults in ABAP?
  • What is the recommended test-harness report for GTS proxy execution?

Keywords

SAP MDGGTSoutbound proxyABAPvalidationupdatecx_ai_system_faultgenerated proxybusiness partnercustomer dataaddress mappingtechnical flags