Enterprise Resource Planning Blogs by SAP
Get insights and updates about cloud ERP and RISE with SAP, SAP S/4HANA and SAP S/4HANA Cloud, and more enterprise management capabilities with SAP blog posts.
Showing results for 
Search instead for 
Did you mean: 
This blog is continuation of series where I am explaining about the BAdI implementations based on the Customer use-cases.

Previous blog of this series can be found here.

Here you will learn how to set up the automatic and sequential Project IDs while creating a Project in SAP S/4HANA Cloud Professional Services.

Default Functionality:

With given functionality of SAP S/4HANA Cloud, Customers can enter alpha numeric values manually for their Internal and Customer Projects. But a unique number has to be maintained every time a new project is created by a Customer.

Moreover, if a customer is looking for sequential Project IDs, this might be a difficult task to manually enter them in sequence.


In order to address the above requirement, SAP S/4HANA Cloud provides a BAdI which can be implemented to generate the sequential project IDs automatically each time a project is created.

This BAdI can generate sequential Project IDs for both Customer and Internal projects. And we may define the unique identifier as a prefix to differentiate among the type of projects. In my example, I have a prefix ‘I’ for Internal Projects and ‘C’ for Customer Projects.

Let’s go through the implementation of this BAdI:

Step1: Go to Custom Fields and Logic App, navigate to Custom Logic tab and Create New Enhanced Implementation.

Step2: Select Business Context – ‘Engagement Project’, BAdI Description – ‘Generate Project IDs’ and give a description.

Step 3: Insert the following code snippet in logic:


data(lr_badi_utility) = new /cpd/cl_sc_badi_utility( ).



ev_mp_id =    ls_projectid-engagementproject " Master Project ID(used in BAdi)


IF ls_projectid-customer = ''.

ls_projectid-engagementproject = 'I' && ls_projectid-engagementproject.


ls_projectid-engagementproject = 'C' && ls_projectid-engagementproject.



In the above code we are putting a logic to generate project ID starting with ‘I’ if it is an internal project and ‘C’ if it a Customer project.

Customers can do further modifications based on their requirement.


Let's look at above logic in action in a demo video.

I have structured the demo as following:

  •            Create a Customer Project when the BAdI is not implemented

  •           Create a Internal Project when the BAdI is not implemented

  •           Implement the BAdI

  •           Create Customer Project and notice the automatic Project ID generation

  •        Create Internal Project and notice the automatic Project ID generation

Stay tuned for more.

Happy Learning!