DRF replication of business partners
Dear friends of SAP TM,
The first big challenge in many projects is setting up the master data, as many of you know. Depending on the system landscape, this can also mean replicating them from one SAP S/4HANA system to another.
Now, assume you have a so-called sidecar scenario with two SAP S/4HANA systems connected, whereas one of them is running as a SAP TM. Here can be some obstacles when replicating the business partners into the system running as SAP TM.
Imagine, you have set up your business partner ‘fully blown’ in an SAP S/4HANA with many roles and all kind of different data. Now, when you replicate this business partner into an SAP S/4HANA system running with ‘only’ SAP TM, this requires that this system is set up with all the necessary customizing and stuff to digest the business partner, also those settings which are far beyond TM. Otherwise you will run into error messages during replication.
Of course, you’ll hardly find anyone who is willing to maintain all those settings which are redundant for SAP TM and needed just for the sake of replicating the business partner. Assume for instance FI-specific information regarding accounting or some other complex data requiring some effort to be set up properly.
Now, the perfect solution would be a magic button like ‘replicate only the data relevant for TM’. But this is easier said than done as it’s not possible to define all the relevant business partner data for any kind of TM scenario.
Therefore, the promising approach is to filter the data to be replicated and thus reduce it to the minimal which is actually needed for the TM scenarios.
And there are the following two ways to do so:
At first you have the so-called segment filters in transaction DRFOUT, when doing the actual replication:
Here, you can already filter data on a rough level. This is efficient and will solve some issues. But it shows that this is sometimes not sufficient and a more specific filtering is needed.
Let’s make an example with a DRF replication via web service from and to an SAP S/4HANA system.
We have created the following business partner in the SAP S/4HANA source system:
You see, data for ‘Express station’ and ‘Train station’ is maintained here. This data is redundant for TM so I don’t want to replicate it. This might be a simple (or even stupid…) example, but it should be sufficient to show the way forward.
The issue is that there’s no such segment filter in transaction DRFOUT, as you can see above.
Therefore, I can use BAdI MDG_SE_BP_BULK_REPLRQ_OUT:
Here, I can manipulate the data in parameter ‘OUT’ and the outgoing web service with the data of the business partner is created accordingly. So, with a bit of ABAP programming skills, I’m easily able to filter out data like ‘Express station’, ‘Train station’ or any kind of data from a more reasonable use case. Furthermore, I can even change data when I definitely know how data should look like in the target system. But this, I would see as the expert mode…in most cases the deleting of data in parameter ‘OUT’ will be sufficient.
Of course, this is still a piece of work filtering all redundant data. But at least I can avoid the effort of setting up ‘not really necessary’ customizing and master data in the target system.
By the way…kudos to our colleagues in EWM who have captured this in their integration guide in note 3080907 (see chapter 126.96.36.199).
I hope this helps you in your projects. I appreciate your comments!
This is a very good article to know about.
I have a similar situation, where I need to push the current state of a particular BP-Vendor, on the vendor General Data, Bank Data sections ONLY from S4 HANA system to another SAP system on ECC.
Note: In S4 we use the BP and the ECC we use the Vendor Master.
Thank you for your notes.
Thanks for your comment!
I'm not a specialist for BP, I'm just using it in my work for TM and so did I with this BAdI. But at least the BAdI is contained in SAP S/4HANA and ECC so I would assume it can be used similarly from and to ECC.
The restriction to a particular BP is already when filtering in transaction DRFOUT.
For the vendor bank data, I don't find any respective filter in transaction DRFOUT. So I guess you would need to remove all the other data you don't want in the BAdI. But at least some pretty good pre-filtering could be achieved in DRFOUT i.e.by excluding all purchase organizatzions or sth. similar. This is a pretty smart way to filter redundant data by excluding data in DRFOUT.
Hi Michael, first of all this is a great blog post and I appreciate it very much 😊
I do have some questions though. I understand that this is only a blog post and not a support portal 😆 so don't feel any obligation to answer, I just thought asking won't hurt 😅
The scenario I'm facing at the moment is, that there is a need for several different filter sets i.e. the filters for each set target and filter for different BP types (&data of BPs) i.e. customer/vendor. I know that it is possible to create different variants for the filter within DRFOUT. This would fulfill the requirement of having different sets of filters. However this scenario does not work in the long run as one would have change mode (change pointer for automatic transfer) activated and not transfer the BPs by hand via DRFOUT. The manual filters are disabled and disregarded when using change mode.
As such, when doing this, the filter is pulled "globally" from DRFF and this does not fulfill our requirement, as one can only have one filter and not different sets. Have you had some similar requirement or anything like that before?
Am I misunderstanding something regarding the change mode / change pointers in DRFOUT?
Either way, great post and valuable information. Thanks for sharing! 🙂
Thanks for commenting! I appreciate that you like the blog post!
I have to admit that I'm also 'just' a user of the replication functionality from the perspective of SAP TM and it's not my home turf. So quite frankly, I've never set up a scenario with change pointers and I would also be eager to learn what filtering possibilities there are. I would assume there are pretty much the same ones than during initial (or manual) replication.
At least the BAdI should run I guess as it's right when the web service is compiled.
Thanks for this nice post.
I have a little issue if you can help me fix it please.
I have setup DRF to send confirmation message back each time Ariba send the replication request of a BP.
Today, I executed the transaction DRFOUT to migrate BP to Ariba but I selected "Manual" and then "Changes" rather than "Initialization" in the screen and now it seems that S/4 is synchronizing Ariba continuously. So my question : Is there a way to cancel this "auto" synchronization ?
Thank you for help.
Thanks for your comment!
Unfortunately I have to say that I'm from the application Transportation Management and have only experiences in replicating BP to our TM solution. So as I'm not an expert in DRF and never faced this situation I have no answer to this, I'm sorry.
Using this process with transaction DRFOUT, is it possible to use some EXIT or BADI to do some kind of treatment on the data, for example: not sending a partner that is type RV?
This can be done with the BAdI mentioned above.
Thank you, Michael.