Communicating to External System from MDG through BRF+
SAP Master Data Governance software helps organizations govern financial, material, customer, or supplier master data from its creation in a business application through its replication to target applications to ensure data quality and regulatory compliance across the enterprise
Assume the Customer wants to communicate with an external non SAP system which has the Weight details of every material. Now in MDG if the weight is provided differently than the external system, then a warning message should pop up with the exact weight. This can be accomplished through BRF+.
You have already set up the required RFC destinations for communicating with the external system. In our case I will be using a excel sheet which has the material number and the weight. Then we use a Java Server which acts as an external system. I have created RFC destination and will be communicating to this RFC destination. Assumption is that The Material Number is stored differently in the external system with ‘-MDG’ concatenated to it. Extend your Data Model with 2 more additional fields so that they could hold the values of the Weight in External system and the result.
Create a Function Module which would communicate with the external System and gets back the value of the weight of the given Material. The Function Module, basically, gets the Material Number and the current weight in MDG as Input and returns the Weight and the Result from the External System.
*"---------------------------------------------------------------------- *"*"Local Interface: *" IMPORTING *" VALUE(IV_MATERIAL_NUMBER) TYPE CHAR50 OPTIONAL *" VALUE(IV_GROSSWEIGHT) TYPE STRING OPTIONAL *" EXPORTING *" VALUE(EV_Result) TYPE STRING *" VALUE(EV_WEIGHT) TYPE STRING *"---------------------------------------------------------------------- data: lv_weight type string. shift iv_material_number left deleting leading '0'. concatenate iv_material_number '-MDG' into iv_material_number. call function 'ZEXTERNAL' destination 'ZEXTERNAL' exporting iv_material_number = iv_material_number importing ev_weight = lv_weight exceptions communication_failure = 1 system_failure = 2 resource_failure = 3 others = 4. if lv_weight is not initial. if lv_weight = iv_grossweight. ev_result = 'True'. else. ev_result = 'False'. ev_weight = lv_weight. endif. else. ev_result = 'True'. endif. clear: iv_material_number, iv_grossweight.
Open the Rules, by starting transaction code ‘USMD_RULE’ and Providing ‘MM’ as the Data Model.
Now expand Trigger Function and right click on Check entity and select Create Object node->Create Function. The Check function entity should have the following Name format: CHECK_<Entity Name>.
Since our check is involved with Unit Of Measure Entity, I have named it as CHECK_UNITOFMSR.
Go to Assigned rule set and create a Rules set for calling the External System and the Function Module.
Click Insert Rule-> Create New, if the rule does not exist already.
Provide a Initial condition like, if Unit Of Measure is Initial or not.
Then Assign an Action of type Call Procedure by Clicking ADD->Perform Action->Create
Now Click Create and Navigate to Object.
Now Provide the Values as below and provide you Function Module Name which has to be called and Press Enter. The Import Variable and Export Variable are automatically fetched.
Now Click ‘ADD Parameter’ and map the Values to your Context.
Click the Parameter you want to map and Click Show Details.
Now Select the Icon that you see on Assigned Value Column and Select ‘Select Context Parameter’. It
Displays all the available Context parameters from the Data Model and your Entity type ‘Material’ and ‘UOM’ since you have added it to the Signature.
Repeat this for all the Parameters. Your final set up should look something like this:
In My scenario, I have mapped the Export Parameters of Gross Weight to EV_WEIGHT and the Result, either True or False to the other EV_WEIGHT.
Now Activate this Rule and Click Back and then Activate the Rule Set as well. Now we have to go back and Create another Rule set which can display the Error Message based on the Result returned from this Rules Set. This can be done in the same Rule Set as well. But for explanation Purpose, I have Created another RuleSet.
Now in the new Ruleset, provide initial condition as Checking the Result whether it is false and then displaying a message.
Follow the same steps as before to Create and Action of type Message and Provide the Message Number, if you have create one already or Provide a Hard Coded text.
In the excel sheet, I have maintained a Material number R128-MDG which has a weight of 90.000 in the external system. The Same Material is known as R128 in MDG and has a weight of 0.5. so when I press check, it gives me a warning message.
Now if I change the data in the excel or in MDG, I don’t get this error since it is real time.