SAP MDG · REPLICATION INBOUND

How does the MDG vendor inbound proxy process records, validate them, update ERP, and write logs?

`ZCL_SI_MDG_VENDOR_INBOUND` follows a thin proxy pattern: it removes unwanted vendor records, validates the remaining payload with `MDG_VALIDATE_BPM_VENDOR`, sends valid records to `UPDATE_ERP_VENDOR`, and writes logs through `MDG_WRITE_LOG` when there are discarded, successful, or error records.

`ZCL_SI_MDG_VENDOR_INBOUND` follows a thin proxy pattern: it removes unwanted vendor records, validates the remaining payload with `MDG_VALIDATE_BPM_VENDOR`, sends valid records to `UPDATE_ERP_VENDOR`, and writes logs through `MDG_WRITE_LOG` when there are discarded, successful, or error records.

`ZCL_SI_MDG_VENDOR_INBOUND` uses a simple inbound flow: filter the incoming record set, validate the vendor payload, update ERP for validated data, and write logs when the processing result contains discarded, successful, or error items. The main runtime sequence is controlled by `ZII_SI_MDG_VENDOR_INBOUND~SI_MDG_VENDOR_INBOUND`, which delegates into `MDG_VALIDATE_BPM_VENDOR`, `UPDATE_ERP_VENDOR`, and `MDG_WRITE_LOG`.

Process flow

  1. Move the inbound payload into a local structure.
  2. Delete vendor records where `partner_te_supplier_acct_nbr` is initial or starts with `BPM`.
  3. Copy the cleaned vendor records into `lt_vendor`.
  4. Call `MDG_VALIDATE_BPM_VENDOR` to split the data into validated and discarded rows.
  5. If validated rows exist, call `UPDATE_ERP_VENDOR` to post them to ERP.
  6. If discarded, successful, or error rows exist, call `MDG_WRITE_LOG`.
  7. Keep the interface method thin and let helper methods handle business logic.

Referenced tables

ObjectPurpose
`ZMT_MDG_VENDOR`Inbound vendor message structure used to receive the proxy payload.
`ZDT_MDG_VENDOR_RECORD_TAB`Internal table type used for the vendor records after cleanup.
`ZMDG_BPM_VENDOR_RECORD_TAB`Internal table type used for validated, discarded, success, and error vendor rows.
`USMD_TS_CREQUEST`Change request table type referenced in the method, even though it is not used further in the shown logic.

ILLUSTRATIVE ABAP SAMPLE

Source ABAP example

Exact relevant implementation excerpt from the knowledge document.

1METHOD zii_si_mdg_vendor_inbound~si_mdg_vendor_inbound. 2 DATA: 3 ls_input TYPE zmt_mdg_vendor, 4 lt_vendor TYPE zdt_mdg_vendor_record_tab, 5 lt_discard_vendor TYPE zmdg_bpm_vendor_record_tab, 6 lt_error_vendor TYPE zmdg_bpm_vendor_record_tab, 7 lt_invalid_vendor TYPE zmdg_bpm_vendor_record_tab, 8 lt_success_vendor TYPE zmdg_bpm_vendor_record_tab, 9 lt_valid_vendor TYPE zmdg_bpm_vendor_record_tab, 10 lt_change_request TYPE usmd_ts_crequest. 11 12 ls_input = input. 13 14 DELETE ls_input-mt_mdg_vendor-record WHERE partner_te_supplier_acct_nbr IS INITIAL 15 OR partner_te_supplier_acct_nbr CP 'BPM*'. 16 17 IF ls_input IS NOT INITIAL. 18 19 lt_vendor = ls_input-mt_mdg_vendor-record. 20 21 IF lt_vendor[] IS NOT INITIAL. 22 23 IF lt_vendor[] IS NOT INITIAL. 24 me->mdg_validate_bpm_vendor( 25 EXPORTING 26 it_current_vendor = lt_vendor 27 IMPORTING 28 et_validated_vendor = lt_valid_vendor 29 et_discarded_vendor = lt_discard_vendor 30 ). 31 32 IF lt_valid_vendor IS NOT INITIAL. 33 me->update_erp_vendor( 34 EXPORTING 35 it_current_vendor = lt_valid_vendor 36 IMPORTING 37 et_success_vendor = lt_success_vendor 38 et_error_vendor = lt_error_vendor ). 39 ENDIF. 40 41 42 IF lt_discard_vendor IS NOT INITIAL OR 43 lt_success_vendor IS NOT INITIAL OR 44 lt_error_vendor IS NOT INITIAL. 45 46 me->mdg_write_log( 47 it_discarded_vendor = lt_discard_vendor 48 it_error_vendor = lt_error_vendor 49 it_success_vendor = lt_success_vendor 50 ). 51 ENDIF. 52 53 ENDIF. 54 ENDIF. 55 ENDIF. 56 57 58 ENDMETHOD.

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

Related questions and keywords

Alternative questions

  • How is `ZCL_SI_MDG_VENDOR_INBOUND` implemented for inbound vendor replication?
  • What is the runtime flow of `ZII_SI_MDG_VENDOR_INBOUND~SI_MDG_VENDOR_INBOUND`?
  • How do I implement vendor validation and ERP update in an MDG inbound proxy?

Possible questions

  • How does the vendor inbound proxy work in SAP MDG?
  • Which method is the entry point for the vendor inbound proxy?
  • What methods validate vendor data and write logs in MDG inbound processing?
  • How do I adapt the same inbound pattern for another MDG object?
  • How do I troubleshoot vendor inbound processing in SAP MDG?

Keywords

SAP MDGvendor inboundinbound proxyABAPchange requestvalidationERP updateapplication logZCL_SI_MDG_VENDOR_INBOUNDZII_SI_MDG_VENDOR_INBOUND~SI_MDG_VENDOR_INBOUNDMDG_VALIDATE_BPM_VENDORUPDATE_ERP_VENDORMDG_WRITE_LOG