Cross-Functional Topics Cross-Functional Topics Welcome to Cross-Functional Topics. This section covers topics that span across different SAP modules and business processes. Support Articles About ABAP Generation, Loads, Includes and moreContext This is a practical deep-dive into how ABAP sources become executable code, how that code is cached and invalidated, how includes are handled, and which public vs. internal APIs exist for building and analyzing programs dynamically. 1. Core concepts and lifecycle 1.1 Source → Load → Execution Source: ABAP source is stored in the database (table REPOSRC). Load: When a program is activated or first executed, the compiler generates an ABAP Load and stores it in table REPOLOAD. The load is the executable representation of the program. Execution: For performance, the load is copied from REPOLOAD into the Program Buffer (aka PXA - Program eXecution Area) in shared memory on each application server and executed from there. Loads are regenerated when sources (or dependent artifacts like includes or DDIC types) change, after certain kernel updates (load format changes), or on first use after transport if no up-to-date load exists. ABAP Limits👉Maximum WHERE conditions: 65.534 👉Maximum WHERE statement size: 65.535 👉Maximum lines in range table for SELECT: 32.766 👉Maximum count of found syntax errors: 51 👉Maximum ALV’s per screen: 16 👉Maximum characters in dynpro parameter: 1.023 👉Maximum Characters in ALV Collum: 128 👉Maximum UP TO X ROWS value: 2.147.483.646 👉Maximum Number of EntityTypes/Sets: 20.000+ Metadata Generation takes over 10 minutes Individual Requests will be at least 500-700ms slower Debug via drag and drop Create a new .txt file on your desktop. Open it and fill in the following: [Function] Command=/H Type=SystemCommand Save it. Rename the extension to .sap (this is optional but you get a nice icon). Drag it on any SAP GUI window, you want to enable debugging in any ongoing step. This comes in handy, when you don’t have the option to type /h in the top toolbar. Analytical List Page / Graphical Reporting: Implementation based on CDS Views (Technical Documentation and How-To)Technical Documentation – Graphical / Analytical Reporting App 1. Backend Technical Objects 1.1 CDS Views Interface CDS Views : (Base / interface views providing raw data and associations) ZSTX_I_ITEM_TYPE_TEXT ZSTX_I_STATUS_TEXT ZSTX_I_DPR_PROJECT ZSTX_I_OBJ_LINK Cube CDS Views : (Cube views annotated with @Analytics.dataCategory: #CUBE, used as the analytical foundation) ZSTX_CUBE_ANALYTIC Consumption / Analytical CDS View (Consumption view annotated with @Analytics.query: true ) (Consumption view on top of the cube, exposed for reporting and UI consumption) Transactional View EntitiesThis is a rough guide to CDS View entities as they will eventually replace normal CDS Views. How to create Business Partners (BuPas) in SAP S/4HANAFor the creation of a BuPa in S/4, you will need to create a personell first. This is done via transaction PA30: First, you need to select Actions and press Create: There, you will have to enter the Action Type, Personnel area, Employee group and Employee subgroup (values are not important, fill with whatever you want): Hit Save afterwards and you will come to the next page, where you will have to fill these fields (values are not important, fill with whatever you want): After saving, you will be redirected to this page, where you have to enter the Subarea, Bus. Area and Payr.area (values are not important, fill with whatever you want). Afterwards you will have to enter a position, where you can use the F4 help and then double click the default position: After saving, you can return to the PA30 page with F3 and then select “Communication” as Infotype and “Sytem User Name” as STy. Afterwards Create: You can now enter your Sy-Uname and Save: The last thing to do, is to go into SE38 and execute the program /SHCM/RH_SYNC_BUPA_EMPL_SINGLE. In there, you simply have to enter the personnel number (Which has been given to the users by the system during the creation) and press Execute. Once the result is shown as in the screenshot above, the BuPas have been successfully created. 🥳 👍 BAS: No Application Available For Project Extension (Error- 403, 404)Problem No application appears when creating an extension project for the target system on BAS. Detailed Description: When we attempt to create an extension project on BAS, during the configuration step, it asks for the application to be extended. Here, we need to select the available applications from the system using the drop-down menu. However, it does not display any applications in the drop-down menu, which blocks us from creating the extension project.- Error status codes: Transport existing local Fiori tiles, target mappings and catalogsPurpose The purpose of this page is to explain how to add existing Fiori Launchpad catalogs and groups which are local objects in the Customizing layer to a transport request This will allow for transporting the objects to other clients and/or systems. In some cases catalogs and/or groups in CUST scope are added before a transport request has been selected in the Launchpad Designer. These objects will need to be added to transport requests manually. Overview This document will show how to locate the catalog identifiers, how to search them in the Analyze Config User Web Dynpro application, and how to assign them to your existing transport request Fiori Launchpad: Place tiles at the very top and disable personalization ("Lock Tiles")Goal: Have a specific group of tiles at the very top of Fiori Launchpad and disable ability to move or remove them. Steps: Navigate to Fiori Admin(!) Launchpad. (The page where you configure Tiles, Catalogs and Groups of FLP) Switch the list of the left to “Groups” and select the group you’d like to pin to the very top. When selected, click the Edit-Icon on the very top middle (pencil symbol). A new Dialog will appear, where you can uncheck “Enable users to personalize their group” That’s it! Users will no longer be able to change this group and it will always appear above all other personalizable tiles. For more information on this topic, check out this guide. Detailed Runtime Analysis (Trace) of HTTP (OData) RequestsContext We always had the requirement to measure OData Requests on a very detailed level. Transactions like /IWFND/TRACES were never detailed enough and barely provided useful feedback. That’s why we usually would write reports that execute certain logic and then trace it with SAT. This isn’t always sufficient as sometimes a request might be slower/faster depending on further implementation details in your OData service. Solution You can use a combination of transactions SICF and SAT for HTTP traces! Simply follow these steps: Trace an RFC Call in a Co-Deployed System ScenarioThe usual way via SICF doesn’t work for co-deployed system scenarios since it will only measure up to the RFC call into backend which results in almost 100% of time spent on the RFC call. This renders the normal method useless. To trace OData calls in this scenario, go to SAT in the BACKEND system and click the button “Schedule” Create a new schedule object via the button in the UI or Shift + F7. Set Client to ModifiableProblem You’d like to perform workbench or customizing changes on a client, but the client is not modifiable. Solution Open transaction SCC4 Double click on the client you’re trying to modify the objects on Enter edit mode Depending on whether you’re trying to modify client-depending or cross-client objects, follow either of the following steps and save afterwards. Client-Depending Changes In “Changes and Transports for Client-Specific Objects”, change the radio button from “No changes allowed” to one of the following values: Size Category When Creating DDIC TablesIf you’re setting up a new DDIC table in SAP, you might be wondering about the Size Category. Let’s simplify it a bit. DDIC Tables vs. Database Tables: When you create a DDIC table in SE11, a database table is made behind the scenes. Think of the DDIC table as a representation / abstraction layer of the actual database table. Once it’s made, this database table has a predefined size, known as the “Initial Extent”. For most new database tables, this size is consistent. At this stage, the Size Category doesn’t matter yet. Create new SAP Client / MandtStep 1: Set profile parameter Open transaction RZ10 Select your system’s profile and check “Extended Maintenance” Click “Change”. A new view will open Search for Parameter “login/no_automatic_user_sapstar”. If it exists, make sure to set it to 0. If it does not exist, create it and set it to 0. To check if the parameter has been set correctly, open transaction RZ11 and display parameter “login/no_automatic_user_sapstar”. You can check the current value at the very bottom. If it is not set to 0, you may have to restart your application server. If it is not set even after a restart, check if you modified the correct system profile. Step 2: Create new client Containerizing SAP S/4HANA Systems with Docker[Source: Containerizing SAP S/4HANA Systems with Docker] Docker and other virtualization technologies are gaining popularity for their efficacy in development (continuous integration/continuous development) and ease of deployment. In terms of resource utilization, virtualization allows multiple isolated containers or VMs to run on one single server reducing hardware costs. This isolation between containers allows for parallel projects to develop independently of one another, reducing the complexity of synchronizing these changes across multiple development landscapes. In this blog post we will go over the process of installing a SAP S/4HANA 2022 Foundation system inside of a docker container. We will also discuss how customers can reduce project complexity by using Docker as a solution for n+m landscapes and ultimately expedite project timelines. Deadlock During Import in STMS (RC12 during import)Problem During import of a large transport, the process aborts with return code 12. When checking the import locks, a database / SQL error mentioning a “Deadlock” can be observed. Reason When importing data into an SAP system using CTS (which is the case when using SE01 / SE10 / SE09 / STMS), data is copied over from the transport files into the respective database tables using multiple parallel processes. In some cases, the usage of too many parallel processes during import can lead to deadlock scenarios. Maintain Trust Connection between SAP SystemsProblem You are using a “Central Hub Deployment” (separate frontend and backend systems) System Landcape and you are not sure if the setup has been done correctly. Environment SAP System Setup Reason The Trust Connection between the used SAP Systems is used to simplify logon processes across Systems by ensuring Security and minimize the requirements for authentication when logging on to a remote system.