https://raw.githubusercontent.com/ajmaradiaga/feeds/main/scmt/topics/ABAP-RESTful-Application-Programming-Model-qa.xml SAP Community - ABAP RESTful Application Programming Model 2026-07-24T20:00:07.544854+00:00 python-feedgen ABAP RESTful Application Programming Model Q&A in SAP Community https://community.sap.com/t5/technology-q-a/extending-s-4hana-standard-event-header-with-salesordertype-auart-for-event/qaq-p/14409940 Extending S/4HANA Standard Event Header with SalesOrderType (AUART) for Event Mesh routing 2026-06-02T20:50:32.497000+02:00 wesleynz https://community.sap.com/t5/user/viewprofilepage/user-id/593303 <P>Hi SAP Community,</P><P>I am working on an event-driven architecture using SAP S/4HANA and SAP Advanced Event Mesh and need some guidance on event extensibility -- unfortunately I did not find many information.</P><P>My business requirement is the following: <I>"I want to implement event routing based on the sales order type (AUART) and the consumer destination, so that each system receives only the statuses applicable to its scope."</I></P><P>To achieve this via AEM topic subscriptions (wildcards), I need the SalesOrderType / AUART field to be present in the Header / Topic, not just inside the data payload.</P><OL><LI>I attempted to extend the standard event (sap.s4.beh.salesorder.v1.SalesOrder.Created.v1) using a Metadata Extension to apply the <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/1512635">@event</a>.context.attribute annotation. However, the underlying standard RAP BO (R_SALESORDERTP / D_SalesOrderCreated) does not have the @Metadata.allowExtensions: true annotation, which blocks this approach.</LI><LI>I also considered creating a custom RAP Event from scratch, but I've failed so far and did not find a good tutorial to help me on this.</LI></OL><P><STRONG>My Questions:</STRONG></P><OL><LI><P>What is the recommended <I>Clean Core</I> compliant approach to promote a payload field (<SPAN>SalesOrderType</SPAN>)&nbsp;into the Header?</P></LI><LI><P>Is it recommended to use BAdIs to intercept and enrich the header dynamically before it is dispatched? Or would it be more appropriate to create a custom event using the classic BOR approach?</P></LI></OL><P>Any advice, insights, or documentation references would be highly appreciated!</P><P>Thank you in advance.</P> 2026-06-02T20:50:32.497000+02:00 https://community.sap.com/t5/technology-q-a/how-to-extend-manage-customer-line-items-app-in-clean-core-way-to-add-other/qaq-p/14417121 How to extend manage customer line items app in clean core way to add other standard logical fields 2026-06-11T20:37:37.080000+02:00 muzammo https://community.sap.com/t5/user/viewprofilepage/user-id/588817 <P>Hello,&nbsp;</P><P>Another blocker of clean core way.&nbsp;<BR />We are trying to extend the manage customer line items app to have few more fields from other data sources .&nbsp;</P><P><BR />extending the i_arlineitem cds view with those fields &nbsp;does not reflect in the data source extension of CFL to enable them In app.&nbsp;<BR /><BR /></P><P>we created a custom app on top of i_arlineitem which is released C0 contract . Now the issue we are facing is in ATC check level 2 warning of “Usage of internal API” is coming and blocking this custom app way also .&nbsp;<BR /><BR /></P><P>Can anyone please help in adding other data source field in this manage customer line app or help in fixing that atc check .&nbsp;</P><P>&nbsp;</P> 2026-06-11T20:37:37.080000+02:00 https://community.sap.com/t5/enterprise-resource-planning-q-a/no-preview-generated-for-rap-application-in-adt/qaq-p/14417223 No preview generated for RAP Application in ADT 2026-06-12T06:25:59.380000+02:00 VishwanathV https://community.sap.com/t5/user/viewprofilepage/user-id/1835 <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="App preview" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/420979i2B3D65A402FAF815/image-size/large?v=v2&amp;px=999" role="button" title="No preview_p1.png" alt="App preview" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">App preview</span></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="No preview_p2.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/420980i40753D0298C3D90A/image-size/large?v=v2&amp;px=999" role="button" title="No preview_p2.png" alt="No preview_p2.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="No preview_p3.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/420981i7428E1169077B8CD/image-size/large?v=v2&amp;px=999" role="button" title="No preview_p3.png" alt="No preview_p3.png" /></span>Hello Gurus,</P><P>I can't see preview of my demo RAP application i created on ADT.&nbsp;</P><P>After scouring the app in ADT and inspecting the preview, few places where i found the issue is:</P><P>1) during the $metadata?sap_client call available in the network section of the inspect element</P><P>2)&nbsp;<SPAN>SQL error "SQL code: 1024" occurred while accessing table "AGR_USERS", available in the Feed Reader section of ADT.</SPAN></P><P><SPAN>The question here is, are these the real causes SAP is not generating the preview? Or, is it due to the downtime for the backend btp instance ?</SPAN></P><P><SPAN>While searching for the solution, one user had suggested to delete the current btp instance and re-create it for a new region. Is this a valid workaround? If this is case, probably, i will have to re-create my app from ground-up....</SPAN></P><P><SPAN>So guys, any other suggestions?</SPAN></P><P>Best Regards....</P> 2026-06-12T06:25:59.380000+02:00 https://community.sap.com/t5/technology-q-a/recommended-naming-convention-for-custom-objects-in-abap-cloud/qaq-p/14417838 Recommended naming convention for custom objects in ABAP Cloud 2026-06-12T19:15:28.924000+02:00 juangamboag https://community.sap.com/t5/user/viewprofilepage/user-id/858555 <P>Hello SAP Community,</P><P>I am working with ABAP Cloud in the context of SAP S/4HANA Cloud Private Edition, and I would like to understand the recommended naming convention for custom development objects.</P><P>In classic ABAP development, custom objects are usually created using the Z* or Y* namespace, or a registered customer namespace. However, in ABAP Cloud, I would like to know what the recommended approach is for naming custom artifacts such as:</P><P>- Packages<BR />- Classes and interfaces<BR />- CDS views / CDS view entities<BR />- Behavior definitions and behavior implementations<BR />- Service definitions and service bindings<BR />- Metadata extensions</P><P>Is there an SAP-recommended naming convention or best practice for these objects in ABAP Cloud?</P><P>For example, should we continue using Z*/Y*, use a specific prefix per application/domain, or follow a different convention aligned with Clean Core and ABAP Cloud development guidelines?</P><P>Any official SAP documentation, examples, or practical recommendations would be very helpful.</P><P>Thank you.</P> 2026-06-12T19:15:28.924000+02:00 https://community.sap.com/t5/technology-q-a/issue-dynamically-hiding-a-column-in-an-adaptation-project/qaq-p/14418977 Issue dynamically hiding a column in an adaptation project 2026-06-15T12:13:44.128000+02:00 bwal https://community.sap.com/t5/user/viewprofilepage/user-id/1558549 <P>Hello,</P><P>I'm working on an adaptation project for a custom app I've developed in RAP with annotations. My requirement is to hide columns of a table created through annotations according to the value of virtual fields.</P><P>Unfortunately as I've seen in other posts that using a boolean virtual element with a LineItem.hidden(#virtelementname) doesn't work, so I've moved to an adaptation project.&nbsp;<SPAN>My approach is to read the virtual fields from the odata4 model through typescript, get the columns from the table through and hide them through setVisible. This is the function that I attach this to the event&nbsp;</SPAN><SPAN>modelContextChange of the table (the columns are visible for some objects and invisible for others) in the code file generated by the adaptation editor.</SPAN></P><pre class="lia-code-sample language-javascript"><code> setColumnsVisible = async function (this: ControllerExtension, table: Table ) { const bindingContext = this.getView().getBindingContext(); if (!bindingContext) { return; } const path = `${bindingContext.sPath}`; const context : Context = this.getView().getModel().bindContext(path); interface VisibilityResponse {Column1Hidden: boolean; }; const res = await context.requestObject() as VisibilityResponse; const columns: Column[] = table.getColumns(); const columnToHide = columns.find( curr =&gt; curr.getPropertyKey().includes("ColumnToHide") ); columnToHide.setVisible(!res.Column1Hidden); };</code></pre><P>The result of this is that when Column1Hidden is true the <STRONG>label</STRONG> of the column is hidden but the values are still there. My objective is to hide the whole column including the values.</P><P>As a sidenote, just for kicks I tried getting the index of the column, removing it from the table with removeColumn, setting visible to false (on the column) and inserting it back at the right index, it didn't work either. I also tried to call invalidate() on the Table and Column controls after setting the visibility (in case it's evaluated during rendering)&nbsp; and still no luck.</P><P>Does anybody have any ideas how to achieve this?</P><P>Thanks,</P><P>Ben</P> 2026-06-15T12:13:44.128000+02:00 https://community.sap.com/t5/enterprise-resource-planning-q-a/error-when-trying-to-create-a-service-entry-sheet-ses-via-i/qaq-p/14419295 Error when trying to create a service entry sheet (SES) via i_serviceentrysheettp_2 2026-06-15T22:13:21.393000+02:00 alexandr_razinkin https://community.sap.com/t5/user/viewprofilepage/user-id/756342 <P>Hello,<BR /><BR />I am encountering an error when trying to create a new service entry sheet (SES) with a position and two cost centers in one position (account assignment).<BR />In this case, there are 3 entities involved (header, item, and account assignment).</P><P>When I have more than 1 account assignment position, I am always getting the following error:<BR /><SPAN>411 06&nbsp;&nbsp;Sum of quantities &gt;3,000&lt; larger than total quantity<BR /><BR /></SPAN>Although my quantities are okay - 2 in item and 1 + 1 in account assignment positions.<BR /><BR />Code example:</P><pre class="lia-code-sample language-abap"><code>METHOD if_oo_adt_classrun~main. DATA: ls_header_data TYPE i_serviceentrysheettp_2, ls_item_data TYPE i_serviceentrysheetitemtp_2, ls_acc_ass TYPE I_SesAccountAssignmentTP_2, lt_header_crt TYPE TABLE FOR CREATE i_serviceentrysheettp_2\\serviceentrysheet, lt_item_cba TYPE TABLE FOR CREATE i_serviceentrysheettp_2\\serviceentrysheet\_serviceentrysheetitem, lt_acc_ass_cba TYPE TABLE FOR CREATE i_serviceentrysheettp_2\\ServiceEntrySheetItem\_AccountAssignment, ls_acc_ass_cba LIKE LINE OF lt_acc_ass_cba, lv_item_cid TYPE string, lv_accass_cid TYPE string. m_out = out. ls_header_data-serviceentrysheetname = 'Demo SES'. ls_header_data-purchaseorder = '4500001414'. ls_header_data-sesoriginobjecttype = `EX`. ls_header_data-PurgDocExternalReference = 'FA163E5F512FEFE199B52BA24E8069BE'. ls_header_data-PostingDate = '20260527'. APPEND INITIAL LINE TO lt_header_crt ASSIGNING FIELD-SYMBOL(&lt;ls_hdr_crt&gt;). &lt;ls_hdr_crt&gt; = CORRESPONDING #( ls_header_data CHANGING CONTROL ). &lt;ls_hdr_crt&gt;-%cid = `HEADER_1` . APPEND INITIAL LINE TO lt_item_cba ASSIGNING FIELD-SYMBOL(&lt;ls_itm_cba&gt;). &lt;ls_itm_cba&gt;-%cid_ref = 'HEADER_1'. lv_item_cid = |Item_2|. lv_accass_cid = |Accass_2|. CLEAR: ls_item_data, ls_acc_ass_cba. ls_item_data-purchaseorderitem = '00020'. ls_item_data-confirmedquantity = '2.000'. ls_item_data-accountassignmentcategory = 'K'. ls_item_data-multipleacctassgmtdistribution = '1'. ls_item_data-ServicePerformanceDate = '20260610'. ls_item_data-ServicePerformanceEndDate = '20260610'. APPEND INITIAL LINE TO &lt;ls_itm_cba&gt;-%target ASSIGNING FIELD-SYMBOL(&lt;item_data&gt;). &lt;item_data&gt; = CORRESPONDING #( ls_item_data CHANGING CONTROL ). &lt;item_data&gt;-%cid = lv_item_cid. " 'Item_1'. ls_acc_ass_cba-%cid_ref = lv_item_cid. DATA(lv_accass_cid_2) = 'ACCASS_2_1'. CLEAR ls_acc_ass. ls_acc_ass-GLAccount = '0021351301'. ls_acc_ass-CostCenter = '2000B11020'. ls_acc_ass-MultipleAcctAssgmtDistrPercent = '50'. ls_acc_ass-Quantity = '1.000'. APPEND INITIAL LINE TO ls_acc_ass_cba-%target ASSIGNING FIELD-SYMBOL(&lt;accass_data&gt;). &lt;accass_data&gt; = CORRESPONDING #( ls_acc_ass CHANGING CONTROL ). &lt;accass_data&gt;-%cid = lv_accass_cid_2. lv_accass_cid_2 = 'ACCASS_2_2'. CLEAR ls_acc_ass. ls_acc_ass-GLAccount = '0021351301'. ls_acc_ass-CostCenter = '2000B16110'. ls_acc_ass-MultipleAcctAssgmtDistrPercent = '50'. ls_acc_ass-Quantity = '1.000'. APPEND INITIAL LINE TO ls_acc_ass_cba-%target ASSIGNING &lt;accass_data&gt;. &lt;accass_data&gt; = CORRESPONDING #( ls_acc_ass CHANGING CONTROL ). &lt;accass_data&gt;-%cid = lv_accass_cid_2. " 'Accass_1'. APPEND ls_acc_ass_cba TO lt_acc_ass_cba. MODIFY ENTITIES OF i_serviceentrysheettp_2 ENTITY serviceentrysheet CREATE FROM lt_header_crt CREATE BY \_serviceentrysheetitem FROM lt_item_cba ENTITY ServiceEntrySheetItem "CREATE " FROM lt_item_cba CREATE BY \_AccountAssignment FROM lt_acc_ass_cba FAILED DATA(ls_failed_crt) REPORTED DATA(ls_reported_crt) MAPPED DATA(ls_mapped_crt). COMMIT ENTITIES RESPONSE OF i_serviceentrysheettp_2 FAILED DATA(ls_failed_commit) REPORTED DATA(ls_reported_commit).</code></pre><P>&nbsp;Maybe someone will see an error in my code and provide me a hint. Thank you.</P> 2026-06-15T22:13:21.393000+02:00 https://community.sap.com/t5/technology-q-a/use-nextlink-skiptoken-in-rap-custom-entity/qaq-p/14419621 Use nextlink/skiptoken in RAP custom entity 2026-06-16T09:22:22.107000+02:00 nicknf https://community.sap.com/t5/user/viewprofilepage/user-id/1461814 <P>Dear all,</P><P>is somebody aware of support in RAP for OData's nextlink/skiptoken feature in a custom entity? Ofc one would need to implement parts of it by oneself but I was wondering whether SAP provides an API to facilate the implementation.</P><P>Kind regards</P><P>Nick</P> 2026-06-16T09:22:22.107000+02:00 https://community.sap.com/t5/technology-q-a/rap-navigation/qaq-p/14420769 RAP Navigation 2026-06-17T10:01:29.329000+02:00 ShiveshS https://community.sap.com/t5/user/viewprofilepage/user-id/1622576 <P>Hello All,<BR /><BR />I had a scenario in which I had to make a column clickable in an RAP list report , and when clicked the control should be navigated to the object page of that column(In my case material).<BR /><BR />I browsed the net and found that such functionality is maybe possible by #WITH_NAVIGATION_PATH.I implemented it in the following way</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ShiveshS_0-1781683171422.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/422639i4AE1221E32DE47D8/image-size/medium?v=v2&amp;px=400" role="button" title="ShiveshS_0-1781683171422.png" alt="ShiveshS_0-1781683171422.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ShiveshS_1-1781683175068.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/422640iC2C3640DCE244913/image-size/medium?v=v2&amp;px=400" role="button" title="ShiveshS_1-1781683175068.png" alt="ShiveshS_1-1781683175068.png" /></span></P><P>After this , the column indeed became clickable however nothing happens after the click</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ShiveshS_2-1781683208248.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/422641i0FD48F584F9319D5/image-size/medium?v=v2&amp;px=400" role="button" title="ShiveshS_2-1781683208248.png" alt="ShiveshS_2-1781683208248.png" /></span></P><P><BR />Anything which I am missing, any annotations, your help is very much appreciated.<BR /><BR />Thanks in Advance</P> 2026-06-17T10:01:29.329000+02:00 https://community.sap.com/t5/technology-q-a/rap-behavior-projection-error-on-activating-behavior-projection/qaq-p/14422803 RAP - Behavior projection - Error on activating Behavior projection 2026-06-18T19:54:07.341000+02:00 shobhan_rana https://community.sap.com/t5/user/viewprofilepage/user-id/608201 <P>Hi All,&nbsp;&nbsp;</P><P>Managed scenario - Created three levels of RAP BO.</P><P>Behavior definition is successfully activated however could not able to activate the "Behavior Projection".&nbsp; Follwing is the error under ADT Problem -&nbsp;</P><H6 id="toc-hId--1960479354">The association "_CUSTOMER" cannot be used as a transactional association since the target entity "ZSRA_R_CUSTTP" is not redirected to "ZSRA_C_CUST" in the CDS definition.</H6><P><STRONG>define</STRONG> <STRONG>root</STRONG> <STRONG>view</STRONG> <STRONG>entity</STRONG> &nbsp;ZSRA_C_CUST<BR />&nbsp;<STRONG>provider</STRONG> <STRONG>contract</STRONG> <STRONG>transactional_query</STRONG><BR />&nbsp; <STRONG>as</STRONG> <STRONG>projection</STRONG> <STRONG>on</STRONG> &nbsp;ZSRA_CUSTTP<BR /><STRONG>{</STRONG><BR />&nbsp; <STRONG>key</STRONG> CustomerId<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CustomerName<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CreatedBy<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CreatedAt<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LastChangedBy<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ChdLocalLastChangedAt<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LastChangedAt<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Assoziationen */<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _project <STRONG>:</STRONG> <STRONG>redirected</STRONG> <STRONG>to</STRONG> <STRONG>composition</STRONG> <STRONG>child</STRONG> ZSRA_C_PRJ<BR /><STRONG>}</STRONG></P><P><STRONG>------------</STRONG></P><P><STRONG>define</STRONG> <STRONG>view</STRONG> <STRONG>entity</STRONG> ZSRA_C_PRJ<BR />&nbsp; <STRONG>as</STRONG> <STRONG>projection</STRONG> <STRONG>on</STRONG> ZSRA_R _PRJTP<BR /><STRONG>{</STRONG><BR />&nbsp; <STRONG>key</STRONG> CustomerId<STRONG>,</STRONG><BR />&nbsp; <STRONG>key</STRONG> ProjectId<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ProjectName<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Project<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ProjectType<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Data<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exporter<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CreatedBy<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CreatedAt<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LastChangedBy<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PrjLocalLastChangedAt<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LastChangedAt<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Associations */<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _customer <STRONG>:</STRONG> <STRONG>redirected</STRONG> <STRONG>to</STRONG> <STRONG>parent</STRONG> /OSGMBH/ ZSRA_C_CUST<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _sys<STRONG>:</STRONG> <STRONG>redirected</STRONG> <STRONG>to</STRONG> <STRONG>composition</STRONG> <STRONG>child</STRONG> ZSRA_C_SYS<BR /><BR /><STRONG>}</STRONG></P><P>&nbsp;------------<BR /><STRONG>define</STRONG> <STRONG>view</STRONG> <STRONG>entity</STRONG> ZSRA_C_SYS <STRONG>as</STRONG> <STRONG>projection</STRONG> <STRONG>on</STRONG> ZSRA_ R_SYS<BR /><STRONG>{</STRONG><BR />&nbsp;&nbsp;&nbsp; <STRONG>key</STRONG> ProjectId<STRONG>,</STRONG><BR /><STRONG>key</STRONG> SystemId<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp; <STRONG>key</STRONG> CustomerId<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp; SystemName<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp; Service<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp; Tenant<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp; CreatedBy<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp; CreatedAt<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp; LastChangedBy<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp; SysLocalLastChangedAt<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp; LastChangedAt<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp; /* Associations */<BR />&nbsp;&nbsp;&nbsp; _project<STRONG>:</STRONG> <STRONG>redirected</STRONG> <STRONG>to</STRONG> <STRONG>parent</STRONG> &nbsp;ZSRA_C_PRJ<STRONG>,</STRONG><BR />&nbsp;&nbsp;&nbsp;&nbsp; _customer<BR /><STRONG>}</STRONG></P><P>Behavior Projection –</P><P><STRONG>projection;</STRONG><BR /><STRONG>strict</STRONG> <STRONG>(</STRONG> 2 <STRONG>);</STRONG><BR /><STRONG>use</STRONG> <STRONG>draft;</STRONG><BR /><STRONG>define</STRONG> <STRONG>behavior</STRONG> <STRONG>for</STRONG> ZSRA_C_CUST <STRONG>alias</STRONG> Customer<BR /><STRONG>{</STRONG><BR />&nbsp; <STRONG>use</STRONG> <STRONG>create;</STRONG><BR />&nbsp; <STRONG>use</STRONG> <STRONG>update;</STRONG><BR />&nbsp; <STRONG>use</STRONG> <STRONG>delete;</STRONG><BR />&nbsp; <STRONG>use</STRONG> <STRONG>action</STRONG> Edit<STRONG>;</STRONG><BR />&nbsp; <STRONG>use</STRONG> <STRONG>action</STRONG> Activate<STRONG>;</STRONG><BR />&nbsp; <STRONG>use</STRONG> <STRONG>action</STRONG> Discard<STRONG>;<BR /></STRONG><STRONG>use</STRONG> <STRONG>action</STRONG> Resume<STRONG>;</STRONG><BR />&nbsp; <STRONG>use</STRONG> <STRONG>action</STRONG> Prepare<STRONG>;</STRONG><BR /><STRONG>use</STRONG> <STRONG>association</STRONG> _project <STRONG>{</STRONG> <STRONG>create;</STRONG> <STRONG>with</STRONG> <STRONG>draft;</STRONG> <STRONG>}</STRONG><BR /><STRONG>}<BR /><BR /></STRONG><STRONG>define</STRONG> <STRONG>behavior</STRONG> <STRONG>for</STRONG> ZSRA_C_PRJ <STRONG>alias</STRONG> Project<BR /><STRONG>{</STRONG><BR />&nbsp; <STRONG>use</STRONG> <STRONG>update;</STRONG><BR />&nbsp; <STRONG>use</STRONG> <STRONG>delete;</STRONG><BR />&nbsp; <STRONG>use</STRONG> <STRONG>association</STRONG> _customer <STRONG>{</STRONG> <STRONG>with</STRONG> <STRONG>draft;</STRONG> <STRONG>}</STRONG><BR />&nbsp; <STRONG>use</STRONG> <STRONG>association</STRONG> _sys <STRONG>{</STRONG> <STRONG>create;</STRONG> <STRONG>with</STRONG> <STRONG>draft;</STRONG> <STRONG>}</STRONG><BR /><STRONG>}</STRONG><BR /><STRONG>define</STRONG> <STRONG>behavior</STRONG> <STRONG>for</STRONG> <U>ZSRA_C_SYS</U> <STRONG>alias</STRONG> System<BR /><STRONG>{</STRONG><BR />&nbsp; <STRONG>use</STRONG> <STRONG>update;</STRONG><BR />&nbsp; <STRONG>use</STRONG> <STRONG>delete;</STRONG><BR />&nbsp; <STRONG>use</STRONG> <STRONG>association</STRONG> _project <STRONG>{</STRONG> <STRONG>with</STRONG> <STRONG>draft;</STRONG> <STRONG>}</STRONG><BR />&nbsp; <STRONG>use</STRONG> <STRONG>association</STRONG> <U>_customer</U> <STRONG>{</STRONG> <STRONG>with</STRONG> <STRONG>draft;</STRONG> <STRONG>} <FONT size="5">&lt;-- Error</FONT> </STRONG><BR /><STRONG>}</STRONG></P><P>Thanks &amp; regards</P><P>Shobhan Rana&nbsp;</P> 2026-06-18T19:54:07.341000+02:00 https://community.sap.com/t5/technology-q-a/sap-po-7-5-rest-receiver-capture-http-500-response-in-asynchronous/qaq-p/14429795 SAP PO 7.5 REST Receiver - Capture HTTP 500 response in Asynchronous Interface and send via alert 2026-06-30T06:17:43.512000+02:00 Gayathridevich https://community.sap.com/t5/user/viewprofilepage/user-id/1903015 <P>Hi Experts,</P><P>I have an asynchronous interface in SAP PO 7.5 from SAP to D365(proxy to rest) using the REST Receiver Adapter.</P><P>When the target REST API (D365) returns HTTP 500, the response contains a useful JSON error like this:</P><P>{<BR />"Message": "Receipt processing failed for Purchase Order "5*********"<BR />}<BR />I can see this response in the Message Monitor under the server response, but it is not available as the XI message payload.</P><P>My requirement is to automatically send this business error to users by email instead of manually copying it from Message Monitor.</P><P>My questions are:</P><P>Can SAP PO capture the HTTP 500 response body in a standard asynchronous REST receiver?<BR />Can the REST Result Handler be used to extract the Message field and use it for email notifications?<BR />If not, what is the SAP-recommended approach?<span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="error screenshot.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/427349i52C15178A7FC11C5/image-size/large?v=v2&amp;px=999" role="button" title="error screenshot.png" alt="error screenshot.png" /></span></P> 2026-06-30T06:17:43.512000+02:00 https://community.sap.com/t5/technology-q-a/issue-in-activating-zdmo-rap-generator-in-abap-cloud/qaq-p/14432774 Issue in activating ZDMO_RAP_GENERATOR in ABAP Cloud 2026-07-03T12:21:32.469000+02:00 Aveek_Ghose3 https://community.sap.com/t5/user/viewprofilepage/user-id/1666486 <P>In Cloud ABAP RAP I have pulled the abapgit files from&nbsp;<A href="https://github.com/SAP-samples/cloud-abap-rap/blob/main/README.md" target="_blank" rel="nofollow noopener noreferrer">cloud-abap-rap/README.md at main · SAP-samples/cloud-abap-rap · GitHub.</A></P><P>However, when I try to activate the ZDMO_RAP_GENERATOR I have errors in activation.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Aveek_Ghose3_0-1783073860935.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/428806iE1F19AC305CD0357/image-size/medium?v=v2&amp;px=400" role="button" title="Aveek_Ghose3_0-1783073860935.png" alt="Aveek_Ghose3_0-1783073860935.png" /></span></P><P>Can someone provide a solution to activate the ZDMO_RAP_GENERATOR.</P> 2026-07-03T12:21:32.469000+02:00 https://community.sap.com/t5/technology-q-a/how-to-make-specific-fields-read-only-in-an-action-parameter-popup-abstract/qaq-p/14433229 How to make specific fields read-only in an Action Parameter Popup (Abstract Entity) - ABAP 8.16 2026-07-04T04:30:41.729000+02:00 sagar_b1 https://community.sap.com/t5/user/viewprofilepage/user-id/2306479 <P>​I am working in an ABAP Release 8.16 environment using the RAP (ABAP RESTful Application Programming Model).</P><P>​I have a requirement where a custom action button on the UI triggers a popup dialog. This popup uses a custom Abstract Entity to define its input parameter fields.</P><P>​My Requirement:</P><P>When the user clicks the action button and the custom abstract entity popup appears, only the "Quantity" field should be editable. Every other field in that structure needs to be read-only.</P><P>​Here is a simplified version of my Abstract Entity:</P><P>@EndUserText.label: 'Action Parameter Popup'</P><P>define abstract entity ZC_MyActionParameter</P><P>{</P><P>&nbsp; @EndUserText.label: 'Material ID'</P><P>&nbsp; MaterialID : matnr;</P><P>&nbsp;&nbsp;</P><P>&nbsp; @EndUserText.label: 'Desired Quantity'</P><P>&nbsp; Quantity : kwmeng;</P><P>&nbsp;&nbsp;</P><P>&nbsp; @EndUserText.label: 'Plant'</P><P>&nbsp; Plant : werks_d;</P><P>}</P><P>&nbsp;</P><P>And here is how it's defined in my Behavior Definition (BDEF):</P><P>action MyCustomAction parameter ZC_MyActionParameter result [1] $self;</P><P>Currently tried creating bdef for abstract entity and make feild readonly but not working&nbsp;</P><P>And try to use object readonly UI annotation but is not available in this release</P><P>&nbsp;</P> 2026-07-04T04:30:41.729000+02:00 https://community.sap.com/t5/technology-q-a/how-to-use-privileged-mode-in-a-rap-cross-bo-scenario-for-reading-instance/qaq-p/14436980 How to use privileged Mode in a RAP Cross-BO Scenario for reading instance Features 2026-07-09T17:09:05.722000+02:00 akoethe https://community.sap.com/t5/user/viewprofilepage/user-id/804475 <P>Hi everybody,&nbsp;</P><P>We have created in SAP BTP ABAP Environment two RAP Business Object with the following properties</P><UL><LI>A business Object ZAK_CommentTP<UL><LI>Having an authorization context NoCheckWhenPrivileged</LI><LI>with privileged mode disabling NoCheckWhenPrivileged<STRONG>;</STRONG></LI><LI>The key field is called CommentId</LI></UL></LI><LI>A business Object ZAK_MainTP&nbsp;<UL><LI>enabled for Cross-BO Scenarios source resolved, e.g. there is a field CommentId in the entity.</LI></UL></LI></UL><P>What we want to achieve is that authorization checks are performed for reading, creating the comments in ZAK_CommentTP.</P><P>However, if a user is authorized for an instance of&nbsp; ZAK_MainTP , then he can read and create comments in ZAK_CommentTP which refer to this instance without being explicitly authorized for &nbsp;the ZAK_CommentTP RAP BO.</P><P>To achieve this, we have created actions and functions in the behavior of ZAK_MainTP, which then call the corresponding EML statements in ZAK_CommentTP in Privileged Mode.</P><P>This works well for creating comments. Here, we have created an action&nbsp; createComment in ZAK_MainTP&nbsp; which uses the operation create-by-association for ZAK_CommentTP and the EML Statement</P><P>MODIFY ENTITIES OF ZAK_CommentTP <STRONG>PRIVILEGED</STRONG></P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENTITY CommentHeader</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <U>CREATE</U> BY \_CommentChild ….</P><P>For Reading the Comments we have created a function which then uses Read Entities OF ZAK_CommentTP <STRONG>PRIVILEGED.</STRONG></P><P>&nbsp;</P><P>Now, we would like to know when a comment can be deleted. Therefore we can use the EML Statement &nbsp;</P><P>&nbsp;&nbsp;&nbsp; GET PERMISSIONS <STRONG>PRIVILEGED</STRONG> ONLY INSTANCE FEATURES OF ZAK_CommentTP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENTITY ….</P><P>to get the result of the feature control in ZAK_CommentTP .&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P><P>The result of this EML Statement is of type&nbsp;structure&nbsp;for&nbsp;permissions&nbsp;result&nbsp;ZAK_CommentTP&nbsp;&nbsp; .</P><P>However, there is no possibility of creating a function in ZAK_MainTP&nbsp; which has this as result structure.&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P><P>&nbsp;</P><P>So, I am searching for a way to create a function in the behavior for ZAK_MainTP&nbsp;whose&nbsp; parameters are the same as for the&nbsp; <U>get_instance_features</U> method in the ZAK_CommentTP&nbsp; .</P><P>&nbsp;</P><P>Any help and suggestions are welcome</P><P>&nbsp;</P> 2026-07-09T17:09:05.722000+02:00 https://community.sap.com/t5/technology-q-a/repeated-rap-update-of-business-partner-is-causing-error/qaq-p/14439354 Repeated RAP update of business partner is causing error 2026-07-13T15:32:26.497000+02:00 aravind_indu https://community.sap.com/t5/user/viewprofilepage/user-id/362467 <P>Hi All,</P><P>I'm trying to update tax numbers of business partners using RAP. It is working if there is a single update. If multiple updates I'm trying each with its own commit then the following error is coming.</P><P><SPAN>Parameter IV_X_SAVE is '' for FM BUPA_CENTRAL_CHANGE. It should be 'A'.</SPAN></P><P><SPAN>Anyone faced this error. Any solution for this.</SPAN></P><P><SPAN>Aravind</SPAN></P> 2026-07-13T15:32:26.497000+02:00 https://community.sap.com/t5/technology-q-a/in-rap-how-to-filter-an-association-via-button/qaq-p/14440331 In RAP how to filter an association via button 2026-07-14T16:42:48.019000+02:00 MatzFi https://community.sap.com/t5/user/viewprofilepage/user-id/1643389 <P>Hello All,</P><P>I do not find any answer online.&nbsp; So I hope you can help me out.<BR />I got a RAP app which contains of some CDS Views in parent child relation and some "normal" associations.<BR />Each Entity has its own UUID and a reference to the root entity.<BR />This root UUID is used to associate to a foreign CDS and all entries are displayed within all entities.<BR />I now want one button which takes the UUID of the specific entity and filters the data of the association accordingly<BR />A short coding example<BR /><BR /></P><pre class="lia-code-sample language-abap"><code>define root table entity rootEntity { key key : key; uuid : uui; @ObjectModel : { sort.enabled : false, filter.enabled : false } _Child : composition of exact one to many children; @ObjectModel : { sort.enabled : false, filter.enabled : false } _foreign : association of exact one to many foreigns on $projection.uuid = _Activities.uuid_root_reference; }</code></pre><P>&nbsp;Child</P><pre class="lia-code-sample language-abap"><code>define table entity child { key parent_key : key; key key : key; uuid : /uuid; @ObjectModel:{ sort.enabled: false, filter.enabled: false } _parent : association to parent parent on $projection.parent_key = parent.key; }</code></pre><P>&nbsp;on Consumption level</P><P>root</P><pre class="lia-code-sample language-abap"><code>define root view entity c_parent provider contract transactional_query as projection on parent { key key as Key, uuid as UUID, @ObjectModel:{ sort.enabled: false, filter.enabled: false } _Child : redirected to composition child c_children; @ObjectModel:{ sort.enabled: false, filter.enabled: false } _foreign : redirected to c_foreign }</code></pre><P>&nbsp;child</P><pre class="lia-code-sample language-abap"><code>define view entity c_children as projection on children association of exact one to many c_foreigns as _foreigns on $projection.parentUUID = _foreigns.UUIDRootReference { key key as Key, key parent_key as ParentKey, _parent.uuid as parentUUID, uuid, _parent : redirected to parent c_parent, _foreigns }</code></pre><P>in parent and child bdef I now want to have this:</P><pre class="lia-code-sample language-abap"><code> action (features : instance) filterByUUID result [0..*] entity c_foreigns; side effects { action filterByUUID affects entity _foreigns; }</code></pre><P>The foreigns association is linked as line item reference and does not contain a filterbar.</P><pre class="lia-code-sample language-abap"><code>{ id : 'Foreigns', purpose : #STANDARD, position : 10, label : 'Foreigns', type : #LINEITEM_REFERENCE, targetElement : '_foreigns' },</code></pre><P>&nbsp;In coding i want somethind like this:</P><pre class="lia-code-sample language-abap"><code>READ ENTITIES OF parent IN LOCAL MODE ENTITY parent FIELDS ( uuid ) WITH CORRESPONDING #( keys ) RESULT DATA(lt_parents). LOOP AT keys ASSIGNING FIELD-SYMBOL(&lt;ls_key&gt;). LOOP AT lt_parents REFERENCE INTO DATA(lr_parent). SELECT * FROM foreigns WITH PRIVILEGED ACCESS WHERE uuid_root_reference = <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/12268">@LR</a>_parent-&gt;uuid APPENDING TO TABLE @result. ENDLOOP. ENDLOOP.</code></pre><P>&nbsp;any hint how to achieve that I can filter the foreigns for the current entities uuid would be nice.<BR />Thank you in advance and best regards.</P><P>Matthias</P> 2026-07-14T16:42:48.019000+02:00 https://community.sap.com/t5/technology-q-a/is-it-possible-to-dynamically-determine-oauth-client-id-and-client-secret/qaq-p/14443744 Is it possible to dynamically determine OAuth Client ID and Client Secret in SAP PI/PO REST Adapter? 2026-07-19T12:20:11.927000+02:00 Manaruwan https://community.sap.com/t5/user/viewprofilepage/user-id/1475497 <P class="">Hi everyone,</P><P>I have a requirement in <STRONG>SAP Process Integration / Process Orchestration (SAP PI/PO 7.5)</STRONG> and would appreciate your guidance on the recommended approach.</P><P>We are using the <STRONG>REST Receiver Adapter</STRONG> with <STRONG>OAuth 2.0 Client Credentials Grant</STRONG> to call an external REST API.</P><P>The communication channel is configured with OAuth authentication, where the following parameters are maintained statically in the receiver communication channel:</P><UL><LI>OAuth 2.0 Client Credentials Grant</LI><LI>Authorization Server URL</LI><LI>Scope</LI><LI>Client ID</LI><LI>Client Secret</LI></UL><P>The current design works correctly. However, we have a scalability requirement.</P><H3 id="toc-hId-1949115782">Current Requirement</H3><P>We need to integrate approximately <STRONG>30 different company codes</STRONG>.</P><P>Each company code has:</P><UL><LI>Its own <STRONG>Client ID</STRONG></LI><LI>Its own <STRONG>Client Secret</STRONG></LI><LI>The same OAuth flow and API structure</LI></UL><P>At the moment, because the OAuth credentials are maintained in the communication channel, we would need to create separate PI/PO configurations for every company code.</P><P>This would result in maintaining approximately:</P><UL><LI>3 ESR objects per company code</LI><LI>3 Communication Channels per company code</LI></UL><P>For around <STRONG>30 company codes</STRONG>, this means maintaining approximately <STRONG>90 ESR objects and 90 Communication Channels</STRONG>, which significantly increases implementation effort and ongoing maintenance.</P><H3 id="toc-hId-1752602277">What we are looking for</H3><P>We would like to know whether there is a <STRONG>standard SAP-supported approach</STRONG> to dynamically determine the OAuth <STRONG>Client ID</STRONG> and <STRONG>Client Secret</STRONG> at runtime based on the incoming company code (or another business parameter), instead of maintaining separate communication channels.</P><P>Some possible approaches we were considered are:</P><UL><LI>Dynamic Configuration</LI><LI>Adapter Modules</LI><LI>Java Mapping</LI><LI>User-Defined Functions</LI><LI>Lookup from a database or secure credential store</LI><LI>Any other SAP-recommended mechanism</LI></UL><H3 id="toc-hId-1556088772">Questions</H3><OL><LI>Is it possible to make the <STRONG>Client ID</STRONG> and <STRONG>Client Secret</STRONG> dynamic in the PI/PO REST Receiver Adapter?</LI><LI>Can the REST Adapter retrieve OAuth credentials dynamically during runtime?</LI><LI>Has anyone implemented a similar scenario where multiple business entities use different OAuth credentials while minimizing the number of communication channels?</LI><LI>What would be the SAP-recommended best practice for this type of requirement?</LI></OL><P>Our goal is to keep the solution scalable and maintainable while following SAP best practices and avoiding a large number of ESR objects and Communication Channels.</P><P>Any implementation experience, SAP Notes, blogs, or documentation references would be greatly appreciated.</P><P>Thank you!</P><P>Praveen de Silva</P> 2026-07-19T12:20:11.927000+02:00 https://community.sap.com/t5/technology-q-a/problem-with-discarding-entity-using-cap-as-a-proxy-of-rap-v4-service/qaq-p/14444101 Problem with discarding entity using CAP as a proxy of RAP V4 Service 2026-07-20T10:05:47.997000+02:00 HenrikA https://community.sap.com/t5/user/viewprofilepage/user-id/1553960 <P>Hello Experts,</P><P>i've built an App on the Public Cloud, using RAP V4 Service for data&nbsp;persistence and also using determinations, validations etc.<BR />I'm then using a CAP Service to add custom functionality with accessing external/SAP API's. I added my RAP V4 Service using basic entity projection and a little more complicated event handlers. Most of it works good when consumed by Fiori Elements App, but i am facing an issue, where i discard the entity i am editing (not when creating), it successfully discard its, but then fails to read and rebind to the "active" Entity.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HenrikA_0-1784533375274.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/434838i244E1DD670F7FBA5/image-size/medium?v=v2&amp;px=400" role="button" title="HenrikA_0-1784533375274.png" alt="HenrikA_0-1784533375274.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HenrikA_1-1784533414472.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/434839i8879C31EEA8A7412/image-size/medium?v=v2&amp;px=400" role="button" title="HenrikA_1-1784533414472.png" alt="HenrikA_1-1784533414472.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HenrikA_3-1784533484386.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/434842i8DDDE8B54BAC120E/image-size/medium?v=v2&amp;px=400" role="button" title="HenrikA_3-1784533484386.png" alt="HenrikA_3-1784533484386.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HenrikA_5-1784534037906.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/434846i490C4AB512653FD0/image-size/medium?v=v2&amp;px=400" role="button" title="HenrikA_5-1784534037906.png" alt="HenrikA_5-1784534037906.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HenrikA_6-1784534288286.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/434849iB6BB212A1B25099E/image-size/medium?v=v2&amp;px=400" role="button" title="HenrikA_6-1784534288286.png" alt="HenrikA_6-1784534288286.png" /></span></P><P>&nbsp;</P><P>From the UI Console and Network Tab, aswell as debugging for hours i'm certain that the discard action works, but the two GET requests fired by FE are running on errors.</P><P>My guess to what happens is, that the Draft is discarded before the Read triggers, therefore Entity with "isActiveEntity"=false cannot be accessed and the query fails. The weird thing about that is, that this should be dafault Draft Logic and works everywhere else. So i feel like i am missing something.&nbsp;</P><P>Also i am not using&nbsp;<SPAN><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/1599241">@odata</a>.draft.enabled, because that would then use the CAP Default but we have all our data on the RAP Service and need to proxy the requests the way i do (please correct me if i'm wrong here).</SPAN></P><P><SPAN>Help is greatly appreciated and i will provide any further information you might need.</SPAN></P><P><SPAN>Cheers,</SPAN><SPAN>&nbsp;Henrik</SPAN></P> 2026-07-20T10:05:47.997000+02:00 https://community.sap.com/t5/technology-q-a/f1861-display-supplier-list-change-responsive-table-to-grid-table-using/qaq-p/14444530 F1861 - Display Supplier List : Change Responsive Table to Grid Table Using Adaptation Project. 2026-07-20T15:27:26.939000+02:00 rohit_patil120b7d https://community.sap.com/t5/user/viewprofilepage/user-id/2305029 <P>Hi&nbsp; Experts,</P><P>I am working on standard Sap Fiori app F1861 In S/4 Hana 2022 FPS02. Business wants to replace the responsive table with a grid table so user can a horizontal scrollbar and view all columns at ones. I tried changing the table type from all responsive to grid using an adaptation project, and also tried controller extension and manifest change, but the app fails at runtime with error&nbsp;</P><P>"getTable().setFixedLayout is not a function",</P><P>and doesn't load properly. I also checked SAP KBA 3460918, and it says F1861 uses a responsive table by design, and no horizontal scroll is provided. Is there any officially supported way to change it to a grid table, maybe via CDS annotation or a sap note? Any guidance would be appreciated.</P><P><a href="https://community.sap.com/t5/c-khhcw49343/SAPUI5/pd-p/500983881501772639608291559920477" class="lia-product-mention" data-product="325-1">SAPUI5</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+Fiori/pd-p/73554900100700000977" class="lia-product-mention" data-product="18-1">SAP Fiori</a>&nbsp; <a href="https://community.sap.com/t5/c-khhcw49343/SAP+Fiori+Elements/pd-p/ed5c1ef6-932f-4c19-b2ba-1be375109ff5" class="lia-product-mention" data-product="21-1">SAP Fiori Elements</a>&nbsp; &nbsp;</P> 2026-07-20T15:27:26.939000+02:00 https://community.sap.com/t5/technology-q-a/how-can-i-deploy-an-sap-rap-application-for-third-party-users-without/qaq-p/14445930 How can I deploy an SAP RAP application for third-party users without providing SAP credentials? 2026-07-22T08:57:42.134000+02:00 OmkarMistry https://community.sap.com/t5/user/viewprofilepage/user-id/2320980 <P class="lia-align-left" style="text-align : left;"><SPAN>Hi Experts,</SPAN></P><P class="lia-align-left" style="text-align : left;"><SPAN>I have developed an application using the </SPAN><STRONG><SPAN>ABAP RESTful Application Programming Model (RAP)</SPAN></STRONG><SPAN> on </SPAN><STRONG><SPAN>SAP S/4HANA Public Cloud</SPAN></STRONG><SPAN>.</SPAN></P><P class="lia-align-left" style="text-align : left;"><SPAN>My requirement is to make this application accessible to </SPAN><STRONG><SPAN>third-party users</SPAN></STRONG><SPAN> (such as vendors or customers) </SPAN><STRONG><SPAN>without creating SAP user accounts or sharing SAP credentials</SPAN></STRONG><SPAN>.</SPAN></P><P class="lia-align-left" style="text-align : left;"><SPAN>For example, I want to build a vendor portal where external vendors can:</SPAN></P><UL class="lia-align-left" style="text-align : left;"><LI><SPAN>View RFQs assigned to them.</SPAN></LI><LI><SPAN>Submit quotations.</SPAN></LI><LI><SPAN>Update the status of their responses.</SPAN></LI></UL><P class="lia-align-left" style="text-align : left;"><SPAN>The business users do not want external users to log in directly to SAP.</SPAN></P><P class="lia-align-left" style="text-align : left;"><SPAN>I would like to understand the recommended approach for this scenario:</SPAN></P><OL class="lia-align-left" style="text-align : left;"><LI><SPAN>What is the best architecture for exposing a RAP application to external users?</SPAN></LI><LI><SPAN>Can SAP Build or SAP BTP be used as the frontend while RAP remains the backend?</SPAN></LI><LI><SPAN>Should I expose RAP business objects using OData/REST APIs and implement authentication using SAP Cloud Identity Services (IAS) or OAuth?</SPAN></LI><LI><SPAN>Are there any SAP-recommended best practices or reference architectures for this use case?</SPAN></LI><LI><SPAN>How are security, licensing, and authorization typically handled for external users?</SPAN></LI></OL><P class="lia-align-left" style="text-align : left;"><SPAN>If anyone has implemented a similar solution or can share documentation or architecture diagrams, I would greatly appreciate your guidance.</SPAN></P><P class="lia-align-left" style="text-align : left;"><SPAN>Thank you!<BR /></SPAN>Omkar&nbsp;</P> 2026-07-22T08:57:42.134000+02:00 https://community.sap.com/t5/technology-q-a/what-sap-s-standard-rap-applications-can-teach-every-abap-developer-s-4hana/qaq-p/14446516 What SAP's Standard RAP Applications Can Teach Every ABAP Developer (S/4HANA 2023) 2026-07-22T17:19:33.979000+02:00 Omkar4242 https://community.sap.com/t5/user/viewprofilepage/user-id/1879691 <P><STRONG>Target Audience:</STRONG> Intermediate to Advanced SAP ABAP Developers</P><P><STRONG>Prerequisites:</STRONG></P><P>SAP S/4HANA 2023, ADT (ABAP Development Tools), Basic RAP knowledge, CDS Views, Fiori Elements</P><P><STRONG>Introduction</STRONG></P><P>Most RAP tutorials demonstrate how to create a Business Object from scratch. But there is a much better teacher:&nbsp;<STRONG>SAP itself.</STRONG></P><P>Every new release of SAP S/4HANA contains hundreds of applications built using the same RAP framework that customers use for custom development. Instead of treating them as black boxes, we can study their architecture to understand how SAP engineers design scalable, upgrade-safe business applications.</P><P>This article explains a systematic approach to exploring standard RAP applications in SAP S/4HANA 2023 and highlights practical design patterns that you can adopt in your own projects.</P><P><STRONG>Why Study Standard Applications?</STRONG></P><P>Imagine two developers.<BR />Developer A learns RAP by following tutorial examples.<BR />Developer B studies production applications built by SAP.<BR />Who is likely to write better enterprise software?</P><P>Production applications solve problems that tutorials rarely cover:</P><UL><LI>Large data volumes</LI><LI>Performance</LI><LI>Authorization</LI><LI>Extensibility</LI><LI>Maintainability</LI><LI>Upgrade stability</LI><LI>Multi-user consistency</LI></UL><P>Studying SAP's design decisions helps you understand not just how RAP works, but why&nbsp;it is structured the way it is.</P><P><STRONG>Finding a Standard RAP Application</STRONG></P><P>The first challenge is determining whether a Fiori application is RAP-based.<BR />A practical starting point is the SAP Fiori Apps Reference Library. Applications implemented as transactional SAP Fiori elements with OData V4 service bindings are strong candidates, although some Fiori elements applications are still based on older frameworks such as SADL/Gateway. Always verify the implementation details in your system.</P><P>Example:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="flow diagram of RAP.png" style="width: 264px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/436069iE521E2EB8E106345/image-dimensions/264x396?v=v2" width="264" height="396" role="button" title="flow diagram of RAP.png" alt="flow diagram of RAP.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>This path reveals almost the complete RAP architecture.</P><P>&nbsp;</P><P><STRONG>Lesson 1 — Separate Data Model from UI</STRONG></P><P>One of the first observations is that SAP rarely exposes database tables directly.</P><P>Instead, several CDS layers are used.</P><P>Example structure:</P><P>Database Table--&gt;Interface CDS--&gt;Projection CDS--&gt;Service Definition</P><P>Why?</P><P>Because each layer has a distinct responsibility.</P><TABLE><TBODY><TR><TD><P><STRONG>Layer</STRONG></P></TD><TD><P><STRONG>Purpose</STRONG></P></TD></TR><TR><TD><P>Database</P></TD><TD><P>Physical persistence</P></TD></TR><TR><TD><P>Interface CDS</P></TD><TD><P>Business semantics</P></TD></TR><TR><TD><P>Projection CDS</P></TD><TD><P>UI/API exposure</P></TD></TR><TR><TD><P>Service</P></TD><TD><P>External contract</P></TD></TR></TBODY></TABLE><P>This separation allows SAP to evolve the backend while keeping public APIs stable.</P><P><STRONG>Lesson 2 — Keep Business Logic Out of the UI</STRONG></P><P>A common beginner mistake is putting validations in UI code.</P><P>SAP instead keeps business rules inside the Behavior Implementation.</P><P>Examples include:</P><UL><LI>Validation</LI><LI>Determination</LI><LI>Default values</LI><LI>Authorization checks</LI><LI>Actions</LI></UL><P>The UI simply consumes the service.</P><P>Benefits include:</P><UL><LI>Reusable APIs</LI><LI>Consistent validation</LI><LI>Easier testing</LI><LI>Cleaner architecture</LI></UL><P><STRONG>Lesson 3 — CDS Does More Than Read Data</STRONG></P><P>Many developers initially think of CDS as an SQL replacement.</P><P>Standard applications demonstrate that CDS also provides:</P><UL><LI>Semantic modeling</LI><LI>Associations</LI><LI>Calculated fields</LI><LI>Value helps</LI><LI>Search configuration</LI><LI>UI metadata through annotations</LI></UL><P>The result is a richer domain model that reduces imperative coding.</P><P><STRONG>Lesson 4 — Projection Views Protect Internal Objects</STRONG></P><P>A common question is:</P><P>Why doesn't SAP expose the interface view directly?</P><P>The answer lies in encapsulation.</P><P>Projection views define exactly what consumers can see.</P><P>Benefits include:</P><UL><LI>Hide technical fields</LI><LI>Rename fields for consumers</LI><LI>Restrict operations</LI><LI>Simplify future changes</LI></UL><P>Think of them as the public API of your business object.</P><P><STRONG>Lesson 5 — Behaviors Describe Capabilities</STRONG></P><P>Behavior Definitions communicate what an application supports.</P><P>Typical capabilities include:</P><UL><LI>Create</LI><LI>Update</LI><LI>Delete</LI><LI>Locking</LI><LI>Draft</LI><LI>Actions</LI><LI>Validations</LI><LI>Determinations</LI></UL><P>This declarative approach allows the RAP runtime to orchestrate transactional behavior consistently.</P><P><STRONG>Lesson 6 — Think in Business Objects, Not Tables</STRONG></P><P>Traditional ABAP development often starts from tables.</P><P>RAP encourages a business-object-centric mindset.</P><P>Instead of asking:</P><P>Which table should I update?</P><P>Ask:</P><P>Which business object owns this transaction?</P><P>This shift improves consistency and aligns with domain-driven design principles</P><P><STRONG>Lesson 7 — Favor Composition Over Joins</STRONG></P><P>In many standard RAP models, parent-child relationships are represented through compositions rather than arbitrary joins.</P><P>Example:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="example of sales order.png" style="width: 191px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/436072i485145CED7672DE3/image-dimensions/191x238?v=v2" width="191" height="238" role="button" title="example of sales order.png" alt="example of sales order.png" /></span></P><P>Compositions provide:</P><UL><LI>Lifecycle management</LI><LI>Transaction consistency</LI><LI>Cleaner navigation</LI><LI>Better draft handling</LI></UL><P><STRONG>Lesson 8 — Services Are Intentionally Small</STRONG></P><P>Another interesting observation is that SAP often exposes focused services rather than one large "everything" service.</P><P>Instead of:</P><P>Sales API</P><P>You may find multiple services dedicated to specific business scenarios.</P><P>Advantages:</P><UL><LI>Better security</LI><LI>Easier maintenance</LI><LI>Lower coupling</LI><LI>Smaller payloads</LI></UL><P><STRONG>Lesson 9 — Design for Extensibility</STRONG></P><P>SAP standard applications are built with extension in mind.</P><P>Rather than modifying delivered objects, customers are expected to:</P><UL><LI>Extend CDS views</LI><LI>Use released APIs</LI><LI>Add custom fields</LI><LI>Implement enhancement points where available</LI></UL><P>This aligns with the Clean Core strategy for upgrade-safe extensions.</P><P><STRONG>Lesson 10 — The Framework Does More Than You Think</STRONG></P><P>When you press <STRONG>Save</STRONG> in a RAP application, much more happens than a simple database update.</P><P>A simplified flow looks like this:</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="RAP End to End flow.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/436073i89536956E9F0A59D/image-size/large?v=v2&amp;px=999" role="button" title="RAP End to End flow.png" alt="RAP End to End flow.png" /></span></P><P><STRONG>A Practical Exploration Checklist</STRONG></P><P>When studying a standard RAP application, consider the following questions:</P><UL><LI>Which CDS entity is the root?</LI><LI>Which projection view is exposed?</LI><LI>What behavior is implemented?</LI><LI>Which actions are available?</LI><LI>Where are validations implemented?</LI><LI>Is draft enabled?</LI><LI>How are associations modeled?</LI><LI>How is authorization handled?</LI><LI>What extension points are provided?</LI><LI>Which service binding exposes the API?</LI></UL><P>Documenting your observations builds a valuable reference for future projects</P><P><STRONG>Key Takeaways</STRONG></P><P>Studying SAP's standard RAP applications is less about copying implementations and more about understanding architectural decisions.</P><P>Some recurring principles include:</P><UL><LI>Layered CDS architecture</LI><LI>Business-object-centric design</LI><LI>Declarative behaviors</LI><LI>Focused service contracts</LI><LI>Encapsulation through projections</LI><LI>Upgrade-safe extensibility</LI><LI>Consistent transaction management</LI></UL><P>By adopting these practices, custom RAP applications become easier to maintain, extend, and evolve alongside future SAP releases.</P><P>&nbsp;</P><P><STRONG>Conclusion</STRONG></P><P>RAP is not merely a framework for generating CRUD services. It embodies a set of architectural patterns that SAP applies across modern SAP S/4HANA applications.</P><P>The next time you encounter a standard Fiori application, don't stop at using it. Open it in ADT, trace its service binding, inspect its CDS layers, and study its behavior model. Every standard application is an opportunity to learn from production-grade engineering.</P><P>You may discover that the best RAP tutorial is already installed in your SAP system.</P><P>&nbsp;</P> 2026-07-22T17:19:33.979000+02:00