Skip to Content
Technical Articles

Migrating user object using Your own Functional Module in S/4HANA Migration Cockpit

In order to migrate user defined S/4HANA object new functional module should be created. In this blog post you will learn how to do it and use your own API in Migration Cockpit object.

SAP Note 2590165 – SAP S/4HANA Migration Cockpit – Creating Your own Function Modules could be good starting point in this journey. Main requirements for module are as follow:

  • The function module must not execute the COMMIT WORK command.
  • ABAP Dictionary structure BAPIRET2 must be used as a structure to return messages
  • Test run flag should be implemented

As example we will use database table ZSD_HISTCOND Price History

Field Key Data element Data Type Length Decimals Short Description
MANDT X MANDT CLNT 3 0 Client
MATNR X MATNR CHAR 40 0 Material Number
DATBI X KODATBI DATS 8 0 Validity end date of the condition record
DATAB KODATAB DATS 8 0 Validity start date of the condition record
KBETR KBETR_KOND CURR 11 2 Condition amount or percentage where no scale exists

Functional Module will be an interface to Migration Cockpit. Business logic, input data validation, warning and error message collecting is implemented in Class.

1 Create Table Type ZSDHISTZPR0_TT

Run SE11 t-code. Chose Data type option and Table type.  Set Line Type ZSD_HIST as your database table. Save and activate.

2 Create Class

Run SE80 t-code.

Create Class ZCL_SD_HISTZPR_GEN

Description          Creation Price History

Instance Generation Public

Define methods

Method Level Visibility Description
CREATE Static Method Public Create History of pricing records
SET_RETURN_MESSAGE Static Method Private Add return message

Define Parameters

Parameter Type Typing Method Associated Type
CREATE
IT_ZSDHISTCOND Importing Type ZSD_HISTCOND_TT
ET_MESSAGES Exporting Type BAPIRET2_T
SET_RETURN_MESSAGE
IV_TYPE Importing Type BAPI_MTYPE
IV_ID Importing Type SYMSGID
IV_NUMBER Importing Type SYMSGNO
IV_MESSAGE_V1 Importing Type SYMSGV
IV_MESSAGE_V2 Importing Type SYMSGV
IV_MESSAGE_V3 Importing Type SYMSGV
IV_MESSAGE_V4 Importing Type SYMSGV
ET_MESSAGES Exporting Type BAPIRET2_T

Define Text Symbols

Sym Text
001 Populate mandatory data
002 Record was created

Set source code

  METHOD create.
    DATA: ls_hist   TYPE zsd_histcond,
          lt_hist       TYPE TABLE OF zsd_histcond,
          ls_messages   TYPE bapiret2.
    LOOP AT it_zsdhistcond ASSIGNING FIELD-SYMBOL(<ls_zsdhistcond>).
      IF <ls_zsdhistcond>-matnr IS INITIAL OR
         <ls_zsdhistcond>-datbi IS INITIAL OR
         <ls_zsdhistcond>-datab IS INITIAL.

        set_return_message(
          EXPORTING
             iv_type = 'E'
             iv_id = 'SD024'
             iv_number = 000
             iv_message_v1 = TEXT-001
             iv_message_v2 = space
             iv_message_v3 = space
             iv_message_v4 = space
           IMPORTING
             et_messages = et_messages ).
        RETURN.
      ENDIF.

      ls_hist-matnr = <ls_zsdhistcond>-matnr.
      ls_hist-datbi = <ls_zsdhistcond>-datbi.
      ls_hist-datab = <ls_zsdhistcond>-datab.
      ls_hist-kbetr = <ls_zsdhistcond>-kbetr.
      APPEND ls_hist TO lt_hist.
    ENDLOOP.

    MODIFY zsd_histcond FROM TABLE lt_hist.

            set_return_message(
          EXPORTING
             iv_type = 'I'
             iv_id = 'SD024'
             iv_number = 000
             iv_message_v1 = TEXT-002
             iv_message_v2 = space
             iv_message_v3 = space
             iv_message_v4 = space
           IMPORTING
             et_messages = et_messages ).
  ENDMETHOD.

  METHOD SET_RETURN_MESSAGE.
  DATA: ls_return TYPE bapiret2.
    ls_return-type = iv_type.
    ls_return-id = iv_id.
    ls_return-number = iv_number.
    ls_return-message_v1 = iv_message_v1.
    ls_return-message_v1 = iv_message_v1.
    ls_return-message_v1 = iv_message_v1.
    ls_return-message_v1 = iv_message_v1.
    APPEND ls_return TO et_messages.
  ENDMETHOD.

 

3 Create Functional Module

Create Function Group ZSD_0001.

Create Function Module Z_SD_HISTCOND_CREATE.

Set export\import parameters

Import
Parameter Name Typing Associated Type Short Text
IV_TEST_RUN TYPE BAPIE1GLOBAL_DATA-TESTRUN Test run
IT_ZSDHISTCOND TYPE ZSD_HISTCOND_TT Price History
Export
ET_MESSAGES TYPE BAPIRET2_T Return messages

Populate source code

FUNCTION z_sd_histcond_create.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*"  IMPORTING
*"     REFERENCE(IV_TEST_RUN) TYPE  BAPIE1GLOBAL_DATA-TESTRUN
*"     REFERENCE(IT_ZSDHISTCOND) TYPE  ZSD_HISTCOND_TT
*"  EXPORTING
*"     REFERENCE(ET_MESSAGES) TYPE  BAPIRET2_T
*"----------------------------------------------------------------------
  zcl_sd_histcond_gen=>create(
    EXPORTING
      it_zsdhistcond = it_zsdhistcond
    IMPORTING
      et_messages = et_messages ).

  IF iv_test_run = 'X'.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  ENDIF.
ENDFUNCTION.

4 Create Migration Object

Run LTMC t-code. Create new Project

Name – User defined object Price History

Transfer Option – Transfer Data from File

Mass Transfer ID Z24

Run t-code LTMOM. Open created Project Mass Transfer ID Z24. Chose menu:

Project – Create Migration Object – User-Defined – Migrate Data Using Files\Staging Tables as shown on pictures below.

4.1 Define Source structure

Create source structure S_HISTCOND Price History

Key Name Data Type Length Decimal Places Column Header
X MATNR CHAR 40 Material
X DATBI DATS 8 Valid To Date
DATAB DATS 8 Valid-From Date
KBETR CURR 11 2 Price

 

4.2 Adjust structure mapping

Source structure Target Structure Access Type Mapping Type Source Cardinality Target Cardinality Data Type Path
S_HISTCOND HEADER LOOP AT TABLE 1:1 Relation 1 1 Default Path
S_HISTCOND R_IT_ZSDHISTCOND Mapping only 1:1 Relation 1 1 Not Applicable

4.3 Set up fields mapping

Parameter Parameter Value Rule Target Field
Target Structure R_IT_ZSDHISTCOND
SENDERFIELD S_HISTCOND-MATNR MOVE MATNR
SENDERFIELD S_HISTCOND-DATBI MOVE DATBI
SENDERFIELD S_HISTCOND-DATAB MOVE DATAB
SENDERFIELD S_HISTCOND-KBETR MOVE KBETR

Save Object (Ctrl+S) and generate run time object.

5 Migrate data

Run LTMC t-code. Chose your Project then Object. Download Template. Populate data as follow.

Go through migration steps.  Data is uploaded into the table.

Thereby we have created our own Functional Module and corresponding Migration Cockpit object. Now we can migrate custom object data.

1 Comment
You must be Logged on to comment or reply to a post.