How to use Digital Manufacturing MDOs within PPD E... - SAP Community
source link: https://community.sap.com/t5/product-lifecycle-management-blogs-by-sap/how-to-use-digital-manufacturing-mdos-within-ppd-example-where-used-report/ba-p/13680276
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Hello everyone,
In this blog, I would like to share my learning experience and a sample result that I gained from solving a common customer requirement: creating a Where Used Report with the option to trigger follow-up activities. The challenge was solved using existing Digital Manufacturing features.
General learnings: How to use Digital Manufacturing Master Data Objects (MDOs) in combination with Production Process Design (PPD).
Kudos to my colleague Vivekananda Panigrahy who helped me with all my questions. Without him, this would not have been possible.
Note: The example is set up and tested using Production Orders and Workcenter POD, following the guidelines for using MDOs as described in Note: 3324908 - Additional information on Digital Manufacturing for insights APIs
Use case example
Imagine a customer manufacturing a multi-level product.
To illustrate this let's use a concrete example, the customer produces printed circuit boards (PCB) (a semi-finished product) that are made up of several batch-managed components. The PCB is then used as a component for a smart key in a subsequent production step.
Figure 1: Bill of Material – Finished Product KEY_520
The customer is looking for the ability to easily identify the impact of supplier reported issues for specific components used in the PCB manufacturing process in order to mitigate quality and cost impacts in production.
To achieve this goal, the following capabilities are required:
1. Ensure comprehensive data collection during assembly to ensure traceability to the finished product.
2. Facilitate easy identification of where specific components are used across different product hierarchies.
3. Enable flexible responses based on the status of the product. For example, if a product containing the component is still in production, it can be put on hold; if it is already DONE and in stock for further consumption, stock could be put on hold.
Let's look at these requirements in more detail and discuss how they can be addressed using the configuration and extension capabilities of digital manufacturing.
Ensure traceability throughout the assembly process
In Digital Manufacturing we support predefined data types for the assembly category. Using INV_SFC as the data type to be collected during Assembly Consumption, workers are required to enter either an Inventory ID or an SFC number before proceeding with the assembly process.
The configuration of data collection at assembly consumption can be implemented at either material or BOM level. See the material level example below.
Figure 2: Manage Material– Data to Collect at Assembly/Consumption
The information for INV_SFC Data type is captured during assembly and stored in the Digital Manufacturing Master Data Object SFC Assembly Event to ensure the traceability.
Figure 3: Assembly Plugin
Easily identify where a particular component is used across different product hierarchies.
We offer several ways to achieve this using Manufacturing Master Data Objects as a data source:
- Via direct calls to MDO APIs - OData service
- Using the Digital Manufacturing Manage Dashboard capabilities to build a dashboard based on MDOs. For an example, visit the blog https://community.sap.com/t5/product-lifecycle-management-blogs-by-sap/component-backward-search-in-...
- Via PPD using Business Services. Focus of this blog.
By using the MDO SFCAssemblyEvents OData service, we can easily identify which SFC the component was used for.
Figure 4: Details of SFC Assembly MDO – Latest Documentation always check https://help.sap.com/docs/sap-digital-manufacturing/insights/about-sap-digital-manufacturing-for-ins...
The information about the assembled component is stored in the ComponentInventory field. This could be the inventory ID for a batch-managed material, or an SFC number if we are assembling the semi-finished product produced in an earlier step.
In our example it would be:
Inventory ID for the material COMP_01 (Batch managed material) that is assembled into the semifinished product KEY_ELECTRONIC_BOARD_520.
The SFC number for the semifinished product KEY_ELECTRONIC_BOARD_520 that will be built into the product KEY_520.
Now all we need to do is query the OData service with the correct parameter.
If you are not yet familiar with how to query the OData service, I suggest you explore the resources available on the internet.
In general, it is important to define the OData service call as precisely as possible to limit the data we retrieve. This improves performance and reduces complexity.
In my example, I use the ComponentInventory as the filter and select only the Sfc data as the result.
To provide flexibility in querying the data and determining how to react to the retrieved result, let's implement a Production Process Design.
Implementing flexibility with Production Process Design (PPD)
In preparation, we need to register the MDO API in the Service Registry. Once this step is complete, we will be able to use it within PPD.
Configuring the MDO API as a custom service in the Service Registry
Managing Web Servers
To register the MDO API as a custom service, you must first create or reuse a web server.
The web server should have the following settings
- Host URL: public-api-endpoint
In my case the public-api-endpoint was https://api.test.eu20.dmc.cloud.sap as my tenant runs on EU20. - It needs to be consumed by the DMC_Cloud web server. This step is critical for the service to be visible in the Production Process Designer.
Manage Web Servers -> Search for DMC_Cloud -> Create a connection to the web server you created/reused for the MDO API.
- Destination: You can reuse the already configured SAP_DMC_DEFAULT_SERVICE_KEY for calling APIs.
If this is not already configured, see SAP HELP for detailed instructions on how to set it up.
Figure 5: Manage Web Servers
Manage Service Registry
Create a new service with the end point to the desired MDO.
In our case, we aim to use /dmci/v1/extractor/SFCAssemblyEvents.
For additional information on Digital Manufacturing for insights APIs, please refer to Note 3324908.
Figure 6: Manage Service Registry
As we will generate the Parameters during Production Process Design, we will keep the Parameters generic.
$filter, $format, $select all of Data Type String
Configure Production Process Design
Input Parameters:
- Name: inComponentInventoryIDs
- Type: StringArray
- Description: Array of Component Inventories IDs
Results:
- Name: VOveralResultList
- Type: String Array
- Description: Array of SFCs found.
Within the production process, we run several script tasks to prepare the input for the call to the MDO and to enable iterative search across multiple product levels. To support the iterative search, we use process variables to store the found SFCs as input for the next run and to collect the total list of affected SFCs in a result list.
Figure 7:Production Process Design KH_FloorStock_OnHold_WhereUsed
Example:
We will search for the inventory ID EP01IR1, which represents a batch for the component COMP_01, which is used in the semifinished product KEY_ELECTRONIC_BOARD_520.
The following KEY_ELECTRONIC_BOARD_520 material SFCs were produced with this batch: EP011, PCB_001
We will now use this as an input to see if these semi-finished products have been used in subsequent steps.
PCB_001 has already been used in the finished product.
Figure 8: Production Process Design
As you can see, the result is as expected. 3 SFCs are found: EP011, PCB_001, EP01295_1
All of them might be impacted on the quality issue found within the Batch of inventory ID EP01IR.
For Reference Production Process Control Details
Control: InitializeSearchParameter_ ComponentInventoryIDs (ScriptTask_2)
In the ScriptTask_2 we initialize the Process Variable
Figure 9: ID:ScriptTask_2 Name:InitializeSearchParameter_ ComponentInventoryIDs
Control: PrepareMDOQuery (ScriptTask)
Figure 7: ID:ScriptTask Name:PrepareMDOQuery
Control: Service_SFCAssemblyEvents (Custom Business Service)
Figure 8: Service_SFCAssemblyEvents (Custom Business Service)
Control: Store Retrieved SFCs (ScriptTask_1)
Figure 9: ID:ScriptTask_1 Name:Store Retrieved SFCs
Flexible way to react based on the status of the product
There are again several options to achieve this:
- Create a PPD for specific actions
This could be achieved by modifying the PPD example with specific filters when retrieving the SFC, such as only retrieving the SFC with Status=Done followed by a call to put the inventory on hold. - Create a custom plugin to call the PPD, display the result and allow the user to select the SFC for which further actions should be triggered.
I have chosen this option and I am currently preparing a separate blog post on this topic which will be published within the next week.
Figure 10: Sample Custom Plugin
Conclusion
With Digital Manufacturing Extensibility Options, we can easily build a Where Used Report and trigger follow-up action based on business needs. Additionally, in this blog post, you learned how to configure and use MDOs APIs in Production Process Designer.
Did you find this post useful? Please share your thoughts in the comments section below. Any feedback is highly appreciated.
If you have any questions, please visit SAP Community Q&A Area or leave a comment below.
Thank you very much,
Katja
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK