Skip to Content
Technical Articles

Extending Transactional Fiori App based on Fiori Elements in SAP

Hello Everyone,

I searched for some blogs on how to extend standard fiori apps which is based on CDS BOPF and Fiori Elements but didn’t found anything. There is plenety of material on custom app creation based on CDS, BOPF and Fiori element but nothing on extension.

Pre-Requisite :: One should have knowledge on CDS,BOPF generated from CDS, ODATA and Fiori elements.

Requirement :: I want to extend Standard Fiori App “Manage Purchasing Info Records” to add below fields.

  1. Country of Origin(EINA-BSTAE)
  2. Production Version(EINE-VERID

Standard App Screen without extension as follows:

  1. Supplier Country of Origin field as shown below in UI after extension

   2.Need to add Production Field as shown below in UI after extension

 

Application Description  ==>  Manage Purchase Info Record is transactional app based on Fiori Elements where Create/Update/Delete is supported by BOPF Object I_PURGINFORECORDWWITHDRAFT generated from CDS.

  • BOPF Object ==> I_PURGINFORECORDWWITHDRAFT
  • Transactional CDS Root View ==> I_PURGINFORECORDWWITHDRAFT
  • Consumption CDS View in ODATA ==> C_PURINFORECORDWITHORG
  • Draft Class ==> CL_I_DR_PURGINFORECORDWWITHDRA responsible for Creation and update of Info records

Analysis ==> We did initial analysis as given below.

  1. We found that Country of Origin is part of Transactional CDS and BOPF Object. Therefore create, update for field is supported by underlying business object. But field is not added in consumption view. Hence field is not available in UI app.

          Solution ==> Add field in Consumption CDS view C_PURINFORECORDWITHORG to appear in UI

2. Production Version field is not present in consumption, transactional CDS and BOPF Object. Thus Create/Update of field need to be handled explicitly.

Solution ==> Please follow the below steps.

a. Extend transactional view I_PURGINFORECORDWWITHDRAFT to include Production Version field using association with EINE table

b. Next, we need to add these field in underlying draft structure and draft table explicitly.

  • Add field to draft table

  • Add field to draft structures

c. Now we need to make changes in Draft class wither using Implicit enhancement or Pre-Exit or Post Exit method. I have not done changes because of Approval issues. But that is normal ABAP

d. Extend the consumption CDS to add Production field to expose in UI.

Note: ODATA redefinition is not needed as we just have to add extra fields which is possible from consumption CDS. If we have to add new entity then we have to redefine the project.

Conclusion :: If custom field is not present in transactional and consumption CDS then we have to add field from scratch in transactional CDS, Draft table and it’s structures and finally to consumption view.

Also I appeal experts to share their expertise and experience on how they have handled such requirement. Also if there is any better way of doing it.

Thanks,

Dhiraj More

 

14 Comments
You must be Logged on to comment or reply to a post.
  • Nice one!!  Just wondering if there is any reason for not going with custom fields app ?

    https://blogs.sap.com/2020/02/01/adding-field-in-standard-fiori-apps-of-s-4hana-with-custom-fields-and-logic/

    • Hi Mahesh,

      I have not worked with Custom Field and Logic app more. But I tried using for above case and could not achieve it because of reason mentioned below.

      1. Using Custom Field ==> I was able to get the business context but i don't want to add any new custom field. I want to expose existing standard fields from EINA and EINE table which are not exposed in UI. Therefore custom field is not applicable in my case. @Mahesh please correct me if my understanding is wrong.
      2. I tried using Data Source Extension to add existing standard field from EINA but could not find the data source. Therefore I have to go with other approach.

      Please let me know if I am missing anything.

      Thanks,

      Dhiraj M

    • Hi Jeroen,

       

      It is possible however you have to make changes in the following places.

      1. Create an extension in the CDS view with the new fields and create Annotation for the New section.
      2. Enhance the BOPF to include the changes.
      3. Enhance the manifest.json file and add the section information to the object page configuration.

      hope this helps.

       

      thanks,

      Arun

    • Hi Stefanie,

      The link you shared is related to extension of CDS view but in our case we are extending transactional CDS view means CDS with generated business object. Therefore only extending CDS view will not work in our case.

      Thanks,

      Dhiraj M

  • Hi great blog!

    I am facing the similar issues, I tired to apply yours solution but unfortunately when I want to extend Transactional view I_Purchaserequisitionitem_Wd with the field I have added with custom field and logic app or with the field that already exists in the Draft table I get the error saying that the name of the field is not unique. And if I use the unique name then I get the error that the field is not in the Draft table.

    Do I need to first extend the transaction view and then extend draft table? Is it not posibble to extend transaction view with the fields already in the Draft table?

    Thanks,

    Zarko

     

    • Hi Zarko,

      I didn't got your scenario. Always whatever we will add in Transactional CDS view will have to add in Draft table too. I am not getting how come new field is already present in draft table but not in Transactional View. First we have to add field in Transactional view and then draft table.

      Not sure it might be because you are using "Custom Field and Logic" app.

      Thanks,

      Dhiraj M

       

  • Hi Dhiraj

    I followed the steps that you have mentioned and the 'Country of Origin' field is showing up in the object page under 'General Information' tab but the value help is not showing on the field and in the SEGW project it is asking me to regenerate the project .

    Since it is SAP standard ODATA service, I am unable to regenerate. Can you please tell how did you solve this issue.

     

     

    • Hi Pranam,

      I don't think Valuehelp for the Country of Origin will come automatically. I guess you have to redefine the ODATA service so that Valuehelp entity gets added to ODATA service.

      Thanks,

      Dhiraj M

      • Hi Dhiraj More,

        If you redefined the oData Service, then you will have to replace the oData service in the Fiori application. So it means you have to create a copy of the standard Fiori app and replace the service on it. From that moment every time you will apply a note you will have to copy again the application... am I right?

        I don't like it at all and SAP should provide a better way to do it.

        Thanks