Skip to Content
Technical Articles
Author's profile photo Rohit Khan

SAP S/4HANA Cloud Key User Extensibility – Create Custom Business Object – Part 3

Last revisions
25-Jan-2022 Updated content as per latest updates
10-Aug-2021 Updated latest screenshots and content
03-Jun-2020 Updated latest screenshots and content
17-Jan-2019 Updated latest content

Extensibility%20Framework

Extensibility Framework

 

Target Audience – Key Users of SAP S/4HANA Cloud, On-Premise and Developers

In this part of the blog series, we will now see how to create a simple custom business object step-by-step. We will start from where we left on Part 2 of this blog series. If you have directly landed on this blog, please look at the Part 1 and Part 2 of this series. Please note that you should have the pre-requisites already in place as discussed in the part 1 of this blog series.

Let’s go through the steps and see how to create a custom business object –

Log on to you SAP S/4HANA system. Once logged in you will arrive at your home page (Fiori Launchpad). Look for the tile ‘Custom Business Objects’. Normally, it should be under the group ‘Extensibility’. If no, then you can search for the app as explained in the previous part of this blog series.

Custom%20Business%20Objects%20tile

Custom Business Objects tile

Click on the tile. If you recollect in part 2 of this blog series, we have started with an example of the following custom business object. Since we have already created custom code list in the Part 2 of this blog series, let us start with creation of custom business object based on the following table –

Root Node (Supplier) Fields Length / Data Type  Custom Code List
Supplier ID 20 / Char No
Supplier First Name 30 / Char No
Supplier Last Name 30 / Char No
Supplier Account Group 4 / Char Yes
Supplier Country 20 /Char No
Sub-Node (Role) Supplier Role 10 / Char Yes
Role Valid From Date No
Role Valid To Date No

Once you are inside the custom business object editor, click on – New

Create%20a%20new%20Custom%20Business%20Object

Create a new Custom Business Object

Next provide the name of the custom business object.

Note – Other fields like Identifier and Name in Plural will be filled automatically.

If you want to change them, you can still do that. Provide the name and click on ‘Create’.

Name%20of%20the%20Custom%20Business%20Object

Name of the Custom Business Object

Under General Information, you fill find different checkboxes. By default, all of them will be ‘Unchecked’. You can decide which ones to select based on your business scenario and requirement. Remember we have already discussed about these in Part 1 of this blog series. For this blog, we will select all the options.

General%20Information%20tab

General Information tab

Note – In SAP S/4HANA On-Premise system, you will find less options under Features. As of SAP S/4HANA 2021, it is something like below. Of course, this is subject to change with new releases. Therefore, always refer to the latest documentation.

Selection%20of%20Features%20for%20a%20Custom%20Business%20Object

Selection of Features for a Custom Business Object

Next, click on the tab – Nodes. By default, system would have created the parent node based on the name of the CBO

Creating%20Nodes%20for%20a%20Custom%20Business%20Object

Creating Nodes for a Custom Business Object

You can also see, by default system has selected three options – Create, Update, Delete. This is mainly to control the access right to the node.

Let’s create the fields for parent node – Supplier as mentioned in the table above. Click on – New. Let’s add first field – Supplier ID, with field type – Text and length equal to 20. Remember to make this a key field

Creating%20fields%20for%20a%20Node

Creating fields for a Node

In the similar fashion add other fields.

Let’s focus on the field – Supplier Account Group. If you remember, for this field, we created a Custom Code List. Now, we will bind it to this field.

After you have entered the details for this field, choose the type as – Code List from the list.

Assigning%20a%20Custom%20Code%20List%20as%20Field%20Type%20to%20the%20field

Assigning a Custom Code List as Field Type to the field

Under the properties pane, now you can choose the previously created code list.

Assigning previously created Code List

Search for the code list you created previously and select.

Custom%20Code%20List

Custom Code List

It should be added now.

Code%20List%20assigned%20to%20the%20field%20of%20the%20CBO%20Node

Code List assigned to the field of the CBO Node

In the similar fashion continue to add other fields. Click on Save Draft before you can add further nodes to the CBO.

Next, we can add the sub-node – Role.

Next, Click on Nodes tab again and click on New to add a new sub-node – Role

Create%20Sub-Node%20for%20a%20Custom%20Business%20Object

Create Sub-Node for a Custom Business Object

Add the name as – Role and click back on the Fields tab to add new fields.

Adding%20a%20new%20Node%20as%20Sub-Node

Adding a new Node as Sub-Node

Choose the tab – Fields. Here we will create the fields for the sub-node. In the Fields tab, select the node – Role and create the fields in the similar fashion as we created above. Remember to attach the code list for the field – Supplier Role. Also, for two other field, Valid From and Valid To, you need to pick the field type as – Date

Adding%20fields%20to%20the%20Sub-Node

Adding fields to the Sub-Node

At this point, click on Save and then Publish.

You can now click on the tab – Log and see all the backend artifacts like CDS View, OData etc., is generated automatically by the system.

Once published, the text Published in green will appear. As you notice from log, the system created the CDS views, OData, and other artifacts automatically in the backend.

Log%20of%20the%20automatically%20generated%20artifacts%20by%20the%20system

Log of the automatically generated artifacts by the system

This completes the steps on how to create a new custom business object in SAP S/4HANA. In the next blog, we will see how to maintain the entries for this custom business object by using the generated UI. We will also create a new tile for this application and host it in the users Fiori Launchpad.

 

Congratulations you have successfully created a new custom business object in SAP S/4HAHA Cloud!

Rohit Khan, S/4HANA Regional Implementation Group

Let’s stay connected – Rohit on LinkedIn

To keep yourself updated with latest on extensibility, follow this SAP Community Page – ABAP Extensibility

Click below for the Part 4 this blog series.

Part 1: Introduction to Custom Business Objects

Part 2: Create a Custom Code List for a Custom Business Object

Part 3: Create a new Custom Business Object

Part 4: Create a custom UI and maintain data in Custom Business Object

Assigned Tags

      34 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Louis-Arnaud BOUQUIN
      Louis-Arnaud BOUQUIN

      Hello Rohit,

       

      Thanks for this interesting blog. Is it possible to define another custom/standard business object as F4 instead of fixed values ?

       

      Thank you

      Author's profile photo Rohit Khan
      Rohit Khan
      Blog Post Author

      Hello Louis,

      Thanks for visiting the blog.

      This feature would come in the next release of SAP S/4HANA Cloud.

      Regards

      Rohit

      Author's profile photo Vijay Chintarlapalli
      Vijay Chintarlapalli

      Hi Rohit Khan ,

      Nice blog.

      I understand associations can be used for Custom fields.But is there any way we can achieve the same for standard fields in on-Premise?

      Thanks,

      Vijay

      Author's profile photo Rohit Khan
      Rohit Khan
      Blog Post Author

      Hello Vijaya Simha Chintarlapalli Reddy

       

      Can you please clarify a bit more your requirement?

      Also, would request you to post the question under the following tags and it will also help the community.

      ABAP Extensibility

      SAP S/4HANA

      SAP S/4HANA Cloud

      Cheers

      Rohit

      Author's profile photo Jeroen Marijnissen
      Jeroen Marijnissen

      On my system, the checkbox "generate UI"  is not visibile. Do you have an idea what could be the cause ?

      Author's profile photo Rohit Khan
      Rohit Khan
      Blog Post Author

       

      Hello Jeroen,

      This option is only available for SAP S/4HANA Cloud and not for SAP S/4HANA (OP) at present.

      Regards

      Rohit

      Author's profile photo Praveen Varriam
      Praveen Varriam

      Hi Rohit,

      Nice blogs with details and simple steps to follow. Good work!

      I am new to this and your blogs helped me a lot.

      Now that I have a custom business object created, added some records and published.

      How we can call this custom business object with values into standard cloud apps as part of in app extensiblity?

       

      Thanks!

      Praveen

      Author's profile photo Rohit Khan
      Rohit Khan
      Blog Post Author

      Hi Praveen,

       

      Thanks for visiting the blog and glad that it helped you.

      Could you give me an example of what you are actually trying to achieve? This would help me reply better 🙂

      Regards

      Rohit

      Author's profile photo Praveen Varriam
      Praveen Varriam

      Much appreciated Rohit for your reply.

      I was looking at using the custom business object say "Sold-To-Party-Address" into one of the standard app Sales Order Fulfillment. So that, I will get address information displayed in the standard app.

      Regards,

      Praveen.

      Author's profile photo Rohit Khan
      Rohit Khan
      Blog Post Author

      Hi Praveen,

      Yes you can do that. You will have to -

      1. Create a CBO and fill in your values
      2. Find out the Business Context for Standard Sales Order Fulfillment App, and then use the Custom Fields and Logic app to write your logic to say, verify the Sold-To-Party with the values in CBO. You will have to write a simple select.

      For the statements refer to the following link -

      https://help.sap.com/viewer/f544846954f24b9183eddadcc41bdc3b/1711%20500/en-US/dd39f11e977b41b49a5421399f4850f5.html

      Hope that clarifies your query.

      Regards

      Rohit

      Author's profile photo Praveen Varriam
      Praveen Varriam

      Hi Rohit,

      Thank you very much.

      Will try and get back to you.

       

      Regards,

      Praveen

      Author's profile photo parimi suryasairam
      parimi suryasairam

      Hi Rohit Khan,

      Thanks for your Blog.

      Can you please let me know the steps how to Update the custom business objects data in the "Custom logic" app extensibility in the business context Sales Document Item Modifications.

       

      Thanks!

      Sairam

       

       

      Author's profile photo Rohit Khan
      Rohit Khan
      Blog Post Author

       

      Hello Parimi,

      As of now, you cannot use update/modify/insert statement for DB tables in SAP S/4HANA Cloud. Also these statements are not allowed in the 'Custom Fields and Logic App". For more details you can check the below link -

      https://help.sap.com/viewer/f544846954f24b9183eddadcc41bdc3b/1711%20500/en-US/dd39f11e977b41b49a5421399f4850f5.html

      Regards

      Rohit

      Author's profile photo parimi suryasairam
      parimi suryasairam

      Hi Rohit,

      Thanks for the Reply.

      We are trying to update the CBO in S/4cloud 1805 version with the below code but system is not allowing in the Custom logic app available in the Extensibility catalog.

      TRY.
          lv_key = member-employee.
          DATA(lo_employee) = write->get_root(
            business_object_id = 'YY1_ZKEY'
            key                = lv_key
          ).
        CATCH cx_cbo_write_not_existing.
      endtry.
      
      Can you please help us how to resolve the issue in the S/4cloud version.
      
      Thanks in Advance.
      
      Thanks!
      Sairam
      Author's profile photo Rohit Khan
      Rohit Khan
      Blog Post Author

      Hi Parimi,

      Can you please share the error you are getting and also explain what you are trying to achieve?

      Thanks

      Rohit

       

      Author's profile photo parimi suryasairam
      parimi suryasairam

      Hi Rohit,

      Thanks for the reply.

      We are trying to update the Custom Business object data from the BADI - Sales document item modifications in the custom fields and logic app.

      Requirement:While creating the Sales order we are fetching the software key from the Custom business object based on few conditions once we got the key from the BO then we have to updated to update the sales order against the key tin the BO.

      Hope you understood the requirement.

       

      Thanks!

      Sairam

      Author's profile photo Rohit Khan
      Rohit Khan
      Blog Post Author

       

      Hi Sairam,

      I understood your requirement. Please share with me the code you are trying to write. Also share the error. Better if you can give the screenshot.

      Thanks

      Rohit

      Author's profile photo parimi suryasairam
      parimi suryasairam

      Hi Rohit,

      Thanks for the reply.

      Please find the below code we are trying in BADI level to update custom Business object.

      Attached is the error while writing the logic in BADI.

       

      -------------------------------------------------------------

      DATA lv_key TYPE yy1_skey_orders.
      DATA lv_timestamp TYPE timestamp.

      TRY.
      lv_key = salesdocument-soldtoparty.
      DATA(lo_orders) = write->get_root(
      business_object_id = 'YY1_SKEY_ORDERS'
      key = lv_key
      ).
      CATCH cx_cbo_write_not_existing.
      GET TIME STAMP FIELD lv_timestamp.
      CONVERT TIME STAMP lv_timestamp TIME ZONE cl_abap_context_info=>get_user_time_zone( ) INTO DATE DATA(lv_date).
      DATA(ls_order) = VALUE YY1_SKEY_ORDERS(
      id = lv_key
      order = '1234'
      ).
      lo_orders = write->create_root(
      business_object_id = 'YY1_SKEY_ORDERS'
      data = LV_order
      ).
      ENDTRY.

       

      Author's profile photo Rohit Khan
      Rohit Khan
      Blog Post Author

      Hi Sairam,

       

      Thanks for sharing the code and I was thinking on the same lines that you may have chosen a keyword that is not supported. Please note that ABAP web editor only supports key-words that are defined here .

      Regards

      Rohit

      Author's profile photo parimi suryasairam
      parimi suryasairam

      Hi Rohit,

      Thanks for the reply.

       

      If possible can you please share one example code how to update the CBO data from the sales document BADI.

      Thanks in Advance.

      Thanks!

      Sairam

      Author's profile photo Rohit Khan
      Rohit Khan
      Blog Post Author

      Hello Sairam,

      Unfortunately, at present, update is not possible from within Custom Logic App. Please refer the link I shared above that shows supported operations in the web editor of the custom logic app.

      Regards

      Rohit

      Author's profile photo parimi suryasairam
      parimi suryasairam

      Hello Rohit,

      Thanks for the reply.

      Is there any alternate solution to call the Custom Business object actions from the BADI instance to update the fields available in the CBO.

      Below is one of the blog we are referring to meet the requirement.

      https://help.sap.com/viewer/f544846954f24b9183eddadcc41bdc3b/1805.500/en-US/ecabf405875b4f108739130db870fed6.html

       

      Thanks in Advance.

       

      Thanks!

      Sairam

      Author's profile photo Rohit Khan
      Rohit Khan
      Blog Post Author

      Hi Sairam,

      In case there is a supported statement in the link I shared above, you can do that, else, for now, it is not supported.

       

      Thanks

      Rohit

      Author's profile photo Andrey Tkachuk
      Andrey Tkachuk

      Hi Rohit,

      Tell me what am I doing wrong.

      I can create a new BO entry, but I can't update it. What should I specify for the "key" parameter?

      * This part works and creates a new row in the table
      DATA(ls_total) = VALUE YY1_PUSH_TABLE_TOTAL(
          CAMPAING   = '1'
          ROW_TOTAL  = '2' ).
      
      DATA(total) = write->create_root(
            business_object_id = 'YY1_PUSH_TABLE_TOTAL'
            data                = ls_total
          ).
      
      * Here, I want to update the data, but I get an error:
      DATA(lo_total) = write->get_root( "The key of business object is wrongly specified
          business_object_id = 'YY1_PUSH_TABLE_TOTAL'
          key                = '1'
      ).
      Author's profile photo Rohit Khan
      Rohit Khan
      Blog Post Author

      Hi Andrey,

      Key should be the variable of type cbo name.

      Pls check this link that showcases sample code when managing CBOs.

      Hope this helps!

      Regards,

      Rohit

      Author's profile photo Vijay Chintarlapalli
      Vijay Chintarlapalli

      Thanks a lot for the great blog ! But how can we transport the entries from development to production environment does SAP provide some app to capture entries into a transport

      thanks

      vijay

      Author's profile photo Rohit Khan
      Rohit Khan
      Blog Post Author

      Thanks Vijaya Simha Chintarlapalli Reddy . Glad you liked the blog.

      For transport, SAP provides apps - Export / Import software Collection.

      Please refer the links here for more details-

      Export Software Collection

      Import Software Collection

       

      Regards

      Rohit

      PS. If you have more questions would request you to kindly post them on the SAP Community SAP S/4HANA Cloud Tag. This would help the community as well. 🙂

      Author's profile photo Vijay Chintarlapalli
      Vijay Chintarlapalli

      Hello @Rohit Khan,

      Thanks for your answer its useful I have already raised the post:

      https://answers.sap.com/questions/12653352/moving-the-objects-created-by-custom-business-obje.html

      I am trying to implement it in On-Premise unfortunately its only available in Cloud How to go ahead on On-Prem ?

      Thanks,

      Vijay.

      Author's profile photo Rohit Khan
      Rohit Khan
      Blog Post Author

      Hi Vijaya Simha Chintarlapalli Reddy ,

       

      I have replied to you in the community page. (link here)

       

      Cheers

      Rohit

      Author's profile photo Vishu Khandelwal
      Vishu Khandelwal

      Hi Rohit Khan

       

      Thanks for writing up such a useful blog!! thanks for sharing across.

      One doubt!

      The database table that is getting created behind business object, it is giving out some random name. can we give the custom name according to the user's need?

       

       

      Author's profile photo Rohit Khan
      Rohit Khan
      Blog Post Author

      Hi Vishu,

      At present, it is controlled by the framework.

      Best Regards

      Rohit

      Author's profile photo Sarish Numbialil
      Sarish Numbialil

      Thank you for the blog. I need a combination of fields to be the key in the Custom Business Object. Is there a way to achieve it?

      I am trying this in the OP 1809 version. If the answer is no, I would like to understand if there is way to do it in the subsequent version (2020).

      Thank you

      Sarish

      Author's profile photo Rohit Khan
      Rohit Khan
      Blog Post Author

      Hi Sarish,

       

      Can you please ask this question under this tag (ABAP Extensibility | SAP | SAP Blogs) with the screenshot? Let me know once done.

      It would be helpful for others as well.

      Multiple keys are supported, however, would like to see the screenshot.

      Regards

      Rohit

      Author's profile photo Sarish Numbialil
      Sarish Numbialil

      Hi Rohit,

      I have asked the question with the suggested tags. I have provided the screenshots.

      Please find the link: https://answers.sap.com/questions/13204938/multiple-key-fields-in-custom-business-objects.html

      Thank you,

      Sarish