Technical Articles
Extending Customer Master App: In-App Extensibility
With S/4HANA, comes another hot topic that we have been hearing a lot about …yes, you guessed it right… Extensibility i.e. how we are going to enhance or customize the standard processes or applications according to our business needs.
In this blog, I am going share step by step process on how we can enhance the standard Customer Master app using In-App Extensibility.
Let’s say we have a requirement to add a custom field into the customer master. So, first thing that comes into mind is how we are going to achieve it in S/4HANA… In ECC , we would have enhanced the standard table by including the custom field or looked for the screen exit to add field to the screen and must have written the field update logic in user exit… but what should be the approach in case of S/4HANA…
And the answer is, if we are working in S/4HANA On-premise version, we still have all the above options available but the recommendation is to use In-App Extensibility ; which can fulfill your requirement and in case of S/4HANA Cloud, In-App extension is the only option…yes, the only option.
In my case, I am working in On-premise version. But, nothing to worry even if you are working in Cloud, as the In-app Extensibility works the same way in both cases.
Moving forward, let’s say we have to add custom field “Sales Zone” to the customer master general information section and we should be able to Add/change/display value in the field from our standard Customer Master App.
Below is the step by step approach.
- GoTo the Fiori Launchpad and open the Customer Master App as shown below.
- Initial screen will look like this. Next step is to check if we have the access to adapt/enhance the screen. To do so, click on the User Icon as shown below.
- Check if you can see the Adapt UI option. In case you don’t see it, that means you are missing the required access.
- To be able to extend the application you need to get the “SAP_UI_FLEX_KEY_USER” role to your user ID.
- Once role is added, check the user details again to see if you are able to see the “Adapt UI” option.
- Now, go back to the customer master app and click on Go. You should see the customer details.
- Select any customer and click to display the details.
- Customer details will be displayed as shown in screen shot below. So this is the screen where we want to add a custom field under Basic Data tab in General information. Click on User icon and select Adapt UI option.
- Once we select the “Adapt UI” option we will see that we are in UI adaption mode. Right click on the screen we want to add custom field and click on Create group.
- A group will be created with the name “New Group”. Right click on the group and click on rename to give any name as per your choice. I am giving the name “Customer Fields”.
- Now let’s add the custom field to this group. Right click again and click on “Add field”
- In the popup screen , you will see all the fields available as a part of the standard datasource. If we want to add any of this available fields we can just select and it will be added to the screen. But, yes…you are right … we have the need to add custom field. So, to do so, click on “+” (create custom field, association or logic) icon on the pop up screen “
- The click on “+” icon will navigate you to the “Custom fields and Logic” app’s initial screen. The good part is that it will automatically select Business Context applicable for the screen where we want to add the custom field…Yes, you read it right… No, more confusion on which Business context to select.
- Click on “+” (Create) icon to create a custom field
- The pop up screen will have Business context pre-populated and we just need to fill rest of the details like Label which is “Sales Zone” in this case, data type, length. After filling the details, click on “create and publish” button.
- The screen will show your custom field details with status as “Publishing”. It will take some time to change the status to published. Basically, it automatically adds the custom field to the standard table which customer master table in this case.
- Ones Publish, we can go to back-end and see that the field is automatically created in the Business Partner General data table (BUT000) in this case as show blow.
- To see which all tables this field has been automatically included, just do the where used list on the data element of the field.
- Let’s get back to the task. So, now we have created the custom field “Sales Zone” and published it. Now, we need to add it to the screen where we started from. Right click on the custom group “customer fields” that we created and click on add field. This time you should see the custom field “Sales Zone” in the list of available fields. Select the field and click ok.
- So, we have now successfully added the custom field “Sales Zone” under the “Custom fields” group that we created as shown in screen shot below.
- Click on “Save & Exit” and get out of the UI adaption mode.
- We are out of the UI adaption screen now and we can see our custom field on standard screen. Let’s say we now want to update data in this field now. Just click on the “Edit” button and the we will see the editable screen with option to put data in our custom field.
- Enter the data in the field, “Test Zone” in this case and click on save. You will get a message “Master data record saved” on successful update in database.
- We can see the updated data in the customer details screen.
- We can check in the back-end table BUT000 also for customer “100000” which we just updated. And as shown below, we have the data in the standard table as well.
- What about when we create the new customer? Let’s see that also. Go to the initial screen of the app and click on create and Select either of person or organization.
- On the Input pop up screen, provide the customer name (mandatory field), in this case, “Extensibility test customer” and any other option inputs if you want and click ok.
- In the next screen, we can see the custom field “Sales Zone” is available even in create customer scenario. We can enter all the required data along with sales zone and can create the customer.
- And we have successfully created the new customer “1000020”
So, does that mean we can enhance any app or any screen using this approach and the answer to this is NO .
Then how do we know which screen can be extended?? Very well, when we click on “Add Field” under the UI adaption screen, the “+” to add custom field would be grayed out as is shown in below screen shot when we try to add custom field in the address details screen.
With this we have successfully extended the Standard Customer Master App using In-App Extensibility approach.
Thanks
Vijay
very well explained and I love the way you compare and explain w.r.t. ECC.
Thanks Amit!
Very nice and helpful blog.
In the last days I was working on a similar project and I have some doubts about the adaptations.
Could we add a value help to our custom field?
Could we add some validations to the custom field?
In a adaptation project do we have any way to change the service like in extensions?
I faced some difficulties also adding standard fields. I had to extend the cds but not sure what was the best option to add the validations and value helps.
May be in a second part of this amazing blog you could explain it.
Thanks a lot
Jordi
Hi Jordi,
Using In-app we can provide drop down values to the custom field by making it of type code list in Custom fields and logic app and maintain the required values there. Those values will appear as drop down values to select from in app.
For the validation part, we need to check for our scenario if the suitable business context is available for validation. Like in this case, we can validate the custom field values in business context "Business Paartner Core View" and BADI "Validate BP BADI".
Thanks
Vijay
Hi Vijay,
Well explanation with step by step.
Is this adaptation feature can be applicable to all SAP UI5 apps as well in S/4HANA or only Fiori Elements?
Thank you,
Syam
Thanks Syam!
This feature is available for limited business contexts and the list is growing with every release. You need check out the available business contexts and the and components, which are available and can be enabled for this adaption , in your current version.
Thanks
Vijay
Hi Vijay Sharma
Great blog i have enhance the fields in the VBAP and activated the VA01 /VA02/VA03 screens and I would like to change the tab description to a different as i see custom fields right now. Let me know the possibility like our screen and menu exits ?
Thanks,
Vijay
Hi Vijay,
Good blog, Can I just ask, when we are extending the UI with a custom field, where will be UI changes recorded ? A workbench transport request on the onpremise S/4 is created after we publish?
Hi Vijay
This is good blog.Could i ask on some doubts, please share the supported Shana versions and is it fulfill the business requirement in on promise system.
Hi Vijay,
I have added two custom fields thru Fiori App and am able to populate those fields. I wish to add the custom fields on the BP transaction, how do I achieve this using Fiori app? Is there a way to do this without writing the Screen exit?
Thanks,
Pavan
Hi Vijay,
Very detail and nice explanation. Thank you.
Can we get P&L report based on this custom field? I could not find custom field on customer attributes features on reports. (Cloud)
Kind Regards,
Resul
Hi Resul,
I can't say for sure unless i check the scenario in detail . But if you don't see the custom field directly, see if a business context is available for the underlying application and include the custom fields in that process and populate that field from the customer master custom field based on customer, in custom logic and use it in the P&L report.
For e.g. I want to use this custom field in my sales report but i don't have this field available in there. So, what i did is ,extended the sales order tables with a similar custom field and populated the same from customer master custom field based on sold to party under custom logic. So, not this sales table custom filed is having the data i need and is available to used in sales analytics reports.
hope this will give you some ideas.
Regards
Vijay
Hi Vijay,
I thought same logic with you. Perhaps I can open COPA field to populate. I will consider whether it is worth.
Thank you Vijay
Kind Regards,
Let us know if this approach works for you
Hi Vijay Sharma,
Thanks for sharing nice info. I have a question. I want to add a custom field to API_BUSINESS_PARTNER and would like to pass the value to KNA1-KATR4. Since this field is not available yet on the API (in 1909 On-Prem), we want to do a workaround for this. I have raised an incident to SAP and got a response that it will accommodated in the future releases. But we want to have a workaround for now. How do I save the custom field value to KNA1-KATR4? Is there a user exit or BAdI that I can use to achieve this?
Really nice and simple explanation. Thanks
Thanks, Vijay, for sharing such helpful information.