We all came across the scenario where material master has to be sent to external system whenever there is a change in particular fields. So we generally achieve this by configuring the change pointers for message type and all the necessary configuration. Now we execute BD21 for our message type, which will generate the material master idoc only with mandatory segment and then only the segments which have changed fields.
That was simple and everything was a standard process but if there is a requirement to send the material master details in full even one field is changed then we cannot use this standard approach so we may end up in developing a custom function module to create a idoc with all the segments.
This document will explain a way to create material master using BD10 transaction, SAP has provided a several Explicit Enhancements in the program RBDSEMAT
we can make use of those enhancements to modify the selection screen and to call the function module CHANGE_POINTERS_READ before creating the idoc and CHANGE_POINTERS_STATUS_WRITE after creation of idoc.
Step 1 – We need to modify the selection screen so that a option is provided to create the idoc using change pointers
If you don not want the title of the frame, then no need to create a second enhancement which populate the frame title
Step 2 – Enhancement AT SELECTION-SCREEN OUTPUT, to populate field label GC_CHG and to retrieve the materials using CHANGE_POINTERS_READ
Step 3 – The above step will populate the materials which are not yet processed in the ECC system, Once the Idoc is generated for the relevant materials you have to change the status of change pointers
Result – Modified Selection Screen
Once you execute the program, Idoc gets created for all the Materials and then status of the change pointers are updated as ‘Processed’
Currently, I did this enhancement to trigger the MATMAS idoc. Code can be modified accordingly to process ARTMAS, MATCOR etc idocs