Generate iDocs Using Change Pointers in SAP

This post aims to illustrate how to create outbound iDocs for master data changes in SAP using Change Pointers mechanism. When master data such as Material Master, Vendor Master, Customer Master, etc. changes in SAP, we can capture the changes using Change Pointers mechanism. Change Pointers are useful when you want to communicate SAP master data changes to external systems using iDocs.

Before we start talking about Change Pointers mechanism, you need to understand iDoc configuration steps.

To illustrate how Change Pointers are enabled for master data changes in SAP, let’s assume we need to communicate sales pricing conditions to external system (POS) using COND_A iDoc. When price condition values are changed or conditions are created, change point mechanism should be activated and outbound COND_A iDocs in basic type should be generated.

SAP Versions used in the illustration:

  • SAP S4 HANA Fashion 1709

Step by Step Guide on How to Activate Change Pointers for Price Conditions:

Step 1: Activate Change Pointer Globally – Transaction BD61.

Go to transaction BD61 and activate Change Pointers generally. This is a global setting which should be activated if you want to use Change Pointers in your SAP system.

Activate Change Pointers globally
Activate Change Pointers globally

Step 2: Activate Change Pointers for iDoc Message Type – Transaction BD50

Go to transaction BD50 and activate change pointers for Message Type COND_A.

Activate Change Pointers for Message Type COND_A
Activate Change Pointers for Message Type COND_A

Here we can decide for which Message Types Change Pointers should be activated. If you want to capture changes of Material Master activate Change Pointers for Message Type MATMAS or ARTMAS. If you want to distribute changes of Customer Master activate Change Pointers for CREMAS Message Type.

Step 3: Assign Change Point Items for Message Type – Transaction BD52

Go to transaction BD52 and select Message Type COND_A.

Field selection for COND_A message type
Field selection for COND_A message type

Assign table names and fields which change pointers should be activated for. Change pointers will be activated when values of these fields are changed and change log will be maintained in table BDCP2.

Assign table names and field names
Assign table names and field names

Step 4: Configure Partner Profile – Transaction WE20

Configure partner profile with outbound message type COND_A. In this example we are sending Price Condition changes to POS logical system.

configure partner profile in we20
Configure partner profile and assign message type in outbound parameters.

There are several other configuration steps to set up iDoc communication. Complete guide for iDoc configuration transactions can be found here.

Step 5: Configure ALE Distribution Model – Transaction Bd64

To distribute Master Data iDocs we need to configure Distribution Model using transaction BD64.

Create a Distribution Model View. Assign the Message Type, Sender SAP system name and receiver partner name using ‘Add Message Type’.

Create model view for COND_A outbound
Create new model view in BD64

Sender system is the Logical System name of the sender SAP system. Receiver is the name of the partner profile configured in the previous step using transaction we20.

Add new Message Type to Model View Bd64
Add new Message Type to Model View
Model View configuration completed - BD64
Model View configuration completed

Additionally, you can restrict iDocs being generated for certain Sales Organizations, Material Groups, Distribution Chains etc by creating Filter Groups. Double click on ‘filter set’ and create a filter group with filter criteria and values. Here I have restricted generation of iDocs only for US region.

Filter groups in distribution model bd64
Filter Groups in BD64

Step 6: Generate Outbound iDocs Using Standard Program RBDMIDOC – Transaction se38.

When you create or change conditions, change pointers mechanism will flag changes in change pointers table BDCP2. The program RBDMIDOC reads this table and creates master and communication iDocs. This program dynamically executes the Change Point read Function Module of Message Type selected in selection screen. Function Module for COND_A Message Type is MASTERIDOC_CREATE_SMD_COND_A.

RBDMIDOC  selection screen. Input Message Type
RBDMIDOC  selection screen. Input Message Type
RBDMIDOC program output.
RBDMIDOC program output.

In production system you can schedule this program to create outbound iDocs periodically.

Test Change Pointers:

To test change pointers, change condition values using transaction VK12.

VK12 - Change Condition values
VK12 – Change Condition values

Once you change values of conditions, changes will be flagged in table BDCP2. In older SAP versions change points were saved in tables BDCP and BDCPS, but in newer HANA versions data is aggregated to table BDCP2.

Change Pointers are initially created in null processed status in this table. Once you execute the program RBDMIDOC and iDocs are generated, processing status changes to ‘X’.

change pointers are flagged in table BDCP2. Ready to create iDocs BDCP, BDCPS
Change pointers ready to be processed
RBDMIDOC program output.
RBDMIDOC program output.

Using transaction we02, view the iDocs generated.

Master data iDoc generated from Change Pointers
Master data iDoc generated from Change Pointers

Change Pointers processing status updated.

Change Pointers table BDCP2 processing status updated. BDCP, BDCPS
Change Pointers table BDCP2 processing status updated.

Hope this guide will help you set up Change Pointers for master data changes in SAP. If you have any questions on creating outbound iDocs using change pointers, leave a comment below.

TECH GADGETS I USE EVERY DAY

These are some of the tech gadgets I use every day. If you make a purchase through these links I will earn a small comission at absolutely no extra cost to you.

39 thoughts on “Generate iDocs Using Change Pointers in SAP

      • Mister says:

        Hello,
        Thank you for this very rewarding article.
        However, I have a problem.
        I hope you can have the solution.
        In BD64, even though I put my filters on an organizational ELEC structure for example: the generated idocs are also generated on the GAZ organizational structures. Do you know where the problem is coming from?
        I admit that I am a little short of ideas regarding this problem 🙁

  1. Mister says:

    Hello,
    Thank you for this very rewarding article.
    However, I have a problem.
    I hope you can have the solution.
    In BD64, even though I put my filters on an organizational ELEC structure for example: the generated idocs are also generated on the GAZ organizational structures. Do you know where the problem is coming from?
    I admit that I am a little short of ideas regarding this problem 🙁

  2. Mister says:

    Hello,
    Thank you for this very rewarding article.
    However, I have a problem.
    I hope you can have the solution.
    In BD64, even though I put my filters on an organizational ELEC structure for example: the generated idocs are also generated on the GAZ organizational structures. Do you know where the problem is coming from?
    I admit that I am a little short of ideas regarding this problem 🙁 .

  3. Sean Lu says:

    Hi Mister,
    Thanks for your document, it’s really helpful.
    One further question looking for your advise.
    In the filter, are we able to filter by number ranges (from/to), instead of value list? For example, for the message type of customer master, we would like to set the filter by certain customer number ranges. Will that be possible?
    Thanks.

  4. kalyanam says:

    Hello
    i have added new field of material master in exist change pointer (functionality working for other field changes), when i ran bd21 it is showing 1 master idoc generated and ‘0 communication idoc created”

    what will be rootcause ?

  5. Handous says:

    Hello,
    Thank you for the article!
    However, I wanted to generate IDOCs automatocally (DEVMAS, MATMAS, BOMMAT, LOIPRO, etc.)
    I executed Tcode se38 and went to RBDMIDOC. When, I execute message type BOMMAT, I get “0 change poi. deleted before processing: 0 inbound events checked” and “0 master IDocs set up for message type BOMMAT” eventhough I already sent manually BOMMAT IDocs.

  6. Handous says:

    Hello,
    Thank you for the article!
    However, I wanted to generate IDOCs automatocally (DEVMAS, MATMAS, BOMMAT, LOIPRO, etc.)
    I executed Tcode se38 and went to RBDMIDOC. When, I execute message type BOMMAT, I get “0 change poi. deleted before processing: 0 inbound events checked” and “0 master IDocs set up for message type BOMMAT” eventhough I already sent manually BOMMAT IDocs.
    Thank you!

  7. Iqbal Khan says:

    Hi Fernandez,

    This is a excellent material on change pointers with complete information on settings to be done and testing the changes.
    This kind of explanation we rarely see in any blogs and links.
    I salute your explanation.

  8. Fabio says:

    Hello Fernando,
    thanks for your blog.
    I have this kind of problem: for a pricing condition record I close the item with the “Valid To date” = 10/10/2018 using VK12, then I create a new record with the same key information starting from 11/10/2018 to 31/12/9999. The system create just one IDOC with 2 segment E1KONH.
    Is it possible to have two Idoc each with one E1Konh segment only?
    Thanks in advance

      • Fabio says:

        Hi Fernando,
        thank you for your replay but I was not able to explain my problem..
        I’ll try to explain better.
        My problem it is not that each condition is populated in one E1Konh: this is OK for me.
        I would like to have two different IDOCs each with one segment E1KONH under the segment E1KOMG, instead of one single IDOC with 2 segment E1KONH under the same segment E1KOMG.
        Do you think , it is possible?
        Thanks, Fabio

  9. Shiva says:

    Hi, nice blog. I have similar issue, but not related to pricing. Its related to customer master. Do you know how to change customer master without triggering IDOCs ? Its for KNA1-KATR4 field.

  10. Parameswara Reddy says:

    Hello Fernando,
    My requirement is to delete the Change pointers entries(BDCP2) by validating the S.Org of Material from custom table. I have tired this BADI: IF_EX_BDCP_BEFORE_WRITE, here we are only getting material number, no S.Org. Can, you please help, how to achieve this requirement.
    Regards,
    Param

    • Isuru Fernando says:

      Hello Reddy,

      You are in the correct path. If you need to filter change pointers being updated in BDCP2 table use the BADI BDCP_BEFORE_WRITE. That is the standard method. If the required information is not available in the BADI, fetch them from SAP tables and validate.

      Cheers!
      Isuru

  11. Jo Robertson says:

    Hello – I am sending ODTF_CCTR IDOCs for SAP Success Factors integration.
    All was working fine. We then realised we were missing the Cost Centre Name field (Object KOSTL CSKSB-KTEXT) in the IDOC so it has been added to BD52. All works fine in the DEV system, the IDOC creates the extra segment field. Once I released the transport to our Quality system, I can see BD52 is updated with the extra line, and BDCP2 is updated also with changes to that field, yet when I generate an IDOC this segment is missing still.
    Is there some kind of refresh that is needed when BD52 is updated?
    Thanks for your help

    • Isuru Fernando says:

      Hello Jo,

      Seems like a strange behaviour since the functionality works in the development system. I would check if you have an active segment filter configuration done in quality system and compare the iDoc generating Functional Module versions between development and quality systems. If you do not find any discrepancy of change pointer configuration in development and quality systems, get help from an ABAP consultant to debug the iDoc generating Function Module.

      Hope that helps, update us if you find the reason.

      Cheers!
      Isuru

  12. Igor Nikolic says:

    Hello,
    Nice and informative blog. Well done.

    I have a few questions about the steps in the integration process that I could not find explained in detail. During the setting of the system at our company, we have encountered a few problems that we could not resolve. A lot of sources explain how to set the system, but there is no information about possible problems that may appear during the setting of the system. We were integrating SAP ERP system with SAP SuccessFactors using ODTF_CCTR message type. After following the all necessary steps we have stopped at transferring changes with the RBDMIDOC program. Change pointers were turned on, but we could not find ODTF_CCTR message type in the list. Is there any additional step that we have missed? Is it necessary to do some initial transfer before using the RBDMIDOC program?

    Regards,
    Igor

    • Isuru Fernando says:

      Hello Igor,

      I believe the iDoc ODTF_CCTR is included with the addOn ODTFINCC 600 (SP10) or higher. Double-check if you have the addon is installed in the ERP system.

      Cheers!
      Isuru

  13. Ginu says:

    Hello, We have triggered the IDOC using the program RBDMIDOC. the IDOC is generated sucessfully. but the process indicator flag is not getting set to X . Do we need to do any additional step for this?

    • Isuru Fernando says:

      Hi Ginu,

      If a change pointer is processed successfully the processed flag and the time of activation should be automatically updated in the BDCP2 table.

      No additional configuration required for this.

      Cheers!
      Isuru

  14. Alex says:

    Hi Isuru,
    Very thorough and informative article.
    Trying to get /ISDFPS/MDMA IDOC created via change pointers. Got the msg type added and activated in BD50 and MRP_AREA/MDMA/field entries created in BD52. Still have no MDMA records in BDCP2 table, neither /ISDFPS/MDMA type can be selected in BD21. Any idea what could be possibly wrong?
    Thanks very much,
    Alex

  15. Luiza says:

    Hello,
    I have activated change pointers for a reduced DEBMAS Idoc message type and I am trying to find out if it is possible to have the Idocs automatically created when customer master data is created/changed without having to run program RBDMIDOC. Our requirement is to have the information sent to the target system real time as soon as there is change in the customer master data. Thanks!

  16. Frederic says:

    Hi Isuru,
    you have a nice tutorial on activating the change pointer.
    I have a question for HRMD_A. We have an ERP and a HR sytem. ERP will update the OM and HR the employee master data. Dayly HR sends employee (P and C Object) changes to ERP and after that ERP sends OM (O, S, C [Infotype 1000] and C, O, S to C, K, O, P, S, US [Infotype 1001 with subtype Filter] to HR. The Change pointer now works nice with one exception:
    The Relations infotype is sending the key data (E1PITYP), but there is no data in it (E1P1001 is missing).
    When sending selected Objects with PFAL (RHALEINI) and insert mode, the IDoc is complete.

    Do you have any advise, where to check?
    PS: We have no filter set up in BD52

    Regards,
    Frederc

    • Frederic says:

      Hi Isuru,
      we have opened a SAP Ticket now, because the Relations are transportet correctly when they are saved again lateron. But they still are not fully transportet, when the Object is created (copied in PPOME) and relations are the same moment. This happens even if the change pointer table BDCP2 is filled correctly.

      Regards,
      Frederic

Leave a Reply

Your email address will not be published. Required fields are marked *

Get the latest tips and tricks on SAP!