Skip to Content
Technical Articles
Author's profile photo Brian Atkinson

Extending the Migration Cockpit “Material” Object with EXTENSIONIN for Subscription Data Fields


The requirement is to mass load new material master records of material type SUBS (Subscription Product) into a greenfield implementation of SAP S/4 BRIM (Billing and Revenue Innovation Management). The SAP S/4 Migration Cockpit is being used; however, the “Material” migration object does not include the Subscription Data fields: Billing Cycle, Billing Cycle Determ, and Assignment Schema.










This blog will show step-by-step how to extend the standard-delivered “Material” migration object in the SAP S/4HANA Migration Cockpit to handle the “Subscription Data” fields on the material master in an S/4 1909 BRIM system with S4CRM installed.

Areas of focus will be:

  • LTMOM (Migration Object Modeler)
  • SE18 (BAdI Builder)
  • LTMC (Migration Cockpit)

Note: Since the new materials are not being migrated from a legacy system and the number of records is small, staging tables will not be used. We will use the Migration Cockpit’s file upload feature.

Intended Audience:

Data Migration Analyst

ABAP Programmer (for the BAdI steps only)

System Setup:

Blog is based on the following system: On-premise SAP S/4HANA 1909 SP1 with S4CRM version 204 installed.

User Prerequisites:

While this blog is a little more advanced than other Migration Cockpit topics, it is still intended to be easy to follow for someone new to the Migration Cockpit. If you are new to this tool, then here is what you will need to get started:

Role Access

  • S/4 Migration – Data Transfer role (SAP_CA_DMC_MC_USER)
  • S/4 Migration – Data Modeling and Data Transfer (SAP_CA_DMC_MC_DEVELOPER)


The follow DMC services need to be activated by your System Admin.

Tcode SICF > default_host > sap > bc > webdynpro > sap



If you are new to the Migration Cockpit, then here are some excellent blogs to read before proceeding:


(1) From S/4, run Tcode LTMC to launch the Migration Cockpit
(2) Create a new project for data transfer from files

(3) Return to S/4
(4) Run Tcode LTMOM
(5) Using the Object Browser, set Object Browser to “Project” and search for Projects
(6) Select the project that the migration object will be assigned to

(7) From the menu, select Project > Create Migration Object > From Template > Migrate Data Using Files/Staging Tables
(8) From the “Create Migration Object from Template” popup, click on the “Next” button
(9) Select the migration object “Material”
(10) Click on the Continue button
(11) Migration Object Z_MATERIAL_nnn is created.
Z_ (prefix)
MATERIAL (migration object template)
_nnn (mass transfer id with an underscore prefixed to it)

In our example, the Migration Object is Z_MATERIAL_006.

(12) Double-click on Source Structures

(13) Note: The default names on “Source Structures” shows the structure descriptions, and not the technical names like shown above. If you want to switch between descriptions and technical names, then click on Settings > Technical Names On/Off
(14) Click on the Display<->Change button to switch from Display to Change mode
(15) Right-click on S_MARA (Basic Data) and then select “Append Structure to Lower Level”

(16) Add a Name and Description for the structure
(17) Click on the Continue button

(18) Structure gets added

(19) Add six (6) rows to the structure by clicking on the “Add Field” icon six (6) times

(20) Result shown below

Why six rows?

  • Row 1 will be MATERIAL. This will be required so that the migration cockpit knows which materials these extension fields are related to.
  • Rows 2-6 will be a copy of Structure BAPIPAREX

(21) Result shown below

(22) Select the MATERIAL field of the S_EXTENSIONIN structure
(23) Click on the “Foreign key relationship” button
(24) Click on the drop-down list on the “Field of Check Table or Literal” field, and select MATNR
(25) This creates a link between S_MARA and S_EXTENSIONIN
(26) No action needed on the STRUCTURE field
(27) Click on the Continue button

(28) No changes are needed to the Target Structures because EXTENSIONIN already exists

(29) Double-click on Structure Mapping
(30) Drag the S_EXTENSIONIN Source Structure to the EXTENSIONIN Target Structure



(31) Double-click on Field Mapping
(32) Map source fields MATERIAL, STRUCTURE, and VALUEAPART1 of S_EXTENSIONIN to the target fields of T28_EXTENSIONIN. Note: VALUEPART1 will be sufficient for the three SOM fields
(33) Click on the “Generate Runtime Object” button
The Migration Object Modeler (LTMOM) work is complete. Great job! The next step is to make use of the MAP_EXTENSIONIN method in the standard IF_EX_STNDRDMATERIAL_SAVE_DATA interface by creating an enhancement implementation from the STANDARDMATERIAL_SAVE_DATA BAdI. Get an ABAP resource to help with this. Below is a screenshot of the implementation, and sample source code.
After the Enhancement Implementation is active, proceed to LTMC.
(34) Run Tcode LTMC
(35) Open the project
(36) Find the “Material” object, and click on “Material”
(37) Click on the “Download Template” button
(38) Save the file
(39) Open the file in Excel
(40) Notice there is now an EXTENSIONIN tab
(41) Populate the Basic Data, Maintenance Status Setting, and Structure for Extensionin tabs
A few things to note on the Extensionin tab:
  • The second column (Structure name of BAPI table extension) has the constant value defined in the Enhancement Implementation – CRMS4S_SOM_MARA.
  • Column 3 has the concatenated values for Billing Cycle, Billing Cycle Determ, and Assignment Schema. These fields take a total of 10 characters, CHAR 4, CHAR4, and CHAR2, respectively. The values for those fields must start in the correct position.
    • Billing Cycle – Position 1
    • Billing Cycle Determ – Position 5
    • Assignment Schema – Position 9
(42) Save the file
(43) Return to the Migration Cockpit
(44) Click on Upload File
(45) Provide the file location and a description to be shown in the Migration Cockpit
(46) Click on the Upload button
(47) Select the file in the list of Source Files
(48) Click on the Activate button
(49) Click on the Start Transfer button
(50) Review the notifications from the Validate Data step
(51) If errors appear, then correct data and re-load; else, click Next to continue to the Convert Values step.
(52) On the Convert Values step, confirm the mapping values and click Next to run Simulate Import.
(53) Review the notifications from the Simulate Import step
(54) If errors appear, then correct data and re-load; else, click Next to continue to the Execute Import step.
(55) Review the notifications from the Execute Import step.
(56) If errors occur, then a delta file will be created. Fix the data in the delta file, and re-load the delta file.
(57) Click the Finish button.
(58) Checking SAP confirms that the data loaded required.
Thank you!

Assigned Tags

      You must be Logged on to comment or reply to a post.
      Author's profile photo Pankaj Kamani
      Pankaj Kamani

      Amazing article with very detailed description.


      Thanks a lot for creating this.

      Author's profile photo Ullas Kumari
      Ullas Kumari

      Very helpful, but when I tried with custom fields, only standard fields are getting updated, if anyone knows more details about this please share


      Thank you