Skip to Content
Author's profile photo Jerry Wang

One order extensibility in S4HANA for Customer Management

In SAP CRM we use Application Enhancement Tool(AET) to create extension field in a very convenient way.
When I was working on SAP CRM, I have also made some research on AET. Here below are some of my blogs in SAP community:
In S/4HANA for Customer Management(called S4CRM for short in the following part of this blog), AET should no longer be used, since S/4HANA has its own extensibility tool, which instead should be used to create extension fields on S4CRM model like Product and One Order.
We are aware of the fact that there are indeed some features supported by CRM AET which is not available in current S/4 Key User Extension tool(KUT).
For example, there are some field type provided by CRM AET but not possible in S/4 KUT:
However this small limitation could never become a real showstopper in business process, so currently we leave it in S/4HANA for Customer Management 1.0.

How to create extension field using S/4HANA extension tool

Click tile “Custom Fields and Logic”:
Create a new extension field:
Specify field detail. The field creation UI looks almost the same as the one in CRM AET:
Select the created extension field and press “Publish” button in footer toolbar, which works as the “Save and Generate” button in CRM AET. Once done, the status should become “Published”.
Check CRMS4D_SERV_H in backend to ensure that the extension field appears in persistence table successfully.
Why the extension field is visible in CRMS4D_SERV_H? Launch S/4HANA tcode SCFD_REGISTRY, and double click the Business Context CRMS4_SERV_H, which is actually the technical model for business context “Service Header” visible in S/4HANA extension field UI.
The persistence include CRMS4S_SERV_H_INCL_EEW_PS is defined in this business context, and is included by CRMS4D_SERV_H. As a result, whenever an extension field is created based on business context CRMS4_SERV_H, the extension field will be available in include structure CRMS4S_SERV_H_INCL_EEW_PS and then automatically available in CRMS4D_SERV_H.

How to put S/4HANA extension field to CRM WebClient UI

In S/4HANA for Customer Management, all custom fields added through S/4HANA Extensibility tool will only be available in Customer_H/Customer_I BOL Component or context nodes.
However if you open BT116H_SRVO/Details in SAP CRM, you find that by default context node CUSTOMERH is not exposed.
Please follow the blog Enhancing a UI Component in CRM Web UI to expose CUSTOMERH in CRM UI component workbench. Use tcode SM34 and maintain view Cluster BSPWDVC_CMP_EXT to define an enhancement set ZCRMS4.
Expose context node CUSTOMERH and store the enhancement to this enhancement set.
Now you can see the created extension field under context node CUSTOMERH.
Make it visible via UI configuration as usual in SAP CRM:
Now maintain some value in the extension field and save the change:
The value is successfully saved in CRMS4D_SERV_H:
With the same approach you can also create extension field on Product via S/4 extension tool and make it visible in Product search view and search result view in CRM WebUI:

How to read the extension field value via One Order API

DATA: lt_guid       TYPE crmt_object_guid_tab,
      lt_customer_h TYPE crmt_customer_h_wrkt.

APPEND 'E04F430697291EE7AEAA0367A1F2DB37' TO lt_guid.

    it_header_guid = lt_guid
    et_customer_h  = lt_customer_h.
The extension field value is stored in component CUSTOMER_H of One Order model:

Assigned Tags

      You must be Logged on to comment or reply to a post.
      Author's profile photo Dhruvin Mehta
      Dhruvin Mehta

      This is way ahead in time!  u r exceptional!

      Author's profile photo Syambabu Allu
      Syambabu Allu

      Good to know SAP CRM with S/4HANA development.




      Author's profile photo Kaschirin Sascha
      Kaschirin Sascha

      Hello Jerry,

      nice blog, thanks for that. However I don’t get why the field is seemingly stored in CRMS4D_SERV_H and CRMD_CUSTOMER_H at the same time. Why is the new field stored in SERV_H anyway? “SERV_H” is used just for certain BUS-Types, not for all (e.g. Social Services doesn’t use that table). In CRM “CUSTOMER_H” was the way to go in order to add custom fields at header level. You are using the “BTCustomerH” BOL-Entity, therefore I assume the CRMD_CUSTOMER_H is still used in S4CRM, am I right? I am a little bit confused.

      Kind Regards

      Author's profile photo Tobias Schnur
      Tobias Schnur

      Hi Jerry,

      Thanks! This is great for simple field extensions. However, AET was actually a more powerful tool though since it was capable of tabular extensions as well. Do you know if there is something similar in S4CRM? I think this is easy to achieve from a UI perspective but fully integrating a tabluar extension on API level (e.g. one order) might be hard without any modifcations and is definitly not recommendable.




      Author's profile photo Mireille Hill
      Mireille Hill

      Hi Jerry,

      really nice and helpful blog. Thanks a lot!

      One question: do you know of any guideline to add table extensions to one order?

      Best regards,


      Author's profile photo Praveen Kumar Kuchi
      Praveen Kumar Kuchi

      Good explanation

      Author's profile photo Vysakh Annikkara Sivasankaran
      Vysakh Annikkara Sivasankaran

      Hi Jerry,

      Thank you for this amazing blog. Great information.




      Author's profile photo Sean House
      Sean House

      Hoping for a quick hint.  We have followed the BLOG and successfully added some custom fields to the Opportunity Header but in the transaction they are display only and we cannot maintain.  Thoughts on why?  Fields were created via CFL, and as you can see in the attached image, appended to CUSTOMERH and defined as input fields and not "checked" as Display only.