1 2 3 7 Previous Next

SAP Master Data Governance

91 Posts

Configure MDG Entity Search result list : With this configuration result list columns order can be changed , some columns can be hided and Push buttons on Tool bar can be removed and new buttons can be added .

 

1.Prior to  Configure Entity Search result list we have to create configuration of Search application ( USMD_SEARCH ) . For this open customizing path in MDG IMG :General Settings-> UI Modeling-> Manage UI Configurations . Select the Application as USMD_SEARCH  and template configuration given by sap

 

 

2. Open Component Configuration USMD_SEARCH_OVP_TEMPLATE. Under Additional Functions , choose the Deep Copy button. Enter target configuration IDs for the application configuration .In Below example APAP is my entity name so configration ID is given as ZZ_APAP_SEARCH.

Now open the App.Configuration created and Enter parameters

USMD_MODEL: The data model

USMD_ENTITY: The entity type

USMD_OTC: The business object type.

 

By default system will give Template configuration name . This has to be replaced with custom configuration  .

 

Then replace the template configuration with the configuration you created . Finally your application Configuration should look like below

 

Then open the configuration Name then we can see one search UIBB and one list UIBB.

Now replace your template configrations of search UIBB and List UIBB with custom configration .( You can use deep copy of templates as we did in previous steps)

 

To configure the result list of the search application, The List UIBB need to configured .

component configuration of list UIBB  uses standard

feeder class CL_USMD_SEARCH_GUIBB_RESULT. This feeder class has two

main parameters:

+ (GenIL) Component

+ (GenIL) Object Name

Using these parameters, you can decide in which mode the result list runs. First, you can leave both parameters empty. In this case, the

result list is configured by an implicit configuration (-> displayedcolumns, order of columns, buttons) you cannot influence. Second, you

can enter the name of a GenIL component and the name of a GenIL queryresult object. In this case, the result list is configured by the

explicit configuration you created and you can influence all aspects of its appearance.

My data model name is ZZ , so my Genil component will be ZSP_ZZ.

and object name will be QResAPAP ( i.e QRes<entityname> )

 

 

Once these settings are done the List will be editable to users and they can delete unwanted columns and unwanted push buttons based on the requirement .

So, there are many documents and notes from SAP that highlight how to extend a standard UIBB with a custom field. So before you flag my content as duplicating previously covered material...hear me out.

 

Despite this abundance of information on how to do this, it still took us a good while to get the correct sequencing down for this to actually work on our recent MDG-M project, and a LOT of trial and error.

 

For this reason I put together a document, a step by step guide with screenshots, to easily and successfully do this seemingly simple task.

 

Hope you find it as useful as we did!

 

Extending SAP Standard Entity with Custom Fields

 
 

STEP-BY-STEP EXPLANATION

Example Requirement


Table MARA should be extended with the customer specific fields ZZBASETYP, ZZBRAND and ZZPROAREA

The Data Model MM, Entity MARASALES should be extended with these attributes. The attributes should also display in the UI.

 

1. Append new fields to Standard Table (MARA)

 

You have to extend the table MARA with the new fields, include the new fields in the customizing table T130F and extend the backend structures.

1.1 Open Transaction SE11

1.2 Display the MARA table

1.3 Pick ‘Append Structure…’ and add your own or expand on an existing one

1.4 Add new fields to the append structure as required using namespace ZZ…

1.5 Activate the table (this will take some time…so remember – patience is a virtue!)

screen1.JPG

2.     Include Z-field in Table T130F

 

You must include the Z-field into table T130F, see SAP Note 44410.

2.1 Open Transaction SE11

2.2 Display the table T130f

2.3 Using the menu got to: Utilities -> Table Contents -> Create Entries

2.4 Select V_130F

2.5 Add your field(s) with table name in front e.g. mara-zzbrand

2.6 Activate the table

screen2.jpg

3.     Structure Extensions

 

The Service Mapping Tool (SMT) is a program used in ABAP to fill a target structure with a set of source structures. The relevant structures for the target structure of the primary persistence (MARA, MARM, MEAN, MARC…) are:

  • MDG_BS_MAT_S_<Tablename>
  • MDG_BS_MAT_S_ <Tablename>_UI
  • MDG_BS_MAT_S_ <Tablename>_X

The new fields are automatically included in structure MDG_BS_MAT_S_MARA, but the other 2 structures must be appended.

3.1 Open Transaction SE11

3.2 Display the table: MDG_BS_MAT_S_ MARA_UI

3.3 Pick ‘Append Structure…’ and add your own or expand on an existing one.

3.4 Add new fields to the append structure as in the MARA table

3.5 Activate the table

3.6 Repeat steps 3.1.2 to 3.1.5 for table: MDG_BS_MAT_S_ MARA_X

 

MDG_BS_MAT_S_MARA (Automatically populates)screen3.JPG

MDG_BS_MAT_S_MARA_UI

screen4.JPG

MDG_BS_MAT_S_MARA_X

screen5.JPG

Note

The following information concerning the structure MDG_BS_MAT_S_MARA_X:

If the X-field-structure of the MDGM-API is extended after the creation of an SMT mapping, the SMT mapping needs to be regenerated. Therefore repeat this step.

4.     Extending the Data Model

 

You now have to extend the data model MM with the new fields, extend the structures and maintain customer includes. The system uses the data model to generate database tables in which the master data can be stored.

4.1 Open Transaction MDGIMG

4.2 Follow the menu path General Settings -> Data Modeling -> Edit Data Model

4.3 Select the line for data model ‘MM’ and click the ‘Entity Types’ folder

4.4 Select the line for the entity you are working on (e.g. MATERIAL) and click the ‘Attributes’ folder.

4.5 Add the new fields to the list of attributes

4.6 Activate the Data Model

4.7 Open Transaction SE38 and execute the report: USMD_ADJUST_STAGING using data model ‘MM’

screen6.JPG

5.     Generating Back End Structures

 

5.1 Open Transaction MDGIMG

5.2 Follow the menu path General Settings -> Data Modeling -> Generate Data Model Specific Structures

5.3 Select the line with the data model ‘MM’ and click on ‘Structures’

5.4 Select all 6 entries for the entity ‘Material’ and click ‘Generate Selected Structures’

  scrteen7.JPG

6.     SMT Mapping

You extend mappings by creating new transformations (complex transformations, field mappings) and field checks for them or by editing them. Here you work cross-client.

6.1 Open Transaction MDGIMG

6.2 Select General Settings -> Data Modeling -> Create and Edit Mappings -> Create and Edit Mappings

6.3 Follow the next steps twice, once for each mapping. Click on Mappings -> Open and select the Mapping:

  • MDG_BS_MAT_MAP_2PP
  • MDG_BS_MAT_MAP_2STA

6.4 Look for ‘MDG_BS_MAT_MATERIAL (for 2PP) or ‘MDG_BS_MAT_MARA’ (for 2STA) in the column ‘Mapping Step’ of the table and click ‘Details’

6.5 Select the ‘Transformation’ tab and click the ‘Edit’ Button

6.6 Click on the add button for the field mappings and add you custom field

screen8.jpg

6.7 After you have created the mapping in SMT you should return to the IMG and perform the IMG activity check customizing to ensure consistency of the changes.

screen9.jpg 

7.     UI Model

The new attributes should also be considered in the UI. UI configurations can be adapted using the FPM-enhancement option.

For details see other Extensibility Guides:

http://scn.sap.com/docs/DOC-29042 (Chapter User Interface Configuration and Extending the UI configuration)

http://scn.sap.com/docs/DOC-27859 (Chapter User Interface Configuration and Extending the UI configuration)

 

7.1 Open Transaction MDGIMG. Select General Settings -> UI Modeling -> Manage UI Configuration

7.2 Scroll down and select  UI config you are using.

7.3 Select ‘Continue in Display Mode’ and click on the hyperlink for the configuration layout

7.4 Scroll down the page to the ‘Overview Page Schema’ and select the line for the relevant UIBB for the section of the UI you are adding your field to. Click the button ‘Configure UIBB’.

screen10.jpg

 

7.5 Click ‘Additional Functions’ -> ‘Enhance’. If using the ‘Basic Data’ UIBB there is already an enhancement created, if not you will need to create one. You will now be able to Hit the EDIT button

7.6 Scroll to where you want your new field in the UI and click on  ‘Add element’ -> ‘New element’

7.7 A list of fields will come up and if you scroll to the bottom you will see your newly added fields.

7.8 Once fields are in the correct place SAVE and exit.

 

8.     Reactivate Data Model

8.1 Reactivate the data model and run the adjust staging report again Now should all be good to go!

The standard Workflow inbox delivered by SAP Master Data Governance is very generic, since it does not contain any business data (like Material attributes). Luckily we can change this.

 

Business requirement

Turn this:
inbox_old.PNG
... into this:
inbox_new.png

 

Technical background

The MDG Inbox uses the Suite Inbox (CA-EPT-IBO) or Lean Workflow Inbox as a basis. This is basically a WebDynpro application that uses a POWL List to display Workitems. While the application offers Workflow-specific features not found in the standard POWL application (e.g. substitution settings for Workflow), it is driven by a specialization of the POWL feeder.

 

Implementation

We implement a new Query by deriving a new ABAP Class from the SAP MDG Standard one. First the SAP Standard fetches the assigned Workitems and standard fields (like priority, CR status, ...), then we add the business data (here: Material).

 

1. DDIC Structure & Table Type

In SE11, create new DDIC structure and table types describing your result structure. The structure must contain the base fields of the MDG inbox in structure USMD_S_CREQUEST_POWL. Use a named INCLUDE so that you have easier access to the Material fields in your ABAP coding later on. I include the Material structure /MDGMM/_S_MM_PP_MATERIAL generated by MDG-M, i.e. all fields of the Type1 entity MATERIAL will be available for the end user.

inbox_ddic.PNG

2. ABAP Class for Query

Create a new ABAP class derived from CL_USMD_CREQUEST_POWL, the standard Inbox feeder. Overwrite the following methods:

  • SET_MV_RESULTS: Set me->mv_results to the name of your result table type
  • SET_MV_RESULTSTRUCTURE: Set me->mv_resultstructure to the name of your result structure
  • CONSTRUCTOR: Copy the code from the super Constructor into this method
    (for ABAP internal reasons, the Constructor does not execute the code in your overwritten methods as you might expect. It's in the documentation, so you cannot complain, and I for once am not half as good in explaining such things as Mr. ABAP himself)

 

3. Register the new POWL application

Using transaction POWL_COCKPIT, you create a new POWL application, query type (this references our ABAP class), query, and finally register your query to the application. See the POWL documentation for details.

 

4. Create WebDynpro configurations

Now we need WebDynpro application and component configurations that start the Suite Inbox application IBO_WDA_INBOX with our new POWL list:

  1. Copy the application configuration USMD_CREQUEST_POWL into customer namespace & edit it
  2. Copy & edit the component configuration of IBO_WDC_INBOX. Change the parameter applid to the name of your newly created POWL application
    inbox_comp_inbox.PNG
  3. (Optional) Copy & edit the component configuration of POWL_UI_COMP. This allows you to modify the look&feel of the POWL result table.
  4. Assign the newly created component configurations in the application configuration created aboveinbox_appl_config.PNG
  5. (Optional) From transaction POWL_QUERY, define a standard ALV layout for the result table, e.g. which columns are being displayed initially.

 

5. ABAP code for reading Material data

At last, some real coding (You didn't think you could just customize this together, did you?! ). In this code, we first let the MDG standard fetch the Workitem information, then we add the Material data using theMaster Data Governance Application Programming Interface.

 

The code uses some tricks for enhancing the performance that are applicable to MDG programming as a whole:

  • Use concrete DDIC types whenever possible
  • Reduce the MDG API calls to the bare minimum, i.e. it is better to do more work in your own code than to call the API. For instance, in the code below, instead of invoking the MDG API from within the LOOP (n calls), I prepare a list of Material numbers and invoke the API only once.

First display is pretty slow (>1.5s), as the MDG API initialization (CL_USMD_GOV_API=>GET_INSTANCE())alone adds 0.5s to the start-up time.

 

METHOD if_powl_feeder~get_objects.
     "Let Standard fetch & fill basic fields
     CALL METHOD super->if_powl_feeder~get_objects
       EXPORTING
         i_username              = i_username
         i_applid                = i_applid
         i_type                  = i_type
         i_selcrit_values        = i_selcrit_values
         i_langu                 = i_langu
         i_visible_fields        = i_visible_fields
       IMPORTING
         e_results               = e_results
         e_messages              = e_messages
         e_workflow_result_count = e_workflow_result_count.
     IF e_results IS INITIAL.
       RETURN.
     ENDIF.
 
     "Cast result into real type
     FIELD-SYMBOLS: <workitems> TYPE y0mm_mat_ui_t_ibo_creq_mat.
     ASSIGN e_results TO <workitems>.
 
     "Create mapping table workItem --> CR
     DATA(lt_wi_crequest) = cl_usmd_wf_crequest_mapper=>get_crequest_by_wi(
       it_wi = VALUE #( FOR <wi> IN <workitems> ( <wi>-wi_id ) )
     ).
 
     "Get MDG GOV API
     DATA: lo_mdg_api TYPE REF TO if_usmd_gov_api.
     TRY .
         lo_mdg_api = cl_usmd_gov_api=>get_instance(
                      iv_model_name   = cl_mdg_bs_mat_c=>gc_usmd_model
         ).
       CATCH cx_usmd_gov_api.
         RETURN.   "Some error, so we show only vanilla worklist
     ENDTRY.
 
     "Get list of (first) Material in each CR
     DATA: lt_material_keys TYPE SORTED TABLE OF /mdgmm/_s_mm_kf_material
             WITH UNIQUE KEY material.
     TYPES: BEGIN OF ty_wi2material,
       wi_id     TYPE y0mm_mat_ui_s_ibo_creq_mat-wi_id,
       material  TYPE /mdgmm/_s_mm_kf_material-material,
     END OF ty_wi2material.
     DATA: lt_wi2material TYPE HASHED TABLE OF ty_wi2material
             WITH UNIQUE KEY wi_id.
     LOOP AT <workitems> ASSIGNING FIELD-SYMBOL(<workitem>).
       "Get CR for that Workitem
       READ TABLE lt_wi_crequest
         ASSIGNING FIELD-SYMBOL(<wi2crequest>)
         WITH TABLE KEY wi_id = <workitem>-wi_id.
       IF sy-subrc <> 0.
         CONTINUE.
       ENDIF.
       TRY .
           "Get object list of that CR
           lo_mdg_api->get_object_list(
             EXPORTING
               iv_crequest_id             = <wi2crequest>-usmd_crequest
             IMPORTING
               et_object_list_db_style    = DATA(lt_object_list)    " Change Request, Entity, Table Type
           ).
           "Is Material entity in CR?
           READ TABLE lt_object_list
             ASSIGNING FIELD-SYMBOL(<ent_material>)
             WITH KEY usmd_crequest = <wi2crequest>-usmd_crequest
                      usmd_entity = cl_mdg_bs_mat_c=>gc_entity_name_mat.
           IF sy-subrc <> 0.
             CONTINUE.
           ENDIF.
           "Get Material key into key table (conversion!)
           INSERT
             VALUE #(
               material = <ent_material>-usmd_value
             )
             INTO TABLE lt_material_keys
             ASSIGNING FIELD-SYMBOL(<material>).
           "Store association workItem -> material
           INSERT
             VALUE #(
               wi_id     = <workitem>-wi_id
               material  = <material>-material
             )
             INTO TABLE lt_wi2material.
         CATCH cx_usmd_gov_api.
           "Ignore errors, just let add-on data fields empty in output
           CONTINUE.
       ENDTRY.
     ENDLOOP.
     IF lt_material_keys IS INITIAL.
       RETURN.   "No CRs in list, nothing to add
     ENDIF.
 
     "Read all Materials from MDG API (Only 1 call for performance reasons!)
     DATA: lt_materials TYPE HASHED TABLE OF /mdgmm/_s_mm_pp_material
             WITH UNIQUE KEY material.
     lo_mdg_api->retrieve_entity(
       EXPORTING
         iv_crequest_id = VALUE #( )         "Initial CR, means read all
         iv_entity_name = cl_mdg_bs_mat_c=>gc_entity_name_mat    "Material
         it_key         = lt_material_keys    "Material in current CR
       IMPORTING
         et_data        = lt_materials    " Entity Keys and Attributes
     ).
     IF lt_materials IS INITIAL.
       RETURN.   "No Materials, nothing to add
     ENDIF.
 
     "Add Material information to Change Requst Work Item List
     LOOP AT <workitems> ASSIGNING <workitem>.
       "Get material_id by workitem_id
       READ TABLE lt_wi2material
         WITH TABLE KEY wi_id = <workitem>-wi_id
         ASSIGNING FIELD-SYMBOL(<wi2material>).
       IF sy-subrc <> 0.
         CONTINUE.
       ENDIF.
       "Get Material data into WorkItem list
       READ TABLE lt_materials
         WITH TABLE KEY material = <wi2material>-material
         INTO <workitem>-yy_material.
     ENDLOOP.
 
   ENDMETHOD.

 

6. Test it

You can invoke your new MDG-M Inbox by starting the Suite Inbox with the newly created configuration. The URL should look something like this:
https://<your_host>:<your_port>/sap/bc/webdynpro/sap/IBO_WDA_INBOX?WDCONFIGURATIONID=<your_appl_config>


7. Inbox customizing

You might have realized that the Suite Inbox is showing all Workitems from all workflows and that the MDG specific buttons (e.g. "Process request") are not working. This is due to missing customizing settings, that SAP delivers for the MDG Inbox. The customizing is specific to the POWL applicationID, which is of course different for our own Inbox.


You can copy over the settings made by SAP (in system tables) into customizing tables. There are some Customizing transactions for this in SPRO, but I entered it directly. SM30 for the customizing table, SE16 for the system tables, as well as Copy&Paste are your friends in this task.


Customizing
System
Description
IBO_C_WF_TA_P_SCIBO_C_WF_TA_P_TYTasks to show in Inbox. Leave empty to see all tasks of all workflows in system.
IBO_C_WF_ACCIBO_C_WF_ACSAction types for the Inbox actions: Describes how a navigation event triggered by one of the Inbox buttons is evaluated by the Inbox, e.g. via OBN or a function module handler.
IBO_C_WF_TACIBO_C_WF_TASOverwrite the standard action to execute on a task.
IBO_C_WF_TTACIBO_C_WF_TTASWhich Inbox actions (buttons) are available for a task in the inbox.


Acknowledgement

This work is heavily based on the blog MDG: "Empower the POWER List" by Florian Raab, which also contains some very nice screen cams (movies, not just pictures!) to guide you through the POWL setup process.

SAP MDG & SFDC Integration:

Often in today’s world, we come across many cloud based products like Ariba, Salesforce being used by Organizations to deal with Procurement & Sales in their daily business.  Seamless integration is demanded between ERP & these cloud based applications without compromising on Data Quality. As Data plays a key role in any Company, compromising on data quality has ripple effects in Business Transactions. Hence it is very much needed to maintain Data quality and keep business intact along with maintaining quick turn-around between SAP & End-user facing solutions.

In the below blog, we will discuss real time scenario, where Salesforce is integrated with SAP and the role of Master Data Governance (SAP MDG) to improve the data quality.

  • A lack of a centralized, systematic review and approval of Customer data creation can lead to extensive data integrity issues such as duplicate records, inconsistent records.
  • On save of an Account in Salesforce an Interface is triggered, which creates a Change Request for Customers (Account Type: Prospect) in MDG. This Change Request appears in Data Stewards in-box for approval. Sales/Customer Service needs very quick turn-around time in-order to facilitate the SAP Quotation for these Prospects. Hence there are very minimal checks (duplicate & address Validation) that are needed for Prospects.
  • On Approval from Data-Steward (after performing business and Data Quality validation), Prospect is created in SAP and synchronized to Salesforce using Data Replication which facilitates further transactions in Salesforce.
  • Once the Quotation is approved, and ready to be converted to a Sales Order, Sales or Customer Service logs into Master Data Governance and requests for Account Group upgrade from Prospect to Sold-To. As Sold-To plays a critical role, this Change Request goes through a series of checks from teams like Accounts Receivables, Sales etc. this series of validations can be manual or can also be automated with different third-party systems.
  • Below are few examples of the validations:
  • Credit Team: 
    • Credit Team will perform the credit check using third-party services (manual or automated) before they approve the Customer creation.
  • Tax Team:
    • To verify Customers Tax Exemption certificates if any.
  • Data Steward/AR Team:
    • Will be responsible for performing a sanity check on the CR data and also enriching the Customer data as per the Company’s business policies.

Prospect.jpg

Customer _ Acc Group.jpg


Technical Details:

  • Supplier Web service - BusinessPartnerSUITEBulkReplicateRequest_In is used to create Inbound Change Request for Customer.
  • MDG 7 Feature of changing the Account Group for Customer Master Data.

Integration scenario SAP MDG and C4C.


In a digitised economy masterdata and its life cycle also undergoes a sea change. Earlier for a B2C (business to consumer) scenario ERP was used to store information in batches. Hence customers coming to an online shop or a store were mostly anonymous and hence no identity or master data was necessary. But with social computing gaining ground organisations have to be more and more attentive to the needs of individuals and have started listening to them more than ever. Hence the customer speaking about a product on the cloud is no more left alone – he or she is very well connected with the feedback on the product and services posted on a social media etc. and could very well be a ‘prospect’. Or consider a B2B scenario where an organisation is looking for spares and then registers on the company portal for another organisation, thus becoming a prospect with interest.

 

In this document we describe the following customer integration scenario.

 

  1. Create a Prospect in C4C – send to MDG
  2. Create a Customer in MDG and send to C4C.

 

But before we start, we take a look at the landscape in context.

 

SAP MDG - SAP C4C Integration Architecture.PNG

 

 

So we can see C4C or Cloud for Customer SAP’s CRM on Cloud where prospect information arrives in the enterprise landscape and is mediated via SAP PI to integrate with SAP MDG for further enrichment and process enablement.

 

 

Let's look at the individual scenario and see how we achieve this integration.

 

Scenario1- Create a Prospect in C4C – send to MDG

 

  1. Prospect is created in C4C. Once prospect needs to become a customer, a request towards MDG is triggered.
  2. An outbound Web Service BusinesspartnerSelfInitiatedOut is sent to PI.
  3. In PI the above message would be mapped to BusinessPartnerSuiteBulkReplicateRequest_In message for MDG.    (PS- Few mappings are needed in SAP PI for this message to determine  values in BP Group, BP Role, Sales Area, Customer Account Group etc.as this information won't necesarrily be available in the incoming message.)
  4. MDG receives the above message and automatically generates a Change Request of type CUSTHI01.
  5. The change request can be either auto-approved or can be manually checked and approved.
  6. After final approval of the change request a BP and Customer is created in MDG and a key mapping is written in MDG UKMS framework along with the Prospect ID of C4C.
  7. After final approval outbound message BusinessPartnerSuitBulkReplicateRequest_Out is sent out to PI.
  8. In PI the above message would be mapped to BusinessPartnerreplicationIn message.
  9. When received in C4C, the message updates the prospect record with customer channel information along with a key-mapping holding MDG BP number.

Create Customer in C4C and Send to MDG.PNG

 

 

Scenario2- Create aCustomer in MDG – send to C4C

 

After an unsccessful Search in MDG – a CR is created for a BP with Customer Role.

 

  1. The CR goes through the governance process and is finally approved to create a BP and Customer in MDG.
  2. An Outbound WS BusinessPartnerSuiteBulkReplicateRequest_Out is sent to PI.
  3. In PI the above message would be mapped to BusinessPartnerreplicationIn message for C4C.
  4. C4C receives this message and creates BP with customer channel information.
  5. Along with the BP a key-mapping is created in C4C with MDG BP  and Customer ID.
  6. A confirmation message is sent from C4C to PI.
  7. The above message is mapped to BusinessPartnerSuitebulkConfirmation_In for MDG.
  8. The above message is received in MDG to update the key-mapping which now holds MDG-BP, Customer & C4C Business Partner ID.

 

Create Customer in MDG and Send to C4C.PNG

 

Scenario3- Create a Contact Relationship in C4C and send to MDG

 

  1. We have a Customer in C4C and we get a call from a person in the customer organisation - we want to keep him as a contact person in the customer information.
  2. The person's information is updated in C4C Customer as a Contact relation.
  3. Two Outbound WS are sent to PI: BusinessPartnerReplicationSelfinitiatedOut,and BusinessPartnerRelationshipReplicationInitiatedOut
  4. In PI the 1st message is covered as part of scenario 1 and the 2nd message is mapped to BusinessPartnerRelationShipSUITEBulkReplicate_In message for MDG.
  5. MDG receives the above messages in sequence – where the 1st message reads the UKMS key mapping in MDG to know a BP exists in MDG and thus it create a Change Request of type CUSTHI02 to change the BP. The next message updates the Change request with a Relationship information in the above Change Request.
  6. After final approval of this CR, two WS are sent out to PI with key-mapping information updating the Relationship.
  7. These messages are sent to C4C which updates the relationship key-mapping of MDG.

 

 

Create a Contact Relationship in C4C and send to MDG.PNG

 

 

Scenario4- Create a Contact Relationship in MDG and send to C4C

 

 

  1. We get a request from a customer to include a contact person. in this scenario we manage this master data in SAP MDG  which is interfaced and integrated with C4C
  2. The person's information is updated in SAP MDG Customer as a Contact relation.
  3. Two Outbound WS are sent to PI: BusinessPartnerReplicationSelfinitiatedOut,and BusinessPartnerRelationshipReplicationInitiatedOut_Out
  4. In PI the 1st message is covered as part of scenario 1 and the 2nd message is mapped to BusinessPartnerRelationShipSUITEBulkReplicateIN message for C4C
  5. C4C receives the message and reads the key-mapping which performs the change on the actual BP number and creates the contact relationship.
  6. These messages are sent to C4C which updates the relationship key-mapping of MDG

 

Create a Contact Relationship in MDG and send to C4C.PNG

 

We can extend this idea to more complex scenario of bringing in a master data from the cloud and then govern it for process enablement.

 

Thank you

 

Amitava

As you may already have noticed from the SCN blog from Dean Fitt, since November 2014 there is a solution extension to SAP Master Data Goverance in place, covering the governance processes for technical assets, such as equipment and functional locations.

Utopia2.jpg

If you like to know more details about this offering, you may read the solution overview presentation, and check a one-hour Webinar recording that is available on youtube, explaining the overall process flow and functions.

SAP customers can also access the Product Availability Matrix on SAP Service Marketplace to get more information.

 

Hope this information is useful.

 

Regards,

 

Markus

Business Requirement

               

                 SAP Master Data Governance helps organizations govern master data from its creation in a business application,through step by step enrichment by different roles in the organization, to its replication to target applications to ensure data quality and regulatory compliance across the enterprise. SAP master data governance can be used for multiple master data domains like customer, material, supplier, articles , finance etc.


Like other flavors of MDG, MDGA consulting solution also comes with a predefined data model. Customers would be able to extend the data model fields during the project phase based on their additional requirements. If you have already extended other MDG standard data models (like MDG-M), then the procedure to extend MDG-A would be essentially the same.

 

Introduction

 

                   In this blog we will walk you through the steps required to enhance the MDGA Solution with an additional field in the MARA entity type.

 

Purpose

 

                   In this scenario you want to extend the Data model with field KUNNR which is available in MARA table.

1.jpg

 

 

Package for customizing include

 

                   If you want to transport your enhancements, you must assign a package for your customizing includes.


In Customizing for Master Data Governance (transaction MDGIMG), open the activity General Settings ->Data Modeling ->  Assign Package for Customizing Include.

 

1.jpg

 

 

Edit the entry for Data Model AR and type the desired package to be used.

1.jpg

 

Save your changes.

 

 

Data Model Extension

 

                  You have to extend the MARA entity type, which has storage and use type 1, so it includes the KUNNR attribute.


You can view the settings for storage and use type for existing entity types in Customizing for Master Data Governance under General Settings -> Data modeling -> Edit Data model.

 

1.jpg

 

Select the AR data model and double click on Entity types (alternatively you can choose view cluster VC_USMD001 in transaction SM34). In the list of entity types, you can double click an entity type to view its details as shown below for the MARA entity type.

 

1.jpg

 

Now double click on Attributes.

 

 

Click on New Entries and add the following Values and Press Save.

 

 

1.jpg

 

 

 

Ignore the warning messages that come up and provide a Transport Request.  Then click Activate.

 

 

Now navigate to Customizing for Master Data Governance under General Settings ->Data Modeling -> Generate Data Model Specific Structures.

 

1.jpg

 

 

Select AR data model and navigate into Structures. Select MARA Specific structures and click Generate Selected Structures.

 

1.jpg

 

 

Now go to SE38 and execute the program usmd_adjust_staging and provide AR as data model.

 

1.jpg

 

 

SMT Mapping

 

Active to Staging area

 

 

Navigate to MDGIMG -> General Settings -> Data Modeling -> Extend Mappings.

 

1.jpg

 

 

Select Mapping->Open.  Provide the Mapping name as /VPCOE/MDG_MAP_ARTICLE_2STA.

 

1.jpg

 

 

 

In the table Mapping Steps select MAP_FROM_MARA and choose the Details button.

 

1.jpg

 

 

Select the Transformations tab

 

1.jpg

 

 

Change to Edit Mode.

Choose the Add button to add a new field mapping.

 

1.jpg

 

 

Enter the Field Mapping from KUNNR to ZZKUNNR as shown in the screenshot.

 

1.jpg


Save the field mapping by pressing Save button.

 

Staging  to Active area

 

 

Open  /VPCOE/MDG_MAP_ARTICLE_2PP    mapping.

 

1.jpg

 

 

In the table Mapping Steps select  MAP_2_MARA and click Details button.

 

1.jpg

 

Navigate to Transformations tab and activate Edit mode.

 

1.jpg

 

 

Choose the Add button to add a new field mapping.

 

 

1.jpg

 

Enter the Field Mapping from ZZKUNNR to KUNNR as shown in the screenshot bellow.

 

 

1.jpg

 

 

Now press Save button.


UI Configuration

 

 

UI configurations can be adapted using the FPM-enhancement option.

 

Navigate to MDGIMG -> General settings -> UI Modelling -> Edit UI configuration.

 

 

Now select the UI configuration /VPCOE/USMD_ENTITY_VALUE2 and click Edit. Now select Continue in Display Mode button

 

1.jpg

 

 

 

Next, select the OIF component (click on the component name). Select Additional Functions dropdown button and then select Enhance from the dropdown list.

 

 

1.jpg

 

 

 

Provide an enhancement implementation name and click OK.

 

1.jpg

 

 

Select a package where you want to save the changes and the transport request.


Next, read the confirmation message

 

 

Select the node where you want to add the new UIBB FORM, and from the dropdown button choose Add Form.

1.jpg

 

 

Provide a name for the new UIBB.

1.jpg


Now select Configure UIBB. When prompted, choose to save the configuration ID and choose the transport request.


Create a new Configuration

1.jpg

Provide the package name for saving the new configuration ID.

 

Do not provide any entity type over here. Press OK button.


1.jpg

Now add a Group element and inside the group add a child element. Set the property as Input Field.

1.jpg

 

1.jpg

 

Save the changes by pressing Save button.

 

1.jpg

 

1.jpg

 

You have now added the ZZKUNNR field to the Basic Data section of the UI as an enhancement.

 

Testing the configuration

 

                 Now open this UI configuration from your change request. You should be able to see the KUNNR field on UI and update the database.

 

Troubleshooting Tip

 

                If you are not able to see the field kindly check the UI Badi and also the Field control customizing done on the ERP.

Recently, my customer department asked me to turn a text field in Material master (MARA-BEGRU) into a checked input field with a value help, plus text (plant name) from foreign table. The requirement specification based the approval workflow on said field contents, so there was really no way I could talk the customer straight out of this nonsense idea.

The outlook was bleak, our options were dire: Start a requirement discussion with the user department late in the project? Rush in a modification? Postpone GoLive? Surrender? - Never!

 

tl&dr;

UI-old.png

Turn this ...

UI-new.png

... into this.

Implementing these requirements is surprisingly easy with SAP Master Data Governance, as it uses Floorplan Manager for Web Dynpro ABAP for UI and provides a ton of extensibility options:

  • FPM allows you to specify and override field properties in the GET_DATA call, e.g. to add a DDIC search help to a field that has none.
  • Adding UI-only fields can be achieved via FPM feeder class extension.
  • Checking against the foreign key table via the MDG check extensions, e.g. BRFplus

 

Implementation

In ERP, such a requirement requires a modification (which is often described on the net), but we do not want to do this, especially since MDG considers the check table setting of the fields domain, and the domain of this field is used in several master data objects. Luckily in MDG-M, we can use extension mechanisms of MDG-M itself and Floorplan Manager to achieve the same result w/o modification.

Note: MDG-M uses the Service Provider (SPI) Framework internally, so not everything of this implementation can be 1:1 applied to other MDG applications, yet the approach will still be the same.

 

Provide your own feeder class

Use one of the FPM provided extension methods to add your own UI logic into the SAP delivered MDG-M application. This allows you to extend / alter parts of the SAP delivery modification-free, w/o being cut-off from future SAP developments or bug fixes. The MDG-M User Interface Enhancement Guide has a very comprehensive step-by-step description of the process. I prefer to use FPM enhancements for changes that effect all screens / change requests, and CBA if the change is only applicable in certain situations (e.g. certain Material type).

 

Adding text fields

Redefine the FPM SPI feeder method /PLMU/IF_FRW_G_FIELD_DEF~CHANGE_FIELD_DEFINITION to add additional fields to the both the field catalog (CO_CATALOGUE) as well as the field description (CT_DEFINITION). For text fields, it is important to:

  • name the field in the following pattern: <main_field>__TXT<optional_id>
    So if your field is named YY_DSRESP, then you should call your text field(s) for that field YY_DSRESP__TXT and YY_DSRESP__TXT2.
  • Do your changes to before calling the super-> method. This way MDG works some magic to hide the text fields when the main field is hidden, highlights changes, etc.

 

The following sample code does the trick:

METHOD /plmu/if_frw_g_field_def~change_field_definition.
    "Get the current UI structure's field list
    DATA(lt_components) = co_catalogue->get_components( ).
    "---------- Add custom (UI-only) fields
    "Text field for 'Authorization group', where we have plant numbers
    y0mm_mat_ui_assist=>add_custom_ui_field(
      EXPORTING
        iv_name            = cs_field-begru-txt
        iv_type            = VALUE t001w-name1( )
      CHANGING
        ct_components      = lt_components
        ct_spi_field_descr = ct_definition
    ).
    "---------- Modify field list / Call SAP Standard
    "Create new structure description with added components
    co_catalogue = cl_abap_structdescr=>create(
      p_components = lt_components
    ).
    "MDG standard does all the magic (highlighting, hiding field if key is hidden, ...)
    CALL METHOD super->/plmu/if_frw_g_field_def~change_field_definition
      IMPORTING
        et_special_groups = et_special_groups
      CHANGING
        co_catalogue      = co_catalogue
        ct_definition    = ct_definition. 
 
  ENDMETHOD.

The helper method for consistently changing the structure and description list looks like this:

  METHOD ADD_CUSTOM_UI_FIELD.
    "Get data type of new field
    DATA: lo_field_description TYPE REF TO cl_abap_datadescr.
    lo_field_description ?= cl_abap_datadescr=>describe_by_data(
      p_data = iv_type
    ).
    "Add field to UI data structure
    INSERT
      VALUE #(
        name = iv_name
        type = lo_field_description
        )
      INTO TABLE ct_components.
    "Add UI field to description
    INSERT
      VALUE /plmu/s_frw_g_field_descr_appl(
        name = iv_name
        technical_field = abap_false
      )
      INTO TABLE ct_spi_field_descr.
  ENDMETHOD.

Adding Search Help

This is also very easy, since you can provide the name of a DDIC search help in the field description list. So in the above method, just change the field description after you have called the super-> method. In the below code, the MDG delivered search help for plants (T001W) is assigned to the field Authorization group (BEGRU), which normally is a text field:

    "---------- Change behaviour of existing fields
    "Search help for BEGRU
    READ TABLE ct_definition
      WITH TABLE KEY name = cs_field-begru-name
      ASSIGNING FIELD-SYMBOL(<field_definition>).
    IF  IS ASSIGNED.
      "Use same search help that MDG uses for plant number search
       <field_definition> -ddic_shlp_name = 'MDG_BS_MAT_WERKS_ELEM'.
    ENDIF.

Foreign key check

The changes so far affect only the UI, i.e. MDG-M itself does not know about the foreign key relation between the field Authorization Group (MARA-BEGRU) and the plant table (T001W), but you can implement this yourself, e.g. using a BRF+ rule to do the check and issue an appropriate error message if the entered key is not in the table.

 

Conclusion

I've been working with MDG for several years now, from early CoInnovation over several Ramp-ups all the way to the recent v7.0, yet still I am sometimes surprised on how easy it is to implement customer requirements, while at the same time staying fully within the boundaries of supported enhancements of the SAP standard. Working with the v7.0 release has been a real joyful experience so far, enabling us to implement some rather obscure requirements in my current project.

 

Many thanks to Adrian Branka for providing the idea for this solution. His consulting skills have kept our project from derailing several times already.

Recently I came across a need to debug the standard execution flow of the data enrichment framework in MDG to troubleshoot some issues. Apparently the trouble was that a custom enrichment done in the system wasn’t working. However, I was pretty convinced that it wasn’t the issue and decided to find out what the real trouble was.

 

The problem statement was that the overall MDG performance turned slow very suddenly and it seems to get stuck at the custom data enrichment applied.

 

So I started debugging from the point where the enrichment gave way to the standard. I could see that the enrichment did its job well, and the entities were getting the data updated correctly. Immediately after that, came  the standard validations that perform data checks on the entire change request.

 

The below screenshot shows the standard code which applies all the checks for the request step.

1.jpg

 

The selection was based on the below:

3.jpg

 

 

Based on the configuration, there was a duplicate check in place. As I gradually proceeded with the debugging to narrow down the cause, I could see that the performance hit was coming up in the duplication check.

 

4.jpg

 

Next round of debugging - go inside the standard duplication check to understand whats happening within it.

The standard does the duplicate search based on the configured set of attributes.

5.jpg

So it prepares the data and then accesses the enterprise search template set for this data model.

 

6.jpg

 

Once the template is obtained, it accesses the correct connector ID for establishing the link to TREX via the connectors. ( As you must be aware by now, that the connectors are setup using the ESH Cockpit , which by itself is a pretty cool feature.)

 

7.jpg

 

So after doing all this 'magic', it accesses TREX and tries to return the results. Now if the TREX is not accessible or has any data corruption issues with the indices, this is going to fail and there would not be any results. This has the potential to 'hang' the system.

 

So it was a good learning to go through all these layers and finally pin-point that the issue wasn't with any custom enhancement done, but rather with some corrupt indices in the TREX. And upon re-indexing the same and recreating the connector, the issue was resolved.

 

So a lesson learnt is to execute the enterprise test search tool from the back-end to check this issue out much faster than going through all the layers of debugging.

 

10.jpg

 

Hope this may prove useful for all the techies out there who are interested in cracking the duplication check available in the standard logic flow.

SAP Master Data Governance is a highly adaptable and feature rich solution for Master Data Management processes. The solution has matured over the years (I'm honored to have been influential in this process), but one area remains a constant source of (end user) complaints: The UI performance is sluggish, especially in MDG for Material (MDG-M).

 

While SAP has a great team working on improving MDG-M (including, but not limited to the performance aspects), changes of this sort to an already shipping product take time: As a customer, you certainly do not want your customized implementations to break due to some change that speeds up the application launch. Luckily, there are a few tweaks you can apply on customer side to improve the end-user experience today.

 

tl;dr

Several changes can be applied to the MDG-M standard delivery to decrease start-up and round-trip performance of MDG(-M). The proposed changes range from tweak for the frameworks used by MDG-M to UI enhancements. All changes are "legal", i.e. do not require modifications.

 

Implementation

The changes are presented from least to most effort and invasiveness. All proposed changes are modification-free and in line with what a well-behaved SAP customer is allowed to. There is also no ABAP coding involved (which I somewhat regret ).

 

0. SAP Documentation

First, you reading the Master Data Governance 6.1 for Material: Performance Tweaks (or an equivalent newer guide from Configuration and Enhancement of SAP Master Data Governance) and following its advice is mandatory. If you have not read it, then read it. If you already read it, read it again, as SAP is updating its guides.

 

1. Use latest Software or ServicePack

There are a lot of bottlenecks in SAP code across all software components used by MDG-M (MDG Framework, FPM, WebDynpro, SPI, … and of course MDG-M itself), lots of which have been fixed over the years. Sadly, this means that there is not one single SNOTE that you can implement to get the UI to speed. Some of these fixes are not even available as SNOTE due to their complexity and dependencies, so you definitely need to (ordered by effort):

  1. Upgrade to the most current MDG-M Release (v7.0) & ServicePack (SP03 at the time of this writing)
    Since MDG is an ERP AddOn, you can upgrade this component alone sometimes, e.g. we have MDGv7.0 also running on an EhP6
  2. Upgrade to the latest kernel
    Kernels are backward compatible, and the latest ones benefit WebUI performance a lot. Ask you Basis for details.
  3. Upgrade EhP / BASIS to latest release and SPS
    We currently use MDG-Mv7 SP03 on EhP7 with SAP Basis 7.40 SP08 for new installation

I know that SPS or EhP updates mean a tremendous testing effort on customer side (hmm, so much for my ordering of the tips ), but if your project is still in the planning phase, you should definitely include the system update in your project schedule.

 

spi_checks.png

2. Turn off SPI checks

Implement SNOTE 2108310 to get a new option in the SPI framework to switch off data model checks for improving start-up performance. With this fix implemented, go to transaction SPI_CHECKS and switch of checks for all users for data model MDG_MAT.

The setting is per-user and per-system and not transportable, which enables you to leave the checks on in development, but switch them off in production to gain performance. Since you have fully tested your solution well on Q&A system, there is no need to run these developer checks in production. (You do test, don't you?! )

 

3. Stacked OVP UI

The Overview Floorplan can arrange UIBBs in a stacked layout, leading to something like a tabbed UI. This not only improves the start-up and round-trip times of the application as there are fewer UIBBs displayed / to be processed / reading & writing data, but also leads (in my opinion) to an easier to use UI with less scrolling for the end-user.

tabbed_ui.PNG

This change can be easily implemented using the FLUID editor of Floorplan Manager for Web Dynpro ABAP and one of the FPM UI extension methods (I recommend FPM Enhancements, see below). This tip is not MDG-M specific, but can be applied to other MDG applications as well.

 

4. Menninger's One-pager

The following tip to improve start-up and round-trip is in-house known as Menninger's One-Pager, as Mrs. Elke Menninger pointed it out to me (Allegedly it is also in the documentation, so maybe I am bad at reading documentation. ). The trick is applicable if your end-users need access to a complete SPI node like MARA (roughly corresponding to Basic Data 1 & 2 in MM01). This data is spread across several MDG entities in the data model and thus UIBBs on the screen. This allows you to both simplify the UI for the user and increase the speed of the application, since less UIBBs mean less memory / CPU usage.

 

Follow these steps:

  1. Open the FPM FLUID component configuration you want to change (e.g. Form for Basic Data)
  2. In "General section", press button "Feeder class parameters"
  3. Leave the entry for "Entity" blank
    no_entity_uibb.png
  4. Now add fields to your Form / List. You will see more fields to add in the list, e.g. Base Unit of Measure from MDG entity MATERIAL and Manufacturer from MARAPURCH are available in the same UIBB:
    no_entity_add_fields.png

no_entity_several.png

5. Entity filter

In case you require only data from some entities backing an SPI node but not all, implement SNOTE 2083931 to have a finer grained control over the entities being used by a UIBB. The effects on start-up and round-trip times are similar to the One-Pager described above, but applicable in more areas. For details, see the SNOTE description. Once correctly implemented, your feeders have an additional parameter Entities that takes a list of entities read.

 

6. Remove Un-used UIBB

SAP delivers a full-blown UI with UIBBs for all entities. Usually you do not have the complete Material under governance on a central system, but only some central attributes. If the UI is simplified and un-used UIBB are removed, this greatly increases start-up and round-trip performance, as the system has less data to shuffle around internally.

 

This change requires FPM configuration adjustments, which should be applied via FPM Enhancements or Customizing, since it is a global change that affects the display of the whole application and not just one CR type. You should therefore not use CBA, as this comes at some performance impact and thus should be reserved for per CR-type adjustments.

 

Note that you cannot undo this change unless you delete your customizing or enhancement, i.e. there is no Un-Delete. If you later decide that you need one of the UIBBs you deleted, you have to start from scratch again with your deletions. That said, this change takes only minute, and you do not add new governance attributes every day.

 

Implementation steps:

  1. Open the OVP configuration you want to change in Display mode
  2. From the menu, choose Enhance and create a Create Enhancement. Specify a name from the customer namespace and continue.
  3. In the UIBB Schema, select the UIBBs you do not need and Delete them from
  4. In the Wiring Schema, a lot of wires are now marked in red as errors because their source / target UIBBs are no longer in the UIBB Schema. Delete all the red wires, like MacGuyver showed you.

 

Measure & Profit

With above changes, the main screen for Material maintenance in a CREATE scenario shows up in less than 3s. This is not stellar, but much better than the out-of-the-box experience. I would like to hear from your experiences: Is you MDG installation faster? Slower? What tricks did you come up with?

 

As already written in the introduction, SAP is working on the performance issue in many teams. If you feel MDG performance is an issue for you, remember to open an OSS message, as a signal that this is an important topic for you as a customer.

Seems like there is no direct way out there which mentions about the various bells and whistles associated with using an enterprise service in MDG, especially if there is no PI involved.

It is a bit of a challenge to get the service working as expected, but like everything else, once it does work, it does its job beautifully.

 

A few points below may help many folks out there when trying to setup any inbound web service for MDG change request creation.

 

Let me take the example of the business partner creation in MDG. No PI is involved. The requirement is to create MDG BPs through an external system call. There is a middleware which acts like a bridge between the external system and the SAP system. This middleware will ensure the call is made correctly, the data is passed to the fields correctly, the authentication happens correctly and finally the WS RM protocol is setup and utilized correctly.

 

Identify the right service:

SE80--> Package --> MDG_BS_BP_XI_PROXY -->Service Providers-->BusinessPartnerSUITEBulkReplicateRequest_In

 

Setup the service definition/binding in SOAMANAGER for this service

 

Provide the endpoint as well as the WSDL Details to the third party system

 

Ensure the bgRFC is setup correctly in the ECC system using the transaction SBGRFCCONF

 

If a change request other than the one configured for the UPLOAD activity has to be used, implement the BADI MDG_SE_BP_BULK_REPLRQ_IN  and specify the change request type to be used.

 

Setup the global code lists of the system specific code lists for any fields requiring value mapping.

 

Test the service using the Test Service Provider option available within the package (in se80) and provide a sample payload.

 

If all the setup has been done correctly, the MDG change requests can be seen getting created.

 

The error messages returned in the service are pretty extensive and provide good information on where the issue is.

Usually the key problems arise because of the inconsistent formatting of the payload, absence of proper value mapping, incorrect attributes being passed etc.

 

Ensure that the SMT mapping is validated for BPBUPA_RPLRQ_BSFND_IN and BPBUPA_RPLRQ_ECC_CU_IN as these are the key for the customer inbound mappings. The field mappings are straightforward, however the complex transformations can be tricky, especially if some fields are not mandatory.

 

During the actual inbound processing that is triggered from an external system, make sure the messages are monitored using the tool SRT_UTIL as the WSRM based messaging will not return back the details of the errors.

 

Hope this helps folks to get a head start on the inbound service setup!

Business Requirement

 

SAP Master Data Governance helps organizations govern master data from its creation in a business application,through  step by step enrichment by different roles in the organization, to its replication to target applications to ensure data quality and regulatory compliance across the enterprise. SAP master data governance can be used for multiple master data domains like customer, material, supplier, articles , finance etc. As you probably are already aware, SAP MDG  process are centered around the concept of Change Requests. Any request for creation or change of an object is handled via change request. The change request work items any user receives, as part of the governance process, are visible in his workflow inbox. In a typical business day, the user would log into his workflow inbox and start processing one work item after another. The workitem inbox in its standard  view shows only the field information from the change request header

 

In the retail industry we very often come across a requirement in article governance process , where the category manager or the purchasing manager likes to make a decision based on certain attributes on the article master data .  These could be for example, based on the Purchasing Group decide if he is the one to process or should this be picked up by another colleague in the team  or based on the price decide if he wants to include the article in his assortment therefore move the article to the next step for further enrichment  etc

 

Especially during the early steps in the governance process the category manager might not want to click on the change request item and go into the details, But rather might want to make the decision on how the workitem should be processed right from the inbox.

                                 

The category manager is looking for a view where he can look at some important fields on the article data  in a single glance and make decisions on multiple articles right from the inbox without going into the detailed view screen

 

Introduction


In this blog we will walk you through the steps required to enhance a standard MDG inbox to include additional fields.

 

Pre Requisites

 

We will enhance the inbox with the purchasing group field. The MDG for Article data model already has the field Purchasing group and hence we need not extend it. But if you want some other field as additional column in the MDG Inbox for any data model, then that respective field has  to be first extended in the Data Model


Class

 

  • Create a class zcl_usmd_crequest_powl which is an inheritance from super class cl_usmd_crequest_powl.
  • Copy the structure usmd_s_crequest_powl into your own Z structure. This is nothing but your inbox structure. Now add the additional field to this structure.
  • Reimplement the method SET_MV_RESULTSTRUCTURE in your Z class and provide this structure name over there.

        Now you have your own structure which will be displayed in your inbox. In order to pass value to this field,

  • Redefine the method  IF_POWL_FEEDER~GET_OBJECTS. Call the super method first and then have your part of coding:

 

 

 

data: : it_wi_crequest        type usmd_ts_wi_crequest,

        wa_wi_crequest       
like line of it_wi_crequest,

        it_wi                
type usmd_ts_wi,

        wa_wi                
like line of it_wi,

        lo_usmd_crequest_api 
type ref to if_usmd_crequest_api,

        it_entity            
type usmd_t_crequest_entity,

        lr_data              
type ref to data,

        it_field             
type usmd_ts_field,

        wa_field             
like line of it_field,

        lv_cond              
type string value 'wi_id = wa_wi_crequest-wi_id',

        it_sel               
type usmd_ts_sel,

        wa_sel               
like line of it_sel,

        wa_entity            
like line of it_entity.


field-symbols: <fs_results>      type any,

                 <fs_id>          
type any,

                 <fs_data>        
type any table,

                 <fs_wa>          
type any,

                 <fs_wekgr>       
type any,

                 <fs_wekgr1>      
type any,

                 <fs_matnr>       
type any.

                


super->if_powl_feeder~get_objects

   
exporting

      i_username             
= i_username

      i_applid               
= i_applid

      i_type                 
= i_type

      i_selcrit_values       
= i_selcrit_values

*     I_LANGU                 = SY-LANGU

*     I_VISIBLE_FIELDS        =

   
importing

      e_results              
= e_results

      e_messages             
= e_messages

      e_workflow_result_count
= e_workflow_result_count.


e_results assigning <fs_results>.



   
assign component 'WI_ID' of structure <fs_results> to <fs_id>.

    wa_wi
= <fs_id>.

   
append wa_wi to it_wi.



 
endloop.



  it_wi_crequest
= cl_usmd_wf_crequest_mapper=>get_crequest_by_wi( it_wi = it_wi ).



 
loop at it_wi_crequest into wa_wi_crequest.



   
call method cl_usmd_crequest_api=>get_instance(

     
exporting

        iv_crequest         
= wa_wi_crequest-usmd_crequest

        iv_model_name       
= <model name>

     
importing

        re_inst_crequest_api
= lo_usmd_crequest_api ).



   
call method lo_usmd_crequest_api->read_objectlist(

     
exporting

        iv_entity_type
= 'MARA'

     
importing

        et_entity     
= it_entity ).



   
read table it_entity into wa_entity index 1.



   
if sy-subrc = 0.



     
refresh it_field.

      wa_field
-fieldname = 'WEKGR'.

     
insert wa_field into table it_field.



     
call method lo_usmd_crequest_api->create_data_reference(

       
exporting

          iv_entity   
= 'MAW1'

          i_struct    
= 'KATTR'

          it_attribute
= it_field

       
importing

          er_table    
= lr_data ).



     
assign lr_data->* to <fs_data>.



      wa_sel
-fieldname = 'MARA'.

      wa_sel
-low       = wa_entity-usmd_value.

      wa_sel
-option    = 'EQ'.

      wa_sel
-sign      = 'I'.

     
insert wa_sel into table it_sel.



     
call method lo_usmd_crequest_api->read_value(

       
exporting

          i_fieldname         
= 'MAW1'

          if_current_creq_only
= 'X'

          it_sel              
= it_sel

       
importing

          et_data             
= <fs_data> ).



     
refresh it_sel.



     
if <fs_data> is assigned.



       
loop at <fs_data> assigning <fs_wa>.



         
assign component 'WEKGR' of structure <fs_wa> to <fs_wekgr>.



         
if <fs_wekgr> is assigned.



           
loop at e_results assigning <fs_results> where (lv_cond).



             
assign component 'WEKGR' of structure <fs_results> to <fs_wekgr1>.

             
assign component 'ARTNR' of structure <fs_results> to <fs_matnr>.

             
move <fs_wekgr> to <fs_wekgr1>.

             
move wa_entity-usmd_value to <fs_matnr>.



              
modify e_results from <fs_results> index sy-tabix.



           
endloop.



         
endif.



       
endloop.



     
endif.



     
refresh it_field.

 

 

 

this will give you the result including the Purchasing group. Now the inbox has to be changed based on this.

So, go to transaction code powl_type and change the entry usmd_changerequest_wi and change the class name11.jpg


Now your inbox will be reflected with the new value.


Note: Since inbox is a common component where all workitems from all domains are received, this column will be visible also when you login to govern your vendor master data (for example). In order to avoid this, you have to create a separate role and have your own Powl Id in that which means it will be reflected only in your current Article Inbox.

 

 

11.jpg

We started implementing Cost center and Profit center  with MDG 7.0 SP02. Our scenario is to have  a central MDG hub system where the cost centers and profit centers would be maintained and then in turn replicated to other SAP/Non SAP systems.

 

We decided to use the communication channel 'Replication via Idoc' to SAP systems.During the initial tests in development system, we found out that the standard outbound implementation classes provided by SAP perform remote validations in the target systems via BAPIs before creating and sending a IDOC for e.g.the outbound implementation class was checking if the values are being passed for mandatory fields , whether the values being transferred are available in respective check tables in target systems etc.,If these checks fail , then the replication is stopped at the MDG hub itself and the error messages are logged. These messages could be seen in DRFLOG.

 

 

This feature is in fact pretty straight forward and helps in avoiding transferring junk data from MDG hub to other SAP systems.

However , we faced couple of issues while performing tests in development system

.

1) Existence check:For some fields , the existence check is done. For e.g. there is a field called User responsible. It displays users available in MDG hub system. But users available in MDG hub system were not available in target systems and this caused issues in our tests.

 

2) Performance: We found out that the performance of the replication was not that great.  During our analysis we found out that the remote checks are taking significant amount of time.

 

I also wondered if this feature is needed in the scenarios where the MDG  hub and the target system are in the same system.

 

But this looked like a standard solution and we didn't think of contacting SAP or checking for OSS notes. So , to overcome the above mentioned issues ,  we contemplated the option of copying the standard outbound implementation class to a custom class and then skipping the validations to improve the performance. However , before starting with the implementation , I somehow had this feeling that this is not a problem unique to our organization and it could have been faced by other organizations as well. So out of curiosity I started exploring SDN and OSS notes.

 

To my surprise , I found out that SAP had already provided a solution for this via OSS notes  2052107 - MDG-F: New Parameter for DRF Outbound Implementations  and   2054082 - MDG-F: Issues in the ALE IDoc Replication for Cost Centers .

 

With the above two notes SAP has provided a new outbound parameter MDGF_NO_REMOTE_CHECK and also corresponding adaptions in the standard outbound implementation classes. If  the outbound parameter MDGF_NO_REMOTE_CHECK is set to value Y in replication model , the standard SAP  outbound implementation class skips the remote validations. This indeed greatly improved the performance.

 

I hope this blog would be helpful for all those looking to have the remote validations skipped.

Only recently, I gave a lecture about data quality and master data management/governance for a larger audience. It was a not the first time that I presented the topic, and I started my speech as usual with common business needs for adopting a master data strategy and then moved to the SAP software portfolio that is set to tackle the challenge.

I began with SAP Data Services and Information Steward being the appropriate weaponry for data quality improvement and control, and then came to SAP Master Data Governance bringing in the process component ensuring sustained master data quality by involving predefined validations and putting the relevant data stewards in the driver's seat.

The session went well, there was a lot of interest in the audience, and after the official Q&A part I was approached by a listener who stated that he liked the session overall, but was a bit confused by the product variety outlined in my presentation.

 

Well, I took the feedback... and forgot about it on my way home. It was only yesterday that this came to my mind again, and I started thinking about what the listener wanted to tell me. From an outside SAP perspective, the world obviously looks a bit different:

 

As a business or IT specialist in a company, if you are faced with data quality related business issues you want to:

 

  1. Be in a position where you can easily analyze and visualize existing data issues
  2. Be able to dig into the root cause, and be able to cleanse defective data
  3. Avoid in the long-term that such issues occur again

 

Actually the outlined SAP solution portfolio perfectly matches these needs, but the way data managers think starts with their needs and ends with a solution, not vice versa. So If I had told the story straight from a solution-oriented perspective and had come up with the associated software only afterwards, I guess the message would have been clearer.


It was really revealing how important it is to take the customers' perspective to get the message across and not just by telling how great our products are.

 

Best,

 

Markus

Dear MDG-Community!

 

Looking for information on how to build a UI for your custom object?

Then check-out the updated documentation on the help portal:

Creating User Interfaces for Single Object Processing

 

If you have the change to attend SAP TechEd && d-code, there is also a hands-on session on creating a custom object scenario, including the creation of a UI configuration. Join us at session DMM265 Build Processes for Your Own Master Data with SAP Master Data Governance in Las Vegas, Berlin, or Bangalore.

 

Can’t get there? Check-out SAP TechEd && d-code online!

 

Best regards,

Andreas

Actions

Filter Blog

By author:
By date:
By tag: