SAP MDG · REPLICATION OUTBOUND
How do custom MDG outbound DRF classes handle customer and BP replication with mapping, filtering, and IDoc/proxy send?
Custom MDG outbound DRF classes typically follow the same lifecycle: constructor/initialization, `READ_COMPLETE_DATA` for scope reduction and suppression checks, `SEND_MESSAGE` for dispatch, and helper methods for key mapping and node filtering. In the customer and BP examples, the main focus is mapping hub/client identifiers, filtering replication scope by sales area or company code, and sending either IDocs or proxy payloads.
Custom MDG outbound DRF classes typically follow the same lifecycle: constructor/initialization, `READ_COMPLETE_DATA` for scope reduction and suppression checks, `SEND_MESSAGE` for dispatch, and helper methods for key mapping and node filtering. In the customer and BP examples, the main focus is mapping hub/client identifiers, filtering replication scope by sales area or company code, and sending either IDocs or proxy payloads.
Custom MDG outbound DRF implementations in this pattern are built around a small set of entry points and helper methods. The constructor or `CLASS_CONSTRUCTOR` stores the local business system, `IF_DRF_OUTBOUND~INITIALIZE` prepares the runtime object, `IF_DRF_OUTBOUND~READ_COMPLETE_DATA` removes data that must not be replicated, and `IF_DRF_OUTBOUND~SEND_MESSAGE` performs the actual send. In the customer and BP examples, the class also contains helper methods for key mapping, identifier translation, node filtering, and IDoc/proxy dispatch.
Process flow
- Identify the outbound scenario: customer IDoc-based replication or BP proxy-based replication.
- Read the constructor or class constructor to confirm the local business system is cached.
- Implement `IF_DRF_OUTBOUND~INITIALIZE` to create the runtime instance and return outbound metadata.
- Use `IF_DRF_OUTBOUND~READ_COMPLETE_DATA` to prune non-replicable objects such as duplicates, employees, or invalid assignments.
- Apply filter-object logic such as sales area, company code, role, identification, address usage, or tax category filtering.
- Read and write key mappings through the dedicated helper methods before dispatch.
- Send the payload using the appropriate `SEND_*` IDoc helper or BP proxy service.
- Handle exceptions, pending-message checks, and replication-status updates consistently.
Customizing table used by the customer outbound implementation for business-system/customer control
Stores customer-related customizing referenced by the outbound class.
Referenced tables
| Object | Purpose |
|---|---|
MDG_BS_ECC_CUSCP | Customizing table referenced by the customer outbound implementation. |
DRF_T_OBJ_REP_STA_FULL | DRF replication status structure used in the customer outbound flow. |
BDIKNA1KEY | IDoc-related business structure referenced in the customer outbound implementation. |
MDG_S_BUS_SYS_TECH | Business-system technical structure referenced by the customer outbound implementation. |
ILLUSTRATIVE ABAP SAMPLE
Source ABAP example: ZCL_MDG_BP_CUSTOMER_PROXY_DRF_FULL.abap
Exact relevant implementation excerpt from the knowledge document set.
1class ZCL_MDG_BP_CUSTOMER_PROXY_DRF definition
2 public
3 inheriting from CL_MDG_BS_BP_SUPER_DRF
4 create public .
5
6public section.
7
8*"* public components of class ZCL_MDG_BP_CUSTOMER_PROXY_DRF
9*"* do not include other source files here!!!
10 interfaces IF_DRF_OUTBOUND .
11
12 class-data GV_CURRENT_STATE type ABAP_BOOL .
13
14 class-methods CLASS_CONSTRUCTOR .
15protected section.
16
17 constants GC_ETERNAL_DATE type BU_DATTO value '99991231' ##NO_TEXT.
18 METHODS get_bp_bupa_outbound RETURNING VALUE(ro_bp_bupa_outbound) TYPE REF TO if_bs_bp_soa_service_impl_out.
19 METHODS get_bp_relship_outbound RETURNING VALUE(ro_bp_relship_outbound) TYPE REF TO if_bs_bp_soa_service_impl_out.
20private section.
21
22 data:
23 GT_MSG_LINK type sorted table of MDG_BS_BP_ADMIN_MESSAGE_DATA with unique key objkey .
24*"* private components of class ZCL_MDG_BP_CUSTOMER_PROXY_DRF
25*"* do not include other source files here!!!
26 data MV_RECEIVER_BSKEY type MDG_EXTR_BSKEY .
27 data MT_KEY_MAPPING type MDG_BS_BP_TT_MAPPING_KEYS .
28
29 methods RAISE_DRF_EXCEPTION
30 importing
31 !IR_EXCEPTION type ref to CX_ROOT
32 raising
33 CX_DRF_EXCEPTION .
34 methods ROLE_NODE_FILTER
35 importing
36 !IT_EXTERNAL_CRITERIA type RSDS_TRANGE
37 !IV_IGNORE_FILTER type ABAP_BOOL
38 changing
39 !CT_BS_BP_EXTERN type MDG_BS_BP_T_EXTERN
40 raising
41 CX_DRF_EXCEPTION .
42 methods SAME_REL_PARTNER
43 importing
44 !IS_RELATION type MDG_BS_BP_REL_S_EXTERN
45 returning
46 value(RV_SAME_TARGET_BP) type ABAP_BOOL .
47 methods GET_BP_KEY_MAPPING
48 importing
49 !IV_PARTNER type BU_PARTNER
50 exporting
51 !ES_KEY_MAPPING type MDG_BS_BP_S_MAPPING_KEYS .
52 methods IDENTIFICATION_NODE_FILTER
53 importing
54 !IT_EXTERNAL_CRITERIA type RSDS_TRANGE
55 !IV_IGNORE_FILTER type ABAP_BOOL
56 changing
57 !CT_BS_BP_EXTERN type MDG_BS_BP_T_EXTERN
58 raising
59 CX_DRF_EXCEPTION .
60 methods ADDRESS_USAGE_NODE_FILTER
61 importing
62 !IT_EXTERNAL_CRITERIA type RSDS_TRANGE
63 !IV_IGNORE_FILTER type ABAP_BOOL
64 changing
65 !CT_BS_BP_EXTERN type MDG_BS_BP_T_EXTERN
66 raising
67 CX_DRF_EXCEPTION .
68 methods TAXCAT_NODE_FILTER
69 importing
70 !IT_EXTERNAL_CRITERIA type RSDS_TRANGE
71 !IV_IGNORE_FILTER type ABAP_BOOL
72 changing
73 !CT_BS_BP_EXTERN type MDG_BS_BP_T_EXTERN
74 raising
75 CX_DRF_EXCEPTION .
76
77ENDCLASS.
78
79
80
81CLASS ZCL_MDG_BP_CUSTOMER_PROXY_DRF IMPLEMENTATION.
82
83
84METHOD ADDRESS_USAGE_NODE_FILTER.
85
86 DATA: lt_address_usage TYPE SORTED TABLE OF MDG_BS_BP_S_TB009 WITH UNIQUE KEY ADR_KIND.
87 DATA: lt_bupa_address TYPE bus_ei_bupa_address_t.
88 DATA: lt_bupa_address_usage TYPE BUS_EI_BUPA_ADDRESSUSAGE_t.
89 DATA: mo_bp_address_usage_filter TYPE REF TO cl_drf_filter_object.
90 DATA: lx_drf_exception TYPE REF TO cx_drf_exception.
91
92 FIELD-SYMBOLS: <ls_bupa_address> TYPE bus_ei_bupa_address.
93 FIELD-SYMBOLS: <ls_bupa_address_usage> TYPE bus_ei_bupa_addressusage.
94 FIELD-SYMBOLS: <ls_bs_bp_extern> TYPE mdg_bs_bp_s_extern.
95
96
97* Segement filter ADDRESS USAGE
98 TRY.
99 mo_bp_address_usage_filter = cl_drf_service_tools=>filter_object_factory(
100 iv_appl = ms_runtime_param-appl
101 iv_business_system = ms_runtime_param-business_system
102 iv_filter_object = '98698'
103 iv_outb_impl = ms_runtime_param-outb_impl
104 io_bal = ms_runtime_param-bal
105 iv_dlmod = ms_runtime_param-dlmod
106 iv_runmod = ms_runtime_param-runmod ).
107
108 CATCH cx_drf_exception INTO lx_drf_exception.
109 RAISE EXCEPTION TYPE cx_drf_exception
110 EXPORTING
111 previous = lx_drf_exception.
112 ENDTRY.
113
114
115* Initialise DRF ADDRESS USAGE filter
116 CALL METHOD mo_bp_address_usage_filter->init_objects
117 EXPORTING
118 iv_use_object_ref = 'X' "=> lt_address_usage is treaten as an reference
119 CHANGING "-> apply_filter will directly update into lt_address_usage
120 ct_objects = lt_address_usage.The remaining configuration, implementation details, and testing guidance continue from this answer more…
Related questions and keywords
Alternative questions
- How does a custom MDG outbound class decide what to send in DRF?
- How are BP/customer IDs mapped in an outbound DRF class?
- What are the typical methods in a custom MDG customer outbound implementation?
Possible questions
- How does the class determine the outbound customer ID?
- Which helper builds the IDoc payload for a specific object type?
- Which methods depend on DRF filter objects or MDG matching services?
- Where is key mapping read or written?
- Which outbound methods are relevant for customer master replication?