SAP MDG · CONSOLIDATION

How can CL_MDC_DATA_BP be enhanced to support custom Business Partner consolidation tables in SAP MDG?

Example Code: Consolidation Custom Table BP Customer Supplier

This document describes two custom SAP MDG Business Partner consolidation classes:

SAP MDG Consolidation – Custom BP Data and Model Classes

Scope

This document describes two custom SAP MDG Business Partner consolidation classes:

1. ZCL_MDC_DATA_BP – data-layer extension for custom BP consolidation objects. 2. ZCL_MDC_MODEL_BP – model-layer extension for reading, mapping, validating, and saving custom BP data.

The source has been cleaned so that comments contain only functional information. Personal names, project/change-history metadata, transport references, and defect identifiers have been removed.

Technical note: DDIC fields and framework attributes named CLIENT, MANDT, active_client_field, or client_field are retained because they are executable technical elements of the implementation, not documentary references to an implementation customer.

1. Class ZCL_MDC_DATA_BP

1.1 Purpose

ZCL_MDC_DATA_BP extends SAP standard class CL_MDC_DATA_BP to provide data-layer metadata and active-record handling for custom Business Partner consolidation objects.

The class primarily supports:

- Custom supplier tax-classification data. - Custom address-remark data. - Custom duplicate-detection data. - Mapping between active tables, source tables, process tables, key structures, attribute structures, and DDIC table types.

1.2 Inheritance

- Superclass: CL_MDC_DATA_BP - Redefined interface: IF_MDC_DATA

The standard superclass behavior is retained as the fallback for objects that are not explicitly handled by the custom class.

1.3 Main Methods

IF_MDC_DATA~APPEND_ACTIVE_RECORDS

Appends active-area records for source keys participating in the consolidation process.

Current explicit routing:

- ZMDG_T_IDPLBPTAX → APPEND_SUPPLIER_DATA - ZMDG_T_ADRT → APPEND_ADDRESS_DATA - Other objects → standard superclass implementation

APPEND_ZNPSCDUP_DATA

Reads duplicate-related active data by Business Partner number and appends corresponding records to the generic MDC record buffer.

The method joins:

- BUT000 - ZMDG_BP_ZNPSCDUP

using PARTNER, and maps the Business Partner number to SOURCE_ID.

Implementation note: the method is defined and implemented, but the current APPEND_ACTIVE_RECORDS method does not contain an explicit ZMDG_BP_ZNPSCDUP branch calling it.

IF_MDC_DATA~ATTRIBUTE_STRUCTURE_NAME

Returns the custom attribute structure associated with a custom consolidation object.

Custom mappings include:

- ZMDG_T_IDPLBPTAX → ZMDC_ZMDG_T_IDPLBPTAX_ATTRIBUT - ZMDG_BP_ZNPSCDUP → ZMDC_ZMDG_BP_ZNPSCDUP_ATTR

IF_MDC_DATA~KEY_STRUCTURE_NAME

Returns the corresponding DDIC key structure.

Custom mappings include:

- ZMDG_T_IDPLBPTAX → ZMDC_ZMDG_T_IDPLBPTAX_KEY - ZMDG_BP_ZNPSCDUP → ZMDC_ZMDG_BP_ZNPSCDUP_KEY

IF_MDC_DATA~TABLE_NAME_BY_TYPE

Defines source/process persistence tables and key-field metadata for custom MDC objects.

For ZMDG_T_IDPLBPTAX:

- Source table: ZZMDG_T_IDPL_SRC - Process table: ZZMDG_T_IDPL_PRC - Source identifier: LIFNR

For ZMDG_BP_ZNPSCDUP:

- Source table: ZMDG_BP_DUP_SRC - Process table: ZMDG_BP_DUP_PRC - Source identifier: PARTNER

IF_MDC_DATA~TABLE_TYPE_NAME_BY_TYPE

Provides the DDIC table-type names corresponding to source and process tables.

1.4 Functional Flow

Source Keys
    |
    v
IF_MDC_DATA~APPEND_ACTIVE_RECORDS
    |
    +-- Tax Classification --> APPEND_SUPPLIER_DATA
    |
    +-- Address Remarks -----> APPEND_ADDRESS_DATA
    |
    +-- Other Objects -------> Standard CL_MDC_DATA_BP

The metadata methods independently resolve the DDIC structures and persistence objects required by the MDC framework.

1.5 Complete Cleaned Code – ZCL_MDC_DATA_BP

CLASS zcl_mdc_data_bp DEFINITION
  PUBLIC
  INHERITING FROM cl_mdc_data_bp
  CREATE PUBLIC.

  PUBLIC SECTION.

    METHODS if_mdc_data~append_active_records
      REDEFINITION.
    METHODS if_mdc_data~attribute_structure_name
      REDEFINITION.
    METHODS if_mdc_data~key_structure_name
      REDEFINITION.
    METHODS if_mdc_data~table_name_by_type
      REDEFINITION.
    METHODS if_mdc_data~table_type_name_by_type
      REDEFINITION.

  PROTECTED SECTION.

    METHODS append_znpscdup_data
      IMPORTING
        !it_bp_source_keys TYPE tt_bp_source_keys.

  PRIVATE SECTION.

ENDCLASS.


CLASS zcl_mdc_data_bp IMPLEMENTATION.

  METHOD append_znpscdup_data.

    FIELD-SYMBOLS <fss_records>  TYPE STANDARD TABLE.
    FIELD-SYMBOLS <fss_znpscdup> TYPE zmdc_tt_zmdg_bp_znpscdup_prc.

    ASSIGN me->records->* TO <fss_records>.

    IF <fss_records> IS ASSIGNED.
      SELECT a~partner AS source_id,
             b~*
        APPENDING CORRESPONDING FIELDS OF TABLE @<fss_records>
        FROM but000 AS a
        INNER JOIN zmdg_bp_znpscdup AS b
          ON b~partner = a~partner
        FOR ALL ENTRIES IN @it_bp_source_keys
        WHERE a~partner = @it_bp_source_keys-source_id.
    ENDIF.

    ASSIGN me->records->* TO <fss_znpscdup>.

  ENDMETHOD.


  METHOD if_mdc_data~append_active_records.

    DATA lt_bp_source_keys TYPE tt_bp_source_keys.

    CHECK me->process_relevant = abap_true.
    CHECK it_source_keys IS NOT INITIAL.

    lt_bp_source_keys = CONV #( it_source_keys ).

    CASE me->table_name.
      WHEN 'ZMDG_T_IDPLBPTAX'.
        me->append_supplier_data( lt_bp_source_keys ).

      WHEN 'ZMDG_T_ADRT'.
        me->append_address_data( lt_bp_source_keys ).

      WHEN OTHERS.
        super->if_mdc_data~append_active_records( it_source_keys ).
    ENDCASE.

  ENDMETHOD.


  METHOD if_mdc_data~attribute_structure_name.

    CALL METHOD super->if_mdc_data~attribute_structure_name
      EXPORTING
        iv_name_prefixing = iv_name_prefixing
      RECEIVING
        rv_structure_name = rv_structure_name.

    CASE me->table_name.
      WHEN 'ZMDG_T_IDPLBPTAX'.
        rv_structure_name = 'ZMDC_ZMDG_T_IDPLBPTAX_ATTRIBUT'.

      WHEN 'ZMDG_BP_ZNPSCDUP'.
        rv_structure_name = 'ZMDC_ZMDG_BP_ZNPSCDUP_ATTR'.

      WHEN OTHERS.
    ENDCASE.

  ENDMETHOD.


  METHOD if_mdc_data~key_structure_name.

    CALL METHOD super->if_mdc_data~key_structure_name
      EXPORTING
        iv_name_prefixing = iv_name_prefixing
      RECEIVING
        rv_structure_name = rv_structure_name.

    CASE me->table_name.
      WHEN 'ZMDG_T_IDPLBPTAX'.
        rv_structure_name = 'ZMDC_ZMDG_T_IDPLBPTAX_KEY'.

      WHEN 'ZMDG_BP_ZNPSCDUP'.
        rv_structure_name = 'ZMDC_ZMDG_BP_ZNPSCDUP_KEY'.

      WHEN OTHERS.
    ENDCASE.

  ENDMETHOD.


  METHOD if_mdc_data~table_name_by_type.

    CALL METHOD super->if_mdc_data~table_name_by_type
      EXPORTING
        iv_type       = iv_type
      RECEIVING
        rv_table_name = rv_table_name.

    CASE me->table_name.

      WHEN 'ZMDG_T_IDPLBPTAX'.
        me->active_client_field = 'MANDT'.
        me->client_field        = 'CLIENT'.
        me->source_id_field     = 'LIFNR'.

        CASE iv_type.
          WHEN if_mdc_data=>gc_type-source.
            rv_table_name = 'ZZMDG_T_IDPL_SRC'.

          WHEN if_mdc_data=>gc_type-process.
            rv_table_name = 'ZZMDG_T_IDPL_PRC'.
        ENDCASE.

      WHEN 'ZMDG_BP_ZNPSCDUP'.
        me->active_client_field = 'CLIENT'.
        me->client_field        = 'CLIENT'.
        me->source_id_field     = 'PARTNER'.

        CASE iv_type.
          WHEN if_mdc_data=>gc_type-source.
            rv_table_name = 'ZMDG_BP_DUP_SRC'.

          WHEN if_mdc_data=>gc_type-process.
            rv_table_name = 'ZMDG_BP_DUP_PRC'.
        ENDCASE.

    ENDCASE.

  ENDMETHOD.


  METHOD if_mdc_data~table_type_name_by_type.

    CALL METHOD super->if_mdc_data~table_type_name_by_type
      EXPORTING
        iv_type            = iv_type
      RECEIVING
        rv_table_type_name = rv_table_type_name.

    CASE me->table_name.

      WHEN 'ZMDG_T_IDPLBPTAX'.
        CASE iv_type.
          WHEN if_mdc_data=>gc_type-source.
            rv_table_type_name = 'ZMDC_TT_ZZMDG_T_IDPL_SRC'.

          WHEN if_mdc_data=>gc_type-process.
            rv_table_type_name = 'ZMDC_TT_ZZMDG_T_IDPL_PRC'.
        ENDCASE.

      WHEN 'ZMDG_BP_ZNPSCDUP'.
        CASE iv_type.
          WHEN if_mdc_data=>gc_type-source.
            rv_table_type_name = 'ZMDC_TT_ZMDG_BP_ZNPSCDUP_SRC'.

          WHEN if_mdc_data=>gc_type-process.
            rv_table_type_name = 'ZMDC_TT_ZMDG_BP_ZNPSCDUP_PRC'.
        ENDCASE.

    ENDCASE.

  ENDMETHOD.

ENDCLASS.

2. Class ZCL_MDC_MODEL_BP

2.1 Purpose

ZCL_MDC_MODEL_BP extends SAP standard class CL_MDC_MODEL_BP and adds model-level handling for custom Business Partner consolidation data.

The class performs five main responsibilities:

1. Reads custom process data into model references. 2. Exposes MDC data objects to the model. 3. Maps custom consolidation data into the CVI external API structure. 4. Performs configurable processing before standard model validation. 5. Saves custom active-area data after Business Partner activation.

2.2 Inheritance

- Superclass: CL_MDC_MODEL_BP - Redefined interface method: IF_MDC_MODEL~CHECK

The class also redefines several protected framework methods used by BP consolidation processing.

2.3 Main Data References

The model keeps process-data references for:

- ZMDG_T_IDPLBPTAX - ZMDG_T_ADRT - BUT020 - ZMDG_BP_ZNPSCDUP

These references are populated by READ_ALL_DATA and subsequently consumed during API mapping and active-data persistence.

2.4 Main Methods

EXPOSE_DATA_OBJECT

Calls the standard model implementation first.

For custom objects that are managed explicitly by this class, dynamic member exposure is bypassed. Other data objects continue through the generic superclass-compatible dynamic member assignment.

IF_MDC_MODEL~CHECK

Performs a configurable VIES-check decision before delegating to the SAP standard model check.

Functional sequence:

1. Determine the current master-data-change process type. 2. Check configuration in ZMDG_C_UTILITY. 3. If the process type is configured to skip VIES validation, call BUPA_SKIP_VIES_CHECK. 4. Execute the standard CL_MDC_MODEL_BP validation.

The standard model check remains the primary validation routine.

READ_ALL_DATA

Executes the standard read and explicitly loads process data for:

- Supplier tax classification - Address remarks - BP address mapping - Duplicate-related custom data

MAP_EXTENSIONS_2API

Extends the CVI API payload generated by the superclass.

It handles three custom areas:

Supplier Tax Classification

- Filters process records for the current process key. - Matches supplier company-code data. - Maps validity dates and payment type. - Sets API insert/modify tasks. - Sets change indicators.

Communication Remarks

Maps address communication remarks using:

- Address number from custom remark data. - Address GUID relationship from BUT020. - CVI address communication nodes.

Supported communication types include:

- E-mail - Telephone - Fax

The method inserts or updates the first remark record and sets the corresponding DATAX indicators.

Duplicate-Related BP Extension

Maps custom duplicate data into the BP API extension structure.

Mapped values include:

- Master identifier - Duplicate flag - Additional duplicate-related indicators - Business Partner number

The API task is derived from the BP object task.

SAVE_BUSINESS_PARTNER_ACTIVE

Executes the standard BP active save and then synchronizes custom active data.

Its main responsibilities are:

- Optionally suppress BP replication for configured process types. - Collect successful CVI target records. - Resolve BP/vendor keys. - Read the current tax-classification database state. - Apply insert, update, delete, and modify semantics. - Call Z_MDG_UPDATE_TAX_TYPE. - Invoke SAVE_ZNPSCDUP_ACTIVE.

SAVE_ZNPSCDUP_ACTIVE

Synchronizes custom duplicate data to ZMDG_BP_ZNPSCDUP.

Functional sequence:

1. Collect successfully processed CVI BP records. 2. Read current duplicate data from the database. 3. Resolve the active Business Partner number. 4. Read process records for the current source ID. 5. Build the desired active-state records. 6. Merge new/changed records into the current state. 7. Call ZMDG_UPDATE_ZNPSCDUP with current and database states.

2.5 External Dependencies

The implementation directly depends on the following custom or SAP objects:

Custom Tables / Views / Structures

- ZMDG_T_IDPLBPTAX - ZMDG_T_ADRT - ZMDG_BP_ZNPSCDUP - ZMDG_BP_DUP_PRC - ZMDG_C_UTILITY - ZZMDG_T_IDPL_PRC - Custom MDC table types and CVI extension structures

SAP Objects

- BUT000 - BUT020 - C_MASTERDATACHANGEPROCESS - CL_MDC_MODEL_BP - CVI external BP structures - BUPA_NUMBERS_GET - BUPA_SKIP_VIES_CHECK

Custom Function Modules / Classes

- Z_MDG_UPDATE_TAX_TYPE - ZMDG_UPDATE_ZNPSCDUP - ZCL_MDG_REPL_CONTROL_FRMWORK

2.6 High-Level Processing Flow

READ_ALL_DATA
    |
    v
Custom process-data references
    |
    v
MAP_EXTENSIONS_2API
    |
    +--> Tax classification
    +--> Communication remarks
    +--> Duplicate extension
    |
    v
Standard / configurable validation
    |
    v
SAVE_BUSINESS_PARTNER_ACTIVE
    |
    +--> Standard BP activation
    +--> Custom tax synchronization
    +--> Duplicate-data synchronization

2.7 Complete Cleaned Code – ZCL_MDC_MODEL_BP

class ZCL_MDC_MODEL_BP definition

  public

  inheriting from CL_MDC_MODEL_BP

  create public .


public section.


  methods IF_MDC_MODEL~CHECK

    redefinition .

protected section.


  data GR_ZMDG_T_IDPLBPTAX_PRC type ref to ZMDC_TT_ZZMDG_T_IDPL_PRC .

  data GR_ZMDG_T_ADRT_PRC type ref to ZMDC_TT_ZZMDG_T_ADRT_PRC .

  data GR_BUT020_PRC type ref to MDC_TT_BUT020_PRC .

  data GR_ZMDG_BP_ZNPSCDUP_PRC type ref to ZMDC_TT_ZMDG_BP_ZNPSCDUP_PRC .


  methods SAVE_ZNPSCDUP_ACTIVE .


  methods EXPOSE_DATA_OBJECT

    redefinition .

  methods MAP_EXTENSIONS_2API

    redefinition .

  methods READ_ALL_DATA

    redefinition .

  methods SAVE_BUSINESS_PARTNER_ACTIVE

    redefinition .

private section.

ENDCLASS.


CLASS ZCL_MDC_MODEL_BP IMPLEMENTATION.


  METHOD expose_data_object.


* Content / Description / Remarks:

* Expose Data Object


* Title:  CHECK


    " 1. Determine whether VIES should be skipped based on config table

    DATA(lv_skip_vies) = abap_false.  " Default: Not to skip


    " 2. Resolve the process template from the current process

    SELECT SINGLE mdchgprocesstypeid

      FROM c_masterdatachangeprocess

      WHERE masterdatachangeprocess = @me->process_id

      INTO @DATA(lv_process_type).


    IF sy-subrc = 0.


      SELECT SINGLE @abap_true

        FROM zmdg_c_utility

        WHERE data_model = 'BP'

          AND req_type   = 'VIES_CHECK'

          AND req_id     = 'SKIP_TEMPLATE'

          AND low        = @lv_process_type

        INTO @DATA(lv_found).


      IF sy-subrc = 0.

        " Template found so skip the VIES Online Check

        lv_skip_vies = abap_true.

      ENDIF.

    ENDIF.


    " 3. Conditionally skip VIES

    IF lv_skip_vies = abap_true.

      CALL FUNCTION 'BUPA_SKIP_VIES_CHECK'

        EXPORTING

          iv_skip_vies_check = abap_true.

    ENDIF.


    " 4. Delegate to parent check (triggers VIES if not skipped)

    TRY.

        super->if_mdc_model~check( ).

      CATCH cx_mdc_model.                              "#EC EMPTY_CATCH

    ENDTRY.


  ENDMETHOD.


  METHOD map_extensions_2api.


* Content / Description / Remarks:

* Map BP Extensions to API


* Title:  READ_ALL_DATA


    CALL METHOD super->read_all_data

      EXPORTING

        it_source_keys       = it_source_keys

        iv_package_number    = iv_package_number

        iv_from_current_step = abap_false.


    me->gr_zmdg_t_idplbptax_prc = CAST #( me->object( 'ZMDG_T_IDPLBPTAX' )->read( it_source_keys = it_source_keys iv_package_number = iv_package_number ) ).

    me->gr_zmdg_t_adrt_prc = CAST #( me->object( 'ZMDG_T_ADRT' )->read( it_source_keys = it_source_keys iv_package_number = iv_package_number ) ).

    me->gr_but020_prc = CAST #( me->object( 'BUT020' )->read( it_source_keys = it_source_keys iv_package_number = iv_package_number ) ).

    me->gr_zmdg_bp_znpscdup_prc = CAST #( me->object( 'ZMDG_BP_ZNPSCDUP' )->read( it_source_keys = it_source_keys iv_package_number = iv_package_number ) ).

  ENDMETHOD.


  METHOD save_business_partner_active.


* Content / Description / Remarks:

* Save Business Partner to Active Area


*                                   activation


* Title:  SAVE_ZNPSCDUP_ACTIVE


    DATA:

      lt_cvi_ei_extern    TYPE cvis_ei_extern_t,

      lv_partner          TYPE bu_partner,

      lt_current_znpscdup TYPE TABLE OF zmdg_bp_znpscdup,

      lt_db_znpscdup_all  TYPE TABLE OF zmdg_bp_znpscdup,

      lt_db_znpscdup      TYPE TABLE OF zmdg_bp_znpscdup,

      ls_znpscdup_data    TYPE zmdg_bp_znpscdup,

      lt_znpscdup_ins     TYPE TABLE OF zmdg_bp_znpscdup,

      lt_znpscdup_upd     TYPE TABLE OF zmdg_bp_znpscdup,

      lt_znpscdup_del     TYPE TABLE OF zmdg_bp_znpscdup,

      lt_znpscdup_mod     TYPE TABLE OF zmdg_bp_znpscdup.


    FIELD-SYMBOLS:

      \<fss_cvi_extern>    LIKE LINE OF mt_cvi_ei_extern,

      \<fss_cvi_ext>       TYPE cvis_ei_extern,

      \<fss_bp_keys>       LIKE LINE OF mt_bp_keys,

      \<fss_znpscdup>      TYPE zmdg_bp_dup_prc,

      \<fss_znpscdup_data> TYPE zmdg_bp_znpscdup,

      \<fss_znpscdup_db>   TYPE zmdg_bp_znpscdup.


    " Get CVI external data

    LOOP AT me->mt_cvi_ei_extern ASSIGNING \<fss_cvi_extern> WHERE target = '1'.

      APPEND \<fss_cvi_extern>-data TO lt_cvi_ei_extern.

    ENDLOOP.

    IF lt_cvi_ei_extern IS INITIAL.

      RETURN.

    ENDIF.


    " Get existing ZNPSCDUP data from database

    IF me->mt_bp_keys IS NOT INITIAL.

      SELECT * FROM zmdg_bp_znpscdup

         INTO TABLE lt_db_znpscdup_all

            FOR ALL ENTRIES IN me->mt_bp_keys

              WHERE partner = me->mt_bp_keys-partner.

    ENDIF.


    " Process each BP

    LOOP AT lt_cvi_ei_extern ASSIGNING \<fss_cvi_ext>.

      CLEAR:lt_znpscdup_mod, lv_partner.

      READ TABLE me->mt_bp_keys ASSIGNING \<fss_bp_keys>

        WITH KEY partner_guid = CONV bu_partner_guid( \<fss_cvi_ext>-partner-header-object_instance-bpartnerguid ).

      CHECK sy-subrc = 0.

      IF \<fss_bp_keys>-partner IS INITIAL.

        CALL FUNCTION 'BUPA_NUMBERS_GET'

          EXPORTING

            iv_partner_guid = CONV bu_partner_guid( \<fss_cvi_ext>-partner-header-object_instance-bpartnerguid )

          IMPORTING

            ev_partner      = lv_partner.

      ELSE.

        lv_partner = \<fss_bp_keys>-partner.

      ENDIF.


      " Get DB-state before update

      MOVE-CORRESPONDING lt_db_znpscdup_all TO lt_db_znpscdup.

      DELETE lt_db_znpscdup WHERE partner <> lv_partner.

      " Get current process data for this BP

      DATA(lt_znpscdup_prc) = VALUE zmdc_tt_zmdg_bp_znpscdup_prc( FOR ls_znps IN me->gr_zmdg_bp_znpscdup_prc->*

                              WHERE ( source_id = \<fss_bp_keys>-source_id ) ( ls_znps ) ).


      " Build current data from process records

      LOOP AT lt_znpscdup_prc ASSIGNING \<fss_znpscdup>.

        APPEND VALUE #( client = sy-mandt

                       partner = lv_partner

                       zmastid = \<fss_znpscdup>-zmastid

                     zisdupflg = \<fss_znpscdup>-zisdupflg

                     zrisechon = \<fss_znpscdup>-zrisechon

                      zriseext = \<fss_znpscdup>-zriseext ) TO lt_znpscdup_mod.

      ENDLOOP.


      " Merge current and DB data

      APPEND LINES OF lt_db_znpscdup TO lt_current_znpscdup.


      " Apply modifications

      LOOP AT lt_znpscdup_mod ASSIGNING \<fss_znpscdup_data>. "#EC CI_NESTED

        READ TABLE lt_current_znpscdup WITH KEY partner = \<fss_znpscdup_data>-partner

                                                zmastid = \<fss_znpscdup_data>-zmastid

                                      ASSIGNING \<fss_znpscdup_db>.

        IF sy-subrc = 0.

          \<fss_znpscdup_db> = \<fss_znpscdup_data>.

        ELSE.

          INSERT \<fss_znpscdup_data> INTO TABLE lt_current_znpscdup.

        ENDIF.

      ENDLOOP.

    ENDLOOP.


    " Call function module to update database

    IF lt_current_znpscdup IS NOT INITIAL OR lt_db_znpscdup IS NOT INITIAL.

      CALL FUNCTION 'ZMDG_UPDATE_ZNPSCDUP'

        EXPORTING

          it_current_znpscdup  = lt_current_znpscdup

          it_database_znpscdup = lt_db_znpscdup_all

        EXCEPTIONS

          OTHERS               = 0.

    ENDIF.

  ENDMETHOD.

ENDCLASS.

Referenced tables

ObjectPurpose
LT_DB_ZNPSCDUP_ALLOpen table LT_DB_ZNPSCDUP_ALL.
LT_CURRENT_ZNPSCDUPOpen table LT_CURRENT_ZNPSCDUP.

The remaining configuration, implementation details, and testing guidance continue from this answer more…

Related questions and keywords

Alternative questions

  • What is the example code for extending CL_MDC_MODEL_BP to handle custom BP data during consolidation and activation?
  • How can custom source tables, process tables, key structures, and attribute structures be mapped in an MDC data class?
  • How can custom Business Partner fields and entities be mapped into the CVI API structure during MDG consolidation?
  • How can custom BP data be read from the consolidation process and saved back to active custom tables after activation?
  • Example code for CL_MDC_DATA_BP enhancement for custom consolidation entities
  • Example code for CL_MDC_MODEL_BP enhancement in SAP MDG consolidation

Possible questions

  • What is the example code for extending CL_MDC_MODEL_BP to handle custom BP data during consolidation and activation?
  • How can custom source tables, process tables, key structures, and attribute structures be mapped in an MDC data class?
  • How can custom Business Partner fields and entities be mapped into the CVI API structure during MDG consolidation?
  • What configuration is required for Example Code: Consolidation Custom Table BP Customer Supplier?
  • How can this SAP MDG scenario be tested?

Keywords

ZCL_MDC_DATA_BPCL_MDC_DATA_BPZCL_MDC_MODEL_BPCL_MDC_MODEL_BP. MDC EnhancementConsolidation EnhancementConsolidation for Custom EntityConsolidation for Custom Table