First aid kit for performance issues on ABAP stack

This blog will give some first aid kit tips on performance issues on ABAP stack reported by end users. The system is up and running, but still user(s) complain about performance. What to do first?

SM50/SM66

Basically the first analysis always starts with SM50 (or when you have multiple application servers SM66).

Checklist for SM50:

  • Are all the DIA dialog processes full or almost full? –> if yes, then performance as total system will be slow. Check to find source for having so much DIA’s active.
  • Are all the BTC dialog background processes full? –> if yes, then all other batches will wait.
  • Are the UPD processes full? –> if yes, then all the other updates have to wait.
  • Are the SPO processes full –> if yes, then all prints have to wait.

Now you have a first impression of the state of the system.

Asking the user the right questions

Go back to the user complaint and start to ask questions:

  • Is he the only user complaining? Or are multiple users complaining?
  • Is the complaint about online or background job? Users can complain like ‘system performance is slow, since my background job takes a long time to start’
  • Is the complaint for updating or querying?
  • Is the complaint about printing?
  • Is the complaint about about performance in general or a specific transaction?
  • Is the complaint running now, or was it in the past?

If possible ask the user to start the poor performing transaction now so you can monitor it in SM50.

Solution kit

Too little dialog processes

If you cannot quickly locate the source of the process that is causing to consume all the dialog processes, you best temporarily increase the amount of DIA processes in the operation modes in RZ04.

Background processes full

Check to find the source of the large amount of background processes. If still too few, you can temporarily increase the amount of DIA processes in the operation modes in RZ04.

Another option is to check if some jobs can be stopped and planned at a later time.

Update processes full

If the update processes are full, check if the update process is running correctly in SM13.

Spool issues

If no prints are coming out of the system, there might be an issue with spool number range. System can look like this:

OSS note 48284 – System cannot generate any more spool requests contains the workprocedure.

Another solution can be to delete old spools.

If there are too many prints and too little spool processes, increase the amount of SPO processes in RZ04.

SAP references

SAP survival guide for performance issues: SAP note 2442365 – Survival Guide for performance analysis on SAP system contains an excellent PDF attachment for analyzing performance issues.

Transport set up for FIORI in app extensibility

In the previous blog we explained how to execute in app extensibility for an out-of-the-box FIORI app. This blog will explain how to transport the changes done.

Questions that will be answered in this blog are:

  • What setup do I need to do for transporting the in app flexibility content?
  • How to activate the needed apps for transporting in app flexibility content?
  • How to use the needed apps for transporting in app flexibility content?

Initial setup

To set up the transport mechanism for in app extensibility start transaction S_ATO_SETUP:

These are packages used to only store the data for the key user.

For the final transport, create in SE80 once a final package, for example ZKUFLEX:

Background explanation on this transaction is present in OSS note 2807979 – Information to setup Adaptation Transport Organizer for S/4HANA On Premise system via S_ATO_SETUP.

FIORI apps activation for transports of key user flexibility content


Activate the FIORI app Configure Configure Software Packages. Full instructions are available on the FIORI reference library.
Short summary:

  • Activate SICF services: NW_APS_ATO_CONF, NW_APS_ATO_LIB and NW_APS_LIB
  • Activate ODATA service: APS_EXT_ATO_PK_CFG_SRV
  • Acitvate PFCG roleSAP_NW_APS_EXT_ATO_PK_CFG_APP and assign to your user

Activate the FIORI app Register Extensions for transport. Full instructions are available on the FIORI reference library.
Short summary:

  • Activate SICF services: NW_APS_ATO_REGI, NW_APS_ATO_LIB and NW_APS_LIB
  • Activate ODATA service: APS_EXT_ATO_PK_AI_SRV
  • Activate PFCG role SAP_NW_APS_EXT_ATO_PK_AI_APP and assign to your user

Use of FIORI apps for transports of key user flexibility content

Add the apps to on the FIORI launchpad:

In the app Configure Software Packages add your permanent package you created in SE80:

Also assign a transport request here.

Now you can use the Register Extensions for Transport app to assign you extension to the package and transport:

Select the field and press the button Reassign to Package.

SAP references

Excellent overview blog can be found here.

SAP full help reference can be found here.

SAP support for browsers

This blog will explain the ways to find information about SAP support for browsers.

Questions that will be answered in this blog are:

  • Where do I find overall information about SAP support on browsers?
  • Which OSS notes are relevant for specific browsers?

SAP support on browsers

The main OSS note for browser support in SAP Netweaver is OSS note 1728946 – Browser: Browser Support Strategy for NetWeaver. For FIORI SAP UI5 technology, the main note is 1716423 – SAPUI5 Browser Support.

Most of the browser fixes are delivered in the Unified Rendering patch updates. Read more on this topic in this dedicated blog.

A common source of browser issues is the Active Component Framework. Read in this blog why it is best to NOT use this framework at all.

SAP netweaver browser support

On the SAP support PAM site you can find the specific browser support for each browser and netweaver combination:

Specific browser notes

Main notes for specific browsers:

Chrome:

Safari:

Firefox:

Internet explorer: support is still there but will end towards the end of 2021:

Microsoft Edge:

Browsers on mobile devices:

Issues with SAP and browsers

Issues with SAP and browsers can be on both side: SAP and browser side. A new security note on SAP can suddenly block correct working of an SAP browser based function. A new security patch on the browser can also suddenly block it. Testing all combinations is a very hard process and almost impossible to do. The best way is to allow the users at least 2 different browsers. If one browser is having issue with an update, usually the other browser still works, which can be used as a workaround. It is not nice and pretty, but it gives you time to fix the issue. For issues on the SAP side: best to yearly patch the UI rendering notes (see this blog), and to carefully test notes that impact the web part (like security notes which are meant to close security holed in the netweaver web part).

Technical clean up for Solution Manager

This blog will focus on technical clean up for SAP solution manager.

Questions that will be answered are:

  • How can I reduce size of fast growing tables in SAP solution manager?

Technical clean up general

SAP solution manager is a netweaver system which also used BI functions. For the general tables read the Technical clean up blog and for the BI parts, the BI clean up blog.

Solution manager specific clean up

A good starting point for clean up is OSS note 2549260 – Certain tables in Solution Manager system grow fast. This covers the most common use cases.

Special use cases are list below.

BI clean up

For BI specific clean up of solution manager, read OSS note2053261 – Solution Manager: HANA Database Cubes are not reorganized.

Custom code management clean up

Check OSS note 2790429 – Custom Code Management: Deletion Report for SP05 and higher. Then run program RAGS_CC_DATA_DELETION.

LMDB clean up

Table LMDB_P_CHANGELOG can grow very large. Note 1695927 – Cleaning up the change history in the LMDB explains to run program RLMDB_CLEAR_CHANGELOG for clean up.

CUP data

If table CUP_USAGE_DATA grows fast, follow the instructions from OSS note 2150720 – CUP enabled by default with automated cleanup process for outdated statistics.

E2E diagnostics data

If table SMD_HASH_TABLE is growing fast, check OSS note 1480588 – ST: E2E Diagnostics – BI Housekeeping – Information to clean up the data.

Technical monitoring data

If you are using Solution manager to do technical monitoring, the instructions for data reduction are listed in this OSS note: 2345041 – How to Reduce and Maintain Table Growth in Technical Monitoring for Solution Manger 7.1 & 7.2.

If you set up the monitoring in the past, but are not using it, best to switch it off. If you are actively using it, consider moving it to SAP Focused Run, which is far superior. More on Focused Run in this blog series.

Technical clean up for BI

SAP BI can be used in BI itself, but BI is more available than you think: embedded BI in S4HANA, inside SCM, inside SAP solution manager, etc.

Also for BI systems a technical clean up of data might be required when the data volume becomes too high. For other clean up read this blog on technical clean up.

Questions that will be answered in this blog are:

  • How can I do a housekeeping on my BI system using a task list?
  • How can I execute a technical clean up of old BI technical data?

BI housekeeping task list

Goto transaction STC01 and start the SAP_BW_HOUSEKEEPING task list. Select all cleanups you want to perform. Select in the variants the retention times and dates. When done, start the task list (best to do in background mode):

When done all should be green.

Reference OSS note for this task list explaining all details steps: 1829728 – BW Housekeeping Task List.

Bug fix note for BI on HANA: 3016692 – SAP_BW_HOUSEKEEPING Tasklist issue of RSO_PSA_PARTITION_CHECK ended in checkmode.

Clean up RSDDSTATDTP

For table RSDDSTATDTP, you can use clean up program RSDDSTAT_DATA_DELETE (transaction RSDDSTAT):

Background OSS note: 2971233 – RSDDSTAT_DATA_DELETE: “free date selection” vs. “all”.

Clean up RSBATCHDATA and RSBATCHCTRL

For Clean up of tables RSBATCHDATA and RSBATCHCTRL, you can use program RSBATCH_DEL_MSG_PARM_DTPTEMP (transaction RSBATCH):

Parameters: DEL_MSG to delete all records older than XXX (From 000 to 999) days (M-Records). DEL_PAR to delete all records older than XXX (From 000 to 999) days (R and P-Records). DEL_DTP has no meaning.

Background: OSS note 1942703 – RSBATCH_DEL_MSG_PARM_DTPTEMP does not delete all expected RSBATCH* entries.

FIORI in app extensibility

The new generation of standard SAP FIORI apps can be easily be modified in layout and small extensions. This is called FIORI in app extensibility.

Questions that will be answered in this blog are:

  • How can I easily change the layout of a standard SAP FIORI app?
  • How can I hide fields or rename labels of a standard SAP FIORI app?
  • How can I extend a standard SAP FIORI app with a custom field?
  • Where can I find more background information on all possibilities for in app extension?
  • How do I technically enable in app extensibility?
  • How to enable in app extensibility transports?

Technical enabling of in app extensibility

Activate this SICF node: /default_host/sap/bc/lrep.

And assign authorization role SAP_UI_FLEX_KEY_USER to your user. Without the role, you will not get the needed menu item.

Cosmetic UI changes

We will use the app manage purchase requisitions as example. Go into the app and select a purchase requisition. At the point in time we want to make changes, we go to the Adapt UI menu option in the personal menu:

The Adapt UI screen will now open:

For example we will remove the block Batch. Select is and push the minus button to remove:

We do the same with Material supplier number.

And we want to change the location of the Desired vendor element: we use drag and drop to move it.

And we want to change the label Plant into the word Factory:

When we are done we publish the changes by hitting the Publish button:

Upon publishing the system will ask for a transport number to store the changes.

Best practice is to do the changes on development system and transport them (for the setup see below). Do not maintain UI changes directly on production.

Adding fields to the UI

We also want to add a new field to the UI. Select the block where you want to add a field and select the + symbol:

You can now add a field from the existing filed from the available business context:

Press Ok to add it.

If you want a new field, click on the + icon in the available fields. You are now redirected to the custom fields app:

Select the Plus icon now to create a new field:

As example we create a checkbox with title “Rush indicator”.

Choose Create and Publish. On the custom fields page, enable it for the correct apps:

Publish the changes.

Before you can use the field: please reload the app you were extending (server and UI definitions are out of sync).

Now go back into UI adaption mode and you are able to select the new field:

You can Publish now. New field is available for now for the users.

Data storage

In case you were wondering where this data field is stored: it is stored in the S4HANA database.

In SE11 for table EBAN (purchase requisitions), you can see a new extend with the new field:

For different objects different tables are present. You need functional/technical SAP background knowledge to know the exact table.

Setting up the transport mechanism

To set up the transport mechanism for in app extensibility read this dedicated blog.

In short: transaction S_ATO_SETUP:

Set you packages and setup. Then activate and use the FIORI apps for transporting key user adaptation content.

Background references

References:

  • SAP wiki on FIORI in app extensibility
  • SAP presentation on FIORI in app extensibility
  • SAP help on in app extensibility for making simple UI changes
  • SAP help on custom fields and logic
  • Example blog on extending customer master FIORI app

Database and dictionary inconsistencies

During an S4HANA upgrade (for example with table PRCD_ELEMENTS) or during normal development work, you might end up in database and ABAP dictionary inconsistencies.

Questions that will be answered in this blog are:

  • How to detect database and ABAP dictionary inconsistencies?
  • How to repair database and ABAP dictionary inconsistencies?

Detection of database inconsistencies

In transaction DB02 you can get an overview of the missing database objects and inconsistencies:

Solving database and ABAP dictionary inconsistencies

The main procedure is explained in OSS note 1248769 – Inconsistency between database and ABAP Dictionary.

Start with transaction SE14 (database utility):

In the main screen click the Check button:

Result:

Pending on the check results, you need to Activate and Adjust the database.

Table reconstruction with DDIC user

Worst case you need to reconstruct the table. Be very sure this is needed before you execute it! Procedure for reconstruct: log on with user DDIC. Start transaction SE14. Select the menu option Table/Reconstruct (this option is only available for user DDIC).

Never use the database utilities in Shadow phase of an upgrade. In case of issues there: raise support message to SAP and only execute after instructions of SAP.

Including customer transports in SUM upgrade procedure

This blog will explain the option of integrating customer transports into the SUM upgrade.

Questions that will be answered are:

  • Why should I integrate customer transport requests into the SUM upgrade?
  • How do I integrate customer transport requests into the SUM upgrade?
  • How to check the RC import code of the customer transport requests included into the SUM upgrade?

Why should I integrate customer transport requests into SUM upgrade?

After an upgrade (especially to S4HANA) there can be a large amount of customer transports needed for S4HANA customer code fixes and fixes for the S4HANA upgrade itself (Z code fixes and OSS notes). All these transports will have to be imported in the production system and take time. For a larger system these transport can add up ranging from 1 to 4 hours import and check time. This is all added to the business downtime of the upgrade. By integrating the customer transports into the SUM upgrade, these transports will now be imported by SUM tool in the system build, saving you the import time. As a result the business down time is decreased. If you have a larger system with high pressure on reducing business downtime, this method is worth while to look at.

How to integrate customer transport request in SUM upgrade?

Activate SICF service SCTS_DIST_CTL_UPGINT_UI. Then start transaction SUPGINT_APP:

Press next to select the system:

Next and select Create new Task:

Now select all the transports (select carefully the ones you want to include):

On the next screen confirm the selection and then download the buffer file.

This buffer file you can use in the SUM upgrade tool.

The transport will be imported as part of the shadow build.

RC code handling and import history

The RC code handling of the customer transports has to be done from the SUM tool logging. See OSS note 2964187 – customer transports included in upgrade: returncode handling. This explains to check for RC-8 code of the customer transports.

The customer transports are not visible in the import history. When this is wanted, carry out the procedure as described in OSS note 2772908 – Customer transports involved in an upgrade are not visible in the import history.

References

Good references:

RFC connections with fast serialization

Fast serialization is an option in the RFC settings to increase performance.

Questions that will be answered in this blog are:

  • What is required to use RFC fast serialization?
  • When to use RFC fast serialization?
  • How do I make the settings for RFC fast serialization?

Fast serialization

Fast serizalization is available since release Basis 7.51. Downport might be possible, but think twice if you want to do this. Background OSS note on fast serialization is 2372888 – Fast serialization in RFC.

The whole goal of fast serialization is simply to increase the performance.

The fast serialization option is set in the RFC destination on the tab Special Options at the bottom:

Note that in S4HANA destination NONE is using fast serialization by default. Keep it that way.

When to use fast serialization

Fast serialization can be used when both the sender and receiver side of the RFC connection supports it.

Fast serialization in custom or standard RFC function modules

In SE37 SAP can set an RFC enabled function module Interface Contract to Fast serialization required. If you have build custom RFC function module that also only works with Fast serialization you should set this option:

SAP downtime optimization app

SAP has create an app for analyzing the downtime for a SAP system upgrade or support package.

Questions that will be answered in this blog are:

  • How to use the SAP downtime minimization app?

Full references of SAP downtime minimization app

The full specification of the SAP downtime minimization app is maintained in SAP OSS note 2881515 – Introduction to the Technical Downtime Optimization App and on this SAP blog.

Using the SAP downtime minimization app

The app is hosted at SAP and can be reached on this URL: https://launchpad.support.sap.com/#/downtimeoptimization. When you start you come to the intro screen:

You start with the upload button. Here you can upload the UPGANA and APPLANA xml files:

After uploading, you need to wait 3 hours.

When you come back the result should be there:

Now you can analyze the SUM runtime uptime and downtime phase timing (this is tool time without idle time). There are hints given by SAP on which parts improvements could be made.

Reducing downtime

For reducing downtime, you can read the blog on including customer transport in SUM upgrade procedure as one of the means to reduce the downtime.