https://raw.githubusercontent.com/ajmaradiaga/feeds/main/scmt/topics/SAP-BTP-ABAP-environment-blog-posts.xml SAP Community - SAP BTP, ABAP environment 2024-05-09T20:00:28.919058+00:00 python-feedgen SAP BTP, ABAP environment blog posts in SAP Community https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/deep-dive-into-sap-build-process-automation-with-sap-s-4hana-cloud-public/ba-p/13652021 Deep Dive into SAP Build Process Automation with SAP S/4HANA Cloud Public Edition - Retail 2024-03-28T14:19:12.526000+01:00 Hardeep_Tulsi https://community.sap.com/t5/user/viewprofilepage/user-id/132334 <H1 id="toc-hId-861591903"><FONT size="4">This blog is intended to complement my previous blogs on automation and augment Retail scenario with&nbsp;SAP S/4HANA Cloud Public Edition as described with available <A href="https://me.sap.com/processnavigator/globalSearch/Retail" target="_blank" rel="noopener noreferrer">scope items</A> for Retail and <A href="https://help.sap.com/docs/SAP_S4HANA_CLOUD/64609d0ecac54654b0837cba34555b82/7c444c57a10f0b22e10000000a44147b.html?version=2402.500" target="_blank" rel="noopener noreferrer">SAP Help documentation</A>.</FONT></H1><P>Customers are eager to take charge and explore potential avenues for innovation, aiming to streamline enterprise automation across diverse landscapes. This proactive approach empowers companies to address the challenges of disjointed processes, ensuring they focus their automation efforts where they're most needed.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="FINALEENTAUTO.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/87777iC2A6D4F3E09DAB86/image-size/large?v=v2&amp;px=999" role="button" title="FINALEENTAUTO.png" alt="FINALEENTAUTO.png" /></span></P><P>A Retail company striving to revolutionize its operations, particularly in managing the intricate logistics of end-to-end retail processes. They seek to seamlessly integrate sales from both backyard distribution channels and physical storefronts, even when inventory might not be stored on-site. This pursuit of efficiency reflects their commitment to enhancing customer experience and staying ahead in a competitive market.</P><P>Let's explore a typical business situation where sales happen in stores using cash registers (POS systems). These sales involve things like selling items, customers paying for orders, and handling money transactions. To keep track of all this, we need to automatically create documents showing when goods leave the store, including steps like gathering items, putting them in packages, and officially marking them as sold and out of the store.&nbsp;</P><P>Real-time stock levels are monitored within <A href="https://help.sap.com/docs/SAP_CUSTOMER_CHECKOUT/8f711df7d2aa4f1aa29f88c86cef2081/80d32d80ceac4efd98d55140c7d64a24.html" target="_blank" rel="noopener noreferrer">SAP Customer Checkout Manager</A> for immediate visibility. Data is moved from S/4HANA Public Cloud Retail to SAP Customer Checkout Manager, focusing on master data replication. Financial and sales transactions flow from SAP Customer Checkout Manager back to S/4HANA Public Cloud Retail. Learn more about <A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/integration-of-sap-customer-checkout-manager-with-s-4-public-cloud-retail/ba-p/13551240" target="_blank">Integration of SAP Customer Checkout Manager with S/4 Public Cloud Retail</A> with <A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/integration-of-sap-customer-checkout-manager-with-s-4-public-cloud-retail/ba-p/13551240" target="_blank">documentation</A>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="RETAILHL.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/87778i9D83A7AB54A4F0E0/image-size/large?v=v2&amp;px=999" role="button" title="RETAILHL.png" alt="RETAILHL.png" /></span></P><P>Executing enterprise automation with SAP Build Process Automation / SAP Integration Suite Middleware using SAP Event Mesh with business events, help trigger fully automated process. Customer can set up their custom enterprise automation bots and workflows by leveraging and extending the available best practices content on SAP <A href="https://hub.sap.com/build?pub=SAP,SAP%20S%2F4HANA&amp;app=SAP%20S%2F4HANA%20Cloud" target="_blank" rel="noopener noreferrer">Bot Store</A>. Ex. documents for goods movements such as outbound delivery, Picking, Packing and Post Goods Issue need to be automatically accomplished. You can learn more with <A href="https://community.sap.com/t5/technology-blogs-by-sap/business-event-triggers-in-sap-build-process-automation-for-sap-s-4hana/ba-p/13572223" target="_blank">documentation</A>. &nbsp;</P><P>SAP Event Mesh is a fully managed cloud service running on SAP BTP for enabling applications, integrations, and extensions to communicate asynchronously through events. It is part of SAP’s event driven ecosystem and powers end-to-end event driven architectures. SAP Event Mesh allows applications to communicate through asynchronous events.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="event.png" style="width: 675px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/87779i3D651597A5990089/image-size/large?v=v2&amp;px=999" role="button" title="event.png" alt="event.png" /></span></P><P>Experience greater agility and scalability when you create responsive applications that work independently and participate in event-driven business processes across your business ecosystem. Learn more with SAP Help | <A href="https://help.sap.com/docs/event-mesh/event-mesh/what-is-sap-event-mesh" target="_self" rel="noopener noreferrer">Documentation</A>&nbsp;</P><P>Currently all public business events for SAP S/4HANA Cloud listed on&nbsp;<A href="https://api.sap.com/" target="_blank" rel="noopener noreferrer">Business Accelerator Hub</A>&nbsp;are supported and can be used to streamline the process with automation.</P><P>Customers envision to have AI-powered SAP Build Process Automation solution to integrate applications such as SAP S/4HANA Cloud Public Edition with their point-of-sale (POS) system, discover process inefficiencies and automate business processes.​</P><P>SAP Build Process Automation provide the flexibility for the customer to automate across the enterprise to improve efficiency and reduce errors, along with Event Mesh set up. Event-Broker-as-a-Service decouples communication between event sources and event consumers in a plug-and-play fashion.</P><P><STRONG>Streamline Goods Movement and Posting Billing Document</STRONG><BR /><STRONG>Extend pre-build Template packages to customize and perform automation using Business Events</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Automation Flow.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/87780i5431C707696AA07E/image-size/large?v=v2&amp;px=999" role="button" title="Automation Flow.png" alt="Automation Flow.png" /></span></P><P>Customer vision is to have real time business updates on significant changes in business applications for their logistics and Retail sales process, throughout their business ecosystem and increase flexibility and scalability by loosely coupling business applications and infrastructure.</P><P><STRONG>Automated Goods Movement and Posting Updated Billing Document using SAP Build Process Automation</STRONG></P><P><STRONG><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SBPA Automation.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/87786iE9A340EC4E3C18E4/image-size/large?v=v2&amp;px=999" role="button" title="SBPA Automation.png" alt="SBPA Automation.png" /></span></STRONG></P><P>Utilizing automation through the API <A href="https://api.sap.com/api/API_MATERIAL_DOCUMENT_SRV/overview" target="_blank" rel="noopener noreferrer">API_MATERIAL_DOCUMENT</A>, the system orchestrates the creation of postings to maintain a seamless availability of articles on the storefront. Additionally, it initiates the generation of material documents following a trigger event at the Event Mesh, occurring subsequent after the creation of a point-of-sale (POS) receipt.</P><P>Within the Event Mesh framework, occurrences related to material documents are captured. These events manifest when a material document is generated (MaterialDocument.Created.v1) or when an item within a material document is canceled (MaterialDocument.Canceled.v1). Further insights into Material Document Events can be obtained for deeper understanding with SAP Help | <A href="https://help.sap.com/docs/SAP_S4HANA_CLOUD/3f57e7df4a114edabffe8b2d581a59ed/40783449115e4b53a9da6e513caf8f50.html?version=2402.501" target="_blank" rel="noopener noreferrer">Documentation</A></P><P>Furthermore, the allocation of specific delivery groups to outbound deliveries is imperative using SAP Build Process Automation BOT. This ensures that the requisite shipment resources are appropriately assigned to undertake subsequent outbound delivery tasks. The assignment of outbound delivery groups is managed externally to the cloud ERP system, documented within a spreadsheet, and synchronized with the SAP S/4HANA Cloud, Public Edition for updates and maintenance.</P><P>SAP Build Process Automation helps automatic creation of Picking and Packing, goods issue and monitor process using process visibility.&nbsp; Notification events or data events can be sent from the event source to inform of the change.&nbsp; Message holding the event description in an encoded format is sent through an event broker, where event consumers have registered with the event broker and are informed of the event.</P><H5 id="toc-hId-1181409274">SAP Build Process Automation best practices content extended to update the delivery group for outbound deliveries assignment.</H5><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Change outbound delivery.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/87795iFAC55A5203B1C037/image-size/large?v=v2&amp;px=999" role="button" title="Change outbound delivery.png" alt="Change outbound delivery.png" /></span></P><P>&nbsp;</P><H5 id="toc-hId-984895769">SAP Build Process Automation perform automated goods movement tasks such as Picking, Packing and Goods Issue.</H5><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="OB Delivery.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/87794i2C026C6F54D54C73/image-size/large?v=v2&amp;px=999" role="button" title="OB Delivery.png" alt="OB Delivery.png" /></span></P><P>&nbsp;</P><P>SAP Build Process Automation helps updating the billing document for sales for with specific attributes, Proof of Delivery, reference point-of-sale (POS) number, as well as the respective financial postings in SAP S/4HANA Cloud.</P><P>For Retail business scenario, solution leverage Store Connectivity POS Outbound (<A href="https://me.sap.com/processnavigator/SolS/EARL_SolS-013/2402/SolP/3I2?region=US" target="_blank" rel="noopener noreferrer">3I2</A>) to send the (Articles, B2C prices etc.) information from SAP S/4HANA Cloud system to point-of-sale (POS) system.</P><P>POS outbound service operation enables you to send product master data, sales price information, and additional information, such as purchase price information and bills of material, to point-of-sale (POS) systems. You can learn more with &nbsp;<A href="https://help.sap.com/docs/SAP_S4HANA_CLOUD/867f44bbab0e43c99b62a4d60630e4de/089fa77326cd4dcab06f9dfb8599c50d.html?version=2402.500" target="_blank" rel="noopener noreferrer">Documentation | SAP Help Portal</A> and <A href="https://api.sap.com/api/CE_CO_WART_PRMRCHV_REPLBLKRQ_OUT/overview" target="_blank" rel="noopener noreferrer">API Documentation</A></P><P>For Retail business inbound scenario, solution leverage POS Inbound (<A href="https://me.sap.com/processnavigator/SolS/EARL_SolS-013/2402/SolP/3HV?region=US" target="_blank" rel="noopener noreferrer">3HV</A>)&nbsp;functionality to transfer information from POS Sales receipt and means of payment for articles available at Store front and backyard distribution channel.</P><P>In addition, configuration set up can be done to transfers aggregated sales, aggregated payment list, sales per receipt and returns, and customer order payment information by creating material and billing documents in SAP S/4HANA Cloud system.</P><P>"<A href="https://api.sap.com/api/CE_POS_SALES_TRANS_CREATE_REQ_IN/overview" target="_blank" rel="noopener noreferrer">POS Sales Transactions - Create</A>" inbound asynchronous service to replicate POS sales transactions in SAP S/4HANA Cloud system. You can learn more with SAP Help Finance Transactions. <A href="https://help.sap.com/docs/SAP_S4HANA_CLOUD/867f44bbab0e43c99b62a4d60630e4de/729ad95981a54ef692eb3ba777e6eab6.html?version=2402.500" target="_blank" rel="noopener noreferrer">Documentation | SAP Help Portal</A></P><P>POS Sales Transaction - Receive Confirmation outbound service enables you to receive a confirmation as soon as you successfully posted a POS sales transaction in the&nbsp;SAP S/4HANA Cloud&nbsp;system. <A href="https://help.sap.com/docs/SAP_S4HANA_CLOUD/867f44bbab0e43c99b62a4d60630e4de/1d656c80d4034c07b3e1f2e7496aaf1d.html?version=2402.500" target="_blank" rel="noopener noreferrer">Documentation | SAP Help Portal</A></P><P>"<A href="https://api.sap.com/api/CE_POS_FINANCIAL_TRANS_CREATE_REQ_IN/overview" target="_blank" rel="noopener noreferrer">POS Financial Transactions - Create</A>" inbound asynchronous service enables you to replicate point-of-sale (POS) financial transactional data to SAP S/4HANA Cloud system. You can learn more with SAP Help Finance Transactions <A href="https://help.sap.com/docs/SAP_S4HANA_CLOUD/867f44bbab0e43c99b62a4d60630e4de/903cbce8433741ae9c9952e4040aeb08.html?version=2402.500" target="_blank" rel="noopener noreferrer">Documentation | SAP Help Portal</A></P><P><A href="https://help.sap.com/docs/SAP_S4HANA_CLOUD/867f44bbab0e43c99b62a4d60630e4de/f26a35e30d1b49a6a06b0ea8702bf059.html?version=2402.500" target="_blank" rel="noopener noreferrer">POS Financial Transaction - Receive Confirmation </A>outbound service enables you to receive a SOAP confirmation as soon as you successfully posted a POS financial transaction in the&nbsp;SAP S/4HANA Cloud. <A href="https://help.sap.com/docs/SAP_S4HANA_CLOUD/867f44bbab0e43c99b62a4d60630e4de/f26a35e30d1b49a6a06b0ea8702bf059.html?version=2402.500" target="_blank" rel="noopener noreferrer">Documentation | SAP Help Portal</A></P><P>POS Inbound (<A href="https://me.sap.com/processnavigator/SolS/EARL_SolS-013/2402/SolP/3HV?region=US" target="_blank" rel="noopener noreferrer">3HV</A>)&nbsp;create billing Document for sales and means of payment. Billing Document <A href="https://api.sap.com/event/CE_BILLINGDOCUMENTEVENTS/overview" target="_blank" rel="noopener noreferrer">Events</A> are triggered and received by Event Mesh that informs a external system about created, changed, and canceled billing documents in an SAP S/4HANA Cloud. Event mesh will have automated&nbsp;execution for SAP Build process automation bot that reads the billing information via API based bot (<A href="https://api.sap.com/api/API_BILLING_DOCUMENT_SRV/overview" target="_blank" rel="noopener noreferrer">https://api.sap.com/api/API_BILLING_DOCUMENT_SRV/overview</A>) and send it to POS system.</P><P>In general, SAP recommend using the <A href="https://www.sap.com/products/crm/omnichannel-sales-transfer-and-audit.html" target="_blank" rel="noopener noreferrer">SAP Omnichannel Sales Transfer and Audit solution</A> which can be further evaluated in the given scenario. &nbsp;This solution will further optimize by having aggregated transactions (and, in specific use cases, nonaggregate (receipt-level) transactions) are periodically pushed to the back end for further processing.</P><P>Let’s take a deeper look at technical configuration steps using Event Mesh with SAP S/4HANA Cloud, Public Edition with 10 simple steps that can get your event driven automation up and running.</P><OL><LI>Setup Connectivity and Extensibility</LI></OL><P>You can set up the connectivity between Event Mesh and the SAP S/4HANA Cloud Public Edition Tenant that enable the exchange of credentials between the two systems.&nbsp; Administrator should first create an SAP S/4HANA Cloud Extensibility service instance with service plan messaging.&nbsp; Learn more with <A href="https://help.sap.com/docs/btp/sap-business-technology-platform/set-up-connectivity-between-event-mesh-and-sap-s-4hana-cloud-tenant" target="_blank" rel="noopener noreferrer">documentation</A>.</P><OL class="lia-list-style-type-lower-alpha"><LI>Maintain Extensions on SAP BTP - To build extension applications for your SAP S/4HANA Cloud system, you need to connect your SAP S/4HANA Cloud system to your SAP Business Technology Platform global account. SAP Business Technology Platform Cockpit, open your global account and choose&nbsp;<EM>Systems</EM> - <EM>Add System. &nbsp;Learn more with <A href="https://help.sap.com/docs/btp/sap-business-technology-platform/register-sap-s-4hana-cloud-system-in-global-account-in-sap-btp" target="_blank" rel="noopener noreferrer">Documentation | SAP Help Portal </A></EM><EM>&nbsp;</EM></LI><LI>Set Up Entitlements for Your Subaccount &nbsp;<EM><A href="https://help.sap.com/docs/btp/sap-business-technology-platform/create-subaccount" target="_blank" rel="noopener noreferrer">Documentation | SAP Help Portal</A>&nbsp; &nbsp;</EM><EM>&nbsp;</EM></LI><LI>Set up your subaccount entitlement for SAP Event Mesh - Click on Configure Entitlements and then on Add Service Plan.&nbsp; In the Subaccount Entitlements dialog box, select the service Event Mesh. In the Service Details: Event Mesh screen area, check both options the default service plan and the Standard (Application) and then click on Add Service Plans.&nbsp;</LI></OL><P>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Hardeep_Tulsi_1-1711606706561.png" style="width: 975px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/87804i7B83D5A6E4FD914C/image-size/large?v=v2&amp;px=999" role="button" title="Hardeep_Tulsi_1-1711606706561.png" alt="Hardeep_Tulsi_1-1711606706561.png" /></span></P><P>&nbsp;</P><P>&nbsp; &nbsp; &nbsp;</P><P>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Hardeep_Tulsi_2-1711606720945.png" style="width: 975px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/87805iB08193F11504AA23/image-size/large?v=v2&amp;px=999" role="button" title="Hardeep_Tulsi_2-1711606720945.png" alt="Hardeep_Tulsi_2-1711606720945.png" /></span></P><P>&nbsp;</P><OL class="lia-list-style-type-lower-alpha"><LI>Messaging to consume SAP S/4HANA Cloud events and create event-based extensions using the event bus from SAP Event Mesh and api-access for generic access to SAP S/4HANA Cloud APIs.</LI></OL><OL><LI>&nbsp;Navigate to&nbsp;SAP S/4HANA Cloud Public Edition Home -&gt; Communication Management&nbsp;tab and choose the tile&nbsp;Maintain Extensions on SAP BTP.&nbsp;<span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Hardeep_Tulsi_3-1711606758774.png" style="width: 975px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/87806i9F5F10B762D6C603/image-size/large?v=v2&amp;px=999" role="button" title="Hardeep_Tulsi_3-1711606758774.png" alt="Hardeep_Tulsi_3-1711606758774.png" /></span><P>&nbsp;</P></LI></OL><P>On the&nbsp;Maintain Extensions on SAP BTP&nbsp;screen in the Integration section, choose&nbsp;New.&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Hardeep_Tulsi_4-1711606790458.png" style="width: 975px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/87807i2CF909433707EED0/image-size/large?v=v2&amp;px=999" role="button" title="Hardeep_Tulsi_4-1711606790458.png" alt="Hardeep_Tulsi_4-1711606790458.png" /></span></P><P>&nbsp;</P><P>In the Integration Token field, paste in the integration token generated and copied from the SAP Business Technology Platform. Enter a description for your system integration token and save it.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Hardeep_Tulsi_5-1711606819125.png" style="width: 975px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/87808i470FF6874F02AC5B/image-size/large?v=v2&amp;px=999" role="button" title="Hardeep_Tulsi_5-1711606819125.png" alt="Hardeep_Tulsi_5-1711606819125.png" /></span></P><P>&nbsp;</P><P>Both Services will be displayed in the list of entity assignments.</P><P>3. Navigate to your BTP subaccount and allow SAP Business Technology Platform applications to consume events and APIs from SAP S/4HANA Cloud, you need to create the relevant service instances of SAP S/4HANA Cloud Extensibility for the service plans api-access and messaging.</P><P>Inside the subaccount. Select in the left menu Services -&gt; Instances and Subscriptions. Then Click on the button “Create”.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="INSTCR.jpg" style="width: 780px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/87810i5143BD16A3848B28/image-size/large?v=v2&amp;px=999" role="button" title="INSTCR.jpg" alt="INSTCR.jpg" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>4.&nbsp; In the screen for create wizard the available Services will be displayed in the Plan dropdown list, select the service SAP S/4HANA Cloud Extensibility with plan messaging.</P><P>5. In Runtime select Cloud Foundry. Then choose the space created, for this example “dev”, then the systems linked to the BTP are displayed in the list, here choose the S4HANA Cloud to be extended “XXX”. Choose a CLI name "XXX-SBPAEvents" for your instance (e.g. XXX-SBPAEvents). And click Next.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="NEWINST.jpg" style="width: 870px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/87811iA9FB4347000C2EE4/image-size/large?v=v2&amp;px=999" role="button" title="NEWINST.jpg" alt="NEWINST.jpg" /></span></P><P>&nbsp;</P><P>The next screen for parameters request the Client Id with 4 chars and the system name. then click Next</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="JSON.jpg" style="width: 936px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/87812iAAD96776D4085ABD/image-size/large?v=v2&amp;px=999" role="button" title="JSON.jpg" alt="JSON.jpg" /></span></P><P>&nbsp;</P><P>6. Create a new service. Inside the subaccount. Select in the left menu Services -&gt; Instances and Subscriptions. Then Click on the button “Create”.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SUBACT.jpg" style="width: 780px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/87814i8A4DB7F693C3078C/image-size/large?v=v2&amp;px=999" role="button" title="SUBACT.jpg" alt="SUBACT.jpg" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>7. In the Create wizard in the Service dropdown list, select the service SAP S/4HANA Cloud Extensibility. Select the Service Plan api-access, ex. "XXX-SBPAEventAPI" which you use for generic access to APIs in your SAP S/4HANA Cloud system. The communication arrangement A2X_OD_0106 is created in SAP S/4HANA Cloud, Public Edition using scenario SAP_COM_0106</P><P>After the creation of the service, you can check the automatic creation of the communication arrangement in SAP S/4HANA Cloud, Public Edition system. Navigate to Communication Arrangements and look for A2X_OD_0106.</P><P>8. Navigate to&nbsp;SAP S/4HANA Cloud Public Edition - Enterprise Event Enablement - Configure Channel Binding, Select your event channel from the list SAP_CP_XF_XXX</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="ENTENABL.jpg" style="width: 343px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/87816i932A8188AD6B19B1/image-size/large?v=v2&amp;px=999" role="button" title="ENTENABL.jpg" alt="ENTENABL.jpg" /></span></P><P>&nbsp;</P><P>In the new screen, click Create over “Outbound Topic Bindings” section. Select the Topic that will be used for the event. Then you can create the topic. The topics will appear in the list.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="OBTPBING.jpg" style="width: 760px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/87818i58537BB4C8FC7942/image-size/large?v=v2&amp;px=999" role="button" title="OBTPBING.jpg" alt="OBTPBING.jpg" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="OUTBOUNDTOPIC.jpg" style="width: 624px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/87819iB3E5CAE9F94A8378/image-size/large?v=v2&amp;px=999" role="button" title="OUTBOUNDTOPIC.jpg" alt="OUTBOUNDTOPIC.jpg" /></span></P><P>&nbsp;</P><P>&nbsp;<span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="TPIC.jpg" style="width: 624px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/87820iEB456EEA4C009D8C/image-size/large?v=v2&amp;px=999" role="button" title="TPIC.jpg" alt="TPIC.jpg" /></span></P><P>&nbsp;</P><P>9. Navigate to&nbsp;SAP BTP Tenant. Create a new service (Event Mesh).</P><P>Inside the subaccount. Select in the left menu Services -&gt; Instances and Subscriptions. Then Click on the button “Create”.</P><P>Search for Service “Event Mesh”, Plan “default”, Run Environment “Cloud Foundry”, choose the space in Cloud Foundry, and the name for the instanceSBPAEventMesh and click , Create Event Mesh Instance&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="EVNTMEH.jpg" style="width: 913px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/87821i7A6F5BC8B7DDFC4D/image-size/large?v=v2&amp;px=999" role="button" title="EVNTMEH.jpg" alt="EVNTMEH.jpg" /></span></P><P>&nbsp;</P><P>To manage the Event Mesh Instance, create a new service for Event Mesh now for Standard Plan. Inside the subaccount. Select in the left menu Services -&gt; Instances and Subscriptions. Then Click on the button “Create”.</P><P>Search for Service “Event Mesh”, Plan “Standard” and click Next</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="STND.jpg" style="width: 624px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/87822iBDF682D796F06C98/image-size/large?v=v2&amp;px=999" role="button" title="STND.jpg" alt="STND.jpg" /></span></P><P>&nbsp;</P><P>10. Navigate to BTP Sub Account and access the Event Mesh Cockpit, you need to subscribe to SAP Event Mesh and assign several roles to your user. Go to option Security -&gt; Roles. Now create the role ex. &nbsp;"Event Custom Roles".</P><P>Now your " Event Mesh" Application is ready to be executed that will capture events triggered from SAP S/4HANA Cloud, Public Edition System.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="WEBHOOK.jpg" style="width: 936px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/87823i334D07AD0223C6E0/image-size/large?v=v2&amp;px=999" role="button" title="WEBHOOK.jpg" alt="WEBHOOK.jpg" /></span></P><P>&nbsp;</P><P>You can jumpstart automation projects with hundreds process content packages available in <A href="https://hub.sap.com/build?pub=SAP,SAP%20S%2F4HANA&amp;app=SAP%20S%2F4HANA%20Cloud" target="_self" rel="noopener noreferrer">public bot store</A>, SAP Build Process Automation bots and connectors designed specifically to enhance the capabilities of your SAP applications.</P><P>SAP Build process automation connectors, create Actions to communicate with external systems or leverage Automation SDK providing different activities for an automation.</P><P>Stay tuned for more updates in the next quarters!</P><P>Follow us via <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/1387241">@Sap</a> and #S4HANA, or myself via@har1234 (Hardeep Tulsi)</P><P>Stay tuned for more updates in the next quarters!</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Hardeep_Tulsi_0-1711609730649.png" style="width: 52px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/87834i34504FFAE6C59DF0/image-dimensions/52x52?v=v2" width="52" height="52" role="button" title="Hardeep_Tulsi_0-1711609730649.png" alt="Hardeep_Tulsi_0-1711609730649.png" /></span>&nbsp;<STRONG>Where to Find More Information:</STRONG></P><UL><LI>Watch the replays of our exclusive SAP S/4HANA Cloud Public Edition 2402 Early Release Series here:&nbsp;<A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/watch-the-replays-of-our-exclusive-sap-s-4hana-cloud-public-edition-2402/ba-p/13587019" target="_blank">https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/watch-the-replays-of-our-excl...</A>&nbsp;</LI><LI>Explore the ready-to-run cloud ERP here:&nbsp;<A href="https://www.sap.com/products/erp/s4hana.html" target="_blank" rel="noopener noreferrer">https://www.sap.com/products/erp/s4hana.html</A></LI><LI>Watch our SAP S/4HANA Cloud product update videos on YouTube:&nbsp;<A href="https://www.youtube.com/playlist?list=PLWV533hWWvDnnyN2j-CcUheNN-GaNCb3H" target="_blank" rel="noopener nofollow noreferrer">https://www.youtube.com/playlist?list=PLWV533hWWvDnnyN2j-CcUheNN-GaNCb3H</A></LI><LI>Check out our digital enablement wheel here:&nbsp;<A href="https://chart-bdmaicr0au.dispatcher.eu2.hana.ondemand.com/index.html?hc_reset" target="_blank" rel="noopener nofollow noreferrer">https://chart-bdmaicr0au.dispatcher.eu2.hana.ondemand.com/index.html?hc_reset</A></LI><LI>Find out how to switch from groups to spaces and pages here:&nbsp;<A href="https://blogs.sap.com/2023/11/06/deactivation-of-groups-in-the-sap-fiori-launchpad-in-sap-s-4hana-cloud-public-edition-2402-switching-to-spaces-and-pages-mandatory/" target="_blank" rel="noopener noreferrer">https://blogs.sap.com/2023/11/06/deactivation-of-groups-in-the-sap-fiori-launchpad-in-sap-s-4hana-cl...</A></LI><LI>Become an early adopter for Joule in SAP S/4HANA Cloud Public Edition here:&nbsp;<A href="https://influence.sap.com/sap/ino/#campaign/3612" target="_blank" rel="noopener noreferrer">https://influence.sap.com/sap/ino/#campaign/3612</A></LI><LI>Check out the SAP Activate Roadmap for early adopters here:&nbsp;<A href="https://go.support.sap.com/roadmapviewer/#/group/658F507A-D6F5-4B78-9EE1-0300C5F1E40F/roadmapOverviewPage/0894b61141a74a65b8da92db32685da5" target="_blank" rel="noopener noreferrer">https://go.support.sap.com/roadmapviewer/#/group/658F507A-D6F5-4B78-9EE1-0300C5F1E40F/roadmapOvervie...</A></LI><LI>Review the PPL content here:&nbsp;<A href="https://go.support.sap.com/roadmapviewer/#/group/658F507A-D6F5-4B78-9EE1-0300C5F1E40F/roadmapContentPage/0894b61141a74a65b8da92db32685da5:t8" target="_blank" rel="noopener noreferrer">https://go.support.sap.com/roadmapviewer/#/group/658F507A-D6F5-4B78-9EE1-0300C5F1E40F/roadmapContent...</A></LI><LI>Listen to our podcast here:&nbsp;<A href="https://podcast.opensap.info/inside-sap/" target="_blank" rel="noopener nofollow noreferrer">https://podcast.opensap.info/inside-sap/</A></LI><LI>Watch our openSAP microlearnings to learn about SAP S/4HANA Cloud topics at your own pace here:&nbsp;<A href="https://microlearning.opensap.com/" target="_blank" rel="noopener noreferrer">https://microlearning.opensap.com/</A></LI><LI>Find best practices on SAP S/4HANA Cloud Public Edition here:&nbsp;<A href="https://me.sap.com/processnavigator/SolS/EARL_SolS-013/latest?region=DE" target="_blank" rel="noopener noreferrer">https://me.sap.com/processnavigator/SolS/EARL_SolS-013/latest?region=DE</A></LI><LI>Check out what’s new here:&nbsp;<A href="https://help.sap.com/doc/ce01d82756b947a1a043a5d5a3204226" target="_blank" rel="noopener noreferrer">https://help.sap.com/doc/ce01d82756b947a1a043a5d5a3204226</A>&nbsp;&nbsp;</LI><LI>Find help here:&nbsp;<A href="https://help.sap.com/docs/SAP_S4HANA_CLOUD" target="_blank" rel="noopener noreferrer">https://help.sap.com/docs/SAP_S4HANA_CLOUD</A></LI><LI>Read the feature scope description here:&nbsp;<A href="https://help.sap.com/doc/7c9e0bbbd1664c2581b2038a1c7ae4b3" target="_blank" rel="noopener noreferrer">https://help.sap.com/doc/7c9e0bbbd1664c2581b2038a1c7ae4b3</A></LI></UL> 2024-03-28T14:19:12.526000+01:00 https://community.sap.com/t5/enterprise-resource-planning-blogs-by-members/sap-table-creation-maintenance-and-authorization/ba-p/13655060 SAP Table Creation, Maintenance, and Authorization 2024-04-02T01:06:55.258000+02:00 maheshsinghmony https://community.sap.com/t5/user/viewprofilepage/user-id/357842 <H2 id="toc-hId-990764118"><STRONG>Creating Custom Tables for Table Maintenance</STRONG></H2><P>Go to SE11 and give the table name that you want to create.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="maheshsinghmony_2-1712008821453.png" style="width: 538px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89352i24F01B4C8CB5D09F/image-dimensions/538x452?v=v2" width="538" height="452" role="button" title="maheshsinghmony_2-1712008821453.png" alt="maheshsinghmony_2-1712008821453.png" /></span></P><P>&nbsp;</P><H2 id="toc-hId-794250613">&nbsp;</H2><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><H2 id="toc-hId-597737108">&nbsp;</H2><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>Give the Description of the table and enter the following details.</P><H3 id="toc-hId-530306322"><STRONG>1. Delivery Class</STRONG></H3><H4 id="toc-hId-462875536">Delivery Class Used For</H4><UL><LI>A - Application table (master and transaction data).</LI><LI>C -Customer table: data is maintained by the customer only</LI><LI>L &nbsp;- Table for storing temporary data</LI><LI>G &nbsp;- Customer table, SAP may insert new data records, but may not overwrite or delete existing data records. The customer namespace must be defined in table TRESC. (Use Report RDDKOR54 here).</LI><LI>E - System table with its own namespaces for customer entries. The customer namespace must be defined in table TRESC. (Use Report RDDKOR54 here.)</LI><LI>S - System table, data changes have the same status as program changes.</LI><LI>W - System table (e.g. table of the development environment) whose data is transported with its own transport objects (e.g. R3TR PROG, R3TR TABL, etc.).</LI></UL><H3 id="toc-hId-137279312">2. Data Browser/Table View Maint.</H3><H4 id="toc-hId-69848526"><STRONG>Options Available</STRONG></H4><OL><LI><STRONG>Display/maintenance not allowed:&nbsp;</STRONG>The usage of standard table maintenance tools is not allowed.<UL><LI>Maintenance and display of this Dictionary object is not possible in transaction SE16.</LI><LI>Transaction SE54 does not allow the generation of a maintenance dialog, which means&nbsp;automatically calling transactions SM30/SM34 for this Dictionary object is no longer possible.</LI></UL></LI><LI><STRONG>Display/maintenance allowed to limited extent:&nbsp;</STRONG>Usage of standard table maintenance tools is allowed to a limited extent.<UL><LI>&nbsp;Transaction SE16 allows the display function for this Dictionary object, but no maintenance.</LI><LI>Generation of a maintenance dialog for this Dictionary object is possible using transaction SE54.</LI><LI>Transaction SM30 does not allow maintenance and display functions for this Dictionary object</LI></UL></LI><LI><STRONG>Display/maintenance allowed:&nbsp;</STRONG>The usage of standard table maintenance tools is allowed:<UL><LI>Transaction SE16 allows the maintenance and display functions for this Dictionary object.&nbsp;Note: If an SM30 maintenance dialog exists for this Dictionary object, it is called.</LI><LI>Transaction SE54 allows the generation of a maintenance dialog for this Dictionary object.</LI><LI>Transaction SM30 allows the display and maintenance functions for this Dictionary object.</LI></UL></LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="maheshsinghmony_3-1712008893071.png" style="width: 706px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89354i84479E91CB70EA6C/image-dimensions/706x273?v=v2" width="706" height="273" role="button" title="maheshsinghmony_3-1712008893071.png" alt="maheshsinghmony_3-1712008893071.png" /></span></P><P><SPAN>Enter the Fields of the table.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="maheshsinghmony_4-1712008905071.png" style="width: 706px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89355i9442EF62BAC32349/image-dimensions/706x334?v=v2" width="706" height="334" role="button" title="maheshsinghmony_4-1712008905071.png" alt="maheshsinghmony_4-1712008905071.png" /></span></P><P><STRONG>Significance of the Above fields:</STRONG></P><UL><LI><STRONG>LASTCHANGED:&nbsp;</STRONG>Username of the person who created or changed the data.</LI><LI><STRONG>CHANGEDATE:&nbsp;</STRONG>The date on which the records was created or changed.</LI><LI><STRONG>CHANGE_TIME:&nbsp;</STRONG>The time on which the records was created or changed.</LI><LI><STRONG>COMMENTS:&nbsp;</STRONG>The reason for the changes made to be specified by the user.</LI></UL><P>Once all the fields have been entered then, click on Technical Settings and enter the following details on the next screen:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="maheshsinghmony_5-1712008947481.png" style="width: 709px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89356i77ADA00D3A749B0D/image-dimensions/709x622?v=v2" width="709" height="622" role="button" title="maheshsinghmony_5-1712008947481.png" alt="maheshsinghmony_5-1712008947481.png" /></span></P><H4 id="toc-hId--126664979"><STRONG>Data Class</STRONG></H4><P>The data class defines the physical area of the database (for ORACLE, the TABLESPACE) in which&nbsp;your table is logically stored. If you choose a data class correctly, your table will automatically be assigned to the&nbsp;correct area when it is created on the database.</P><P>The most important data classes are (other than the system data):</P><UL><LI><STRONG>APPL0:</STRONG><SPAN>&nbsp;</SPAN>Master data</LI><LI><STRONG>APPL1:</STRONG><SPAN>&nbsp;</SPAN>Transaction data</LI><LI><STRONG>APPL2:</STRONG><SPAN>&nbsp;</SPAN>Organizational and customizing data</LI></UL><P>Master data is data that is frequently read but rarely updated. Transaction data is data that is frequently updated. Organizational and customizing data is data that is defined when the system is initialized and then&nbsp;rarely changed.</P><P>Two more data classes are available, USR and USR1. These are reserved for user developments, and the tables assigned to these data classes are stored in a table space for user developments.</P><P><STRONG>Note:</STRONG><SPAN>&nbsp;</SPAN>The data class only has an effect on table storage for the database systems ORACLE and INFORMIX.</P><H4 id="toc-hId--323178484"><STRONG>Size Category</STRONG></H4><P>The size category determines the probable space requirement for a table in the database.</P><P>You can select categories 0 to 4 for your table. Each category is assigned a specific fixed storage area value in the database. When you create a table, initial space is saved for it in the database. If more space is required later due to data that has been entered, the storage space is increased in accordance with the category selected.</P><P>Press F4 on the field size category to see the number of data records that can be maintained for the individual categories of your table without complications ensuing. These complications could be for example a reorganization becoming necessary because the maximum space to be reserved for the table was exceeded due to the maintained size category.</P><H4 id="toc-hId--519691989"><STRONG>Buffering Status</STRONG></H4><P>The buffering status specifies whether or not a table may be buffered.</P><P>This depends on how the table is used, for example, on the expected volume of data in the table or on the type of access to a table (mainly read or mainly write access to the table). In the latter case, for example, one would not select buffering.</P><P>You should, therefore, select:</P><UL><LI>Buffering is not allowed if a table is not buffered.</LI><LI>Buffering allowed but not activated if buffering is principally allowed for a table, but at the moment no buffering should be active. The buffering type specified in this case is only a suggestion.</LI><LI>Buffering is allowed if the table should be buffered. In this case, a buffering type must be specified.</LI></UL><H4 id="toc-hId--1213922589"><STRONG>Buffering Type</STRONG></H4><P>The buffering type defines whether and how the table should be buffered.</P><P>There are the following types of buffering:</P><UL><LI>single-record buffering --&gt; Press F1 for more details</LI><LI>generic area buffering --&gt; Press F1 for more details</LI><LI>full buffering --&gt; Press F1 for more details</LI></UL><P>In generic area buffering, a number of key fields between 1 and no. of key fields-1 must be specified.</P><H4 id="toc-hId--1410436094">No. Of Key Fields for Generic Buffers</H4><P>If you read a record from a generically buffered table, all records whose left-justified part of the key corresponds to that of this record (generic key fields) are loaded into the buffer.</P><P>This left-justified part of the key is determined in this field by entering a number n of key fields. The first n key fields of the table are thus the generic key fields.</P><H3 id="toc-hId--1313546592">Create Authorization Object</H3><P>To create an Authorization Object, go to transaction SE54.</P><P>Enter the Table/View name for which the Authorization object has to be created.</P><P>Select the Radio Button ‘Authorization groups’.</P><P>Then click on Create/Change.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="maheshsinghmony_6-1712009165816.png" style="width: 711px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89358i5657A38B2F53E744/image-dimensions/711x362?v=v2" width="711" height="362" role="button" title="maheshsinghmony_6-1712009165816.png" alt="maheshsinghmony_6-1712009165816.png" /></span></P><P><SPAN>Then, the next screen will give a list of Authorization Objects that are already present in the system. You can&nbsp;Select one of them from the available list as per the requirement.&nbsp;But if the table demands a new authorization object then click on New Entries pushbutton given on the&nbsp;screen.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="maheshsinghmony_7-1712009187479.png" style="width: 700px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89359iA56AAF33076626E9/image-dimensions/700x660?v=v2" width="700" height="660" role="button" title="maheshsinghmony_7-1712009187479.png" alt="maheshsinghmony_7-1712009187479.png" /></span></P><P><SPAN>Enter the new authorization object name and description as shown in the screen below. The authorization object must follow a certain naming convention. (It should always start with 'Z'.) Click on Save</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="maheshsinghmony_8-1712009306752.png" style="width: 702px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89361i7C194FED8BEE148B/image-dimensions/702x793?v=v2" width="702" height="793" role="button" title="maheshsinghmony_8-1712009306752.png" alt="maheshsinghmony_8-1712009306752.png" /></span></P><H2 id="toc-hId--1216657090">Table Maintenance Generator</H2><OL><LI>Go to SE12 transaction. Open the table for which the table maintenance is to be implemented.</LI><LI>Change it to the Editable mode and then click on Utilities -&gt; Table maintenance generator.</LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="maheshsinghmony_9-1712009347030.png" style="width: 700px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89362i5D572F67AA9B752D/image-dimensions/700x402?v=v2" width="700" height="402" role="button" title="maheshsinghmony_9-1712009347030.png" alt="maheshsinghmony_9-1712009347030.png" /></span></P><P>Enter the following details on the next screen:</P><UL><LI><STRONG>Authorization group:&nbsp;</STRONG>Assigned/created for the table by following the procedure given in Section I.</LI><LI><STRONG>Function group:&nbsp;</STRONG>Name of the function group to which the generated maintenance modules will belong.</LI><LI><STRONG>Maintenance type:&nbsp;</STRONG>According to the table requirement, anyone should be selected.<UL><LI><STRONG>One step:&nbsp;</STRONG>Only one maintenance screen is processed during extended table maintenance. The entries are displayed in list form on this screen.</LI><LI><STRONG>T</STRONG><STRONG>wo step:&nbsp;</STRONG>Two maintenance screens are processed during the extended table maintenance:</LI></UL></LI></UL><P>On the Overview screen, the entries are displayed in list form.</P><P>One entry is displayed on the single screen. For every entry, the single screen can be called from the overview screen by pressing the function key.</P><H4 id="toc-hId--1999976609"><STRONG>Maintenance Screen No</STRONG></H4><P>According to the maintenance type selected, an overview screen and a single screen should be entered. Recording routine—This is an indicator of the recording routine that should be used for the table contents.</P><UL><LI>Standard recording routine</LI><LI>No, or user, recording routine</LI></UL><H4 id="toc-hId-2098477182"><STRONG>Compare Flag</STRONG></H4><P>This flag indicates whether the maintenance transaction allows the (checked) activation of Business Configuration Sets (BC Sets) and the adjustment. This is the case if the maintenance transaction can run in the background. There are four options present for the compare flag:</P><UL><LI>No Information</LI><LI>Not Adjustable</LI><LI>Adjustable in Dialog</LI><LI>Automatically Adjustable</LI></UL><P>Once done. Click on<SPAN>&nbsp;</SPAN><STRONG>Create</STRONG>.</P><H3 id="toc-hId--2099600612"><STRONG>Exceptions</STRONG></H3><P>If changes are made to the table after the generation of table maintenance, table maintenance should&nbsp;be re-generated for the table.</P><P>1. Click on Utilities -&gt; Table Maintenance Generator.</P><P>&nbsp;2. Click on the Edit button. A pop-up would ask for Reason for change. Select the appropriate reasons.</P><P>3. Then, Save the data.</P><P>4. Go to System -&gt; Status and copy the Program Name.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="maheshsinghmony_10-1712009381104.png" style="width: 701px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89363i9D0A3FBD36DEC858/image-dimensions/701x505?v=v2" width="701" height="505" role="button" title="maheshsinghmony_10-1712009381104.png" alt="maheshsinghmony_10-1712009381104.png" /></span></P><H3 id="toc-hId-1998853179"><STRONG>Changing the Source Code of Table Maintenance</STRONG></H3><P>If fields like last changed on, last changed by, etc., are present in the table, logic should be included to save them by the system.</P><P>1. Go to transaction SE80 and open the program that was received from the above logic.</P><P>2. Go to the Screens drop-down list and click on 0001. In the PAI event of that screen, add a module to include the logic.</P><P>3. Double-click on the module. It will ask for the ‘Include’ in which this module should be included.</P><P>4. Select the Include where we need to include the logic.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="maheshsinghmony_11-1712009417714.png" style="width: 700px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89364i40E6E8FC71B8834A/image-dimensions/700x578?v=v2" width="700" height="578" role="button" title="maheshsinghmony_11-1712009417714.png" alt="maheshsinghmony_11-1712009417714.png" /></span></P><P><SPAN>&nbsp;5. Enter the logic to update the table with the parameters --&gt; person responsible for making change, timestamp, etc. It is as shown below:</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="maheshsinghmony_12-1712009453449.png" style="width: 701px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89365i89C5FF0B48490C4E/image-dimensions/701x240?v=v2" width="701" height="240" role="button" title="maheshsinghmony_12-1712009453449.png" alt="maheshsinghmony_12-1712009453449.png" /></span></P><P><SPAN>6. Go to the layout of the screen</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="maheshsinghmony_13-1712009500128.png" style="width: 700px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89368i1A289E8F0CC4130C/image-dimensions/700x476?v=v2" width="700" height="476" role="button" title="maheshsinghmony_13-1712009500128.png" alt="maheshsinghmony_13-1712009500128.png" /></span></P><P><SPAN>7. Once you click on the Layout button, the screen below will appear.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="maheshsinghmony_14-1712009535683.png" style="width: 717px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89369iAA4CF0AD1D493123/image-dimensions/717x243?v=v2" width="717" height="243" role="button" title="maheshsinghmony_14-1712009535683.png" alt="maheshsinghmony_14-1712009535683.png" /></span></P><P>8.&nbsp;<SPAN>Enter the text to be displayed as the column heading in the output screen.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="maheshsinghmony_15-1712009573968.png" style="width: 706px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89370i9BC3CDF46AFFA94A/image-dimensions/706x343?v=v2" width="706" height="343" role="button" title="maheshsinghmony_15-1712009573968.png" alt="maheshsinghmony_15-1712009573968.png" /></span></P><P>9.&nbsp;<SPAN>Change the attributes of the fields of the table that are required to be non-editable as 'OUTPUT ONLY', i.e., the fields LASTCHANGED, CHANGEDATE, and CHANGE_TIME. The Columns will automatically be grayed out and uneditable on the output screen.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="maheshsinghmony_16-1712009611255.png" style="width: 703px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89371i70C7D7DC899D6CE9/image-dimensions/703x482?v=v2" width="703" height="482" role="button" title="maheshsinghmony_16-1712009611255.png" alt="maheshsinghmony_16-1712009611255.png" /></span></P><P>10. Save and Activate the changes.</P><P>&nbsp;</P><H3 id="toc-hId-1802339674">Create Transaction</H3><P>1. To create a transaction, go to transaction SE93. Enter the transaction name which is to be created.</P><P>2. Click on Create.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="maheshsinghmony_24-1712009988936.png" style="width: 701px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89374i66F8C47A96BC0410/image-dimensions/701x280?v=v2" width="701" height="280" role="button" title="maheshsinghmony_24-1712009988936.png" alt="maheshsinghmony_24-1712009988936.png" /></span></P><P>3. Enter the Short text and the Start Object and select Ok.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="maheshsinghmony_25-1712010071812.png" style="width: 700px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89375i8C67C6D1801D8EE2/image-dimensions/700x417?v=v2" width="700" height="417" role="button" title="maheshsinghmony_25-1712010071812.png" alt="maheshsinghmony_25-1712010071812.png" /></span></P><P>4. Enter the below details and the Click on SAVE</P><P>&nbsp; &nbsp; &nbsp;<span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1708721572863.png" style="width: 498px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89376i547086409AEFC432/image-dimensions/498x923?v=v2" width="498" height="923" role="button" title="1708721572863.png" alt="1708721572863.png" /></span></P><P>5. Enter the created T-code and the below screen would appear as output.</P><DIV class="">&nbsp;</DIV><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="maheshsinghmony_26-1712010242009.png" style="width: 710px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89379i22EBFB7E69FA7A0E/image-dimensions/710x220?v=v2" width="710" height="220" role="button" title="maheshsinghmony_26-1712010242009.png" alt="maheshsinghmony_26-1712010242009.png" /></span></P><P>6. Click on the New Entries button to create an entry in the table. Enter the details and then click on SAVE.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="maheshsinghmony_27-1712010259540.png" style="width: 699px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89381i9B6988789D01A410/image-dimensions/699x250?v=v2" width="699" height="250" role="button" title="maheshsinghmony_27-1712010259540.png" alt="maheshsinghmony_27-1712010259540.png" /></span></P><P>7. As soon as you click on the save button the username, Date and Time appears automatically.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="maheshsinghmony_28-1712010314165.png" style="width: 701px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89384iAF36348D56FF1FA3/image-dimensions/701x234?v=v2" width="701" height="234" role="button" title="maheshsinghmony_28-1712010314165.png" alt="maheshsinghmony_28-1712010314165.png" /></span></P><P>8. You can check the same data in the Se16 transaction for the table.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="maheshsinghmony_29-1712010330238.png" style="width: 703px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89385i60C1D1CBDCA71278/image-dimensions/703x207?v=v2" width="703" height="207" role="button" title="maheshsinghmony_29-1712010330238.png" alt="maheshsinghmony_29-1712010330238.png" /></span></P><H2 id="toc-hId-1899229176"><STRONG>&nbsp;Conclusion:</STRONG></H2><P>I hope I was able to give you a little insight into how the you can create, maintain and add security on a custom SAP table.</P><P><SPAN>I would love to hear back suggestions, feedback and questions that you might have. Please do share the article with your Team members, Colleagues and Friends working in SAP and who use or plan to use SAP custom table to maintain critical data in SAP. Also, don’t forget to like and share the blog and follow me on SAP blogs to not miss more content:&nbsp;<A class="" href="https://community.sap.com/t5/user/viewprofilepage/user-id/357842" target="_self"><SPAN class="">maheshsinghmony</SPAN></A></SPAN></P><P><SPAN>Reference:&nbsp;<A href="https://dzone.com/articles/sap-table-creation-maintenance-and-authorization" target="_blank" rel="noopener nofollow noreferrer">https://dzone.com/articles/sap-table-creation-maintenance-and-authorization</A></SPAN></P> 2024-04-02T01:06:55.258000+02:00 https://community.sap.com/t5/technology-blogs-by-members/declaring-dynamic-ui5-fields-in-sap-build-process-automation/ba-p/13652465 Declaring Dynamic UI5 Fields in SAP Build Process Automation 2024-04-03T10:54:30.852000+02:00 shivam_gupta07 https://community.sap.com/t5/user/viewprofilepage/user-id/873683 <P>While automating SAP Fiori applications, one might come across some dynamic UI5 elements such as mentioned in the snapshot below.</P><P style=" text-align: center; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="shivam_gupta07_37-1711625783238.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88018i7B67624DE34F3264/image-size/medium?v=v2&amp;px=400" role="button" title="shivam_gupta07_37-1711625783238.png" alt="shivam_gupta07_37-1711625783238.png" /></span></P><P>In most cases, recorder may not be able to uniquely identify the elements, thus terminating the automation where it may not find the suitable elements.</P><P>In such cases, SAP provides an extremely useful functionality to declare the elements manually using Design Console’s screen and tree feature.</P><P>Let us look at the steps required to fulfill the requirement.</P><OL><LI>Switch to ‘Both’ view.</LI><LI>In the Screen panel, click the target element.</LI><LI>Find the element in the ‘Tree’. (It’s recommended to find element type till the last child DIV)</LI><LI>Hover and right click the element and select ‘Declare Element’.</LI></OL><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="shivam_gupta07_29-1711625019685.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/87997iE6E30B37D1D367BA/image-size/medium?v=v2&amp;px=400" role="button" title="shivam_gupta07_29-1711625019685.png" alt="shivam_gupta07_29-1711625019685.png" /></span></P><P>You might find that element has been uniquely identified or not, but we need to make sure that element must not use ‘id’ as an identifying criterion as it is static criteria, and we need to deal with dynamic elements.</P><P>&nbsp; &nbsp; 5. Add the ‘class’ criteria from all the available criteria and remove ‘id’.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="shivam_gupta07_30-1711625056762.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88000i3B26015C973F4219/image-size/medium?v=v2&amp;px=400" role="button" title="shivam_gupta07_30-1711625056762.png" alt="shivam_gupta07_30-1711625056762.png" /></span>&nbsp; &nbsp; 6. Now, we need to add all the parent DIVs until we find the DIV which has a criterion named ‘nth-child-tag&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =X’. (Here X can vary on the number of parent DIVs)</P><DIV class="">&nbsp;</DIV><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="shivam_gupta07_31-1711625096579.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88003i992EAFB1C2FB1981/image-size/medium?v=v2&amp;px=400" role="button" title="shivam_gupta07_31-1711625096579.png" alt="shivam_gupta07_31-1711625096579.png" /></span>&nbsp; &nbsp; 7. For this, hover to the immediate parent DIV, right click and select ‘Add to criteria’. Repeat step number 5</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="shivam_gupta07_32-1711625139948.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88006iF9551CAEF90E826A/image-size/medium?v=v2&amp;px=400" role="button" title="shivam_gupta07_32-1711625139948.png" alt="shivam_gupta07_32-1711625139948.png" /></span></P><P>Once you find DIV with ‘nth-child-tag=X’ criteria, you will also find that now your element has been uniquely identified.</P><P>Element structure would look something like this.</P><P style=" text-align: center; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="shivam_gupta07_33-1711625166876.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88007i47719263294AD31B/image-size/medium?v=v2&amp;px=400" role="button" title="shivam_gupta07_33-1711625166876.png" alt="shivam_gupta07_33-1711625166876.png" /></span></P><P style=" text-align : left; ">&nbsp; &nbsp;8. Since recorder uses SAPUI5 SDK automatically, make sure you change the element class and select a SAP UI5 recorder.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="shivam_gupta07_34-1711625191801.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88009i6FDB1DE6618B1135/image-size/medium?v=v2&amp;px=400" role="button" title="shivam_gupta07_34-1711625191801.png" alt="shivam_gupta07_34-1711625191801.png" /></span>&nbsp; &nbsp; 9. Make sure to set the target element in automation to current declared element and you’re all set.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="shivam_gupta07_36-1711625233166.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88011i0C859F1239043340/image-size/medium?v=v2&amp;px=400" role="button" title="shivam_gupta07_36-1711625233166.png" alt="shivam_gupta07_36-1711625233166.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><DIV class="">Hope this blog finds helpful in your automation journey.</DIV><DIV class=""><P>Automating Fiori applications becomes much easier as SAP provides various SDKs to interact with Fiori elements and other platform services such as Microsoft.</P><P>But there are some important factors which needs to be considered while automating using SPA tool which includes declaring elements uniquely, adding wait functionality as required, defining similar screens uniquely etc.</P><P>In this series of blog posts, we are going to deep dive into various other important factors of this RPA tool as well.&nbsp;</P><P>More blogs to follow.</P></DIV><DIV class="">&nbsp;</DIV><P>&nbsp;</P><P>&nbsp;</P> 2024-04-03T10:54:30.852000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/sap-btp-abap-environment-pre-upgrade-option-for-release-2405/ba-p/13657946 SAP BTP ABAP Environment – Pre-Upgrade Option for Release 2405 2024-04-03T22:09:18.140000+02:00 FrankJentsch https://community.sap.com/t5/user/viewprofilepage/user-id/4296 <H1 id="toc-hId-861749574">Overview</H1><P>Providing a significant number of new features is an important goal of release upgrades to deliver innovations to our customers and partners. There are four major release upgrades per year following a predefined schedule as described in this&nbsp;<A href="https://blogs.sap.com/2023/11/09/sap-btp-abap-environment-maintenance-windows-and-major-upgrade-windows-in-2024/" target="_blank" rel="noopener noreferrer">blog post</A>.<BR /><BR />An upgrade is intended as a “no event” for customers and partners. For example, only compatible changes of released objects (APIs) will be delivered. We recommend performing a test of the custom-built productive apps in a test environment for the new release. The complexity of the technical dependencies between the custom-built apps and the underlying environment cannot be tested isolated, only including the ABAP environment on SAP-side. Therefore, we offer you to pre-upgrade selected systems 15 days in advance to test the applications prior to the planned standard-upgrade.</P><P>&nbsp;</P><H1 id="toc-hId-665236069">Purpose</H1><P>This option enables a customer or partner to test the applications they have already developed on top of the new release a couple of days before the standard-upgrade. With SAP BTP ABAP Environment (aka "Steampunk"), we follow the approach of keeping released objects stable and provide all enhancements in a compatible fashion. Early testing is an additional measure to ensure proper software quality and might be used to detect unforeseen regressions. However, this option is not intended to test new features or to consume new features earlier.</P><P>&nbsp;</P><H1 id="toc-hId-468722564">Approach</H1><P>The standard-upgrade of all systems to release <STRONG>2405</STRONG>&nbsp;is planned for <STRONG>May 18/19</STRONG>.</P><P>A customer or partner can nominate one or more already existing systems for the pre-upgrade. A nominated system will be upgraded on <STRONG>May 3</STRONG>&nbsp;within a planned downtime&nbsp;<STRONG>from 8:00 to 16:00 CET</STRONG>.</P><P>We recommend nominating a non-development system, such as a test system. The nomination of a development system is technically also possible, but fixes or other changes must not be imported into another system with a lower release. The nomination of a productive system doesn’t make sense because the purpose of the pre-upgrade is the re-test of the existing application before the productive system gets the new release.</P><P>According to the approach explained above, this offer is only relevant for customers or partners having at least two systems.</P><P>There might be situations where a correction of custom objects needs to be deployed. Such corrections are possible if the development / correction system is on the older release and is imported into the pre-upgraded system with the higher release.</P><P>Except potential fixes, the pre-upgrade is based on the same version as the standard-upgrade.</P><P>&nbsp;</P><H1 id="toc-hId-272209059">Costs</H1><P>This offering is optional and free of any additional charges.</P><P>&nbsp;</P><H1 id="toc-hId-75695554">Planned New Features</H1><P data-unlink="true">The planned new features will be published on the <A href="https://help.sap.com/whats-new/7a822d3bcaa74f31b98fa315601e9c96?Version=ABAP%20Environment%202405" target="_blank" rel="noopener noreferrer">What's New for SAP BTP ABAP Environment</A> on April 19.&nbsp;This list gives you an overview of potential areas for re-testing. The purpose of the pre-upgrade is not to consume these features before the standard-upgrade, because the documentation on help.sap.com will be delivered later before the standard-upgrade. It would also not be possible to transport code of such an adoption, because subsequent systems are not yet on the new release during the pre-upgrade phase.</P><P>Independent of the upgrades of the SAP BTP ABAP Environment, we recommend developing automated tests for the custom-built apps to detect regressions early on and without manual effort for re-testing. Such automated tests are perfectly suited to be run in the pre-upgrade test phase.</P><P>&nbsp;</P><H1 id="toc-hId--120817951">Time Schedule</H1><P>The following figure summarizes the general approach:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="new_pre_upgrade_slide.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90919i3278913572715065/image-size/large?v=v2&amp;px=999" role="button" title="new_pre_upgrade_slide.png" alt="new_pre_upgrade_slide.png" /></span></P><P>&nbsp;</P><P>Milestones for release <STRONG>2405</STRONG>:</P><UL><LI><STRONG>April 4</STRONG>: Nomination of system(s) is possible in the Landscape Portal</LI><LI><STRONG>April 19</STRONG>: Announcement of the planned new features</LI><LI><STRONG>April 29</STRONG>: Pre-upgrade systems are known</LI><LI><STRONG>May 3: Pre-upgrade</STRONG></LI><LI><STRONG>May 15</STRONG>: Potential decision to postpone the upgrade</LI><LI><STRONG>May 18/19: Standard-upgrade</STRONG></LI></UL><P>&nbsp;</P><H1 id="toc-hId--317331456">System Nomination</H1><P>To nominate a system, please register the system(s) by <STRONG>April 30</STRONG>&nbsp;(EOB) latest by using the <STRONG>Landscape Portal</STRONG>. You can find further information about <A href="https://help.sap.com/docs/sap-btp-abap-environment/abap-environment/accessing-landscape-portal?version=Cloud" target="_blank" rel="noopener noreferrer">Accessing the Landscape Portal</A> and about <A href="https://help.sap.com/docs/sap-btp-abap-environment/abap-environment/register-systems-for-pre-upgrade?version=Cloud" target="_blank" rel="noopener noreferrer">Register Systems for Pre-Upgrade</A>. Please do <STRONG>not</STRONG> create customer tickets for system nomination like in previous pre-upgrades.</P><P>With such a nomination, the customer agrees to an extraordinary planned maintenance on <STRONG>May 3</STRONG>&nbsp;(see above).</P><P>&nbsp;</P><H1 id="toc-hId--513844961">Report an Issue</H1><P>Issues should be reported as part of the regression test phase by <STRONG>May 10</STRONG>&nbsp;(EOB) to allow for a sufficient time frame for issue analysis and potential corrections on SAP-side.</P><P>Please create a customer ticket by using component&nbsp;<STRONG>BC-CP-ABA</STRONG>.</P><P>If a detected issue is likely to endanger the productive use after the standard-upgrade, you should use ticket priority&nbsp;<STRONG>very high</STRONG>&nbsp;despite the fact that the pre-upgrade system is not a productive system.</P><P>&nbsp;</P><H1 id="toc-hId--710358466">Exceptional Process in Case of Unresolved Priority Very High Issues</H1><P>In case of the aligned decision on Wednesday, <STRONG>May 15</STRONG>&nbsp;(based on unresolved priority very high tickets) to postpone the upgrade, a dedicated mitigation process needs to be started&nbsp;<SPAN>together with the respective customer or partner, with the following boundary conditions:</SPAN></P><UL><LI>Resolving the open priority very high issues remains the highest priority for both, SAP and the customer or partner, as it is also the prerequisite for the upgrade.</LI><LI>According to the estimated issue resolution, catching up the upgrade needs to be planned.</LI><LI>The upgrade leads to a business downtime of 6 – 8 hours.</LI><LI>The upgrade must be scheduled within 7 calendar days the latest after fixing all remaining open priority very high issues.</LI><LI>We will not provide any fixes for the old release after the original date of the standard-upgrade to the new release.</LI></UL><P>In case business-critical issues are detected after the upgrade:</P><UL><LI>Issues need to be reported as priority very high issues and will be processed accordingly.</LI><LI>Going back to the release before upgrade is not an option. Therefore, resolving the issues in the new release with the appropriate priority is the required approach.</LI></UL><P>&nbsp;</P><H1 id="toc-hId--906871971">Summary</H1><P>We recommend performing regression tests in pre-upgraded test systems to avoid day-1 impacts of productive custom apps after the standard-upgrade.</P> 2024-04-03T22:09:18.140000+02:00 https://community.sap.com/t5/enterprise-resource-planning-blogs-by-members/how-to-create-outbound-delivery-with-order-reference-in-sap-vl01n/ba-p/13659080 How to Create Outbound Delivery With order reference in SAP VL01N 2024-04-05T16:27:49.370000+02:00 MOHD_ANAS https://community.sap.com/t5/user/viewprofilepage/user-id/1429699 <P><STRONG>&nbsp; Outbound Delivery Replication in SAP - TCODE- VL01N&nbsp;</STRONG></P><P><STRONG>1. Introduction</STRONG></P><P>Outbound Delivery in SAP (Systems, Applications, and Products in Data Processing) refers to the process of fulfilling customer orders by shipping goods or products from a company's warehouse or production facility to the customer's specified location. This documentation provides a comprehensive guide to understanding and executing Outbound Delivery processes within SAP.</P><P><STRONG>2. Purpose</STRONG></P><P>The purpose of Outbound Delivery in SAP is to streamline the logistics and shipping operations of a company, ensuring accurate and timely delivery of products to customers. By efficiently managing outbound deliveries, businesses can enhance customer satisfaction, optimize inventory management, and improve overall operational efficiency.</P><P><STRONG>3. Key Features</STRONG></P><UL><LI>Creation of Outbound Delivery Orders (ODOs) based on sales orders or stock transport orders.</LI><LI>Packing of goods into delivery packages or handling units.</LI><LI>Generation of delivery documents such as delivery notes and shipping labels.</LI><LI>Integration with transportation management systems for route optimization and carrier selection.</LI><LI>Confirmation of goods issue to update inventory levels.</LI><LI>Monitoring and tracking of delivery status in real-time.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MOHD_ANAS_13-1712147007990.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90490i017B881B1059C162/image-size/large?v=v2&amp;px=999" role="button" title="MOHD_ANAS_13-1712147007990.png" alt="MOHD_ANAS_13-1712147007990.png" /></span></P><P>&nbsp;</P><P><STRONG>4. Process Flow</STRONG></P><P>The typical process flow for Outbound Delivery in SAP involves the following steps:</P><OL><LI><STRONG>Sales Order Creation</STRONG>: Customer orders are received and entered into the SAP system as sales orders.</LI><LI><STRONG>Outbound Delivery Order Creation</STRONG>: Based on the sales orders, Outbound Delivery Orders (ODOs) are created in SAP. These ODOs contain information such as the items to be shipped, quantities, delivery dates, and customer shipping details.</LI><LI><STRONG>Packing</STRONG>: Goods are picked from the warehouse shelves or production lines and packed into delivery packages or handling units. The packing process involves assigning materials to specific delivery units and determining packaging materials.</LI><LI><STRONG>Goods Issue</STRONG>: Once the goods are packed and ready for shipment, a goods issue is posted in SAP to signify the removal of goods from inventory. This updates inventory levels and triggers the billing process.</LI><LI><STRONG>Delivery Document Printing</STRONG>: Delivery documents such as delivery notes and shipping labels are generated in SAP and printed for inclusion with the shipment.</LI><LI><STRONG>Shipment Execution</STRONG>: The goods are physically transported to the customer's location using selected carriers or transportation methods.</LI><LI><STRONG>Delivery Confirmation</STRONG>: Upon successful delivery, the delivery is confirmed in SAP to update the delivery status and trigger subsequent processes such as billing and customer invoicing.</LI></OL><P>T.code:-</P><UL><LI><STRONG>VL01N </STRONG><STRONG>– </STRONG>With / Without Reference to Sales Order.</LI><LI><STRONG>VL02N </STRONG><STRONG>– </STRONG>Single Document Change.</LI><LI><STRONG>Vl03N </STRONG><STRONG>– </STRONG>Display Delivery Document.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MOHD_ANAS_14-1712147008004.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90489i07F7EF557F2B6FEF/image-size/large?v=v2&amp;px=999" role="button" title="MOHD_ANAS_14-1712147008004.png" alt="MOHD_ANAS_14-1712147008004.png" /></span></P><P>&nbsp;</P><UL><LI>In the initial Screen of Create Outbound Delivery Need to provide below information.</LI><LI>Shipping Point: Get the shipping point from the shipping tab of sales order line item.</LI><LI>Selection Date : It should be either the material availability date or the system copies the item into the delivery.</LI><LI>Sales Order Number: The sales order number against which the delivery document needs to be created.</LI><LI>From and to Item Number: Line item number of sales order against which needs to be created delivery, if a user does not specify any line item then the system will consider all line items of sales order for delivery creation.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MOHD_ANAS_15-1712147008008.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90488iAA8ED0686BA6A89E/image-size/large?v=v2&amp;px=999" role="button" title="MOHD_ANAS_15-1712147008008.png" alt="MOHD_ANAS_15-1712147008008.png" /></span></P><P>&nbsp;</P><P>Create outbound delivery without order reference</P><P>&nbsp;</P><P>Then the system will land to the user on Create Delivery Overview screen like the below screenshot.</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MOHD_ANAS_16-1712147008024.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90493i7D4CB6771A475578/image-size/large?v=v2&amp;px=999" role="button" title="MOHD_ANAS_16-1712147008024.png" alt="MOHD_ANAS_16-1712147008024.png" /></span></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MOHD_ANAS_17-1712147008057.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90492i0EA847DC5714720F/image-size/large?v=v2&amp;px=999" role="button" title="MOHD_ANAS_17-1712147008057.png" alt="MOHD_ANAS_17-1712147008057.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>Picking Tab display</P><UL><LI>Plant code: Delivery plant</LI><LI>Storage location</LI><LI>Delivery Quantity</LI><LI>UoM</LI><LI>Picked Quantity</LI></UL><P>The picked quantity is grey out mode that means we have to transfer the order to pick the material.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MOHD_ANAS_18-1712147008076.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90491i380A3FF70E2C79E8/image-size/large?v=v2&amp;px=999" role="button" title="MOHD_ANAS_18-1712147008076.png" alt="MOHD_ANAS_18-1712147008076.png" /></span></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MOHD_ANAS_19-1712147008097.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90495iC809607D884F7C84/image-size/large?v=v2&amp;px=999" role="button" title="MOHD_ANAS_19-1712147008097.png" alt="MOHD_ANAS_19-1712147008097.png" /></span></P><P>&nbsp;</P><P>Transport tab provide information</P><UL><LI>Transportation Planning date</LI><LI>Transportation Planning status.</LI><LI>Route</LI><LI>Gross weight</LI><LI>Volume</LI></UL><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MOHD_ANAS_20-1712147008117.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90496iC59F66BA0610DD12/image-size/large?v=v2&amp;px=999" role="button" title="MOHD_ANAS_20-1712147008117.png" alt="MOHD_ANAS_20-1712147008117.png" /></span></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MOHD_ANAS_21-1712147008128.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90494iEE74634F5EB8D2B0/image-size/large?v=v2&amp;px=999" role="button" title="MOHD_ANAS_21-1712147008128.png" alt="MOHD_ANAS_21-1712147008128.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>The goods movement tab provides information that which movement type is used for this delivery document.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MOHD_ANAS_22-1712147008136.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90499iDA22BA0A3E286027/image-size/large?v=v2&amp;px=999" role="button" title="MOHD_ANAS_22-1712147008136.png" alt="MOHD_ANAS_22-1712147008136.png" /></span></P><P>&nbsp;</P><P>Select any one line item of the delivery document and click on the item Details button. It will display item data of that line item.</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MOHD_ANAS_23-1712147008146.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90497i9FEE494DBB226AB6/image-size/large?v=v2&amp;px=999" role="button" title="MOHD_ANAS_23-1712147008146.png" alt="MOHD_ANAS_23-1712147008146.png" /></span></P><P>&nbsp;</P><P>The predecessor data tab provides information about</P><UL><LI>Reference Document number e.g. Sales order number.</LI><LI>Reference Item: line item number of Sales order number.</LI><LI>Reference Type: Document category.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MOHD_ANAS_24-1712147008160.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90498i09EC0A28D2B147D4/image-size/large?v=v2&amp;px=999" role="button" title="MOHD_ANAS_24-1712147008160.png" alt="MOHD_ANAS_24-1712147008160.png" /></span></P><P>&nbsp;</P><P>Click on SAVE button.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MOHD_ANAS_25-1712147008175.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90500i0530B8C81B54E409/image-size/large?v=v2&amp;px=999" role="button" title="MOHD_ANAS_25-1712147008175.png" alt="MOHD_ANAS_25-1712147008175.png" /></span></P><P>&nbsp;</P><P><STRONG>Now, the delivery document has been saved with the delivery number.</STRONG></P><P><STRONG>5. Benefits</STRONG></P><UL><LI>Improved order fulfilment accuracy and speed.</LI><LI>Enhanced visibility and traceability of outbound shipments.</LI><LI>Reduction in shipping errors and delays.</LI><LI>Optimal utilization of warehouse resources.</LI><LI>Better customer service and satisfaction.</LI></UL><P><STRONG>6. Conclusion</STRONG></P><P>Outbound Delivery in SAP plays a critical role in ensuring the smooth and efficient execution of logistics and shipping operations. By leveraging SAP's robust functionality and integration capabilities, businesses can effectively manage outbound deliveries, meet customer expectations, and drive operational excellence.</P><P>&nbsp;</P> 2024-04-05T16:27:49.370000+02:00 https://community.sap.com/t5/technology-blogs-by-members/sh-1-fiori-not-found-gt-the-most-popular-error-for-fiori-developers/ba-p/13658784 sh: 1: fiori: not found-> The most popular error for Fiori Developers 2024-04-05T16:34:00.137000+02:00 ankitguria https://community.sap.com/t5/user/viewprofilepage/user-id/45701 <P><FONT size="6"><STRONG>Introduction:</STRONG></FONT></P><P><FONT size="5">In this technical blog, we will detail how to resolve one of the most common issues encountered by SAP UI5/Fiori developers during the deployment of their applications on the Cloud Foundry of SAP BTP.</FONT><BR /><FONT size="5">For the case here, we have the "<FONT color="#FF0000"><U><STRONG>sh: 1: fiori: not found</STRONG></U></FONT>" error here.</FONT></P><P><FONT size="5"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image001.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/91167i794704AADA6B1A7F/image-size/large?v=v2&amp;px=999" role="button" title="image001.png" alt="image001.png" /></span></FONT></P><P><FONT size="6"><STRONG>Prerequisites:</STRONG></FONT></P><UL><LI><FONT size="5"><A href="https://accounts.sap.com/saml2/idp/sso?sp=cockpit-cf-eu10&amp;RelayState=response_type%3Dcode%26scope%3Dopenid%26redirect_uri%3Dhttps%253A%252F%252Femea.cockpit.btp.cloud.sap%252Flogin%252Fcallback%26client_id%3D28f1d77a-ce0d-401a-b926-e393cd8ed4fa%26state%3D11346716447162" target="_blank" rel="noopener noreferrer">SAP BTP Account</A>- If you prefer to deploy on SAP BTP HANA Cloud.&nbsp;</FONT></LI><LI><FONT size="5"><A href="https://accounts.sap.com/saml2/idp/sso?sp=cockpit-cf-eu10&amp;RelayState=response_type%3Dcode%26scope%3Dopenid%26redirect_uri%3Dhttps%253A%252F%252Femea.cockpit.btp.cloud.sap%252Flogin%252Fcallback%26client_id%3D28f1d77a-ce0d-401a-b926-e393cd8ed4fa%26state%3D11346716447162" target="_blank" rel="noopener noreferrer">SAP Business Application Studio</A>&nbsp;(recommended) if deploying to SAP BTP HANA Cloud. Even, in this case, I recommend to use SAP BAS only for deployment&nbsp;.</FONT></LI><LI><FONT size="5"><A href="https://code.visualstudio.com/download" target="_blank" rel="noopener nofollow noreferrer">Microsoft Visual Studio Code</A>&nbsp;(optional) can be used for development but specific to this solution just use it as the Integrated Development Environment (IDE).&nbsp;</FONT></LI></UL><P><FONT size="6"><STRONG>Delving into the Error:</STRONG></FONT></P><P><FONT size="5">Single Targeted vs. Multi-Targeted Applications: There exists a distinction between single targeted and multi-targeted applications. The issue at hand typically arises with .MTAR applications, particularly SAP UI5 multi-target applications.</FONT></P><P><FONT size="5">"sh:1: Fiori: Not Found" Error: Whenever "cf push" command is executed, developers often encounter the "sh: 1: Fiori: Not Found" error, particularly with MTAR applications. This error is not exclusive to SAP but is a common occurrence across various cloud-native applications.</FONT></P><P><FONT size="6"><STRONG>Solutions and steps to be followed</STRONG>:</FONT></P><UL><LI><FONT size="5"><U>Utilize Microsoft Visual Studio Code or SAP Business Application Studio as the IDE</U>: It's recommended to use either Vs Code or SAP Business Application Studio solely as the Integrated Development Environment (IDE). For deployment purposes, stick to SAP Business Application Studio.</FONT></LI><LI><FONT size="5"><U>Ensure Proper Configuration of Destination Services and HTML5 Services:</U> Make sure to follow the steps for creating Destination Services and HTML5 services in your application as per the provided guidelines.</FONT></LI><LI><FONT size="5"><U>Perform .MTAR Build:</U> Right-click on the mta.yaml file and execute a .MTAR build.</FONT></LI><LI><FONT size="5"><U>Discovering Generated .MTAR File:</U> Following the .MTA.YAML build, the generated .mtar file may have a generic name such as abc_appname.mtar.</FONT></LI><LI><FONT size="5"><U>Deploy .MTAR File</U>: Right-click on the generated .mtar file and select "Deploy MTAR."</FONT></LI><LI><FONT size="5"><U>Monitor Deployment Process</U>: Once the deployment process concludes, log in to the SAP BTP Cloud Cockpit.</FONT></LI><LI><FONT size="5"><U>Accessing applications</U>: In the left-hand menu bar, locate HTML5 applications.</FONT></LI><LI><FONT size="5"><U>Verify Deployed Applications</U>: You should be able to find the deployed applications listed within the HTML5 applications section.</FONT></LI></UL><P><FONT size="5">Reference Link for more steps on deployment of Multi Target Applications by SAP: <A href="https://help.sap.com/docs/bas/sap-business-application-studio/building-and-deploying-multitarget-applications" target="_blank" rel="noopener noreferrer">Building and Deploying Multitarget Applications</A></FONT></P><P><FONT size="5">By following these steps, you can effectively resolve the "sh: 1: fiori : Not Found" error encountered during the deployment of SAP UI5/Fiori applications on the Cloud Foundry of SAP BTP.</FONT></P> 2024-04-05T16:34:00.137000+02:00 https://community.sap.com/t5/technology-blogs-by-members/how-to-develop-customer-creation-application-in-sap-build-apps-with-odata/ba-p/13659201 How to develop Customer creation Application in SAP Build Apps with OData service 2024-04-05T16:34:12.935000+02:00 Chetan_Bhatt https://community.sap.com/t5/user/viewprofilepage/user-id/1429690 <P><STRONG>Objective: -</STRONG></P><P>Implementing SAP OData URI &nbsp;to SAP Build and Creating Customers in SAP BUILD which can replicate to SAP System</P><P>&nbsp;</P><P><STRONG>Business Scenario: -</STRONG></P><P>&nbsp;How to create Customers using SAP Build Apps and OData Service.</P><P>&nbsp;</P><P><STRONG>Prerequisites: -</STRONG></P><P>-&gt; You Have an SAP BTP account or trial account.</P><P>-&gt; Inside the BTP account, go to Instances and Subscriptions and create an instance of SAP Build Apps</P><P>-&gt; Now go to Security -&gt; Users Tab and assign Role to the user for SAP BUILD Apps</P><P>&nbsp;</P><P><STRONG>Now, we have to create the SAP Backend connection to SAP BTP : -</STRONG></P><P>Before mapping data from S4H or our SAP System to Build Apps, we need to create a Destination in the BTP and give the required details of the S4H system with ODATA Uri too which we will consume (BTP-&gt;Connectivity-&gt;Destination )</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_0-1712235368204.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/91402i20FA8162E495345A/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_0-1712235368204.png" alt="Chetan_Bhatt_0-1712235368204.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>Connection is now established to that service.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_1-1712235368416.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/91403i24C441B2C4D96AEB/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_1-1712235368416.png" alt="Chetan_Bhatt_1-1712235368416.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>Now go to SAP Build Apps and navigate to Create to create a project.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_2-1712235368206.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/91404iC5BDF8520954AEFB/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_2-1712235368206.png" alt="Chetan_Bhatt_2-1712235368206.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>Now click on Build an Application to create a Application</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_3-1712235368548.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/91405iCB04B12AB7452313/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_3-1712235368548.png" alt="Chetan_Bhatt_3-1712235368548.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>Now Click on Web &amp; Mobile Application</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_4-1712235368519.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/91407iC7A40A64D5FFEE47/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_4-1712235368519.png" alt="Chetan_Bhatt_4-1712235368519.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>Now Give the project name and Description and You are good to go.</P><P>Inside the app you are working on SAP Build App go to the Authentication section and implement authentication</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_5-1712235368532.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/91406iFF6519951546DD32/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_5-1712235368532.png" alt="Chetan_Bhatt_5-1712235368532.png" /></span></P><P>&nbsp;</P><P>Now create an App Variable that holds all fields that are present in our OData service.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_6-1712235368498.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/91409i259161295DFB6B8D/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_6-1712235368498.png" alt="Chetan_Bhatt_6-1712235368498.png" /></span></P><P>&nbsp;</P><P>Now create a page and install a template from the marketplace which is Basic List and implement your UI for Customer Creation and a home page where all customers are displayed.</P><P>Now go to the DATA Section then go to SAP Systems and connect to your s4h System and the service that you called from the destination &nbsp;from SAP BTP will be available to you now.</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_7-1712235368450.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/91408iB0410E5B62D70707/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_7-1712235368450.png" alt="Chetan_Bhatt_7-1712235368450.png" /></span></P><P>&nbsp;</P><P>Now Click on this list go to ‘list resource’ fill in all the fields and configure authentication from Properties</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_8-1712235368551.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/91410iDCCF8A0A48917F3E/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_8-1712235368551.png" alt="Chetan_Bhatt_8-1712235368551.png" /></span></P><P>&nbsp;</P><P>Now Go to the Logic section of List and implement logic like this</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_9-1712235368437.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/91411i0C3148A4A08D8301/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_9-1712235368437.png" alt="Chetan_Bhatt_9-1712235368437.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>Now click on the Create button go to Show logic for Button then implement this logic</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_10-1712235368445.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/91413i9C8ABB3B05009FBB/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_10-1712235368445.png" alt="Chetan_Bhatt_10-1712235368445.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>Now create another page as shown below and build a form to create Customer Data using input fields.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_11-1712235368504.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/91412iF20FC7FA457B3947/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_11-1712235368504.png" alt="Chetan_Bhatt_11-1712235368504.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>Now do data binding to all fields by clicking on it and then assigning value to it</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_12-1712235368473.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/91414iC9FEB2213A9EA1F4/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_12-1712235368473.png" alt="Chetan_Bhatt_12-1712235368473.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>Now do a similar mapping for every field</P><P>Also, implement a condition to alert that an empty value is not allowed.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_13-1712235368467.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/91416iB8266D4F228176E1/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_13-1712235368467.png" alt="Chetan_Bhatt_13-1712235368467.png" /></span></P><P>&nbsp;</P><P>Now on the submit button implement logic that submit the data and updates the data to that OData service and thus will be reflected in the database table too</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_14-1712235368546.jpeg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/91415iCB780E20D3FCBC60/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_14-1712235368546.jpeg" alt="Chetan_Bhatt_14-1712235368546.jpeg" /></span></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_15-1712235368475.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/91418i6406EAC9E0F90CD4/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_15-1712235368475.png" alt="Chetan_Bhatt_15-1712235368475.png" /></span></P><P>&nbsp;</P><P><STRONG>Preview Your Developments: -</STRONG></P><P>Now when everything is done go to the Launch section then Preview your app.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_16-1712235368543.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/91417iD43A34EB5CCDFC02/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_16-1712235368543.png" alt="Chetan_Bhatt_16-1712235368543.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>By this, we can preview our application either on the web or can be previewed in Smartphones.</P><P>Our Application Now looks like-</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_17-1712235368488.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/91419iFD8BF13DB9A04ABC/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_17-1712235368488.png" alt="Chetan_Bhatt_17-1712235368488.png" /></span></P><P>&nbsp;</P><P>When we click on the create button the second page appears</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_18-1712235368552.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/91420i8CD970CFDF5BF011/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_18-1712235368552.png" alt="Chetan_Bhatt_18-1712235368552.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>Fill out details and now our customer is created.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_19-1712235368470.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/91422i7E5AC9C926F24443/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_19-1712235368470.png" alt="Chetan_Bhatt_19-1712235368470.png" /></span></P><P>&nbsp;</P><P>So now your customer is created in your database table &nbsp;which you can check by going to se11-&gt;KNA1</P><P>And you can see your entry got updated in table KNA1</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_20-1712235368518.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/91421i47CAC4464ECCE8E6/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_20-1712235368518.png" alt="Chetan_Bhatt_20-1712235368518.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P> 2024-04-05T16:34:12.935000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/recap-sap-alm-at-sap-insider-las-vegas-2024/ba-p/13665960 Recap - SAP ALM at SAP Insider Las Vegas 2024 2024-04-10T16:36:29.972000+02:00 estoddard https://community.sap.com/t5/user/viewprofilepage/user-id/5739 <P>Now that the dust has settled, I wanted to take the time to share with you some of my experiences and key topics from the SAP Insider Las Vegas 2024 event that took place from March 19-21.</P><P>This was the first time I have attended this well-organized event at the Bellagio Resort and Casino, and I was very impressed with the number of topics covered in over 150+ sessions which ranged from application development, integration, finance, cybersecurity, and more. The event was well-attended and there were many fantastic opportunities to network between sessions as well as in the exhibit hall during evening events.</P><P>As one of the product managers for SAP Cloud ALM, I was co-presenting with Tim Steuer, VP for ALM at SAP, at several sessions covering SAP Cloud ALM adoption, the transition process from SAP Solution Manager to SAP Cloud ALM, and how to use SAP Cloud ALM for Operations to effectively monitor SAP BTP.</P><P>The first order of business was to deliver the Monday pre-conference session <STRONG>“Best Practices to Approaching Transformation: Combine SAP Signavio, SAP Cloud ALM and Tricentis for an Optimized Outcome”</STRONG> with Andreas Zehent, VP of Cloud Success Services for SAP Signavio.</P><P>Customers have been asking: How do SAP LeanIX, SAP Signavio, and SAP Cloud work together? What is the purpose of each offering, and when should they be used during my transformation project? What integrations are available today, and what is planned? The half-day pre-conference session aimed to answer these questions by introducing <A href="https://www.sap.com/assetdetail/2023/08/d08434dc-847e-0010-bca6-c68f7e60039b.html" target="_blank" rel="noopener noreferrer">SAP's Transformation Suite approach</A> that assists customers with their business transformation by combining the power of SAP LeanIX, SAP Signavio, and SAP Cloud ALM (with Tricentis Test Automation) into one cohesive methodology.</P><P>Attendees gained valuable knowledge about how the suite's components work collectively to provide an unmatched suite experience and guidance for initiating the journey to the cloud. Andreas presented and demoed the available integration between SAP LeanIX and SAP Signavio, and Tim covered the future plans for integrating SAP LeanIX and SAP Signavio with SAP Cloud ALM. Tim also revealed how <A href="https://support.sap.com/en/alm/sap-cloud-alm.html" target="_blank" rel="noopener noreferrer">SAP Cloud ALM</A> (included in customer maintenance) is the anchor point for customer transformations, enables the latest innovations to be adopted at scale, and is also the <A href="https://support.sap.com/en/alm/sap-cloud-alm/sap-cloud-alm-clean-core-adoption.html" target="_blank" rel="noopener noreferrer">key driver</A> for customer <A href="https://www.youtube.com/watch?v=JaSQbFypIkQ" target="_blank" rel="noopener nofollow noreferrer">Clean Core</A> initiatives.</P><P>And for the first time, SAP presented a unified map of where each product adds value to the transformation journey and laid out the current and planned integration points, as shown below:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="business transformation suite approach.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/94737i16EA74C55A58786E/image-size/large?v=v2&amp;px=999" role="button" title="business transformation suite approach.png" alt="business transformation suite approach.png" /></span></P><P>We received great feedback from the attendees, who told us that they were impressed with the level of detail as well as the logical approach of the session content.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Speakers.jpg" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/94739i9EA547AC95C58BEA/image-size/large?v=v2&amp;px=999" role="button" title="Speakers.jpg" alt="Speakers.jpg" /></span></P><P>For the <STRONG>“Move from SAP Solution Manager to SAP Cloud ALM: Tips and Tricks”</STRONG> session, Tim and I explained how SAP supports customers during their transition from SAP Solution Manager to SAP Cloud ALM with services, learning offerings, and additional tools. We introduced the resources and recommendations available at the <A href="https://support.sap.com/en/alm/sap-cloud-alm/transition-to-sap-cloud-alm.html" target="_blank" rel="noopener noreferrer">Transition Center</A> to guide customers through the process depending on their situation, and showed how the <A href="https://blogs.sap.com/2023/04/27/sap-readiness-check-for-sap-cloud-alm/" target="_blank" rel="noopener noreferrer">Readiness Check for SAP Cloud ALM</A> helps customers determine their SAP Solution Manager usage and allows them to map out their transition strategy. In addition, tools to migrate SAP Solution Manager content like documents and test cases to SAP Cloud ALM are planned for <A href="https://roadmaps.sap.com/board?PRODUCT=73554900100800002513&amp;range=CURRENT-LAST#Q2%202024" target="_blank" rel="noopener noreferrer">later this summer</A>, along with a methodology roadmap to help plan the transition project.</P><P>In the session <STRONG>“Re-Imagine Your Application Lifecycle Management Strategy”</STRONG>&nbsp;we laid out SAP’s ALM portfolio and how SAP Cloud ALM and SAP Focused Run helps customers coordinate innovation while keeping the business healthy. SAP Cloud ALM provides a simple and cloud-native solution for implementing and operating the intelligent enterprise, while SAP Focused Run (on the SAP pricelist) provides a powerful solution for handling large landscapes with advanced system management requirements.</P><P>Our session <STRONG>“Operations of SAP Business Technology Platform with SAP Cloud ALM” </STRONG>outlined how SAP Cloud ALM’s capabilities support different SaaS services as well as custom-built applications based on SAP Business Technology Platform. I demoed how SAP Cloud ALM acts as <A href="https://news.sap.com/2023/11/sap-cloud-alm-extended-to-cover-sap-btp/" target="_blank" rel="noopener noreferrer">a single entry point</A> to manage and monitor the health, integrations, exceptions, and performance of SAP BTP services and applications, and discussed how SAP Cloud ALM uses the open-source <A href="https://opentelemetry.io/docs/what-is-opentelemetry/" target="_blank" rel="noopener nofollow noreferrer">OpenTelemetry</A> standard to <A href="https://support.sap.com/en/alm/sap-cloud-alm/operations/expert-portal/data-collection-infrastructure.html?anchorId=section" target="_blank" rel="noopener noreferrer">instrument custom-built applications</A> in the SAP BTP, Cloud Foundry Environment or SAP BTP, Kyma runtime.</P><P>However, it wasn’t a case of all work and no play. Tim and I were able to visit the Sphere Las Vegas, which was very impressive both inside and out.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sphere1.JPG" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/94742i1D6217508112D7FF/image-size/large?v=v2&amp;px=999" role="button" title="sphere1.JPG" alt="sphere1.JPG" /></span></P><P>We also took advantage of some liquid refreshment courtesy of the partners in the exhibit hall <span class="lia-unicode-emoji" title=":smiling_face_with_smiling_eyes:">😊</span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="drinkies.JPG" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/94744iC3856C2900552314/image-size/large?v=v2&amp;px=999" role="button" title="drinkies.JPG" alt="drinkies.JPG" /></span></P><P>Overall, SAP Insider Las Vegas 2024 was a fantastic event, and we look forward to attending next year!</P><P>&nbsp;</P> 2024-04-10T16:36:29.972000+02:00 https://community.sap.com/t5/enterprise-resource-planning-blogs-by-members/futuristic-aerospace-or-defense-btp-data-mesh-layer-using-collibra-next/ba-p/13666113 Futuristic Aerospace or Defense BTP Data Mesh Layer using Collibra, Next Labs ABAC/DAM, IAG and GRC 2024-04-11T19:00:57.747000+02:00 STALANKI https://community.sap.com/t5/user/viewprofilepage/user-id/13911 <H1 id="toc-hId-862635520">Background</H1><P>In this blog, we will explore few ideas for creating a domain-centric data mesh using SAP components, without engaging in the debate of whether data fabric or data mesh is the right approach.</P><P>We will focus on a futuristic use case within the Aerospace or Defense industry, which demands stringent data governance due to compliance requirements such as ITAR, EAR, BAFA, DOE 810, NERC/CIP, and SEC. Additionally, safeguarding intellectual property is a critical concern as business growth often relies on increased collaboration, both internally and externally, spanning product and engineering, supply chain, cross industry- partnerships, and joint ventures. I am happy to hear your ideas too!</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="aero.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95260iED73CA1C7AC54354/image-size/large?v=v2&amp;px=999" role="button" title="aero.png" alt="aero.png" /></span></P><H1 id="toc-hId-666122015">Business Problem</H1><P>Aerospace and defense customers often face challenges in keeping up with rapid technological advancements due to the burden of data debts and the need to comply with stringent legal and regulatory data security requirements.</P><P>This challenge is further amplified when dealing with legacy ERP systems, as identifying and restricting sensitive data becomes complex, hindering the end-to-end data lifecycle management.&nbsp;Moreover, the Aerospace and defense industry grapples with the formidable challenge of reducing IT costs, as the presence of significant data risks renders offshore operations an impractical option.</P><P>Let's consider the example of a product manager based in the United States, working for a US corporation. Their product is subject to ITAR regulations but has both government and commercial applications.</P><P>In order to comply with the business rule, the access to ITAR data in SAP should only be granted to US persons while they are in US locations. However, when this product manager is on a business trip to Singapore, meeting with suppliers at their APAC regional headquarters, exposing material data, CAD drawings, or BOMs stored in SAP would violate ITAR regulations.</P><P>In the context of a UK energy company establishing a joint venture with a local company in China to cater to the emerging market, an added layer of data security is required based on location. This ensures that access to BOM items and intellectual property not related to the joint venture is restricted, safeguarding sensitive information and preserving the integrity of the collaboration.</P><P><FONT face="georgia,palatino" color="#3366FF"><EM><STRONG>In the context of the aerospace and defense , "Data is not only the ammunition that fuels engines but it is also an the armor that protects international and national peace"</STRONG></EM></FONT></P><H1 id="toc-hId-469608510">BTP SAP S/4 HANA Data Mesh Pattern</H1><P>To solve the problem described above, we will hypothetically integrate Collibra, Next Labs ABAC/DAM, IAG and GRC&nbsp; and SAP S/4 HANA&nbsp; to provide data insights to users without compromising&nbsp; data security requirements. Please note that is is hypothetical pattern and we have to review and apply it according to client specific data security requirements.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="BTP Data Mesh Architecture.jpg" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95266i6D71E029D628C0A9/image-size/large?v=v2&amp;px=999" role="button" title="BTP Data Mesh Architecture.jpg" alt="BTP Data Mesh Architecture.jpg" /></span></P><TABLE border="1" width="100%"><TBODY><TR><TD width="50%" height="30px"><STRONG><FONT color="#3366FF">Solution Components</FONT></STRONG></TD><TD width="50%" height="30px"><STRONG><FONT color="#3366FF">Usage</FONT></STRONG></TD></TR><TR><TD width="50%" height="139px">Collibra</TD><TD width="50%" height="139px">This component can be used to document and define data governance policies, meta data catalogue, end to end data lineage, data quality KPI's, data protection and data privacy rules for bill of materials.</TD></TR><TR><TD height="116px">SAP IAG</TD><TD height="116px">&nbsp;SAP IAG can handle the user access request and provisioning workflows to authenticate and authorize the user identity with the client's identity provider (ex: Active Directory)</TD></TR><TR><TD height="139px">SAP GRC</TD><TD height="139px">SAP GRC can provide the necessary controls and policies for access management and perform risk analysis and segregation of duties (SoD) checks, ensuring compliance with regulatory requirements across all SAP applications in the landscape.</TD></TR><TR><TD height="850px">Next Labs ABAC/DAM</TD><TD height="850px"><P>Next Labs ABAC/DAM provides robust protection against unauthorized access to sensitive SAP data by implementing fine-grained access controls.</P><P>These controls can be applied at the level of individual data attributes or data ranges, enabling customers to safeguard their data while meeting compliance requirements. By examining the attributes of the data being accessed, the context of the request, and the user's identity, Next Labs ABAC/DAM allows organizations to control access to data, business transactions, and batch processes based on defined policies.</P><P>With SAP DAM, any changes in the attributes of the data or the user are dynamically considered, and the relevant policies are applied in real-time to enforce fine-grained access controls across various business functions. For example, a rule may specify that only US-based employees can access ITAR-classified materials from US locations. When a user attempts to access such materials, this rule is validated in real-time, ensuring that access is granted only to authorized individuals who meet the specified criteria.</P><P>Through the integration of Next Labs ABAC/DAM with SAP systems, organizations can effectively protect their sensitive data, maintain compliance, and enforce granular access controls across a wide range of business operations.</P></TD></TR><TR><TD height="50px">SAP Data sphere</TD><TD height="50px"><P>This is optional but we can use this if you want to provide flexible predictive analytics to the users.</P></TD></TR><TR><TD>SAP BTP AI Launch Pad</TD><TD><P>This is optional and can be used to identify repeat breach patterns, time and detect security data anomalies in advance and add further access controls.&nbsp;</P></TD></TR></TBODY></TABLE><H1 id="toc-hId-273095005">MVP- Bill of Material Data Mesh</H1><P>In the world of aerospace and defense, organizations face the challenge of managing bill of material (BOM) data across multiple systems. R By integrating diverse systems such as SAP S/4HANA, Team Center, and Siemens, they created a unified network of interconnected data mesh. This will enable seamless collaboration among internal and external engineering, supply chain, and product sales teams. With real-time visibility into BOMs, teams made informed decisions, optimized designs, synchronized manufacturing, and tailored offerings. The BOM data mesh can empower the organizations to achieve faster product development cycles, reduced costs, and improved customer satisfaction.&nbsp;</P><P><STRONG>Step 1:</STRONG> Define Role Requirements, Meta-data catalo Data Governance and access policies for BOM in Collibra</P><UL><LI>Identify the specific role requirements based on your organization's needs and compliance regulations.</LI><LI>Determine the attributes that will be used for access control, such as user roles, data sensitivity, and contextual factors.</LI></UL><P><STRONG>Step 2:</STRONG> Understand BOM Creation and Editing Requirements</P><UL><LI>The organization requires that only users with specific engineering roles can create and edit BOMs. Additionally, certain fields in the BOM may be restricted for external supply chain users based on data sensitivity, such as pricing information.</LI></UL><UL><LI>Determine the functional access (actions user can perform) and data access (data records or fields users can see) and governance (rules for access)</LI></UL><P><STRONG>Step 3: </STRONG>Define SAP S/4HANA Role<BR /><BR /></P><UL><LI>Create a custom role named "BOM Specialist" or copy standard role in SAP S/4HANA.<BR />Assign the authorization object M_BOM_GRP to the role, which controls access to BOM groups.</LI><LI>Assign transaction codes CS01 (Create BOM) and CS02 (Change BOM) to allow users with this role to perform BOM creation and editing tasks.</LI></UL><P><STRONG>Step 4: Configure Next Lab ABAC DAM</STRONG></P><P>SAP Next Lab ABAC DAM works natively with SAP and manages authorization logic through an externalized, standards-based policy framework. For instance, a rule may state, “Allow only US-based employees to access ITAR-classified materials from US locations.” When a user attempts to access materials, this rule is validated in real-time before access is granted.</P><UL><LI>&nbsp;Configure Next Lab ABAC with attributes such as "User Role," "Data Sensitivity Level," and "Contextual Factors."</LI><LI>&nbsp;Define "User Role" as an attribute to determine the user's role in the organization.</LI><LI>&nbsp;Define "Data Sensitivity Level" as an attribute to classify BOMs based on their sensitivity, such as "Confidential" or "Public."</LI><LI>&nbsp;Define "Contextual Factors" as attributes to consider additional factors, such as project or department.</LI></UL><P><STRONG>Step 5: Integrate SAP GRC and Next Lab ABAC</STRONG></P><P>This MVP use case leverages SAP GRC Access Control and SAP authorization for Governance and Functional Authorization and leverages ABAC for Data Authorization. It combines the features and fully integrated capabilities of SAP GRC Access Control and SAP authorization, such as ease of user assignment and role management, to efficiently supporting data attributes and avoiding the “role explosion” and custom development that would otherwise be necessary and costly.</P><UL><LI>Integrate SAP GRC and Next Lab ABAC to synchronize roles and access control policies.</LI><LI>&nbsp;Map the "BOM Specialist" role in SAP GRC to the corresponding role in Next Lab ABAC, ensuring consistency in access control.</LI></UL><P><STRONG>Step 5: Define ABAC Policies</STRONG></P><UL><LI>&nbsp;Define ABAC policies in Next Lab ABAC to enforce attribute-based access control for BOM creation and editing.</LI><LI>&nbsp;Create a policy that allows users with the "BOM Specialist" role (User Role attribute) to create and edit BOMs.</LI><LI>Create a policy that restricts access to certain fields in the BOM based on the "Data Sensitivity Level" attribute and user profile policy (<STRONG>Ex:</STRONG> Manufacturing, Engineering, Supply Chain).</LI></UL><P><STRONG>Step 6: Test and Validate the Role using AI</STRONG></P><UL><LI>Train the model on different user profiles to validate data access using SAP BTP AI Launch Pad</LI><LI>Train the model further to auto-correct access issues and detect patterns to suggest changes to role access profiles (don’t let AI implement dynamic role access changes as it can be dangerous <span class="lia-unicode-emoji" title=":smiling_face_with_smiling_eyes:">😊</span>)</LI><LI>Perform supervised automated test to test the “BOM Specialist" role by assigning it to a user and verifying that they can successfully create and edit BOMs.</LI><LI>&nbsp;Validate that the ABAC policies.</LI></UL><P><STRONG>Step 7: Integration SAP BTP Identity Access Governance to Active Directory</STRONG></P><P>By integrating SAP BTP Identity Access Governance directly, users can seamlessly access data from multiple systems, including SAP S/4HANA, Team Center, Siemens, and other engineering, manufacturing, and supply chain systems. This integration enables a cohesive data mesh approach, allowing users to view and manage bill of materials across various systems.</P><P><STRONG>Step 8: Integrate Collibra and Datasphere to Monetize and Publish bill of material insights to engineering, supply chain and product sales team.</STRONG></P><P>You have the ability to define and design self-service analytic insight reports, which can be monetized and shared with both your internal and external engineering, supply chain, and product sales teams.</P> 2024-04-11T19:00:57.747000+02:00 https://community.sap.com/t5/technology-blogs-by-members/usage-of-custom-destination-service-in-btp-abap-environment/ba-p/13672056 Usage of Custom Destination Service in BTP, ABAP Environment 2024-04-18T12:54:36.688000+02:00 alrikx https://community.sap.com/t5/user/viewprofilepage/user-id/667134 <H1 id="toc-hId-863439043">The regular Way</H1><P>In BTP you configure the destination on subaccount level, here you see how to do so:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="alrikx_0-1713268850496.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97076iA3AF6D0C9AE427F0/image-size/large?v=v2&amp;px=999" role="button" title="alrikx_0-1713268850496.png" alt="alrikx_0-1713268850496.png" /></span></P><P>this way you can access the data from <a href="https://community.sap.com/t5/c-khhcw49343/SAP+BTP%25252C+ABAP+environment/pd-p/73555000100800001164" class="lia-product-mention" data-product="11-1">SAP BTP, ABAP environment</a>:</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>DATA(http_destination) = cl_http_destination_provider=&gt;create_by_cloud_destination( i_name = 'service1' "destination name i_authn_mode = if_a4c_cp_service=&gt;service_specific ). DATA(http_client) = cl_web_http_client_manager=&gt;create_by_http_destination( i_destination = http_destination ).</code></pre><P>&nbsp;</P><P>As a second option, you can use custom communication scenario, how this is done, is shown in <A href="https://developers.sap.com/tutorials/abap-environment-create-service-consumption-model.html" target="_self" rel="noopener noreferrer">this tutorial.</A></P><P>&nbsp;</P><H1 id="toc-hId-666925538">The custom Way</H1><H2 id="toc-hId-599494752">Intention</H2><P>at some point a lot of peoples and project are using the subaccount and are able to reuse the destinations. We wanted a separation from other solutions also when it comes to destinations.</P><H2 id="toc-hId-402981247">Solution</H2><P>In five steps I show You how to do this.</P><H3 id="toc-hId-335550461">1.Step: Create Custom Destination Service</H3><P>Create Instance of custom destination service, give it a name, make sure to enable it in the same Cloud Foundry Space as your ABAP Environment is assigned to:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="alrikx_3-1713271996348.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97109i1F472BCB5BEC2B3B/image-size/large?v=v2&amp;px=999" role="button" title="alrikx_3-1713271996348.png" alt="alrikx_3-1713271996348.png" /></span></P><P>No parameters are required, your instance should look like this:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="alrikx_4-1713272118894.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97113i183308E61CA25706/image-size/large?v=v2&amp;px=999" role="button" title="alrikx_4-1713272118894.png" alt="alrikx_4-1713272118894.png" /></span></P><P>after hitting "Create" the Destination Service Instance is provisioned:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="alrikx_5-1713272159409.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97114iC4E7482D18BDE161/image-size/large?v=v2&amp;px=999" role="button" title="alrikx_5-1713272159409.png" alt="alrikx_5-1713272159409.png" /></span></P><H3 id="toc-hId-139036956">2.Step: Creating Destination(s)</H3><P>now you can navigate to the custom service instance and go to "Destinations". From there you can create one to many destinations or add more later.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="alrikx_6-1713272314280.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97115iA2691412A71CE8CD/image-size/large?v=v2&amp;px=999" role="button" title="alrikx_6-1713272314280.png" alt="alrikx_6-1713272314280.png" /></span></P><H3 id="toc-hId--57476549">3. Step: Create a Service Key</H3><P>Hit "Service Keys<STRONG>"</STRONG>&nbsp;and generate a service key without any parameters. The name is not relevant.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="alrikx_7-1713272701821.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97122i83409D16AF2A4FE2/image-size/large?v=v2&amp;px=999" role="button" title="alrikx_7-1713272701821.png" alt="alrikx_7-1713272701821.png" /></span></P><P>The result looks like that:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="alrikx_8-1713272948899.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97130i5C90D39EEFE4832F/image-size/large?v=v2&amp;px=999" role="button" title="alrikx_8-1713272948899.png" alt="alrikx_8-1713272948899.png" /></span></P><H3 id="toc-hId--253990054">4. Step: Connect ABAP Environment to Destination Service via Communication Arrangement</H3><P>Go to ABAP Launchpad and find the App "Communication Arrangements". Create a new communication arrangement of Scenario SAP_COM_0276. Give it a name and copy the service key from previous step in.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="alrikx_1-1713340240990.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97505i0ABE088BCB786403/image-size/large?v=v2&amp;px=999" role="button" title="alrikx_1-1713340240990.png" alt="alrikx_1-1713340240990.png" /></span></P><P>Your communication arrangement looks like this now:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="alrikx_2-1713340313888.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97506iBB083288FEAD8D45/image-size/large?v=v2&amp;px=999" role="button" title="alrikx_2-1713340313888.png" alt="alrikx_2-1713340313888.png" /></span></P><P>Optionally you can rename the Service Instance Name, what I did in my example:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="alrikx_3-1713342067069.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97523i775E52E26C63883A/image-size/large?v=v2&amp;px=999" role="button" title="alrikx_3-1713342067069.png" alt="alrikx_3-1713342067069.png" /></span></P><H3 id="toc-hId--450503559">5. Step: Usage in BTP, ABAP Environment</H3><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>DATA(http_destination) = cl_http_destination_provider=&gt;create_by_cloud_destination( i_name = 'service1' "destination name i_authn_mode = if_a4c_cp_service=&gt;service_specific i_service_instance_name = 'MYSERVICEINSTANCE' "the service instance name ). DATA(http_client) = cl_web_http_client_manager=&gt;create_by_http_destination( i_destination = http_destination ).</code></pre><P>&nbsp;</P><P>&nbsp;</P><H1 id="toc-hId--905182502">Final Notes</H1><P>Next to the classics ways of subaccount level destinations and custom communication scenarios, you can create custom destination service instances and use it in <a href="https://community.sap.com/t5/c-khhcw49343/SAP+BTP%25252C+ABAP+environment/pd-p/73555000100800001164" class="lia-product-mention" data-product="11-2">SAP BTP, ABAP environment</a>&nbsp;</P><P>The initial effort is a bit higher, but it comes with better separation in your BTP account.</P><P>Note that the shown solutions are not usable in trial environments.</P><P><SPAN>if you like this post or it helped you, don't hesitate to give kudos.</SPAN></P> 2024-04-18T12:54:36.688000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/capture-your-own-workload-statistics-in-the-abap-environment-in-the-cloud/ba-p/13667180 Capture Your Own Workload Statistics in the ABAP Environment in the Cloud 2024-04-18T13:02:05.620000+02:00 christiancop https://community.sap.com/t5/user/viewprofilepage/user-id/625488 <P>As an administrator in <a href="https://community.sap.com/t5/c-khhcw49343/SAP+BTP%25252C+ABAP+environment/pd-p/73555000100800001164" class="lia-product-mention" data-product="11-1">SAP BTP, ABAP environment</a> or in <a href="https://community.sap.com/t5/c-khhcw49343/SAP+S%25252F4HANA+Cloud+ABAP+Environment/pd-p/60907aa9-99e9-4d5d-9103-8b970e9bc0a4" class="lia-product-mention" data-product="39-1">SAP S/4HANA Cloud ABAP Environment</a>, it’s important to keep track of performance issues and identify bottlenecks. Now SAP offers a few Fiori apps to help you with monitoring the system workload. However, relying on what data the system automatically collects for you sometimes isn’t enough.</P><P>Instead, you want to define yourself what kind of workload information is captured, such as in the following use cases:</P><UL><LI>Standard apps and tools show you that there’s a high workload, but when you drill down to details, you don’t get the information you’re interested in.</LI><LI>You want to monitor the workload of a clearly defined special case, such as the workload generated by a user or by one of your custom apps (which you might want to watch using its request entry point).</LI><LI>You have specific requests where you want to get alerted when the workload, for example, exceeds a defined threshold.</LI></UL><P>In this blog post, I’ll show you how to use the <EM>Capture Request Statistics</EM> app to cover these use cases.</P><H3 id="toc-hId-1120830963"><SPAN class=""><SPAN class="">Background: the System </SPAN></SPAN><SPAN class=""><SPAN class="">Workload</SPAN></SPAN><SPAN class=""><SPAN class=""> App</SPAN></SPAN></H3><P><SPAN>Before I introduce you to the <EM>Capture Request Statistics</EM> app, let me start with a brief recap of what the <EM>System Workload</EM> app can do for you out of the box (for more details, see the blog post </SPAN><SPAN><A href="https://blogs.sap.com/2023/04/24/analyzing-performance-degradations-in-the-abap-environment-in-the-cloud/" target="_blank" rel="noopener noreferrer">Analyzing performance degradations in the ABAP environment in the Cloud</A></SPAN><SPAN>).</SPAN></P><P>Let’s say you want to analyze the performance of your ABAP system in the <EM>System Workload</EM> app:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="System Workload app" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95592iD385E7CF005F9EA9/image-size/large?v=v2&amp;px=999" role="button" title="TM_System_Workload.png" alt="System Workload app" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">System Workload app</span></span></P><P><SPAN>You find the top resource-consuming application in the system and want to analyze it further. You can analyze this application in more detail by choosing the </SPAN><EM>Details</EM><SPAN> arrow at the end of the row. In the following screen, you typically find samples of single ABAP statistics records for this workload. Now, how are these ABAP statistics records collected by default and how can you influence what is captured? Let's take a look behind the scenes.</SPAN></P><H3 id="toc-hId-924317458"><SPAN class=""><SPAN class=""><SPAN class=""><SPAN class=""><SPAN class="">Default Configuration: Capture Workload Statistics with Static Thresholds</SPAN></SPAN></SPAN></SPAN></SPAN></H3><P>An ABAP Environment in the Cloud comes with pre-delivered SAP profiles that capture ABAP statistics records in your system. You can find these pre-delivered SAP profiles in the <EM>Capture Request Statistics</EM> app:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Pre-delivered SAP profiles" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95589i0FB1B72F365706C2/image-size/large?v=v2&amp;px=999" role="button" title="CRS_default_profiles.png" alt="Pre-delivered SAP profiles" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Pre-delivered SAP profiles</span></span></P><P><SPAN>These profiles ensure that the statistics about “bad” requests - meaning a high consumption of compute resources – are captured in the system. If you look, for example, at the details of the static profile for expensive requests regarding server response time, you find a static threshold of 1 second:</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Pre-delivered SAP profile - capture requests with high server response time" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95590iC8508BAE822CC1ED/image-size/large?v=v2&amp;px=999" role="button" title="CRS_default_static_profile.png" alt="Pre-delivered SAP profile - capture requests with high server response time" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Pre-delivered SAP profile - capture requests with high server response time</span></span></SPAN></P><P><SPAN>With this profile always active, ABAP statistics records with an ABAP server response time larger than 1 second are captured and stored. Similarly, the other pre-delivered static profiles capture requests that exceed 1 second regarding HANA CPU time, ABAP CPU time, etc.</SPAN></P><P>In the profile header, you can find that for the SAP-delivered profiles, a sampling rate of 1% has been set. It means that only 1% of the records that fulfill the filter condition will be captured. In addition, the record limit per minute is set to 50. The periodic data collector that runs every minute and processes the ABAP statistics records (together with the profiles in the <EM>Capture Request Statistics</EM> app) will only store the ABAP statistics records up to this limit in the database. So, if many ABAP statistics records fulfill the filter condition at a time, not all of these records will be stored.</P><P>For SAP-delivered profiles, this low record limit per minute together with the low sampling rate ensures that the workload and data footprint for processing and storing monitoring data in your system stay low, even if the overall business workload on the system gets exceedingly high.</P><H3 id="toc-hId-727803953"><SPAN class=""><SPAN class=""><SPAN class=""><SPAN class=""><SPAN class="">Default Configuration: Capture Workload Statistics Dynamically</SPAN></SPAN></SPAN></SPAN></SPAN></H3><P>In addition to the pre-delivered static profiles, the dynamic SAP profile <EM>SAP_DYNAMIC_CAPTURING</EM> ensures that for the top workload of your system “good” statistic samples of requests are also captured (with respect to the server response time). As a result, you can compare statistics of samples of “bad” workload to statistics of samples of “good” workload. The top workload in your system might vary as well as the behavior in response times. The dynamic profile adapts to these changes.</P><P>In addition, for the top workload, the dynamic profile captures samples of ABAP statistics when their server response times deviate too much from the average server response time of this specific kind of workload. This ensures that for workloads with typically different server response times, samples of ABAP statistics records are also at hand, even if their server response times do not exceed the static thresholds of the static profile types.</P><P>In principle, the pre-delivered static profiles together with the dynamic profile will give you a high chance that for your top workload, you’ll find samples of ABAP statistics records in the system that you can use for detailed analysis. You get this data using the <EM>System Workload</EM> app and by drilling down to the ABAP statistics records, and in most of the cases, that’s enough. However, as these statistics are sampled, it might happen that sometimes you don't find any records that you can use for further analysis:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="System Workload app - no detailed statistics available" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95598i889C198FE81A56E3/image-size/large?v=v2&amp;px=999" role="button" title="TM_Request_Processing.png" alt="System Workload app - no detailed statistics available" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">System Workload app - no detailed statistics available</span></span></P><P><SPAN>To have these detailed statistics for your root cause analysis, you can capture your own workload statistics in your ABAP environment in the Cloud.</SPAN></P><H3 id="toc-hId-531290448"><SPAN class=""><SPAN class=""><SPAN class=""><SPAN class=""><SPAN class="">Capture Your Own Workload Statistics in the Capture Request Statistics App</SPAN></SPAN></SPAN></SPAN></SPAN></H3><P>You can create your own capture profiles, of course. While the SAP profiles are designed in such a way that they capture samples of ABAP statistics records for generic expensive workload in the ABAP tenant, you might want to specify the workload more concretely. For example, you might be interested specifically in the ABAP statistics records of your user or of a certain outbound communication arrangement. Or you might be interested in workload that exceeds a specific threshold (as in the pre-delivered SAP profiles). To do so, you can create your own capture profile.</P><P>If, for example, you have built a new ABAP RESTful application for travel bookings, you could define a profile that filters on its specific request entry point (consisting of request entry name and request entry type):</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Custom profile" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95585i1CFDC6C8A1EE4DC4/image-size/large?v=v2&amp;px=999" role="button" title="Custom_static_profile.png" alt="Custom profile" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Custom profile</span></span></P><P>A<SPAN>&nbsp;custom profile is in status </SPAN><EM>Inactive</EM><SPAN> when newly created. If you click on the </SPAN><EM>Activate</EM><SPAN> button, the profile status will be set to status </SPAN><EM>Processing,</EM><SPAN> and only then will the data collector process ABAP statistics records that fulfill the defined filter conditions. On activation of the profile, you also need to specify the duration of how long the profile should be active. When the duration is exceeded and all the relevant ABAP statistics records are processed, the profile will be set to status </SPAN><EM>Finished</EM><SPAN> and no further ABAP statistics records will be processed for this profile.</SPAN></P><P><SPAN>In the example profile shown here, a sampling rate of 100% and a record limit per minute of 1000 has been set. Both are the maximum possible values.&nbsp;</SPAN><SPAN>This setting guarantees that all ABAP statistics records fulfilling the filter conditions are captured. Of course, if the record limit of 1000 is exceeded, you won’t capture everything. But this happens only in rare cases. In any case, it’s ensured that also for a badly designed capture profile, your business is not impacted by the additional workload of capturing request statistics.</SPAN></P><P>The target user group in the profile header indicates that only workload is considered that is running in customer user context. You can specify this further by considering, for example, only customer communication users or customer business users.</P><P>If the profile is active and users are performing actions in your ABAP RESTful application, the according ABAP statistics records are captured and stored in the database for a period that you have defined in the retention time of your profile.</P><P>For further analysis, e.g., the performance of a new app that you have built, you can navigate to the captured ABAP statistics records by clicking on <EM>Analyze Request Statistics</EM>. There you can analyze the captured single ABAP statistics records in detail and obtain insights into the behavior of your newly created app:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Analyze ABAP statistics records in detail" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95616i3095B0D51383866A/image-size/large?v=v2&amp;px=999" role="button" title="TM_ABAP_Statistics_Records.png" alt="Analyze ABAP statistics records in detail" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Analyze ABAP statistics records in detail</span></span></P><P><SPAN class=""><SPAN class="">You can find more information, for example, about SQL statements or, in the case of communication, about HTTP calls by choosing the </SPAN></SPAN><SPAN class=""><SPAN class=""><SPAN class="">Details</SPAN></SPAN></SPAN><SPAN class=""><SPAN class=""> arrow at the end of a row, which leads you to the details of that ABAP statistics record.</SPAN></SPAN></P><P><SPAN>If your new application belongs to the more expensive workload in the system, you’ll easily find the captured ABAP statistics records also in the </SPAN><EM>System Workload</EM><SPAN> app. There, you start from the overall workload (aggregated ABAP statistics records) of your business tenants. If you drill down to the details of your application, you will get to the ABAP statistics records. Your custom profile ensures that they have been captured:</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="System Workload app - detailed statistics available" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95602i44C955DB30D4DCD8/image-size/large?v=v2&amp;px=999" role="button" title="TM_Request_Processing_Data.png" alt="System Workload app - detailed statistics available" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">System Workload app - detailed statistics available</span></span></SPAN></P><P><STRONG>Note:</STRONG><SPAN> With the </SPAN><EM>Capture Request Statistics</EM><SPAN> app, you can also define profiles with profile type </SPAN><EM>SQL Trace</EM><SPAN>. With these profiles, you can trace the execution of SQL statements. These captured SQL statements can be further analyzed in the </SPAN><EM>SQL Trace Analysis</EM><SPAN> app. This might be another story for another blog post in the future, so stay tuned.</SPAN></P><P>You can find more information about the <EM>Capture Request Statistics</EM>&nbsp;app in the following documentation:</P><UL><LI><A href="https://help.sap.com/docs/btp/sap-business-technology-platform/capturing-request-statistics" target="_self" rel="noopener noreferrer">Capturing Request Statistics</A>&nbsp;for <a href="https://community.sap.com/t5/c-khhcw49343/SAP+BTP%25252C+ABAP+environment/pd-p/73555000100800001164" class="lia-product-mention" data-product="11-2">SAP BTP, ABAP environment</a></LI><LI><A href="https://help.sap.com/docs/SAP_S4HANA_CLOUD/0cc8af9d2f2e40f38b38b46b49325e2d/e86943aee62d48a8ac26ec22710bd63d.html" target="_self" rel="noopener noreferrer">Capturing Request Statistics</A>&nbsp;for <a href="https://community.sap.com/t5/c-khhcw49343/SAP+S%25252F4HANA+Cloud+ABAP+Environment/pd-p/60907aa9-99e9-4d5d-9103-8b970e9bc0a4" class="lia-product-mention" data-product="39-2">SAP S/4HANA Cloud ABAP Environment</a></LI></UL><H3 id="toc-hId-334776943"><SPAN class=""><SPAN class=""><SPAN class=""><SPAN class=""><SPAN class="">Getting Notified About Specific Workloads</SPAN></SPAN></SPAN></SPAN></SPAN></H3><P>You may have noticed that by defining a custom capture profile for capturing ABAP statistics records, you can set the option for <EM>Health Monitoring</EM>. If you have connected your <a href="https://community.sap.com/t5/c-khhcw49343/SAP+BTP%25252C+ABAP+environment/pd-p/73555000100800001164" class="lia-product-mention" data-product="11-3">SAP BTP, ABAP environment</a> or&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+S%25252F4HANA+Cloud+ABAP+Environment/pd-p/60907aa9-99e9-4d5d-9103-8b970e9bc0a4" class="lia-product-mention" data-product="39-3">SAP S/4HANA Cloud ABAP Environment</a> tenant to <a href="https://community.sap.com/t5/c-khhcw49343/SAP+Cloud+ALM/pd-p/73554900100800002513" class="lia-product-mention" data-product="469-1">SAP Cloud ALM</a>, you’ll receive a counter per capture request statistics profile in <a href="https://community.sap.com/t5/c-khhcw49343/SAP+Cloud+ALM/pd-p/73554900100800002513" class="lia-product-mention" data-product="469-2">SAP Cloud ALM</a> <EM>for Operations</EM> in the <EM>Health Monitoring</EM> app. You can find more information on how to connect your tenant to SAP Cloud ALM here:</P><UL><LI><SPAN><A href="https://developers.sap.com/tutorials/abap-environment-monitoring-calm-health-monitoring.html" target="_blank" rel="noopener noreferrer">Monitor An SAP BTP ABAP Environment Service Using SAP Cloud ALM (CALM)</A></SPAN></LI><LI><SPAN><A href="https://support.sap.com/en/alm/sap-cloud-alm/operations/expert-portal/setup-managed-services/setup-s4hana-cloud.html" target="_blank" rel="noopener noreferrer">Setup for SAP S/4HANA Public Cloud Edition</A></SPAN></LI></UL><P>For our custom profile example <EM>Z_STATIC_PROFILE</EM>, you’ll find the tile <EM>Captured ABAP Statistics Records</EM> in the <EM>Health Monitoring</EM> app in your connected <a href="https://community.sap.com/t5/c-khhcw49343/SAP+Cloud+ALM/pd-p/73554900100800002513" class="lia-product-mention" data-product="469-3">SAP Cloud ALM</a> tenant. If you click on the tile for details, you find your custom profile together with a counter</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SAP Cloud ALM - Health Monitoring" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95619i39178717905FCFEA/image-size/large?v=v2&amp;px=999" role="button" title="CALM_Health_Monitoring.png" alt="SAP Cloud ALM - Health Monitoring" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">SAP Cloud ALM - Health Monitoring</span></span></P><P><SPAN>This counter is normalized to 5 minutes. This means that during the last 5 minutes, 27 ABAP statistics records were captured in your ABAP tenant that fulfill the filter conditions that you have defined in your custom profile. Besides this usage scenario, you can also use the </SPAN><EM>Health Monitoring</EM><SPAN> feature on capture profiles with static thresholds (like in the case of the pre-delivered static SAP profiles) to count how often your defined thresholds are exceeded. For more information, see also the blog post </SPAN><SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/monitoring-the-performance-of-outbound-communication-in-the-abap/ba-p/13566730" target="_blank">Monitoring the Performance of Outbound Communication in the ABAP Environment in the Cloud</A></SPAN><SPAN>.</SPAN></P><P>If you want to get alerted by email when the filter conditions of your profile are hit a certain number of times, you can configure alerts in <a href="https://community.sap.com/t5/c-khhcw49343/SAP+Cloud+ALM/pd-p/73554900100800002513" class="lia-product-mention" data-product="469-4">SAP Cloud ALM</a> in the <EM>Health Monitoring</EM> app. For more information, see the blog post <A href="https://community.sap.com/t5/technology-blogs-by-sap/monitoring-the-health-of-the-abap-system-in-the-cloud/ba-p/13570209" target="_blank">Monitoring the Health of the ABAP System in the Cloud</A>.</P><H3 id="toc-hId-138263438"><SPAN class=""><SPAN class=""><SPAN class=""><SPAN class=""><SPAN class="">Summary</SPAN></SPAN></SPAN></SPAN></SPAN></H3><P>The default configuration of your <a href="https://community.sap.com/t5/c-khhcw49343/SAP+BTP%25252C+ABAP+environment/pd-p/73555000100800001164" class="lia-product-mention" data-product="11-4">SAP BTP, ABAP environment</a> or <a href="https://community.sap.com/t5/c-khhcw49343/SAP+S%25252F4HANA+Cloud+ABAP+Environment/pd-p/60907aa9-99e9-4d5d-9103-8b970e9bc0a4" class="lia-product-mention" data-product="39-4">SAP S/4HANA Cloud ABAP Environment</a> tenant comes with pre-delivered SAP profiles that capture ABAP statistics records for the most important workload in your system. This helps you analyze and understand your system workload in detail.</P><P><SPAN>However, if you want to enhance this default configuration, you can do so by creating your own profiles using the <EM>Capture Request Statistics</EM> app. The monitoring data collector ensures that requests that fulfill </SPAN><SPAN>your filter conditions are captured and stored in the system for further analysis. You can define profiles for capturing ABAP statistics records and for capturing SQL statements.</SPAN></P><P><SPAN>Let’s quickly recap in which use cases creating your own profiles in the <EM>Capture Request Statistics</EM> app is useful: </SPAN></P><UL><LI>In your standard system-local analysis of the system behavior, detailed statistics are missing for a certain workload that you need to have at hand.</LI><LI>You want to proactively capture extensive details for a workload of your choice to analyze it in detail.</LI><LI>In <a href="https://community.sap.com/t5/c-khhcw49343/SAP+Cloud+ALM/pd-p/73554900100800002513" class="lia-product-mention" data-product="469-5">SAP Cloud ALM</a>, you want to understand how often your workload in the landscape hits certain criteria (= your filter conditions defined in the profiles), and you want to get alerted in this case</LI></UL><P>I’d like to thank everyone who contributed to this blog post, especially my colleagues <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/852125">@anke_griesbaum</a>, <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/5052">@Karen_Kuck</a>, <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/1803">@SabineReich</a>, and <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/220841">@steffen_siegmund</a>.</P><P>Let me know in the comments if and how you’ve used the <EM>Capture Request Statistics</EM> app and what you think of it.</P> 2024-04-18T13:02:05.620000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/analyze-expensive-abap-workload-in-the-cloud-with-work-process-sampling/ba-p/13675553 Analyze Expensive ABAP Workload in the Cloud with Work Process Sampling 2024-04-19T15:56:01.041000+02:00 sebastian_kusch https://community.sap.com/t5/user/viewprofilepage/user-id/508815 <P>As an administrator or developer in the ABAP environment in the cloud, you need to keep track of the workload that kept your system busy throughout the day or at specific points in time. You want to check how many of your work processes are or were occupied with what kind of workload, consuming how much ABAP CPU time and main memory. Finally, you want to find out which ABAP coding was responsible for the high consumption of these resources.&nbsp;</P><P>In this blog post, I’d like to show you how you can use the <EM>Sampled Work Process Data</EM> app to analyze concurrent workload and resource consumption and to find the root cause of a performance problem.</P><P>&nbsp;</P><H1 id="toc-hId-863533218"><STRONG>Sampled Work Process Data App vs. Other Tools</STRONG></H1><P>Maybe you are already familiar with the <EM>System Workload</EM> app that provides an overview of the ABAP workload in your system. The following blog post gives you an insight with examples:</P><P><U><A href="https://community.sap.com/t5/technology-blogs-by-sap/analyzing-performance-degradations-in-the-abap-environment-in-the-cloud/ba-p/13557456" target="_blank">Analyzing Performance Degradations in the ABAP Environment in the Cloud</A></U></P><P>The ABAP system provides two data capturing mechanisms for the ABAP workload: ABAP statistics records and ABAP work process samples. The different strategies for data collection and timing aspects are explained in the following documentation on SAP Help Portal:</P><P><A href="https://help.sap.com/docs/btp/technical-monitoring-cockpit-cloud-version/monitoring-system-workload-data-provisioning" target="_blank" rel="noopener noreferrer">Monitoring the System Workload: Data Collection and Focus of Available Apps | SAP Help Portal</A></P><P>Both data capturing strategies are designed to cover different scenarios. You can read more about the supported monitoring use cases in the following documentation on SAP Help Portal:</P><P><A href="https://help.sap.com/docs/btp/technical-monitoring-cockpit-cloud-version/monitoring-system-workload-apps-and-their-use-cases" target="_blank" rel="noopener noreferrer">Monitoring the System Workload: Apps and Their Use Cases | SAP Help Portal</A></P><P>The ABAP statistics data of the <EM>System Workload</EM> app is persisted after the respective processing step has finished. In addition, the data on CPU time and main memory consumption is only available for the entire processing step, so you can’t determine if any interesting "hotspot" is hiding somewhere in the ABAP coding, let alone where they’re precisely located in the code.</P><P><SPAN>You might also have heard about - or already used - the ABAP Profiler, which creates ABAP traces that provide detailed insights into your program, its resource consumption and potential "hotspots" in your coding. However, using the ABAP Profiler requires you to explicitly activate it before running any specific program or application. This means that retrospective analysis is not possible. Furthermore, the results are usually limited to your application only, or at best a subset of the workload in the system. Other software running concurrently, which may cause resource bottlenecks, is not considered.</SPAN><SPAN>&nbsp;</SPAN>For more information about the ABAP Profiler, please refer to the following documentation on SAP Help Portal:</P><P><A href="https://help.sap.com/docs/abap-cloud/abap-development-tools-user-guide/profiling-abap-code?version=sap_btp" target="_blank" rel="noopener noreferrer">Profiling ABAP Code | SAP Help Portal</A></P><P>If you want to detect a large resource consumption immediately <SPAN>&nbsp;</SPAN>or detect the responsible code location without activating any tracing, you’d rather use the <EM>Sampled Work Process Data</EM> app.</P><P>&nbsp;</P><H1 id="toc-hId-667019713"><STRONG>Get an Overview of the ABAP CPU Time Consumption</STRONG></H1><P><STRONG>&nbsp;</STRONG>On the SAP Fiori launchpad of the ABAP environment in SAP BTP, I went to the <EM>Technical Monitoring</EM> area and chose the <EM>Sampled Work Process Data</EM> app. This app is available for administrator and developer roles.<SPAN>&nbsp;</SPAN></P><P>On the entry screen of the app, I get an overview of the ABAP CPU time consumption for the last 24 hours with a resolution of ten minutes. I can easily adjust the time range and the resolution using the time slider at the top.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Time Slider" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/98593i61C63D21ECC77A2F/image-size/large?v=v2&amp;px=999" role="button" title="2024-03-04_15-22-58.jpg" alt="Time Slider" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Time Slider</span></span></P><P>I can even change to a granularity of single seconds. Of course, this only makes sense for a total time range of much less than 24 hours, such as 1 minute, for instance.</P><P>In the upper part of the screen, there’s a graphical overview drilled down by the <EM>Request Entry Type</EM> (for example, <EM>OData v4</EM> or <EM>SQL Service</EM>). In the lower part of the screen, there’s a table that lists the top 10 consumers with more detailed characteristics, such as the <EM>Request Entry Name</EM>. Additionally, there’s a metric that indicates the overall ABAP CPU utilization as a percentage over time. This is represented by the black line in the screenshot below, with a scale located on the right side.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ABAP CPU Time Overview" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/98611i3BC376181C22D131/image-size/large?v=v2&amp;px=999" role="button" title="2024-04-19_09-48-26.jpg" alt="ABAP CPU Time Overview" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">ABAP CPU Time Overview</span></span></P><H1 id="toc-hId-470506208"><STRONG>A</STRONG><STRONG>nalyze Concurrent Workload and Resource Consumption</STRONG></H1><P><SPAN>The entry screen provides four different metrics to depict resource consumption. These metrics include ABAP CPU time, main memory, and dialog and background work process utilization. Speaking of filters, you can use the filters for </SPAN><EM>Transaction Code</EM><SPAN>, </SPAN><EM>Request Entry Type</EM><SPAN>, </SPAN><EM>Request Entry Name</EM><SPAN>, </SPAN><EM>Tenant ID</EM><SPAN> and </SPAN><EM>WM Process Class ID</EM><SPAN> to focus on what you are really interested in:</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Filter and Drilldown" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/98618i696D8341DB1B6AA7/image-size/large?v=v2&amp;px=999" role="button" title="2024-04-19_09-53-03.jpg" alt="Filter and Drilldown" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Filter and Drilldown</span></span></P><P>Filter values can be precise values or wildcards.</P><P>When it comes to drilldown, you might be interested in drilling down according to other characteristics or a more fine-grained resolution of the depicted workload. On the upper right, you can define the set of characteristics that the drilldown is based on:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Adjusting the Drilldown" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/98620i8BD9CE528E8DDE15/image-size/large?v=v2&amp;px=999" role="button" title="2024-04-19_09-54-49.jpg" alt="Adjusting the Drilldown" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Adjusting the Drilldown</span></span></P><P>By default, this is only the <EM>Request Entry Type</EM>. However, you can also select the <EM>Transaction Code</EM>, <EM>Request Entry Name</EM>, <EM>Tenant ID</EM> and <EM>WM Process Class ID</EM>, either individually or in any combination that is appropriate for your specific use case. This allows you to investigate concurrent resource consumption in different dimensions. In the chart below, the top values of your drilldown characteristics (in this case, just the <EM>Request Entry Name</EM>) are displayed accordingly:</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ABAP CPU Time Drilled Down by the Request Entry Name" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/98621i07BE60C68C283905/image-size/large?v=v2&amp;px=999" role="button" title="2024-04-19_09-56-04.jpg" alt="ABAP CPU Time Drilled Down by the Request Entry Name" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">ABAP CPU Time Drilled Down by the Request Entry Name</span></span></P><P>In the chart, you can clearly identify which types of workloads are competing <STRONG>concurrently</STRONG> for resources within the same 10 minutes interval. By adjusting the time slider, you can also choose much finer granularities.</P><P><STRONG>Note: </STRONG>Please be aware that the work process sampling is, as the name suggests, based on samples (snapshots) of the work process data provided by the ABAP kernel that are taken once per second. The ABAP CPU time consumption is then calculated as the delta between consecutive samples. This means that only expensive workloads running for more than a second are displayed as relevant ABAP CPU time consumers.</P><P>&nbsp;</P><H1 id="toc-hId-273992703"><STRONG>Reveal the Root Cause of Performance Problems</STRONG></H1><P>Now let’s assume that we don’t have a uniform distribution of the workload as in the example above. Instead, one of the <EM>Request Entry Name</EM> values is popping up again and again, for example, around 09:30 a.m.:&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ABAP CPU Time with an Expensive Workload" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/98622i672C9EB82D7CCC09/image-size/large?v=v2&amp;px=999" role="button" title="2024-04-12_11-35-57.jpg" alt="ABAP CPU Time with an Expensive Workload" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">ABAP CPU Time with an Expensive Workload</span></span></P><P>I click on the bar in the chart as shown in the above screenshot (which filters for the respective <EM>Request Entry Name</EM> <STRONG>and</STRONG> time interval) and then on the <EM>Details</EM> arrow on the right of a table row. This takes me to the <EM>Request Entry Point</EM> screen for the ABAP CPU time. (If I had switched to the <EM>Main Memory</EM> or another aspect before, I would arrive at a corresponding detail view for that metric, of course.) Since I have also selected a specific time interval, I get a zoomed-in view with a resolution of single seconds, here for the time range between 09:20 and 09:30:</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Request Entry Point Screen with a Resolution of Single Seconds" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/98623i70240CC009284DA8/image-size/large?v=v2&amp;px=999" role="button" title="2024-04-12_09-45-22.jpg" alt="Request Entry Point Screen with a Resolution of Single Seconds" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Request Entry Point Screen with a Resolution of Single Seconds</span></span></P><P>This screens also offers a graphical overview over time, along with further details in the table. However, the drilldown characteristic in the chart is the <EM>Current Program Name</EM>, that is the name of the coding artifact (typically a class name) that was being executed when the sample was created. This chart may already give you a pretty good understanding of which parts of your application (on a technical level in terms of ABAP coding that is run) are expensive and where you may find optimization potential (as shown in the screenshot below). Clicking on the legend or directly on the chart filters the table data accordingly. You can zoom in and zoom out, as on the previous screens. The lower part of the screen shows a list of single work process samples, which include detailed characteristics and metrics describing the work process at specific points in time.</P><P>In this case, we can recognize two executions of the same workload that were both running for two and a half minutes. During the execution, the CPU time consumption per second was often close to 1000 milliseconds.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="“Most Prominent” Current Program Name in Our Example" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/98624iDB3F06E1F8C3F6CE/image-size/large?v=v2&amp;px=999" role="button" title="2024-04-12_09-45-22-2.jpg" alt="“Most Prominent” Current Program Name in Our Example" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">“Most Prominent” Current Program Name in Our Example</span></span></P><P>Now I click on the <EM>Details</EM> arrow at the end of a row in the table, which leads me to the <EM>Single Work Process Sample</EM> object page with even more details:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Characteristics on the Object Page" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/98625i9C9A33284381D424/image-size/large?v=v2&amp;px=999" role="button" title="2024-04-12_09-51-35.jpg" alt="Characteristics on the Object Page" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Characteristics on the Object Page</span></span></P><P>For a database-intensive scenario, you have the option to navigate further to the ABAP statistics record using the link on the upper right of the screen. On the <EM>ABAP Statistics Record</EM> screen, you can find – among other things – detailed data about the HANA processing time and the single expensive SQL statements, as explained in the blog post about the <EM>System Workload</EM> app mentioned at the beginning of this blog post.</P><P>Now let’s go back to the <EM>Single Work Process Sample</EM> object page. Here, I can also switch to the <EM>Work Process: Metrics</EM> tab page of the object page to learn, for instance, about the number of table entries transferred between the application server and the database within the last second before this sample was taken:</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Metrics on the Object Page" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/98626i6F6A04893453B078/image-size/large?v=v2&amp;px=999" role="button" title="2024-04-12_09-53-09.jpg" alt="Metrics on the Object Page" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Metrics on the Object Page</span></span></P><P>In this ABAP CPU-intensive scenario<SPAN>&nbsp;</SPAN>, work process sampling can help directly identify whether there’s room for improvement. You can recognize that your application is CPU-intensive if many single samples have a CPU time consumption that’s not too far from 1 second, as is the case here.</P><P>Typical defects include expensive operations on large internal tables. On the <EM>ABAP Stack Trace</EM> tab page of the object page, I can check whether this is the reason for poor performance:</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ABAP Stack Trace on the Object Page" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/98627iFCE8626D00B26DB3/image-size/large?v=v2&amp;px=999" role="button" title="2024-04-12_09-54-02.jpg" alt="ABAP Stack Trace on the Object Page" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">ABAP Stack Trace on the Object Page</span></span></P><P>By navigating from here to ABAP development tools for Eclipse (ADT) or an HTML viewer (by clicking on the <EM>Details</EM> arrow next to a line in the table), I can easily jump to the respective code where, in our simple example, a LOOP statement is executed on an internal table.</P><P><STRONG>Note</STRONG>: In the case of single expensive statements (typically a READ TABLE or a LOOP statement, as in our example here, or a long-running Open SQL statement), the ABAP kernel – when regaining control and returning a stack trace –usually points to the <STRONG>next</STRONG> statement (the one directly following the really expensive one). Thus, we shouldn’t be concerned about the IF statement, but rather the LOOP statement.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ABAP Code Behind the Performance Glitch" style="width: 661px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/98628iD530ED1AAA016741/image-size/large?v=v2&amp;px=999" role="button" title="2024-04-12_09-56-41.jpg" alt="ABAP Code Behind the Performance Glitch" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">ABAP Code Behind the Performance Glitch</span></span></P><H1 id="toc-hId-77479198"><STRONG>Verify the Impact of Performance Improvements</STRONG></H1><P>In this simple example, the performance of the statement can be significantly improved by introducing a secondary key. In addition, we slightly adjust the LOOP statement by referring to the secondary key:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Enhancement of the Static Attribute ST_PIERS" style="width: 532px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/98629iAA0A542B27049E8D/image-size/large?v=v2&amp;px=999" role="button" title="2024-04-12_10-25-55.jpg" alt="Enhancement of the Static Attribute ST_PIERS" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Enhancement of the Static Attribute ST_PIERS</span></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Loop Statement Using the Secondary Key" style="width: 421px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/98630i10F6857C0301CD62/image-size/large?v=v2&amp;px=999" role="button" title="2024-04-12_11-26-52.jpg" alt="Loop Statement Using the Secondary Key" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Loop Statement Using the Secondary Key</span></span></P><P>We can assess the impact of this tiny change by inspecting the time interval from 10:00 to 10:10 a.m., during which the same workload was run again. This can be done on both the <EM>Sampled Work Process Data</EM> entry screen ...</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sampled Work Process Data Screen After Fixing the Issue" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/98631iAA7E91B2DAD2FE79/image-size/large?v=v2&amp;px=999" role="button" title="2024-04-12_19-20-29.jpg" alt="Sampled Work Process Data Screen After Fixing the Issue" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Sampled Work Process Data Screen After Fixing the Issue</span></span></P><P>...and the <EM>Request Entry Point</EM> screen by selecting the respective time interval.&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Request Entry Point Screen After Fixing the Issue" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/98632i0FA78025CBEF453C/image-size/large?v=v2&amp;px=999" role="button" title="2024-04-12_10-24-24.jpg" alt="Request Entry Point Screen After Fixing the Issue" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Request Entry Point Screen After Fixing the Issue</span></span></P><P>We can clearly recognize that now two executions of the same workload finish within seconds and that the FIND_RELATION_DATA method does not even show up in any of the collected work process samples anymore. Here are both versions of the workload in direct comparison on the <EM>Request Entry Point</EM> screen:</P><P><STRONG><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Non-Optimized and Optimized Workload on the Request Entry Point Screen" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/98634i23CFD8A5D605C9AF/image-size/large?v=v2&amp;px=999" role="button" title="2024-04-12_19-52-14.jpg" alt="Non-Optimized and Optimized Workload on the Request Entry Point Screen" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Non-Optimized and Optimized Workload on the Request Entry Point Screen</span></span></STRONG></P><H1 id="toc-hId--119034307"><STRONG>Conclusion</STRONG></H1><P>The <EM>Sampled Work Process Data</EM> app in the <EM>Technical Monitoring</EM> area of the SAP Fiori launchpad in an ABAP environment in the cloud gives you a lot of insights into concurrent workload in your system and lets you glance under the hood of ABAP CPU or memory intensive applications. It bridges the gap between apps based on ABAP statistics records and tracing tools like the ABAP Profiler.</P><P>I’d like to thank everyone who contributed to this blogpost, especially my colleagues anke.griesbaum, christian.cop, steffen.siegmund, ingrid.mautes, karen.kuck and sabine.reich.</P><P>For more information, refer to the following documentation on SAP Help Portal:</P><P><A href="https://help.sap.com/docs/btp/technical-monitoring-cockpit-cloud-version/sampled-work-process-data" target="_blank" rel="noopener noreferrer">Sampled Work Process Data | SAP Help Portal</A></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> 2024-04-19T15:56:01.041000+02:00 https://community.sap.com/t5/technology-blogs-by-members/how-to-improve-the-adt-class-runner-with-additional-features/ba-p/13673454 How to improve the ADT Class Runner with additional Features 2024-04-24T10:28:47.088000+02:00 alrikx https://community.sap.com/t5/user/viewprofilepage/user-id/667134 <H1 id="toc-hId-863472676">What is a Class Runner?</H1><P>A class runner is a great tool to test code snippets and run code directly from ADT. You can even write a simple log to the console in Eclipse.</P><H1 id="toc-hId-666959171">What can be improved?</H1><P>When using multiple systems and complex projects I got annoyed at some point in time, that I don't know from which system the last log was, when it was written by which runner and if the last execution has finished or failed maybe.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="alrikx_0-1713355929685.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97602iF5D9B10CAFFE4AD7/image-size/medium?v=v2&amp;px=400" role="button" title="alrikx_0-1713355929685.png" alt="alrikx_0-1713355929685.png" /></span></P><P>Thats when I started my own class runner that have some improved capabilities.</P><H1 id="toc-hId-470445666">How does it look like?</H1><P>The output looks like this:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="alrikx_1-1713356469986.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97605i7DE14F717A6836D3/image-size/large?v=v2&amp;px=999" role="button" title="alrikx_1-1713356469986.png" alt="alrikx_1-1713356469986.png" /></span></P><UL><LI>You see when, what, by whom and where it was started.</LI><LI>For every log entry you get a timestamp.</LI><LI>You see when the execution finished.</LI><LI>All times and dates are formatted in your personal date and time format</LI></UL><P>What about the ABAP code?&nbsp;Your code gets defined in the logic() method.</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>CLASS zcl_runner_demo DEFINITION PUBLIC INHERITING FROM zcl_base_runner FINAL CREATE PUBLIC . PUBLIC SECTION. METHODS: logic REDEFINITION. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_runner_demo IMPLEMENTATION. METHOD logic. write( `Hello World` ). write( `this is a demo of the enhanced class runner` ). write( 123 ). ENDMETHOD. ENDCLASS.</code></pre><P>&nbsp;</P><H2 id="toc-hId-403014880">Methods write() and out-&gt;write()</H2><P>The write() method has the same signature as the out-&gt;write() method, you can even access the original out-&gt;write() if needed.</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code> METHOD logic. write( `Hello World` ). write( `this is a demo of the enhanced class runner` ). write( 123 ). out-&gt;write( `bare write` ). ENDMETHOD.</code></pre><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="alrikx_2-1713360807380.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97625i83B4D296DCEBC471/image-size/large?v=v2&amp;px=999" role="button" title="alrikx_2-1713360807380.png" alt="alrikx_2-1713360807380.png" /></span></P><P>of course you can pass structured and table data to write(), like you can do to out-&gt;write()</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code> METHOD logic. DATA ls_airport type /dmo/airport. write( `Hello World` ). ls_airport = value #( airport_id = 'SAP' city = 'Dokkerland' ). write( ls_airport ). write( name = 'Info about airport' data = ls_airport ). ENDMETHOD.</code></pre><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="alrikx_0-1713363223717.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97650iE1D4AEB3F9540667/image-size/large?v=v2&amp;px=999" role="button" title="alrikx_0-1713363223717.png" alt="alrikx_0-1713363223717.png" /></span></P><H2 id="toc-hId-206501375">Uncaught exceptions</H2><P>Method logic is secured against uncaught exceptions.&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code> METHOD logic. write( `Hello World` ). raise EXCEPTION new cx_abap_invalid_name( ). ENDMETHOD.</code></pre><P>&nbsp;</P><P>It logs the behaviour:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="alrikx_0-1713361297623.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97629i80B87F80198E38AF/image-size/large?v=v2&amp;px=999" role="button" title="alrikx_0-1713361297623.png" alt="alrikx_0-1713361297623.png" /></span></P><H1 id="toc-hId--119094849">How does it look under the hood?</H1><P>It is basically an abstract class that wraps the original ADT class runner:</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>"! &lt;p class="shorttext synchronized" lang="en"&gt;Base Runner&lt;/p&gt; "! Improved class runner with enhanced logging capabilities CLASS zcl_base_runner DEFINITION PUBLIC ABSTRACT CREATE PUBLIC. PUBLIC SECTION. INTERFACES if_oo_adt_classrun . "! &lt;p class="shorttext synchronized" lang="en"&gt;This method implements your logic&lt;/p&gt; "! You can use { .METH:write } with enhanced capabilities or the { .DATA:out }-&gt;write( ) for plain logging. "! @raising cx_root | &lt;p class="shorttext synchronized" lang="en"&gt;any exception not caught, will be handled in the runner.&lt;/p&gt; METHODS logic ABSTRACT RAISING cx_root. CLASS-METHODS convertuuid IMPORTING str TYPE string RETURNING VALUE(rv_uuid) TYPE sysuuid_c32. PROTECTED SECTION. DATA out TYPE REF TO if_oo_adt_classrun_out. "! &lt;p class="shorttext synchronized" lang="en"&gt;wrapper for out-&gt;write( )&lt;/p&gt; "! this enhances the default function by writing a timestamp. "! this method should be used in {@link .METH:logic } "! @parameter data | &lt;p class="shorttext synchronized" lang="en"&gt;&lt;/p&gt; "! @parameter name | &lt;p class="shorttext synchronized" lang="en"&gt;&lt;/p&gt; METHODS write IMPORTING data TYPE any name TYPE string OPTIONAL. PRIVATE SECTION. "! &lt;p class="shorttext synchronized" lang="en"&gt;determine the current timestamp and returns as string&lt;/p&gt; "! &lt;ul&gt;&lt;li&gt;in users timezone&lt;/li&gt;&lt;li&gt;in users prefered format&lt;/li&gt;&lt;/ul&gt; "! @parameter rv_dateandtime | &lt;p class="shorttext synchronized" lang="en"&gt;&lt;/p&gt; CLASS-METHODS getCurrentDateandTimeFormatted RETURNING VALUE(rv_dateandtime) TYPE string. "! &lt;p class="shorttext synchronized" lang="en"&gt;draws a horizontal line on the console&lt;/p&gt; "! "! @parameter out | &lt;p class="shorttext synchronized" lang="en"&gt;&lt;/p&gt; CLASS-METHODS horizontalLine IMPORTING out TYPE REF TO if_oo_adt_classrun_out. ENDCLASS. CLASS zcl_base_runner IMPLEMENTATION. METHOD if_oo_adt_classrun~main. me-&gt;out = out. horizontalline( out ). TRY. out-&gt;write( |Start on { xco_cp=&gt;current-&gt;tenant( )-&gt;get_url( io_type = xco_cp_tenant=&gt;url_type-&gt;ui )-&gt;get_host( ) } runner { cl_abap_classdescr=&gt;get_class_name( me ) } by { cl_abap_context_info=&gt;get_user_formatted_name( ) }| &amp;&amp; | at { getcurrentdateandtimeformatted( ) }| ). CATCH cx_abap_context_info_error INTO DATA(lc_context_error). "handle exception out-&gt;write( 'Error occured in determine current user:' ). out-&gt;write( lc_context_error-&gt;get_text( ) ). ENDTRY. TRY. me-&gt;logic( ). CATCH cx_root INTO DATA(lc_error). "handle exception write( 'Error occured in executing the logic:' ). write( lc_error-&gt;get_text( ) ). DATA(previous) = lc_error-&gt;previous. IF lc_error-&gt;previous IS BOUND. write( name = 'Previous' data = lc_error-&gt;previous-&gt;get_text( ) ). ENDIF. ENDTRY. out-&gt;write( |Done at { getcurrentdateandtimeformatted( ) }| ). horizontalline( out ). ENDMETHOD. METHOD write. DATA(descr_ref) = cl_abap_typedescr=&gt;describe_by_data( data ). IF name IS INITIAL. IF descr_ref IS INSTANCE OF cl_abap_elemdescr. out-&gt;write( data = |{ getcurrentdateandtimeformatted( ) }: { data }| ). ELSE. out-&gt;write( data = |{ getcurrentdateandtimeformatted( ) }:| ). out-&gt;write( data = data ). ENDIF. ELSE. IF descr_ref IS INSTANCE OF cl_abap_elemdescr. out-&gt;write( data = |{ getcurrentdateandtimeformatted( ) }: { Name }:{ data }| ). ELSE. out-&gt;write( data = |{ getcurrentdateandtimeformatted( ) }: { Name }:| ). out-&gt;write( data = data ). ENDIF. ENDIF. ENDMETHOD. METHOD getcurrentdateandtimeformatted. DATA tsp TYPE tzntstmps. DATA(lo_unix_timestamp) = xco_cp=&gt;sy-&gt;unix_timestamp( ). DATA(lo_moment) = lo_unix_timestamp-&gt;get_moment( xco_cp_time=&gt;time_zone-&gt;user ). tsp = lo_moment-&gt;as( xco_cp_time=&gt;format-&gt;abap )-&gt;value. rv_dateandtime = |{ tsp TIMESTAMP = USER }|. ENDMETHOD. METHOD horizontalline. out-&gt;write( repeat( val = '-' occ = 120 ) ). ENDMETHOD. METHOD convertuuid. DATA(lo_uuid) = xco_cp_uuid=&gt;format-&gt;c36-&gt;to_uuid( str ). rv_uuid = xco_cp_uuid=&gt;format-&gt;c32-&gt;from_uuid( lo_uuid ). ENDMETHOD. ENDCLASS.</code></pre><P>&nbsp;</P><H1 id="toc-hId--315608354">Summary</H1><P>The improved class runner is a tool that supports <a href="https://community.sap.com/t5/c-khhcw49343/SAP+NetWeaver/pd-p/01200314690800000134" class="lia-product-mention" data-product="730-1">SAP NetWeaver</a>,&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+S%25252F4HANA/pd-p/73554900100800000266" class="lia-product-mention" data-product="799-1">SAP S/4HANA</a>&nbsp;and <a href="https://community.sap.com/t5/c-khhcw49343/SAP+BTP%25252C+ABAP+environment/pd-p/73555000100800001164" class="lia-product-mention" data-product="11-1">SAP BTP, ABAP environment</a>, basically everywhere the class runner is supported.</P><P>I put in a function for UUID conversion that I used in one of my last projects a lot, of course its optional.</P><P>It would be easy to extend this logic for application job execution too. All you need is an additional wrapper that rewrites the write method to append an application log and calls the logic method from the application job.</P><P>Feel free to share, reuse and enhance this idea.</P><P><SPAN>If you like this post or it helped you, don't hesitate to give kudos.</SPAN></P> 2024-04-24T10:28:47.088000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/customer-amp-partner-roundtable-for-sap-btp-abap-environment-12/ba-p/13681342 Customer & Partner Roundtable for SAP BTP ABAP Environment #12 2024-04-24T20:33:53.136000+02:00 iwona_hahn https://community.sap.com/t5/user/viewprofilepage/user-id/4326 <DIV class=""><DIV class=""><DIV class=""><H3 id="toc-hId-1122501059"><STRONG><SPAN class="lia-unicode-emoji"><span class="lia-unicode-emoji" title=":backhand_index_pointing_right:">👉</span></SPAN>&nbsp;The call for contributions for one of the upcoming roundtables is open!&nbsp;</STRONG></H3><P>&nbsp;</P><DIV><TABLE><TBODY><TR><TD>If you want to show a demo or share a use case scenario for SAP BTP ABAP Environment send us an<SPAN>&nbsp;</SPAN><A href="mailto:sap_btp_abap_environment@sap.com" target="_blank" rel="noopener nofollow noreferrer">email</A>&nbsp;and we will get back to you.</TD></TR></TBODY></TABLE><SPAN>&nbsp;</SPAN></DIV><H2 id="toc-hId-796904835">Introduction</H2><P>&nbsp;</P><DIV><SPAN class="">A</SPAN><SPAN class="">s<SPAN>&nbsp;</SPAN></SPAN><A class="" href="https://www.sap.com/products/technology-platform/abap.html" target="_blank" rel="noreferrer noopener"><SPAN class="">SAP&nbsp;BTP&nbsp;ABAP&nbsp;environment (aka Steampunk)</SPAN></A><SPAN>&nbsp;</SPAN>and ABAP Cloud<SPAN>&nbsp;</SPAN><SPAN class="">became&nbsp;more&nbsp;</SPAN><SPAN class="">and more popular</SPAN><SPAN class=""><SPAN>&nbsp;</SPAN>inside and outside of SAP, there is a high demand for rolling out the latest product news and updates, asking questions, and of course showing demos.&nbsp;</SPAN><BR /><BR /><SPAN class="lia-unicode-emoji"><span class="lia-unicode-emoji" title=":light_bulb:">💡</span></SPAN>&nbsp;If you weren’t able to join one of our previous roundtables, you can find the slides presented, recordings, and further references in this<SPAN>&nbsp;</SPAN><A href="https://github.com/iwonahahn/SAP-BTP-ABAP-Environment-Roundtable/tree/main" target="_blank" rel="noopener nofollow noreferrer">GitHub repository</A>.<BR /><BR /></DIV><DIV><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="iwona_hahn_1-1711369871866.jpeg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/85948i899EEF37EF74A54C/image-size/medium?v=v2&amp;px=400" role="button" title="iwona_hahn_1-1711369871866.jpeg" alt="iwona_hahn_1-1711369871866.jpeg" /></span><H2 id="toc-hId-600391330"><BR />Meeting Information<BR /><BR /></H2><STRONG>When:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</STRONG><BR /><UL><LI><STRONG><SPAN class="">May 23rd</SPAN></STRONG>, 10:00 - 11:00 AM CET&nbsp; –<SPAN>&nbsp;</SPAN><A href="https://sap-se.zoom.us/meeting/register/tJEkcOmorzgpE9PZ39C4oRrLL3KjV2OuzJPq" target="_blank" rel="nofollow noopener noreferrer">Zoom Meeting</A>&nbsp;(<STRONG>please register</STRONG><SPAN>&nbsp;</SPAN>in advance)&nbsp;</LI></UL></DIV><DIV>&nbsp;</DIV><DIV><STRONG>Who:</STRONG><UL><LI>All interested&nbsp;<STRONG>customers, partners,</STRONG>&nbsp;and&nbsp;<STRONG>stakeholders</STRONG>&nbsp;are invited to join and exchange ideas and feedback with others and the product team</LI><LI><STRONG>Steampunk team</STRONG>:&nbsp;<STRONG><A href="https://community.sap.com/t5/user/viewprofilepage/user-id/4296" target="_blank">Frank Jentsch</A></STRONG><SPAN>&nbsp;</SPAN><SPAN class="">(Product Lead for SAP BTP ABAP&nbsp;Environment),&nbsp;<A href="https://community.sap.com/t5/user/viewprofilepage/user-id/387576" target="_blank"><STRONG>Anne Keller </STRONG></A>(<SPAN class="">Chief Development Experts ABAP Cloud Dev Tools</SPAN>),&nbsp;<A href="https://community.sap.com/t5/user/viewprofilepage/user-id/185696" target="_blank"><STRONG>Thomas Alexander Ritter </STRONG></A>(Area Product Owner&nbsp;<SPAN class="">ABAP Cloud Dev Tools)</SPAN>,&nbsp;</SPAN><STRONG><A href="https://community.sap.com/t5/user/viewprofilepage/user-id/4326" target="_self"><SPAN class="">Iwona Hahn</SPAN></A></STRONG>&nbsp;&amp;&nbsp;<STRONG><A href="https://community.sap.com/t5/user/viewprofilepage/user-id/151005" target="_self">Burcu Karlidag</A></STRONG><SPAN class="">&nbsp;(BTP ABAP Product Manager)</SPAN><BR /><BR /></LI></UL></DIV><DIV><STRONG>Preliminary Agenda:</STRONG><BR /><UL><LI>Product news</LI><LI><SPAN class="">New features of 2405 release</SPAN></LI><LI><SPAN>E2E Developer Experience for ABAP Cloud incl.&nbsp;demo</SPAN></LI><LI>Q&amp;A</LI></UL><SPAN>Looking forward to meeting you!</SPAN></DIV><DIV>&nbsp;</DIV><DIV><A href="https://sap-se.zoom.us/meeting/register/tJEkcOmorzgpE9PZ39C4oRrLL3KjV2OuzJPq" target="_self" rel="nofollow noopener noreferrer"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="iwona_hahn_2-1711369871851.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/85947i01677A9AE51AAC1D/image-size/medium?v=v2&amp;px=400" role="button" title="iwona_hahn_2-1711369871851.png" alt="iwona_hahn_2-1711369871851.png" /></span></A><BR /><BR /><SPAN>Check out our</SPAN><SPAN>&nbsp;</SPAN><A href="https://pages.community.sap.com/topics/btp-abap-environment" target="_blank" rel="noopener noreferrer">SAP Business Technology ABAP Environment</A><SPAN>&nbsp;page in SAP Community&nbsp;</SPAN><SPAN>for&nbsp;</SPAN><SPAN>product&nbsp;</SPAN><SPAN>updates&nbsp;</SPAN><SPAN>and&nbsp;</SPAN><SPAN>upcoming events.</SPAN><P>&nbsp;</P></DIV></DIV></DIV></DIV><DIV class="">&nbsp;</DIV> 2024-04-24T20:33:53.136000+02:00 https://community.sap.com/t5/technology-blogs-by-members/sap-btp-abap-in-the-cloud-custom-code-transformation-using-abapgit-and-gcts/ba-p/13683259 SAP BTP, ABAP in the Cloud Custom Code Transformation using abapGit and gCTS 2024-04-26T09:09:05.666000+02:00 AnslemArnolda https://community.sap.com/t5/user/viewprofilepage/user-id/490939 <H1 id="toc-hId-864394280">abapGit and gCTS (Git-enabled Change and Transport System)</H1><UL><LI>The basic idea behind abapGit is to exchange source code between any ABAP systems using a Gitbased repository.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_0-1714113883072.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102165iC646DCE9E96802FD/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_0-1714113883072.png" alt="AnslemArnolda_0-1714113883072.png" /></span></P><UL><LI>By introducing gCTS, SAP is aiming for the best of both worlds, that is, repository-based<BR />development where concurrent work on the same object is possible, while retaining all the benefits of<BR />central development.</LI><LI>Following is the process flow for gCTS.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_1-1714113919791.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102166i899E36D3C6AE5650/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_1-1714113919791.png" alt="AnslemArnolda_1-1714113919791.png" /></span></P><UL><LI>You can use gCTS to distribute your custom code through a central repository, which will enable<BR />possible rollbacks before importing to the target system, if required.</LI><LI>You can possibly use abapGit to move your on-premise ABAP objects to SAP BTP, ABAP<BR />environment. In the next section, we’ll demonstrate how to use abapGit to move ABAP objects from<BR />your SAP S/4HANA on-premise environment to SAP BTP, ABAP environment.</LI></UL><H1 id="toc-hId-667880775">Custom Code Transformation Using abapGit</H1><UL><LI>Transforming on-premise ABAP code to SAP BTP requires three primary steps.<UL><LI>Evaluating current code.</LI><LI>Installing abapGit.</LI><LI>Transforming code.</LI></UL></LI></UL><H2 id="toc-hId-600449989">Evaluation of On-Premise code for Compatibility</H2><UL><LI>Make sure that your code is using the ABAP for SAP BTP language version (ABAP for SAP Cloud<BR />Platform).</LI><LI>Once the language version is changed, execute ATC check or transaction SCI to check for any issues.</LI></UL><H2 id="toc-hId-403936484">Installing abapGIT on an On-Premise and as an Eclipse Plugin</H2><H3 id="toc-hId-336505698">On-Premise</H3><UL><LI>Create a new repository on GitHub.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_2-1714114188344.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102167i02751143FEE0025B/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_2-1714114188344.png" alt="AnslemArnolda_2-1714114188344.png" /></span></P><UL><LI>Give a name to the repository and click the “Create Repository” button</LI></UL><P style=" text-align: center; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AnslemArnolda_3-1714114222926.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102169i5DB0297A229CB6FA/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_3-1714114222926.png" alt="AnslemArnolda_3-1714114222926.png" /></span></P><UL><LI>Visit&nbsp;<A href="https://github.com/abapGit/abapGit" target="_self" rel="nofollow noopener noreferrer">https://github.com/abapGit/abapGit</A>&nbsp;and click on the latest build as follows. This simply has the<BR />code for an ABAP report program.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_5-1714114364743.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102174i47EEAC0D202C43FF/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_5-1714114364743.png" alt="AnslemArnolda_5-1714114364743.png" /></span></P><UL><LI>Create a report program on your on-premise SAP system and copy the code you see above into the<BR />program and activate.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_6-1714114415257.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102175i5BE6F6F488A3FE5C/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_6-1714114415257.png" alt="AnslemArnolda_6-1714114415257.png" /></span></P><UL><LI>The following screen should appear once you execute this program</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_7-1714114447825.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102176i2BAF2035C7F0CBE0/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_7-1714114447825.png" alt="AnslemArnolda_7-1714114447825.png" /></span></P><UL><LI><FONT color="#008000">abapGit has now been installed on the on-premise system</FONT></LI></UL><H3 id="toc-hId-139992193">As an Eclipse Plugin</H3><UL><LI>Open ADT-&gt;Help-&gt;Install new software and enter the following URL to load abapGIT for ABAP<BR />development on ADT.<BR /><A href="http://eclipse.abapgit.org/updatesite/" target="_self" rel="nofollow noopener noreferrer">http://eclipse.abapgit.org/updatesite/</A>&nbsp;</LI><LI>Simply click on “Next” and install the plugin</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_8-1714114536582.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102178i85717065602DA68F/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_8-1714114536582.png" alt="AnslemArnolda_8-1714114536582.png" /></span></P><H1 id="toc-hId--314686750"><SPAN>Transform code form on-premise to cloud</SPAN></H1><UL><LI>Visit your GitHub repository and copy the URL corresponding to your repository.<span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_9-1714114638007.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102179i737F4A2577479924/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_9-1714114638007.png" alt="AnslemArnolda_9-1714114638007.png" /></span></LI><LI>Go back to your ABAP report program on the on-premise system, Click new online.<span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_10-1714114679406.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102180iB59390444D374994/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_10-1714114679406.png" alt="AnslemArnolda_10-1714114679406.png" /></span></LI><LI>Paste the URL you copied above to the following location, along with the package that you want to<BR />commit to the Git Repository you created above. This is the package that is in your on-premise<BR />system, which you want to migrate to the cloud environment.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_11-1714114737055.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102181iA9C5475738D5103D/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_11-1714114737055.png" alt="AnslemArnolda_11-1714114737055.png" /></span></P><UL><LI>Click on “Create Online Repo”.</LI><LI>Once the execution is completed, you should see the cloned repository as follows, which is ready to<BR />be committed to the online Git Repository.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_12-1714114776492.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102182i2C73AD2DD11B82D8/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_12-1714114776492.png" alt="AnslemArnolda_12-1714114776492.png" /></span></P><UL><LI>Now click on “stage” and “commit all changes” to the online repository</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_13-1714114813371.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102183i0F62299C7ED0668D/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_13-1714114813371.png" alt="AnslemArnolda_13-1714114813371.png" /></span></P><UL><LI>Give a comment for the commit that you do each time as follows. Click on “Commit”</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_14-1714114841595.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102184i2DD0DA94A426C455/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_14-1714114841595.png" alt="AnslemArnolda_14-1714114841595.png" /></span></P><UL><LI>This will request for your GitHub credentials, to authenticate. Give them and Continue.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_15-1714114868471.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102185i71F02C4E81D65C69/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_15-1714114868471.png" alt="AnslemArnolda_15-1714114868471.png" /></span></P><UL><LI>Once the commit is complete, you should see a message as follows</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_16-1714114894483.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102187i5CC4FC204E1A87D3/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_16-1714114894483.png" alt="AnslemArnolda_16-1714114894483.png" /></span></P><UL><LI>And the source code under the package should be available in your online Git Repository.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_17-1714114920621.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102188i71A2C03399BD2B6C/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_17-1714114920621.png" alt="AnslemArnolda_17-1714114920621.png" /></span></P><UL><LI>Open ADT on Eclipse-&gt; Select Your ABAP in the cloud Project -&gt; Window -&gt; Show -&gt; Other -&gt;<BR />abapGit Repositories.</LI><LI>Click the “Plus” button to link your abapGit Repository to ADT. Give the URL corresponding to your<BR />Git Repository here as well.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_18-1714114954043.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102189i79E8D97B3F282772/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_18-1714114954043.png" alt="AnslemArnolda_18-1714114954043.png" /></span></P><UL><LI>Create a package in your ABAP in the cloud project, to which you will be importing all the supported<BR />objects in your on-premise ABAP package. Here I have given the same package name.</LI><LI>Make sure to put the “Pull after link” tick as well, so the objects will be pulled from your online Git Repository into ABAP in the cloud project.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_19-1714114997143.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102191iC24B7427E2A1821B/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_19-1714114997143.png" alt="AnslemArnolda_19-1714114997143.png" /></span></P><UL><LI>Once that is completed, you should see all supported objects on your on-premise system, imported<BR />into your ABAP in the cloud package.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_20-1714115024338.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102192iF34FF9866184EC43/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_20-1714115024338.png" alt="AnslemArnolda_20-1714115024338.png" /></span></P><P>&nbsp;</P> 2024-04-26T09:09:05.666000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/get-started-with-sap-btp-abap-environment-trial-account-vs-free-tier-option/ba-p/13663694 Get started with SAP BTP ABAP Environment: Trial Account vs. Free Tier Option 2024-04-26T15:24:35.800000+02:00 Burcu_Karlidag https://community.sap.com/t5/user/viewprofilepage/user-id/151005 <P>Understanding the various <A href="https://www.sap.com/products/technology-platform/pricing.html" target="_self" rel="noopener noreferrer">Try and Buy</A>&nbsp;options is crucial in exploring the SAP BTP ABAP Environment, ensuring an easy start to your journey.&nbsp;<SPAN>Let's take a closer look at the two tryout options:&nbsp;</SPAN></P><P>&nbsp;</P><H1 id="toc-hId-862551201">Trial Account</H1><P data-unlink="true">The <A href="https://discovery-center.cloud.sap/serviceCatalog/abap-environment?region=all&amp;tab=service_plan&amp;commercialModel=free" target="_blank" rel="noopener nofollow noreferrer">SAP BTP trial</A> allows you to experiment and educate yourself and get familiar with the SAP BTP ABAP Environment.&nbsp;<SPAN>The instance is shared between all trial users. This shared trial offering allows users to share an instance, where all development objects are visible and editable by other trial users. You agree not to upload any personal data, any confidential information of you or your company, or use the service for a productive environment.&nbsp;</SPAN>By default, the trial account lasts for 30 days but can be extended up to 90 days. After this period, the instance is automatically deleted, and a seamless transition to a paid standard version isn't feasible.&nbsp;<SPAN>Due to the shared instance approach, a few features like connectivity are not supported. Please find more information in this&nbsp;<A href="https://community.sap.com/t5/technology-blogs-by-sap/it-s-trial-time-for-abap-in-sap-business-technology-platform/ba-p/13416047" target="_blank">blog post</A>.</SPAN></P><P>&nbsp;</P><H1 id="toc-hId-666037696">Free Tier Option</H1><P>Designed for small proof-of-concept projects, the <A href="https://discovery-center.cloud.sap/serviceCatalog/abap-environment?region=all&amp;tab=service_plan" target="_blank" rel="noopener nofollow noreferrer">free tier option</A> offers exploration of all capabilities for non-productive scenarios over a fixed 90-day trial period. It can also be utilized for piloting remote <A href="https://help.sap.com/docs/btp/sap-business-technology-platform/abap-test-cockpit" target="_blank" rel="noopener noreferrer">ABAP Test Cockpit (ATC</A>) scenarios against on-premise systems in the <A href="https://help.sap.com/docs/btp/sap-business-technology-platform/custom-code-migration" target="_blank" rel="noopener noreferrer">Custom Code Migration App</A>. Unlike the trial version, each user has their own instance. A seamless transition to the paid standard plan is supported within the trial period, without data loss. After 90 days, the instance is automatically deleted.&nbsp;</P><H2 id="toc-hId-598606910">&nbsp;</H2><H2 id="toc-hId-402093405"><SPAN>Selecting the appropriate choice</SPAN></H2><P>To choose the right option between the trial account and the free tier option, consider your specific needs and goals:</P><P>&nbsp;</P><TABLE border="1" width="100%"><TBODY><TR><TD width="33.333333333333336%" height="61px"><H3 id="toc-hId-334662619">Category</H3></TD><TD width="33.333333333333336%" height="61px"><H3 id="toc-hId-138149114">Trial Account</H3></TD><TD width="33.333333333333336%" height="61px"><H3 id="toc-hId--58364391">Free Tier Option</H3></TD></TR><TR><TD width="33.333333333333336%" height="94px"><STRONG>Purpose</STRONG></TD><TD width="33.333333333333336%" height="94px"><SPAN>Experimentation, educational purposes</SPAN></TD><TD width="33.333333333333336%" height="94px"><SPAN>Small proof-of-concept projects, &nbsp;non-productive scenarios</SPAN></TD></TR><TR><TD width="33.333333333333336%" height="61px"><STRONG>Feature Set</STRONG></TD><TD width="33.333333333333336%" height="61px">Limited</TD><TD width="33.333333333333336%" height="61px">Not limited</TD></TR><TR><TD width="33.333333333333336%" height="61px"><STRONG>Duration</STRONG></TD><TD width="33.333333333333336%" height="61px"><SPAN>Extendable up to 90 days</SPAN></TD><TD width="33.333333333333336%" height="61px"><SPAN>Fixed 90-day trial period</SPAN></TD></TR><TR><TD width="33.333333333333336%" height="61px"><STRONG>Data Privacy and Security</STRONG></TD><TD width="33.333333333333336%" height="61px">Shared instance</TD><TD width="33.333333333333336%" height="61px"><SPAN>Individual instance</SPAN></TD></TR><TR><TD width="33.333333333333336%" height="54px"><STRONG>Seamless Transition</STRONG></TD><TD width="33.333333333333336%" height="54px">Not possible</TD><TD width="33.333333333333336%" height="54px">Possible</TD></TR></TBODY></TABLE><P>Please evaluate these aspects and c<SPAN>onsider your future beyond the trial period&nbsp;</SPAN>to determine which option aligns best with your needs.</P> 2024-04-26T15:24:35.800000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/introducing-the-new-e-learning-clean-core-with-sap-business-technology/ba-p/13685976 Introducing the New E-learning ‘Clean Core with SAP Business Technology Platform’ 2024-04-29T15:06:39.391000+02:00 sudha_naik https://community.sap.com/t5/user/viewprofilepage/user-id/122459 <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Picture1.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103278i871DC21C92A86B8B/image-size/medium?v=v2&amp;px=400" role="button" title="Picture1.jpg" alt="Picture1.jpg" /></span></P><P><SPAN>Clean Core is both a concept and an approach to achieve a modern, flexible, and cloud-compliant ERP system. Clean core is achieved by integration and extending the system in such a way that it is cloud-compliant, with optimal master data quality and perfected business process governance. Leveraging SAP Business Technology Platform enables you to attain clean core compliance, facilitating a smooth and effective digital transformation journey for your business.</SPAN></P><P>The upcoming e-learning course, "Clean Core with SAP Business Technology Platform," offers valuable insights to understand how SAP Business Technology Platform can help cultivate a cleaner and more sustainable core for SAP systems. It offers insights into how SAP BTP can support the fundamental pillars of Data, Integration, and Extensibility.</P><P>The e-learning explores the topic of extensibility in-depth and how the various components of SAP Business Technology Platform support the building of extensions in line with clean core principles. This aspect is crucial for businesses looking to adapt and customize their SAP systems without compromising the integrity of their core.</P><P>Additionally, the course will advise on the key offerings available to customers through their SAP Enterprise Support, cloud edition subscriptions. This will equip participants with the necessary resources and support to ensure they are using SAP BTP components in line with SAP's clean core strategy.</P><P>Please use this <A href="https://accounts.sap.com/saml2/idp/sso?sp=https://www.successfactors.eu/learninghub&amp;RelayState=%2Fsf%2Flearning%3FdestUrl%3Dhttps%253a%252f%252fsaplearninghub%252eplateau%252ecom%252flearning%252fuser%252fdeeplink%255fredirect%252ejsp%253flinkId%253dCATALOG%255fSEARCH%2526sbArSel%253d%2526keywords%253dSUP_ELE_6030_2404%2526selKeyWordHeader%253dSUP_ELE_6030_2404%2526catSel%253d%2526srcSel%253dESAC%2526delMthSel%253d%2526ILDateFrm%253d%2526ILDateTo%253d%2526ILBlend%253d%2526ILSchd%253d%2526fromSF%253dY%26company%3Dlearninghub" target="_self" rel="noopener noreferrer">link</A> to access the e-learning.</P><P>If you have issues accessing the above link, there may be an authorizations issue. Please note a one-time registration in SAP Learning Hub, edition for SAP Enterprise Support, is required. A detailed step-by step guide to registration can be found&nbsp;<A href="https://support.sap.com/en/offerings-programs/enterprise-support/enterprise-support-academy/learn.html" target="_blank" rel="noopener noreferrer">here</A>.</P><P>For internal colleagues, if you cannot access the e-learning, please use the following <A href="https://training.sap.com/content/LearningHubInternalEdition" target="_blank" rel="noopener noreferrer">link</A>, click on “Access” and use the above direct link once access has been granted.</P><P>Enroll now and join us as we explore the power of SAP Business Technology Platform in driving a clean core environment for businesses. Get ready to unlock new opportunities and drive innovation with SAP's clean core strategy.&nbsp;</P><P>Thanks and Regards,&nbsp;</P><P>Sudha Surendran /&nbsp;BTP Architect - SAP Enterprise Support</P> 2024-04-29T15:06:39.391000+02:00 https://community.sap.com/t5/application-development-blog-posts/it-s-never-been-easier-to-invoke-machine-learning-and-generative-ai-from-an/ba-p/13687218 It's never been easier to invoke Machine Learning and Generative AI from an ABAP application 2024-05-03T08:34:43.224000+02:00 lpm https://community.sap.com/t5/user/viewprofilepage/user-id/1446391 <P>We have exciting news for SAP developers! You may remember that last year, IBM and SAP <A title="SAP to Embed IBM Watson Artificial Intelligence into SAP® Solutions" href="https://newsroom.ibm.com/2023-05-02-SAP-to-Embed-IBM-Watson-Artificial-Intelligence-into-SAP-R-Solutions" target="_blank" rel="noopener nofollow noreferrer">jointly announced</A>&nbsp; a milestone collaboration around embedding AI into SAP solutions. One visible outcome was the adoption of Watson technology in the SAP Start and SAP Joule digital assistants.</P><P>And at the same time, IBM's been working on creating a watsonx Software Development toolKit (SDK) for SAP ABAP, complementing the existing Watson SDK that was refreshed in 2023.</P><P>I am pleased to confirm that the watsonx ABAP SDK version 1.0.0 <STRONG>is now live</STRONG>. It was released late March 2024 by the IBM SAP Software Engineering Team as expected. It is a separate release from its relative, the Watson SDK, who released a version 2 in Q4 2023. Both SDKs are open source and downloadable from GitHub.</P><P>If you develop SAP apps or have clients doing so, this is big news. It is truly a revolution in easily integrating Machine Learning and Generative AI, in just a few clicks, into an SAP ABAP application. Literally in 10 minutes!</P><P>The watsonx SDK comes in two flavors, allowing SAP developers to easily access watsonx from an ABAP application in a traditional SAP NetWeaver environment, and also in the latest SAP Business Technology Platform (BTP):</P><UL class=""><LI><A href="https://github.com/IBM/abap-sdk-nwas-x/tree/1.0.0" target="_blank" rel="noopener nofollow noreferrer">watsonx ABAP SDK for SAP NetWeaver</A>&nbsp;</LI><LI><A href="https://github.com/IBM/abap-sdk-btp-x/tree/1.0.0" target="_blank" rel="noopener nofollow noreferrer">watsonx ABAP SDK for SAP BTP ABAP Environment</A>&nbsp;</LI></UL><P>The SDK natively supports both the <A href="https://cloud.ibm.com/apidocs/watsonx-ai" target="_blank" rel="noopener nofollow noreferrer">watsonx.ai</A> (V1) and the <A href="https://cloud.ibm.com/apidocs/machine-learning" target="_blank" rel="noopener nofollow noreferrer">Watson Machine Learning</A> (V4). To get developers up to speed quickly, <A href="https://github.com/IBM/abap-sdk-nwas-x/tree/1.0.0?tab=readme-ov-file#examples" target="_blank" rel="noopener nofollow noreferrer">comprehensive examples</A> are included in both of the APIs' documentation.</P><UL><LI>The sample code for the watsonx.ai sends a AI prompt to a generative AI model and collects the generated response. It uses the granite-13b-chat-v2 in the example but there are <A href="https://www.ibm.com/docs/en/watsonx-as-a-service?topic=solutions-supported-foundation-models" target="_blank" rel="noopener nofollow noreferrer">many other superb models</A> available through watsonx.</LI><LI>The sample code for the Watson Machine Learning API lets you unleash the full capability of Watson Machine Learning (ML):<UL><LI>Without going too far in the detail, to use watsonx ML you have to create a watsonx deployment space. This is where you will deploy your ML assets, which can be models, functions, or scripts.</LI><LI>Python is a popular language for functions, in fact most frameworks in Watson ML rely on Python (or R). With a Python function, you can perform any ML task like creating, training, and using models.<UL><LI>For instance you can <A href="https://dataplatform.cloud.ibm.com/exchange/public/entry/view/1eddc77b3a4340d68f762625d40b64f9?context=wx" target="_blank" rel="noopener nofollow noreferrer">recognize hand-written digits</A>, or to <A href="https://dataplatform.cloud.ibm.com/exchange/public/entry/view/61a8b600f1bb183e2c471e7a64299f0e?context=wx" target="_blank" rel="noopener nofollow noreferrer">predict business area for a car rental company</A>, etc.</LI><LI>You're welcome to write your own Python functions from scratch but in most cases you'd want to leverage <A href="https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/ml-deploy-py-function.html?context=wx" target="_blank" rel="noopener nofollow noreferrer">existing example notebooks</A> to save time</LI></UL></LI><LI>Going back to the watsonx ABAP SDK: in the supplied sample code, the ABAP application <SPAN class="">deploys arbitrary Python code </SPAN>as a Python function on a watsonx deployment space and calls the deployed function. It also supplies a CURL command that can be used to easily call the deployed function from the command line</LI><LI>So the SDK connects lets you use the full capabilities of watsonx ML with very little development effort.&nbsp; Then no further SAP programming knowledge is necessary, you can refer to the regular watsonx ML <A href="https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/ml-deploy-py-function-write.html?context=wx" target="_blank" rel="noopener nofollow noreferrer">documentation</A>. And of course, reuse the many examples of functions, models, and scripts provided by IBM and third parties.</LI></UL></LI></UL><P>See also the <A href="https://community.sap.com/t5/application-development-blog-posts/abap-sdk-for-ibm-watsonx-released/ba-p/13658514" target="_blank">post</A> by <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/184450">@christian_bartels</a> on the same topic.</P> 2024-05-03T08:34:43.224000+02:00 https://community.sap.com/t5/enterprise-resource-planning-blogs-by-members/lets-send-multipart-form-data-to-external-receiver-cpi-to-ai-app/ba-p/13694334 Lets Send multipart/form-data to external Receiver: CPI to AI App 2024-05-08T17:41:14.873000+02:00 nirmalmehta1706 https://community.sap.com/t5/user/viewprofilepage/user-id/675571 <P>Let me start the story with the requirements I had then Ill come to the approach I opted and in the journey it is possible that I may have done some mistakes so I'll add a humble request to all my senior fellow to add there expertise in this blog, This will help everyone to get more insights.</P><P><FONT size="6"><STRONG>Scenario</STRONG>:</FONT></P><P>We had to integrate an application which had a requirement to connect to and External AI application that has exposed some API to us with some<STRONG> documentation</STRONG>.</P><P><FONT size="6"><STRONG>Challenge</STRONG>:</FONT></P><P>From the initial thoughts this looks easy, it just an API, as so as I thought , but as I mentioned above&nbsp; "<STRONG>documentation"&nbsp;</STRONG>gave us the real challenge. To complete all the call we had to send the <STRONG>multipart/form-data</STRONG>&nbsp;to this receiver.</P><P>Through the help of documentations we are able to successfully send the data from Postman. but when we tried to send it from CPI we faced challenges which lead us to the solution. So next I am sharing the steps we performed to send the form-data&nbsp;</P><P>Clearly, if such problem arrives instantly we come to SAP community and search for the answer, we found&nbsp;<A href="https://community.sap.com/t5/technology-q-a/sending-form-data-from-sap-cpi/qaq-p/12613755" target="_blank">https://community.sap.com/t5/technology-q-a/sending-form-data-from-sap-cpi/qaq-p/12613755</A>&nbsp;solution that gives us a way and describe what form-data is and how well it can be passed- but solution given here was to change the type of data itself which was not a choice for us.</P><P>At least we got half way on understanding the way&nbsp;<STRONG>multipart/form-data</STRONG> will be constructed. To understand more about&nbsp; terms and functionality please refer this wonderful article&nbsp;<A href="https://community.sap.com/t5/technology-blogs-by-sap/what-is-form-data-and-how-to-send-it-from-sap-cloud-platform-integration/ba-p/13443126" target="_blank">https://community.sap.com/t5/technology-blogs-by-sap/what-is-form-data-and-how-to-send-it-from-sap-cloud-platform-integration/ba-p/13443126</A>&nbsp;by&nbsp;<SPAN>mattisebastian this will help us to create the exact frame of data we need to post and in correct way and&nbsp; how much important the <STRONG>envelope</STRONG> is.</SPAN></P><P>&nbsp;</P><P><FONT size="6"><STRONG>Solution:</STRONG></FONT></P><P>To Solve this it is very important to understand the few terms like Content-type, Content Disposition, Accept, Boundary and all the fields that are required in Form data.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="nirmalmehta1706_0-1715115917415.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/107050i4BCA612D4E6017AB/image-size/medium?v=v2&amp;px=400" role="button" title="nirmalmehta1706_0-1715115917415.png" alt="nirmalmehta1706_0-1715115917415.png" /></span></P><P>To understand this format we had to mimic the Postman request we were directly send to API.</P><P>So we created a CPI Artifact to trace the look of the form data and we were able to get the exact same results as in screenshot , but we have to append an actual JSON which had a list of json data in format of <STRONG><SPAN class="">string</SPAN><SPAN class="">&nbsp;&lt;binary&gt;&nbsp;</SPAN><SPAN class="">(File)</SPAN></STRONG>. And that was actually a file upload (that we were doing from postman).</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="nirmalmehta1706_1-1715116249725.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/107052i9290B505C1D89377/image-size/medium?v=v2&amp;px=400" role="button" title="nirmalmehta1706_1-1715116249725.png" alt="nirmalmehta1706_1-1715116249725.png" /></span></P><P>till now if we send request without this JSON file, the AI app was accepting the request but with an error as no real data was found in envelope.&nbsp;&nbsp;</P><P>So now we had to find a way to send this file in Realtime to the receiver. and for that we tried various ways like to store the payload in data store and creating Tables and so on.</P><P>But issue persisted when we have to send it in Realtime. So to get a bit more Idea we again sent this request from Postman to CPI and traced it.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="nirmalmehta1706_2-1715116678371.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/107055i44885A7D64D376F9/image-size/medium?v=v2&amp;px=400" role="button" title="nirmalmehta1706_2-1715116678371.png" alt="nirmalmehta1706_2-1715116678371.png" /></span></P><P>To get these headers understanding we also put some effort to create Multipart/Form-data from MIME script&nbsp; from the blog&nbsp;<A href="https://community.sap.com/t5/technology-blogs-by-sap/part-6-simplify-integration-of-data-from-sap-s-4hana-cloud-to-third-party/ba-p/13386862" target="_blank">https://community.sap.com/t5/technology-blogs-by-sap/part-6-simplify-integration-of-data-from-sap-s-4hana-cloud-to-third-party/ba-p/13386862</A>&nbsp;from&nbsp;<SPAN>&nbsp;</SPAN><SPAN class=""><A class="" href="https://community.sap.com/t5/user/viewprofilepage/user-id/111463" target="_self"><SPAN class="">divyamary </SPAN></A></SPAN></P><P>and we created following results:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="nirmalmehta1706_3-1715117131718.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/107059iE81F8DAEA8785CE8/image-size/medium?v=v2&amp;px=400" role="button" title="nirmalmehta1706_3-1715117131718.png" alt="nirmalmehta1706_3-1715117131718.png" /></span></P><P>So now we know how the file data look like and what part in payload we are missing, as we had to send the binary data we changed the header&nbsp;<STRONG>Content-Transfer-Encoding: 7bit&nbsp;</STRONG>to&nbsp;</P><P><STRONG>Content-Transfer-Encoding: Binary&nbsp;</STRONG>and same goes for file name.</P><P>and that's it.. it worked! Just some correction on payload customization and headers and we created multipart/form-data in <STRONG>Content Modifier</STRONG> only.</P><P><FONT size="6"><STRONG>Briefs&nbsp; and Take-aways:</STRONG></FONT></P><UL><LI>Mimic Postman Hits in CPI by artifacts , hit to CPI and traces the payload.</LI><LI>Set the Headers correctly specially Content-type and Boundary(specially spaces <span class="lia-unicode-emoji" title=":slightly_smiling_face:">🙂</span> )</LI><LI>Check if there is any media type for the type of data you are trying to send to receiver and set it correctly.</LI><LI>You can also try the MIME multipart script to simulate the outcome, it will give you some correct data formats and header options.</LI><LI>Add those&nbsp; steps and create a right payload in Content modifier.</LI><LI>After creating the form data always try to create a right envelope with right boundary&nbsp; (that worked for us)</LI><LI>Send with right adaptor configurations and ... it will be success.</LI></UL><P>Following are some key blogs from experts which we referred. a big thank them .</P><UL><LI><A href="https://community.sap.com/t5/technology-q-a/sending-form-data-from-sap-cpi/qaq-p/12613755" target="_blank">https://community.sap.com/t5/technology-q-a/sending-form-data-from-sap-cpi/qaq-p/12613755</A></LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-sap/what-is-form-data-and-how-to-send-it-from-sap-cloud-platform-integration/ba-p/13443126" target="_blank">https://community.sap.com/t5/technology-blogs-by-sap/what-is-form-data-and-how-to-send-it-from-sap-cloud-platform-integration/ba-p/13443126</A></LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-sap/part-6-simplify-integration-of-data-from-sap-s-4hana-cloud-to-third-party/ba-p/13386862" target="_blank">https://community.sap.com/t5/technology-blogs-by-sap/part-6-simplify-integration-of-data-from-sap-s-4hana-cloud-to-third-party/ba-p/13386862</A></LI></UL><P>&nbsp;</P><P>It was just my first blog so it will definitely have some misses, please add you comments and feedback so that ill improve.&nbsp;</P><P>Sap community is a Big sea and its just a drop that I added.</P><P>&nbsp;</P><P>Thank you.</P><P>&nbsp;&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P> 2024-05-08T17:41:14.873000+02:00 https://community.sap.com/t5/technology-blogs-by-members/be-a-cockroach-a-simple-guide-to-ai-and-sap-full-stack-development-part-i/ba-p/13696633 Be a Cockroach: A Simple Guide to AI and SAP Full-Stack Development - Part I 2024-05-09T19:14:30.935000+02:00 karthikarjun https://community.sap.com/t5/user/viewprofilepage/user-id/123682 <P><STRONG><U>Disclaimer</U></STRONG>: This blog delves into SAP full-stack development, incorporating SAP RAP for both front-end and back-end functionalities, Integration Suite for middleware tasks, TensorFlow for AI/ML modeling, and crafting a personalized system dashboard. Geared towards simplifying complex business systems through engaging stories, it's for those wanting to understand these concepts. If you're already well-versed, feel free to just stop here and explore other content.</P><P><STRONG><U>I) Introduction (Story):</U></STRONG></P><P>Most people came here to see what he has to say about cockroaches and their connection to SAP development. Some might be curious to learn about it. Few of you could feel grossed out and think cockroaches are yucky and ugly! <STRONG>But after reading this section, I hope you'll respect these special creatures called “COCKROACH”.</STRONG></P><P>The world is more than 200,000 years old. Lots of animals have lived and expired over time. One of them was dinosaurs—they were huge and strong. Due to changes in the tectonic plates and environment, the Dinosaurs couldn't survive and disappeared. Now, you can see it in movies using computer-generated effects. However, cockroaches have been around for over 1,00,000 years and you can still come across them in your kitchen, living room, bathroom, trash can, and everywhere else. Cockroaches have adjusted to changes in their surroundings, which is why they still exist on the planet.</P><P>Even though companies produce items like HIT and Baygon to kill them, cockroaches survive by figuring out how to deal with those products. A study found that certain products cause some cockroaches to behave as if they're intoxicated. Their bodies adapt to these substances. This ability to change is known as adaptation.</P><P>There aren't any charities or groups dedicated to protecting cockroaches like there are for elephants and dolphins. Everyone wants to kill cockroach, yet these humble cockroaches keep on living and undefeated by human, and their existence is inevitable. Now that you understand, I trust you hold a greater appreciation for the modest cockroach. <EM><U>Similarly, Consultants must also adjust to shifts in market trends.</U></EM></P><P>The IT market is going through changes like <STRONG><U>"Artificial Intelligence"</U></STRONG> and a higher demand for <STRONG><U>“SAP Full-Stack developers”</U></STRONG> and so on. In this blog we are go-through about SAP Full-Stack development.</P><P><EM>(The story about cockroaches was inspired by a book called "11 Rules for Life" written by Chetan Bhagat)</EM></P><P><STRONG><U>II) Agenda:</U></STRONG></P><OL><LI>Getting to Know SAP FullStack: Understanding the Full Stack</LI><LI>Background Insights: Delving into the Story Behind</LI><LI>System Design Visualization: Seeing the Technical Architecture</LI><LI>Practical Implementation: Learning the Practical Details Step-by-Step</LI><LI>Wrapping Up: Summarizing Key Points and Looking Ahead</LI><LI>Further Reading: Offering Links to More Research Materials</LI></OL><P><STRONG><U>III) Getting to Know SAP Full-Stack: Understanding the SAP Full-Stack development</U></STRONG></P><P>Many of our consultants believe that full stack development involves only front-end and back-end development. However, when it comes to SAP development, there's a third component: middleware.</P><P>In today's market, relying on just one system isn't enough. Data comes from various sources, and we need to consolidate it to generate reports. So, if you're interested in becoming an SAP full-stack developer, this blog will help you understand the basics of all three elements: front-end, middleware, and back-end, and explain them practically.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="karthikarjun_7-1715273481121.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/108136i9CE213319E0DD8FE/image-size/large?v=v2&amp;px=999" role="button" title="karthikarjun_7-1715273481121.png" alt="karthikarjun_7-1715273481121.png" /></span></P><P style=" text-align: center; ">Fig1: Basic diagram for Full-Stack development</P><P><STRONG><U>IV) Background Insights: Delving into the Story Behind</U></STRONG></P><P>Sundhara Pandian is a big part of Kotravai Coffee Group in Queenstown, New Zealand. He makes really good coffee. His trick? He gets top-notch coffee beans by following a careful process.</P><P>Instead of just buying beans whenever he wants, Sundhara Pandian sends a request called a Purchase Order (PO) to a big coffee supplier in Bremen, Germany. But it's not as simple as filling out a form. The PO has to go through a smart system with AI and automation. This system checks the beans in the supplier's stock and confirms the order.</P><P>But Sundhara Pandian's job doesn't stop there. The results from the system are put into SAP S/4HANA Cloud. This helps keep track of orders and how much coffee is left.</P><P>Basically, Sundhara Pandian does more than just make coffee. He's good at handling &nbsp;complicated systems to make sure Queenstown always has enough beans for coffee lovers.</P><P><EM>Let's dive into SAP full-stack development through Sundara Pandian's story as we build the SAP RAP App for PO cockpit, iFlows and AI/ML model.</EM></P><P><STRONG><U>V) Technical Architecture Diagram: Visualizing the System Design</U></STRONG></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="karthikarjun_8-1715273481135.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/108138iCC4BA4B4D3B68E02/image-size/large?v=v2&amp;px=999" role="button" title="karthikarjun_8-1715273481135.png" alt="karthikarjun_8-1715273481135.png" /></span></P><P style=" text-align: center; ">Fig2: Architecture diagram for E2E – Full Stack development with SAP applications</P><P><STRONG><U>VI) Technical Implementation: Step-by-Step Integration Details</U></STRONG></P><P><STRONG><EM><U>AIM: (Custom Cockpit and Integrated Goods Receipts):</U></EM></STRONG></P><OL><LI><EM>We're making a simple app for custom Purchase Orders (PO) with basic fields.</EM></LI><LI><EM>Obtaining the GR information electronically, then utilizing a machine learning algorithm to automatically update the GR within our application system (GR automation).</EM></LI><LI><EM>We're getting details about Goods Receipts (GR) from GR automation system and showing them in the custom PO form.</EM></LI></OL><P><STRONG><EM><U>Target Audience:</U></EM></STRONG></P><OL><LI><EM>Individuals with 0 to 4 years of experience in SAP.</EM></LI><LI><EM>Enthusiastic learners eager to explore new concepts and expand their knowledge base.</EM></LI></OL><P><STRONG><EM><U>Before proceeding, please ensure the following prerequisites are met:</U></EM></STRONG></P><OL><LI><EM>Familiarity with basic concepts of SAP S/4HANA Cloud and SAP RAP.</EM></LI><LI><EM>Activation of the ADT-Eclipse, Postman, Integration Suite API plan in your SAP BTP entitlement.</EM></LI><LI><EM>Understanding of fundamental AI and Automation concepts.</EM></LI><LI><EM>Knowledge related to Python, Javascript, System landscape and UI</EM></LI></OL><P><U>Step 1</U>: Install the ADT package in the Eclipse. You can refer the below link to download the ADT package in the eclipse.</P><P>ADT Link: <A href="https://tools.hana.ondemand.com/#abap" target="_blank" rel="noopener nofollow noreferrer">https://tools.hana.ondemand.com/#abap</A></P><P><U>Step 2:</U></P><P>Step two has been divided into two sections, each detailed below:</P><OL><LI><EM>Section-A: Connect to the S/4 HANA Cloud system.</EM></LI><LI><EM>Section-B: Create the modelling with SAP RAP</EM></LI></OL><P><EM>Go to help-&gt; About Eclipse IDE -&gt; Double check the below highlighted icon from your system.</EM></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="karthikarjun_9-1715273481145.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/108137i483B7FC72242E1C7/image-size/large?v=v2&amp;px=999" role="button" title="karthikarjun_9-1715273481145.png" alt="karthikarjun_9-1715273481145.png" /></span></P><P><STRONG><EM><U>Section-A: Connect to the S/4 HANA Cloud system</U></EM></STRONG></P><P>To connect the S/4 HANA Cloud system, please use the below steps.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="karthikarjun_10-1715273481153.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/108140i716A680E6765D0DC/image-size/large?v=v2&amp;px=999" role="button" title="karthikarjun_10-1715273481153.png" alt="karthikarjun_10-1715273481153.png" /></span></P><P>Type the S/4 HANA Cloud web address: https://&lt;Host&gt;.s4hana.cloud.sap. Remember, select client 80. This client is used for making changes to the system.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="karthikarjun_11-1715273481157.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/108141iF7626E6C217FCB12/image-size/large?v=v2&amp;px=999" role="button" title="karthikarjun_11-1715273481157.png" alt="karthikarjun_11-1715273481157.png" /></span></P><P>Click the "Copy Logon URL to Clipboard" button. Then, open your web browser and paste the URL there. Enter your login details and press enter. After successful login, you'll see the screen below.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="karthikarjun_12-1715273481162.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/108139i86458454809E8CF3/image-size/large?v=v2&amp;px=999" role="button" title="karthikarjun_12-1715273481162.png" alt="karthikarjun_12-1715273481162.png" /></span></P><P>Click "Finish" and create your own package name. I've used "ZDEMO" here.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="karthikarjun_13-1715273481167.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/108142i37579E5BD041F39B/image-size/large?v=v2&amp;px=999" role="button" title="karthikarjun_13-1715273481167.png" alt="karthikarjun_13-1715273481167.png" /></span></P><P><STRONG><U>Part 1: Key Takeaway:</U></STRONG></P><OL><LI>Gaining foundational knowledge of systems and landscapes through story-based learning.</LI><LI>Grasping the fundamentals of full-stack development with diagrams</LI><LI>Setting up Eclipse for SAP ADT and establishing a connection to the S/4 HANA Public Cloud system.</LI></OL><P><EM><U><STRONG>Part 2</STRONG></U>: Coming soon - Keep an eye out for an exciting story-based learning journey as we delve into creating SAP RAP applications.</EM></P><P><EM><U><STRONG>Part 3:</STRONG></U> Coming soon - Embark on an exploration of AI and ML with our forthcoming model, create system with a dashboard for ( GR Automation )&nbsp;</EM></P><P><EM><U><STRONG>Part 4:</STRONG></U> Coming soon - Learn how to connect the circuit using Integration Suite in our upcoming installment.</EM></P><P><EM>Author:&nbsp;<SPAN>If you find this information helpful, please consider clicking the "Like" button on this blog and sharing your thoughts in the comments section below. You can also connect with the author on their LinkedIn profile:&nbsp;</SPAN><A title="Author's LinkedIn Profile" href="https://www.linkedin.com/in/karthik-arjun-a5b4a258/" target="_self" rel="nofollow noopener noreferrer">[Author's LinkedIn Profile]</A></EM></P> 2024-05-09T19:14:30.935000+02:00