Introduction: In this blog, I will try to demonstrate the functionality of mass purchase order reprice in SAP S/4 HANA.
The pandemic lead to a massive shutdown followed by a slowdown and cause supply chain disruption. Disruption in the supply chain, raising fuel and freight costs often leads to frequent price changes from the vendors (especially oversees long lead time items). As a buyer, it’s important to catch up with frequent and fast changes to make sure the landed cost of the product is correct and 3-way match happens as accurately as possible. This blog will help on how to achieve the solution.
Prerequisites:
Standard SAP options:
Below is the standard SAP option that was explored:
Both of the above challenges force me to think of a custom solution.
Solution Approach/Design:
The pandemic lead to a massive shutdown followed by a slowdown and cause supply chain disruption. Disruption in the supply chain, raising fuel and freight costs often leads to frequent price changes from the vendors (especially oversees long lead time items). As a buyer, it’s important to catch up with frequent and fast changes to make sure the landed cost of the product is correct and 3-way match happens as accurately as possible. This blog will help on how to achieve the solution.
Prerequisites:
- Price update from the vendor will be updated on Purchasing Info Record as a new valid condition record.
Standard SAP options:
Below is the standard SAP option that was explored:
- Standard SAP has t-code: MEI1 which allows updating PO based on condition changes, but standard SAP looks at the PO creation date and condition validity period date and updates the price.
- It was also found that once we process records using MEI1, it is deleting the Table: WIND entries for that vendor of all the items. That means as a buyer, if you want to work on certain items on the PO the next day, you lost visibility of price updates.
Both of the above challenges force me to think of a custom solution.
Solution Approach/Design:
- Create a Fiori tile as per the below layout
Selection Layout
- No of Day in the Past*: Mandatory; This is for performance. From day of execution, how many days back do we want to go for the document date; by default 180 days.
- Purchasing Group*: Mandatory; Multiple selection drop-down; Validation: T024- T024; E: Purchasing Group Required or E: Invalid Purchasing Group.
- Purchasing Document Type: Optional; Multiple selection drop-down; Validation: T161- BSART; E: Invalid Document type.
- Supplier: Optional; Multiple selection drop-down; Validation: LFA1- LIFNR; E: Invalid Supplier.
- Supplier Subrange: Optional; Multiple selection drop-down; Validation: WYT1- LTSNR; E: Invalid Supplier Subrange.
- Plant#: Optional; Multiple selection drop-down; Validation: T001W-WERKS; E: Invalid Plant.
- Material Group#: Optional; Multiple selection drop-down; Validation: T023-MATKL; E: Invalid material group.
- Material#: Optional; Multiple selection drop-down; Validation: MARC-MATNR; E: Invalid material.
- Next Period Price/Currency: Optional;
- Price Over-Ride: Optional
- Future Cost Match: Optional; drop-down; values are Yes Or No
- Fiori tile validates the data keyed in by the user and captures the appropriate error message in case of errors as stated above.
- After validating input screen data, once the user clicks on go, the program does the following:
- Based on the input, fetch the only open PO(s) undelete and without Free of Charge. Open PO(s) can be found where EKPO-ELIKZ not equal to X and undeleted PO(s) can be found where EKPO-LOEKZ is not equal to L and EKPO- REPOS = X (Excluding Free PO(s) as well).
- Only fetch the PO(s) where item category EKPO-PSTYP not equal to 2 – Consignment and 7 – Stock Transfer (Basically, we don’t want consignment and stock transfer PO(s) as it doesn’t have net price).
- Below are the fields and logic:
Field(s) | Logic |