Basic activation of webservice SOAP runtime

This blog will explain how to activate the SOAP runtime inside the ABAP stack. This is a mandatory step before you can set up web services in transaction SOAMANAGER.

Questions that will be answered are:

  • What steps are required for the setup?
  • How can I check if the setup is done properly?
  • What are potential issue solving actions?
  • What other tools are available?

Setting up the SOAP runtime

Setting up the SOAP runtime is extensively explained in OSS note 1043195 – Configuration of Web service runtime. The basic steps below have to be repeated twice: first you execute the actions in client 000, then in the main data client again.

Start transaction SRT_TOOLS for reaching the main tool set:

SRT_TOOLS start screen

In the Technical Configuration section select the tool for Technical Web Service Configuration. This will bring you to the main activation program:

Automated technical configuration

Hit Execute to start the automatic configuration. For more information see OSS note 2347013 – Configuration of the ABAP Web Service Runtime with transaction SRT_ADMIN.

In case of issues with the creation of user DELAY_LOGON, check this OSS note:

2848763 – Creation of DELAY_LOGON user using SRT_ADMIN does not work reliably.

Checking the configuration

To check if is ok go back to the main screen and select the Check Technical Web Service Config tool. This is the start screen:

Check technical configuration

Start the check. Result should be like screen shot below:

Technical check check result

For the background jobs check OSS note 2231932 – ESI – How to schedule the SAP_SOAP_RUNTIME_MANAGEMENT standard background job.

Issue solving during setup

During setup things might go wrong. If you run without SAP_ALL, please check the notes that you have sufficient authorization. In the process both a background user (SAP_WSRT and DELAY_LOGON) and RFC (BGRFC_SUPERVISOR) are created. If you don’t have authorization for that, issues will happen.

Use transaction code SU01D to see if the users are created properly with the correct roles.

Use transaction code SBGRFCCONF and check the last tab that the supervisor destination is assigned. In systems with CUA there might be an issue with creating the supervisor destination. In this case follow the steps of OSS note 2775490 – Error in customizing while creating supervisor destination.

Issue solving program (run in SE38): WSS_SETUP.

Issue solving transaction: WSIDPADMIN.

Issue solving after setup

If you have issues after setup, run the above check tool via SRT_TOOLS, or directly via program SRT_ADMIN_CHECK.

Common root causes: changes in authorization, overzealous user admin deleted SAP_WSRT or DELAY_LOGON user, or somebody deleted the supervisor RFC destination, etc.

SOAP consistency check: see oss note 2353589 – Consistency Check for Soamanager.

Consistency check for Business application ID: see oss note 2347852 – Consistency check for usage of Business Application Id within Web Service Configuration.

Other notes:

SOAMANAGER and issue solving

In SICF activate the services /sap/bc/srt and /sap/bc/webdynpro/sap/appl_soap_managements.

After the steps above and the general activation, the transaction SOAMANAGER should start up properly.

If you have issues with SOAP webservices, you can check the reference OSS note 2553979 – SOAP Web Services ABAP – Guided Answers.

The generic troubleshooting note for security issues is 2321968 – SOAP Web Service Security Troubleshooting.

Issue solving tools are described in OSS note 3038290 – Tools for analyzing problems in Web Service framework.

Other testing issues:

Other tools

The SRT_TOOLS transaction also lets you jump to other useful tools such as the WS message monitor and the web services utilities tool.

Webservice issues after system copy and other system changes

After a system copy you might be confronted with data inconsistencies. Upon start of SOAMANAGER you might get this screen:

Webservice setup issue after system copy

Follow the instructions from OSS note 2353589 – Consistency Check for Soamanager. It might mean you need to run program SRT_WSP_INITIALIZE_WS_CFG to re-initialize the complete setup and reconfigure all the webservices again.

Background: 2348042 – Web Service Configuration and system copy/refresh, and 3263624 – ESI – SOAMANAGER error: Read error in secure link ID.

In case of host name changes read OSS note 3235977 – Implications on Web Service Configuration in case of hostname change.

Removing a system from the configuration, read OSS note 3238552 – Removing a system from a local configuration.

Related bug fixes:

Retention of SOAP messages

Start transaction SRT_UTIL to go to the Web Service Utilities screen. From the menu now select the option Tools, Global Configuration. Here you can set the retention times (in days) to keep the SOAP messages:

OSS notes 2611962 – WS retention period and 3024345 – ESI – How to change the retention period for Web Service messages contain the background.

If table SRT_MMASTER is growing fast, it is time for clean up of web service data: see OSS note 2231932 – ESI – How to schedule the SAP_SOAP_RUNTIME_MANAGEMENT standard background job.

Idoc webservices

Some web services will use idocs. To use this feature basis first needs to enable this option by registering this service.  This registration is performed via transaction SRTIDOC.

Bug fix and explanation notes SRTIDOC:

SAP background wiki

Please follow this link to the SAP background wiki on basic SOAP runtime activation.

Activating web services

Oss note 2175422 – Web service provider configuration in transaction SOAMANAGER [Video] contains an excellent video with all the step to activate and configure a web service on the ABAP stack. See also this blog on how to convert any remote function module into a web service. And this blog on how to consume a web service in ABAP.

Use of logical ports is explained in this OSS note: 3237511 – Using default logical ports in Web Service scenarios.

Monitoring web services

For more information on monitoring web service message read this dedicated blog.

User role comparison

When you have updated a role this update needs to be reconciled with the existing users assigned to the role. This blog will explain how to do this.

Questions that will be answered are:

  • How to execute user role comparison?
  • How to perform mass execution?
  • What should I do in a productive system?

User compare in role building

User compare in role building is pretty easy. In PFCG when you get the yellow traffic light in the user tab the screen looks as follows:

Role user comparison

Simply hit the User Comparison button and you are done:

After PFUD run

Mass run of user comparison

With transaction PFUD you can do a mass user assignment comparison:

PFUD start screen

More information on PFUD can be found in OSS note 511200 – PFCG/PFUD/SU01/SU10: Role assignment and profile comparison.

Bug fix notes:

Running after transports and running in productive system

When you transport a role some changes might end up into the roles being updated, but the user comparison is not done. The end result is that the assigned authorization does not work, and you might get lots of complaints.

In oss note 571276 – PFCG: Transport of roles, SAP explains regarding the cleanup option: “If you schedule the user comparison in a way that means that there might be time overlaps with role imports, you should always deactivate the “Cleanups” option. Otherwise, imported profile data might be deleted.” and “The cleanup is not a security issue, so it does not have to be active for every comparison. Experience shows that it is sufficient to execute it once a week. However, it must be scheduled so that no role import is in progress at the same time.”.

That’s why it is wise to run the program behind PFUD, RHAUTUPD_NEW, in each system on daily or bi-daily basis without the cleanup option. And run it once per week in the weekend with the cleanup option enabled.

PFUD_AIMP transaction

OSS note 2734455 – Optimized user comparison after role imports contains optimized way for the comparison in some cases when you transport roles. It also explains the new PFUD_AIMP transaction.

ST03N time profiling

If you are running a global system you want to see the usage of the system round the clock. Unfortunately the standard delivery of SAP is summing up the early morning and night hours in the ST03N time profiling.

This blog will explain you how to change this to 24 hours statistics recording.

Questions that will be answered in this blog are:

  • How to switch to 24 hour time profiling?
  • How does the result look like?

General information on ST03N can be found in this blog.

Switching to 24 hour time profiling

To switch to 24 hour time profiling start program SWNC_CONFIG_TIMEPROFILE:

Program SWNC_CONFIG_TIME_PROFILE

Select the Calculate All Hours Separately option and hit the execute button. Done.

The end result

Before you can see the end result you best wait one week for the changed statistics to record.

After 1 week go to transaction ST03N and select the Time Profile option in the expert section:

Time profile selection in ST03n

The end results is a breakdown in all 24 hours:

Endresult

More background information can be found in OSS note 910897 – ST03N: Configuration of the time profile.

Transport check tool

SAP has delivered a new transport check tool. Goal of the check tool is to make sure your imports are done successful. The tool is designed to answer the following questions:

  • Do I import transports in the right sequence?
  • Do I have dependency on other transports, which are not yet imported?
  • Are there objects in the transport also used in other transports, which I should also import now, or when I do later make a downgrade?
  • How long will the import time take?

SAP transport check tool

The transport check tool is a program with name /SDF/CMO_TR_CHECK, or transaction code /SDF/TRCHECK. It is delivered in updates of ST-PI component. You can run this program in the normal system or from SAP solution manager.

If you start you get the following initial screen:

Transport check tool overview screen

Here you see that you need 2 RFC’s: one to the source system where the current transports are and one to the target system where the imports will happen.

Tip: make 2 variants for this program. One is called quality import with RFC source is development and target is quality system. Second is called production import with source is quality and target is the productive system.

In the transport details you can enter 1 or more transport numbers you want to validate. Enter in the transport list the sequence of wanted import.

Important for multiple transports: sequence does matter! If you enter transports in sequence A1, A3, A2 this will give different result from A1, A2, A3.

Cross reference check

The cross reference check will take all the objects in the transport and will execute a where used list in the target system and will check their versions. If any strange thing is found in missing items, or potential version conflicts, you will be alerted. If check is ok the list of items will be empty.

For the cross reference check to work, the transports need to be released. See OSS note 3382914 – /SDF/TRCHECK Cross Reference Check error.

Sequence check

The sequence check will check the sequence of your transports if they are in the right order. It will also check other transports as well for containing the same objects, which have not yet been imported to the target system. If any strange thing is found in missing items or potential version conflicts you will be alerted. If check is ok the list of items will be empty.

Import time in source system

This check will add up the import times of the transport in the source system. This will be a good indication for import time needed in the target system. Example: if import to quality system took 2 minutes, you can expect productive import to be about 2 minutes as well. If the import to quality took 2 hours, you might want to decide more carefully on the exact time of import to productive system.

Online import check

The online import check is for checking critical objects inside the transports. This needs to be configure in the target system of the transport. Read more in this dedicated blog.

History of transport check tool runs

If you use the option Save Results, the results of the analysis will be saved for future reference. These can be retrieved via the History button on the first screen of the transport analysis tool or via program /SDF/CMO_TR_CHECK_HISTORY.

More information

More information on the check can be found by hitting the I (information) button on the program itself. Features of the tool including the PDF explaining the setup of the Online Import Check feature can be found in OSS note 2475591 – Transport Check Report.

Generic SAP blog on the transport tool and its usage can be found here and here.

Specific SAP blog on cross reference check can be found here.

Limitations of the cross reference check are listed in this OSS note: 2964512 – Limitations of the Cross Reference Check.

Bug fixes

This tool is also subject to having bug fixes. The bug fixes can be needed centrally on the SAP solution manager system and on the SAP systems that are being checked for transport imports.

List of bug fix OSS notes:

Print list archiving

This blog will explain how to setup print list archiving.

Questions that will be answered are:

  • What is use case of print list archiving?
  • How to setup print list archiving?
  • How to test print list archiving?
  • How to troubleshoot issues with print list archiving?

Goal of print list archiving

The business sometimes needs to store report output for a longer period of time. They can print the information and put it in their archive. This leads to a big physical archive.

You can also give the business the option store their output electronically in the SAP content server.

Set up or check content repository

First check which content repository you want to use to store the print lists. The type of content repository must be “ARCHLINK”. Menu path in customizing is as follows:

Set up content repository

Or you can go there directly with transaction OAC0.

Content repository A2 is default present in the system and is used in the example below. A2 is pointing towards the SAP database for storage. For productive use a SAP content server in stead of SAP database.

Customizing for print list archiving

In the following customizing path you find all the actions required for the print list archiving:

Print list archivng customizing

First check that print list document type D01 is present and is using ALF as document class:

Print list document type

In the Edit links section, you can set for document type D01 which content repository is should use.

Print list to content repository link

Then check if the number ranges for archivelink are properly maintained (if empty create new number range):

Archivelink number ranges

Then activate the print list queues:

Setup print list archive queues

Next step is to select the action to schedule the storage job. This job should not run faster than every 15 minutes.

Final step is to setup the archive printer. You can later on see it with transaction SPAD as well.

Important here: short name must be ARCH. Device type and device class must be set to archiving.

Set up archive printer screen 1

On the access method tab also set access method to archiving.

Set up archive printer screen 2

Now the setup is complete.

Testing print list archiving

The test procedure is described in OSS note 1792336 – Test if a Print List is being Archived.

If you follow this procedure you will initially run into this strange screen:

Error screen

You didn’t do anything wrong yet. The problem is that the option for print to archive is not displayed by default. First go to the properties of a working printer to enable the archiving output option:

Print request properties screen

The rest of the note is self explaining:

  • Start SE38 and run program SHOWCOLO
  • Print the output list to printer ARCHIVE and archive mode selected
  • Goto SP01 find the spool, select menu path Print with changed parameters
  • Hit the Archive button
  • Start transaction OAM1 and hit the execute button next to Archive queue
  • Start transaction OADR to read from the archived print lists
  • From the list take the document and select the button “Display from storage system”

Troubleshooting

If you have issues, please check the troubleshooting OSS note  1775577 – How To and Troubleshooting guide for storing print lists in ArchiveLink.

Other OSS notes:

Oracle statistics update

If you are having performance issues, of if you have done intensive data archiving or technical cleanup in your system running on Oracle, you need to consider the Oracle statistics. Without proper statistics the performance of your system will be sub-optimal or even bad.

Questions that will be answered in the blog are:

  • How to run Oracle index statistics update?
  • How to use the update as part of technical cleanup?

Oracle index statistics update

To run the Oracle index statistics update, go to transaction SE38 and start program RSANAORA:

RSANAORA start screen

To redo the statistics of an index fill out the table and index in the format: table~index. In this example the main index (0) of table BALDAT is chosen: BALDAT~0.

Run the update and wait for it to be finished:

After RSANAORA run

Repeat this for every index defined in your system (lookup in SE11, button Indexes).

Runtime will depend on the amount of entries in the table and the type of infrastructure. Test on acceptance system before running in productive server.

Index run for almost empty tables

If your table is empty or almost empty you can also run RSANAORA with the option Alter index rebuild online. This will speed up read performance for that table index.

Regular runs

If you have setup regular technical clean up jobs as explained in this blog, you can opt to schedule a last step in the clean up job the update of the statistics program RSANAORA. This will ensure best performance while it will hardly cost you time.

Index monitoring

Oracle has a function called index monitoring to check if indexes are used at all.  You can use it to delete non-used indexes. See OSS note 105047 – Support for Oracle functions in the SAP environment.

Transaction locking

This blog will explain the new transaction SM01_DEV and SM01_CUS, which are replacing the old SM01 transaction.

Questions that will be answered in this blog are:

  • How does SM01_DEV work?
  • How does SM01_CUS work?
  • What are the differences between SM01_DEV and SM01_CUS?

SM01 transaction locking

In older SAP systems you can lock transaction for use with transaction SM01. In newer SAP systems you will get his message when using SM01:

SM01 is obsolete

This refers to new functions explained in oss note 2234192 – Enhancement to application start lock.

The new solution has 2 locking transactions: SM01_DEV for client independent locking and SM01_CUS for client dependent locking.

SM01_DEV locking transaction

Start tcode SM01_DEV:

SM01_DEV start screen

In this example we will lock transaction SE30_OLD. On the next screen select the transaction and press the lock button. Fill out the transport number. End result:

SM01_DEV

When starting SE30_OLD you now get this error message:

Locking message

SM01_CUS locking transaction

In this example we want to lock transaction S_ALR_87012271. The start screen is identical to SM01_DEV. If you want to lock the transaction you get a popup screen in which you can differentiate for WinGui or non WinGUI.

SM01_CUS lock

The transaction will be locked, but not be put into a transport. If you want to transport the lock, you have to use the transport button.

If OSS note 2470927 - SM01_CUS | API for application start lock does not work is not yet applied in the system you will face this error message after locking:

Application lock error
Applying the note solves this issue.

After locking tcode S_ALR_87012271 and starting it you get this message now:

Locking message for customizing

The transaction is now only locked in the local client. If you have more client or want a full central lock, then you have to run SM01_CUS from client 000.

Differences SM01_DEV and SM01_CUS

Differences between the 2 transactions:

  • SM01_DEV locks global and has mandatory transport
  • SM01_CUS locks per client and has an optional feature to transport

Overview of locked transactions

Program RSAUDITC can be used to get an overview of all locked transactions.

Bug fix oss notes

Bug fix OSS notes:

Generic background note: 2234192 – Enhancement for locking application start

Workflow initial configuration (before S4HANA)

This blog will explain the steps need to make the SAP workflow engine to work. If you have to set up the SAP workflow engine in S4HANA, please read this dedicated blog.

Questions that will be answered are:

  • How to execute the automatic workflow configuration?
  • What are common issues with workflow configuration?
  • How to test the automatic workflow configuration?
  • What other settings are to be done for custom workflow building?

Automatic workflow configuration

To setup workflow configuration start transaction SWU3. This brings you to the Automatic Workflow Customizing screen.

Workflow customizing start screen

If the system is new then you see most of the icons are red. Hit the Automatic Customizing button.

Depending on your version all actions might be completed. In this step in the background the user WF-BATCH is created along with the RFC connection WORKFLOW_LOCAL_<CLIENT>.

In the newer versions of SAP netweaver this automatic step might end up with this status:

Status after automatic workflow customizing

Zooming in on the RFC connection issue:

Configure RFC workflow local destination

You will see as analysis that the user WF-BATCH is not yet created. In the newer SAP versions SAP expects you to create WF-BATCH first, before you run the automatic workflow configuration. If you have done the auto configuration and get this message, just create WF-BATCH user in SU01. Then restart SWU3 and repeat the step for automatic customizing. It will be correct:

Final setup done picture

Testing the workflow setup

On the SWU3 screen hit the Start Verification Workflow button (if needed accept the event linkage activation). Be patient now for at least 5 minutes, since in the background normally a lot of code is compiling. Then go to the inbox to check if you validation workflow was properly launched. In S4HANA the button is no longer there on the SWU3 screen to jump to the inbox. You still can use the inbox button on the SAP start screen or use transaction code SBWP.

In the inbox you should see an item. Open it and make a decision:

Workflow verification end result

This will end the verification.

Common issues

Most common issue is to execute the automatic customizing without sufficient authorizations.

Best practice from SAP basis: execute SWU3 directly after installation with SAP_ALL still attached to your user ID. Then only hand over the system to the authorization team. After activation, you can remove SAP_ALL and provide the authorizations as explained in OSS note 1574002 - WF-BATCH and SAP_WFRT Authorizations.

For further troubleshooting and more background information on SWU3 SAP has released OSS note 2366252 – Transaction SWU3 explained.

Further explanation OSS notes: 

Settings for workflow development

For custom workflow development you need to execute one additional step in SWU3 to maintain the Prefix Numbers:

Workflow development setup

In the number range screen add the 900 series for custom developed workflows:

Workflow development setup 900 number range

This setting will be transported, so you only execute this action on development system.

More workflow

For workflow tips and tricks: read this blog.

Setup of FIORI my workflow inbox: read this blog.

For deletion and archiving of workflow: read this blog.

ABAP code metric tool

There are many static code analysis tools. Long list can be found on Wikipedia. At some point in time a manager or developer might come to you with one of these tools like “hey, at my previous customer we used SonarABAP for code measurements”.

This blog will explain the ABAP code metric tool built into netweaver. Together with the ATC tool the code metric tool covers most of the functions that such tools deliver.

Questions that will be answered in this blog are:

  • How can I count the amount of lines of Z code in my SAP system?
  • How to run ABAP code metric tool?
  • What output will the ABAP code metric tool deliver?
  • Use cases of the ABAP code metric tool?

Test program

The test the code metric tool write a small ABAP program like this:

ZNESTEDIF test program

This program has nested IF statements (3 levels deep), one ELSE statement and a nested DO.

Code metric tool

Start the custom code analysis tools with transaction /SDF/CD_CCA:

/SDF/CD_CCA

The code metric tool is the tool on the bottom of the screen.

On the start screen select the package and extra checks (selecting more packages and checks will increase the runtime of the tool):

Code metric tool start screen

Result for our test program:

Code metric tool output

The output is giving:

  • LoC: lines of code
  • NoS: number of statements
  • NoC: number of comments
  • COM: complexity of conditions
  • TOTAL DD: complexity weighted by decision depth
  • etc
  • IF: 3 (this was in our test program)
  • ELSEIF: 1
  • DO: 2
  • etc like amount of loops, selects, updates, deletes, modifies, case statements.

Use cases of Code Metric Tool

Use case 1: complex programs

Complex programs are normally source of most productive issues. You can use the code tool to check if the program is not too overly complex (like many nested if and case statements).

Use case 2: the procedural versus OO discussion

Sometimes you have managers wanting you to count the amount of Z objects. If you have switched from procedural coding to OO coding you will find the amount of objects to have increased. The code metric tool can help you here by counting the amount of statements and complexity. The amount of objects in OO is typically higher, but due to re-use and better setup, the total amount of statements and the total complexity decision depth should be smaller.

Use case 3: count the amount of Z code lines in your SAP system

Every now and then there is discussion on Z code. Sometimes the question will popup: “How many lines of Z code do we have in our SAP system?”. This question you can answer as well with the code metric tool explained above.

For reference: SAP standard has 238 million lines of code (source is this SAP blog).

ABAP clone finder

This blog will explain the use of SAP clone finder.

Questions that will be answered in the blog are:

  • What are clones?
  • How to run the clone finder tool?
  • How to analyze the difference between the original and the clone?

What are clones?

Standard SAP offers lot of out-of-the-box functions and reports. But in many cases the standard report only offers 95%. What to do? In many cases developers copy the standard SAP program to Z copy and add the needed 5%. When upgrading the system to higher version or when applying support packages or OSS notes, the Z clone will not be upgraded to latest version. Maybe the clone needs updates as well, or can be deleted now after upgrade (if SAP added the missing 5%).

The clone finder tool is able to find the clones made in the past.

When you are doing a S4HANA conversion project (see blog) you will have to look again at these clones if they are still relevant or not.

Running the clone finder tool

The clone finder is part of the Custom Code Analysis workbench. Start the workbench with transaction /SDF/CD_CCA or transaction CCAPPS:

/SDF/CD_CCA

Clone finder is on top of the list.

Start screen of clone finder:

Clone finder start screen

Pending on the size of your system you can run online or in batch.

Test result of standard SAP copy made as example:

Clone finder results

As example program RSUSR003 and its includes were copied to Z programs. 3 are shown as identical copies. 1 is altered.

In the function link column you can hit the Version Compare button to see the differences:

Version comparison

Differences: the name of program and includes are different. And the authorization check was removed.

Relevant OSS notes

Useful OSS notes: