Create Tax Category to maintain GSTIN in Business Partner for India Supplier
1. Go to T. Code - SM30
2. Type - "V_TFKTAXNUMTYPE" in the Table/View and Click on Edit Button
And then Click on "New Entries" and maintain the details
Create Tax Category to maintain GSTIN in Business Partner for India Supplier
1. Go to T. Code - SM30
2. Type - "V_TFKTAXNUMTYPE" in the Table/View and Click on Edit Button
And then Click on "New Entries" and maintain the details
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:

Selection Layout
| Field(s) | Logic |
| Purchase Order | From EKPO-EBELN |
| Vendor | From EKKO-LIFNR |
| Vendor Name | Pass Vendor from EKKO to LFA1 and get LFA1-NAME1 |
| Supplier Subrange | From EKPO-LTSNR |
| Supplier Subrange Description | Pass Vendor and Subrange to WYT1 and get WYT1-LTSBZ |
| Purchasing Group | From EKKO-EKGRP |
| Purchasing Group Name | Pass the purchasing group code to T024 and get T024 – EKNAM. |
| Document Type | From EKKO-BSART |
| Item No | EKPO-EBELP |
| Item Category | EKPO-PSTYP |
| Material | EKPO-MATNR |
| Material Group | EKPO-MATKL |
| Material Group Description | Pass material group to T023 and get T023- WGBEZ |
| Plant | EKPO-WERKS |
| Material Description | MARA-MAKTX |
| PO Creation Date | EKKO-AEDAT |
| PO Quantity | EKPO-MENGE |
| Ordering Unit | EKPO-MEINS |
| Conf. Control | EKPO-BSTAE |
| Inbound Delivery | Pass PO number, item number, Confirm. Cat.: LA to EKES and get the inbound delivery number. If multiple found, then sort in descending order and get the latest one. |
| PO History | Pass PO and item to EKBE and see entries found. If entry is there, then show the graph. Note: T-code: ME2N is prime example on how to show the graph. If developer can find, then we should leverage that. |
| PO Item Delivery Date | Pass PO and item number to EKET and get EKET-EINDT |
| Price Overwrite | Pass PO to Table: EKKO and get the Doc. Condition No. (EKKO- KNUMV). Pass Condition No. To table: PRCD_ELEMENTS with PO item number and Inactive condition (KINAK) as blank and see if we have PBXX. If yes then show PBXX else blank |
| PO Net Price/Currency | EKPO-NETPR/EKKO-WAERS (for example $2800/USD) |
| PO Price Unit/Ordering Price Unit | EKPO-PEINH/EKPO-BPRME (for example 100/EA) |
| Current Period Validity Date (From – to) | Note: Within PB00 pricing team is loading price in tables: A017 and A018. If the A017 record then gets trigger else it will go to A018. ***************************************************** Logic: (Developer can explore functional module. I have tried using ME_GET_INFORECORD_CONDITIONS which works fine for PB00 and PB01) Pass Application – KAPPL = M, Condition Type – KSCHL = PB00, Vendor – LIFNR, Material – MATNR, Purchasing Org – EKORG, Plant – WERKS, Info Type – from PO line to Table: A017 and get the condition record number where Valid From < = System Date and Valid To > = System Date. Pass all the records to KONP, sort by ascending order and select 1st non-delete record. If no record is found then go to next. Pass Application – KAPPL = M, Condition Type – KSCHL = PB00, Vendor – LIFNR, Material – MATNR, Purchasing Org – EKORG, Plant – WERKS, Info Type – from PO line to Table : A018 and get the condition record number where Valid From < = System Date and Valid To > = System Date. Pass all the records to KONP, sort by ascending order and select 1st non-delete record. If no record found, then go to next. Also get A017-DATAB to A017-DATBI or A018-DATAB to A018-DATBI for valid record |
| Current Period Price/Currency | For the valid condition record get the KONP-KBETR/KONP-KONWA (For example $284/USD) |
| Current Period Price Unit/UoM | Also get the KONP-KPEIN/KONP-KMEIN (For example 100/LB) |
| Scale Exist? (Flag Yes or No) | If KONP- KZBZG has value, then Scale Exist = Yes else No |
| Apply Updated Cost | Checkbox |
| Yes or No value for PO Price Vs. Next Period Price | Compare PO Net Price/Current, PO Price Unit/Ordering Price Unit with Next Period Price/Currency and Next Period Price Unit/UoM. If it’s matching, then show Yes else No. |
| Previous Period Validity Date (From – to) | Pass Application – KAPPL = M, Condition Type – KSCHL = PB00, Vendor – LIFNR, Material – MATNR, Purchasing Org – EKORG, Plant – WERKS, Info Type – from PO line to Table : A017 and get the condition record number where Valid From < System Date. Pass all the records to KONP, sort by descending order and select 1st non-delete record. If no record found then go to next. Pass Application – KAPPL = M, Condition Type – KSCHL = PB00, Vendor – LIFNR, Material – MATNR, Purchasing Org – EKORG, Plant – WERKS, Info Type -from PO line to Table: A018 and get the condition record number where Valid From < System Date. Pass all the records to KONP, sort by descending order and select 1st non-delete record. If no record found, then go to next. Also, get A017-DATAB to A017-DATBI or A018-DATAB to A018-DATBI for valid record |
| Previous Period Price/Currency | For the valid condition record get the KONP-KBETR/KONP-KONWA (For example $284/USD) |
| Previous Period Price Unit/UoM | Also get the KONP-KPEIN/KONP-KMEIN (For example 100/LB) |
| Yes or No value for PO Price Vs. Previous Period Price | Compare PO Net Price/Current, PO Price Unit/Ordering Price Unit with Previous Period Price/Currency and Previous Period Price Unit/UoM. If it’s matching, then Yes else No. |
| Purchasing Info Record | Pass PO number and line item to EKPO and get the EKPO- INFNR. Show that as Hyperlink and when user clicks on it, it should call T-code:ME13 (Fiori tile: Display Purchasing Info Record). Pass the PIR Number, Purchase Organization and Plant to display the record. |
| Status Log | Successful/Failed message |
Results after Implementing solution:

Selection Screen
Buyers click on go after entering single or multiple purchasing groups

Output

More fields in the Output

More Fields In the Output
As shown below, buyer can select one purchase order or multiple purchase orders and click on “Apply PO Cost”

Apply PO Cost

Confirmation for Update

Update Message
Conclusion:
Introduction:
To initiate, it’s worth considering how often clients have asked you to deactivate storage locations within a plant during your SAP career. This may have happened numerous times, prompting the following question: what’s the solution for deactivating them? Deleting the storage location after it’s been created isn’t the best because it can lead to database inconsistencies (Table: MARD has Material, Plant, and Storage Location combination). Therefore, one possible solution is to rename the storage location name as “DON’T USE,” which will make it clear to users that it’s no longer in use. After renaming it to “DON’T USE,” the storage location will still appear in the dropdown list, and the possibility that the user will create/extend materials to a storage location.
The configuration in S/4 HANA now allows for the deactivation of storage locations, a functionality not previously available in SAP. Note: This is performed on S4HANA ON PREMISE – 2021 Version.
Configuration:
| IMG Path | SPRO –> IMG –> Enterprise Structure –> Definition –> Materials Management –> Maintain storage location (T-code: OX09) |

Validity
As shown above, SAP has now introduced Validity Field with Dropdown Value as
Scenario 1: Change Validity from Blank to E – No Longer Valid
T-code: OX09

Configuration Change

Configuration Change

Configuration Change to E

Validity E

MM01 Validation

MMSC Validation
Scenario 2: Change Validity from Blank to W – Deprecated
T-code: OX09

Configuration Change

Configuration Change

Configuration Change to W

Validity W

MM01 Validation

MM01 Validation for SL

MMSC Validation
Conclusion:
Prerequisites:
Differences and Advantages between Classic Release strategy and Flexible Workflow:
| Strategy | Operation | Starting Condition | Validity Period | Step Sequence | Class/ Characteristics | HCM Required | Deadline |
| Classic Release Strategy | SAP GUI | Net Value, CO-Code, PUR.Grp, Material group, Currency etc., | No | No | Yes | No | No |
| Flexible Workflow | Fiori APP | Cost center, Currency, Company Code, Net order Value, PUR.Group etc., | Yes | Yes | No | Yes | Yes |
Flexible Workflow for Purchase Order – Configuration steps:
| Step – 1 | Flexible Scenario Activation | MM Consultant |
| Step – 2 | Activate Flexible Workflow for Document Types | MM consultant |
| Step – 3 | Maintain Task Names and Decision Points | ABAP Consultant |
| Step – 4 | Client Dependent Configuration | Basis Consultant |
| Step – 5 | Perform Task Specific Configuration | ABAP Consultant |
| Step – 6 | Activate Push Notification 2.0 | ABAP Consultant |
| Step – 7 | Manage Workflows for Document Types | MM Consultant |
SPRO => IMG => Material Management => Purchasing => Purchase Order => Flexible Workflow For Purchase Order => Maintain Standard Settings
This Customizing activity has the following areas

Open the Manage Workflow for Purchase Orders. The application is blank with the message “There are currently no scenarios available”.

2. Activate flexible workflow scenarios
SPRO => IMG => Material Management => Purchasing => Purchase Order => Flexible Workflow for Purchase Order => Scenario Activation
Activate the workflow scenario ID as shown in the table below. Scenarios will become visible in the Manage Workflows for Purchase Order Fiori App once activated here.
| Scenario ID | Workflow Name |
| WS02000238 | Release of Purchase Order (Manual) |

3. Activate Flexible Workflow for Purchase Order Doc. Types
SPRO => IMG => Material Management => Purchasing => Purchase Order => Flexible Workflow for Purchase Order => Activate Flexible Workflow for Purchase Orders

4. HR-BP-User synchronization:
It is the prerequisite to use HR and BP to assign the task of releasing PO for a user, assign a user to the Personnel number with the communication type.
Step:1 Create a Personnel Number with the transaction PA30:
Maintain the Communication as System User ID Name.

Click on Overview see their details.

Step: 2 Create a business partner with the transaction BP

At the end-run report /SHCM/RH_SYNC_BUPA_EMPL_ SINGLE to synchronize created master data.
Step: 3 Define Personal Areas
SPRO => IMG => Enterprise Structure => Definition => Human Resources Management => Personnel Areas


Click on Personal areas

Select the line item click on details

Step: 4 Define Personal Subareas
SPRO => IMG => Enterprise Structure => Definition => Human Resources Management => Personnel Subareas.
Click on Create Personal Subareas

Click on New entries create new one

Step: 5 Assignment of Personnel Area to Company Code
SPRO => IMG => Enterprise Structure => Assignment => Human Resources Management => Assignment of Personnel Area to Company Code.

Search in the APP Finder for which Process we have to create. Here I’m doing Manage Flexible workflow for Purchase Order.
4. Manage Workflow for Purchase Order: Setup Required Pre-conditions and Step Sequence.

Click the Add button to create a new workflow for purchase orders. This will open the Nelw workflow page


Enter Workflow Name, Description, Valid From, Valid To. Enter the Start Condition for the workflow.

To add the Step sequence, click the add button in the Step Sequence Section. In the New Step page, Enter the Step Name and Step Type as Release of Purchase Order.

5. For Recipients Select User for Assignment By. For the user field, select a user from the Search help.

There are two options:
If we know the User ID, we can directly enter the username in the search box or else we can click on the Go button to see the existing users in the system.

6. If we can’t get any User ID, then we have to check the below Configuration.
i. Activate HR Integration –> Goto SM30 –> Maintain table T77S0 –> search for entry group: HRALX, sem. abbr.: HRAC and set the value abbreviation value to X

ii. Go to the customizing path
SPRO -> Cross-Application Components -> SAP Business Partner -> Business Partner -> Basic Settings -> Identification Numbers -> Define Identification Categories.
iii. unset Identification Categories for HCM0001 for Disp. Only.
7. If we maintain all the Pre-requisites correctly the Deadline tab is triggered.
Exception Handling:
8. If the Approver Reject the workflow what is the action result is to be taken is maintained here.
9. click the Add Button to Add the above step to the workflow.

10. Click the Save button to save the workflow.

11. Click the Activate Button for the workflow to be activated.

The System defines in the Sequence order. So, we need to maintain flexible workflow at the top or else we can Inactivate the other person’s Flexible Workflow.

Click the Define Order button to ensure that the workflow gets triggered if the Start conditions are met.

12. Create a Purchase order in the Manage Purchase order application. We can see the Approval Details for the Purchase Order in the Approval Details tab.
13. Open the My Inbox application for If the relevant task is not visible do the below steps.
14. Goto SAP Gateway Service Enablement –> Content –> Workflow Settings –> Maintain Task Names and Decision Options.
i. In the Step Name: Overview

ii. Select the above entry and click on Decision Keys and maintain the two Decision keys as below.

15. Assign Agents and Activate Event Linkages for Workflow ID WS 00800238 and TS 00800531
SAP NetWeaver –> Application Server –> Business Management –> SAP Business –>Workflow –> Perform task-specific Customizing
i. Navigate to the SAP application component MM-PUR-PO
ii. Click Assign Agents –> select line with TS00800531 –> Click Attributes and select General Task–>click Transfer.

iii. Click Activate Event Linking–>Expand the hierarchy to display the relevant event for WS00800238 –>Activate the linkage for the listed event by clicking on the Deactivated button.

Now create the Purchase order in ME21N T- Code
Based on the Document Type and the starting conditions that we maintained in the FIORI App the Flexible workflow is triggered.

Here Flexible Workflow is trigger and check the Approver details.

Check Task ID and Status.

The Approver has logged in to the FIORI APP and in the Inbox App he gets the notifications. He went to the Inbox App and released the document (Either Approve/Reject).
iv. Once done the task will be visible in the My Inbox application, but still, there is no mail received by the recipient.
16. Now let’s set up the Email transmission. The prerequisite to set up the Email is as below:
i. In Transaction Code S_ATO_SETUP, set up Adaptation Transport organizer with specific data using ZZ1_ as prefix and sandbox prefix as ZZ9_.
After maintaining the prefix and sandbox prefix click on the setup specific data to create setup.

ii. SOST and SCOT configuration should be in place
These are the initial screens of SOST and SCOT. These two transcations are done by the Basis team.
Transaction code SOST is used to display and administer of all messages sent using SAPconnect. The program displays send requests that are being sent, or have already been sent by using SAPconnect. In this transaction, a send request always contains just one recipient.

Mainly SCOT Transcation code is the one where we can get the notifications through Mail ID, FAX etc.,

To add/create the Mail ID.

iii. Ensure Email address is maintained for the users in su01.
17. Open the Maintain Email Template application. In the pre-delivered section find the template SWF_CRT_NOTIFY_RECIPIENTS.
18. Copy the above-mentioned template for each of the workflow scenarios. e.g., YY1_00800238_CRT_ALL for PO. This workflow template will be triggered to notify the recipients of the newly created PO, or whenever there is a PO task for approval.
19. Copy the pre-delivered template SWF_WORKFLOW_COMPLETE_NOTIFY for each of the workflow scenarios. e.g., YY1_00800238_COMPLETE_POSITIVE for PO. These workflow templates will be triggered to notify the recipients of the completed POs, whether completed positively or negatively.

Test again by creating a PO. If the mail is still not getting triggered Report RSWF_OUTPUT_MANAGEMENT needs to be executed manually with parameter productive in order to release the emails manually.

With this, we conclude the configuration required for Flexible Workflow for Purchase Order including the email trigger functionality. Please do share in the comments if there are issues apart from the ones mentioned in the blog.
Conclusion: Flexible workflows can be customized through the scenarios that can be created and made suitable according to the needs of your processes without needing any development. Also, key users can make changes and edit these scenarios without needing developers.