When executing data archiving you have to be acting careful. The data archiving write and delete processes can be consuming a lot of CPU power from the database. Also, if you are not careful you might, by accident, claim all background processes. This blog will explain how to limit the amount of batch jobs used for data archiving. The data archiving run process itself is described in this blog.
Questions that will be answered in this blog are:
How can I limit the amount of deletion jobs?
How can I restrict the archiving jobs to run on a specific application server only?
Limit amount of deletion jobs
When the write run of data archiving is finished, this can have delivered many files. If you are not careful with the deletion, you select all files and each file will start a deletion run. This will consume a lot of CPU power on database level, since the deletion run will fire many DELETE statements to the database in rapid sequence. Also you might consume all batch jobs, leaving no room for any business batch job.
In stead of running the deletion from SARA, you can also run the deletion via program RSARCHD:
With this example, MM_EKKO files will be deleted. Maximum of 50 files from 1 archiving run will be processed, with a maximum of 2 deletion batch jobs running at the same time.
General application server restrictions via batch job server group
In SM61 you can setup a special batch job server group. Here can assign a single application server for you data archiving batch job processing. We assume here you created a group called DATA_ARCH.
In SARA you can now goto the general data archiving settings:
Now you can link the batch job server group:
With the button JobClasses you can specify the job priorities per data archiving function:
A = high priority, C = low priority. The above screen shot is an example.
In the previous blog we have exposed a web service. Now we will show how to consume a web service in ABAP. As example we will consume the web service we exposed in the previous blog. This blog assumes you have configured the basic web service SOAP runtime (if not, read this blog).
Questions that will be answered in the blog are:
How to generate a web service consumption proxy?
How to setup SOAMANAGER for web service consumption?
How to test the web service consumption setup in SE80?
How to use the generated web service consumption proxy in ABAP code?
What are the authorisation and security aspects for web service consumption?
Generating web service consumption proxy
Start in SE80 by exporting the WSDL file from your previously generated webservice. Goto the WSDL tab and press export to save the WSDL file locally:
In SE80 in your package select Enterprise Services and right click on it to create a new service:
In the object type screen select Service Consumer:
Now select External WSDL/schema:
Select local file:
Select the local file:
Select the package, transport and use Z as prefix:
Then select Finish to complete the roadmap.
Wait for the system to compile the software:
Save and Activate. Now the design time proxy is ready.
SOAMANAGER settings
In the previous steps we have setup the design time proxy. Now we add the runtime artefacts as well.
Now goto transaction SOAMANAGER:
Select Web Service Configuration, and search for the newly created design time object:
Click on the blue internal name to reach the configuration screen:
On the screen press Create and then manual configuration:
Give the logical port a name and description and mark the logical port is Default tickbox to true. Then continue with the roadmap.
Now fill out user ID and password. Continue and fill out user ID and password:
You can lookup the access URL from the service defined in the previous blog and check on the transport settings tab:
Do not use the WSDL URL address, but the binding URL!
Now fill out the URL details in the next screen.
Now finish the roadmap. And on this screen hit the ping web service test button to check if all is ok:
The design time artefacts can be transported. The SOAMANAGER settings need to be repeated in each system. This is wanted as well, since on a test system you might want to call a test web service URL and on production the same web service from the production URL.
Testing the web service consumption setup
Now go back to SE80 and test the web service consumption:
Select the port you created above in SOAMANAGER:
Edit the data:
And press test to get the results:
Using the web service consumption proxy in ABAP code
Now we are ready to use the web service consumption proxy in our ABAP code. ABAP code example:
* Data Declarations DATA: zcl_proxy TYPE REF TO zco_zbapidemowebservice, " Proxy Class zdata_in TYPE zzbapidemo, " Proxy Input zdata_out TYPE zzbapidemoresponse, " Proxy Output zfault TYPE REF TO cx_root. " Generic Fault
* Instantiate the proxy class providing the Logical port name CREATE OBJECT zcl_proxy EXPORTING logical_port_name = 'ZDEMOWS'.
* Set Fixed Values zdata_in-zimport = '1'.
TRY . zcl_proxy->zbapidemo( EXPORTING input = zdata_in IMPORTING output = zdata_out ). WRITE: / zdata_out-zexport. CATCH cx_root INTO zfault. * here is the place for error handling
ENDTRY.
Run the ABAP and see the result:
How to get the right parameters? All the required structures can be found on the SE80 ABAP web service consumption proxy internal view:
Authorizations
The end users using the ABAP that is consuming the web service must be given the rights for the correct S_SERVICE object. Otherwise they will get an error that they are not authorized to call the proxy service object.
Monitoring the availability of the web service
It was explained you can test the connection. Unfortunately there is no out of the box way to test this connection in a batch job on a frequent basis. If you want to frequently test and be alerted on issues with connection to the web service, you can read this blog to deploy a simple custom program that executes this function and can be planned in the background.
Background notes and blogs
More information and details can be found in these 2 SAP wiki’s: wiki1 and wiki2.
Larger productive systems have multiple application servers to spread the workload. But if the system is not configured properly one application server can be overloaded while others are almost idle. This blog will explain the load balancing settings.
Questions that will be answered are:
How can I check my current load balancing situation?
How can I load balance SAP GUI users?
How can I load balance SAP to SAP RFC traffic?
How can I load balance external system to SAP RFC traffic?
How can I load balance qRFC traffic?
How can I load balance batch jobs?
How can I load balance web traffic?
How can I load balance workflows?
How can I configure MRP parallel processing settings?
How can I configure load balancing for TMS transport system (STMS)?
How can I validate if load is properly balanced?
How to make parallel processing settings
Parallel processing settings are explained in this blog.
How to check current situation of load balancing
You can start transaction AL08_OLD (in older systems AL08) to get an overview of the distribution of your logged on users and how they are spread over the application servers:
Or use the new load balancing tool: read this blog for the new tool installation and usage.
Load balancing for GUI logon
With transaction SMLG you can setup logon groups that can be used for SAP GUI logon and RFC logon. In the details of each logon group you can make dedicated settings:
The Fav.Typ setting indicates the load balancing mechanism (round robing, best performance, weighted round robin). Set Ext RFC-enabled to also do load balancing in this group for external RFC calls.
You can set limits per application server on response time and amount of users. This limit is not a hard limit, but a soft limit to influence the quality calculation. The setting is per application server and it is across the logon groups (you cannot make settings per logon group). The background of these limits is explained in OSS note 118093 – Concepts of defining ‘limits’ in logon load balancing and on the SAP wiki page.
In SMLG you can choose menu option Goto / Load distribution to get an overview of the current load distribution and quality:
A higher quality number means it has the best quality. New users that logon will be routed to this server if you have set the SMLG settings to Best Quality.
RFC traffic load balancing for external system to SAP connections
Many external systems connect to SAP via the SAP JCO connector. The JCO connector can do load balancing, if configured properly. The problem here is that the developers form the other application using JCO have no idea on the settings to be made. The other problem is that on a development system the settings are typically pointing to one server only and the basis team did not configure load balancing. Now suddenly in production (or in a quality environment) they have to switch to load balanced settings using different parameters.
The parameters settings to be made are explained in:
Also setup the logon group in development system and assist the external team with the needed settings. The best way is that the external team uses load balancing settings from the start in development as well
Setup extra application server in quality landscape to test load balancing
RFC server group
With transaction RZ12 you can setup RFC server groups that also can be used for load balancing purposes.
RFC load balancing for qRFC
If you use qRFC (this is used for example in the CIF interface to SCM and EWM), then you need to configure the RFC group (settings made in RZ12) in transactions SMQS and SMQR. See blog on qRFC.
Web traffic load balancing
For web traffic load balancing, you have to set up the SAP web dispatcher. In the SAP web dispatcher you can configure to which back-end application servers to use.
Batch job load balancing
Batch job load balancing can be done by setting up batch job server groups in transaction SM61. See this blog.
Server size capacity balancing
The ABAPMETER tool (see blog) can be used to check if all your application servers are processing at the same speed. Some might be having lower CPU capacity or strength. Or having slower network connection.
The MRP run (material requirements planning) is a very intensive process from the system perspective and very important from business perspective. It is important that the MRP run finishes in time, but is also should not overflow the system by occupying all work processes and CPU. In this customizing action you can defined the MRP run parallel processing settings:
Now you can assign the specific application servers that the MRP run is allowed to use in parallel and the maximum amount of work process it can use:
There is also specific MRP tool now available. Not related to parallel processing, but is can help you in technical optimization of the MRP run. See blog.
Load balancing for GRC access control SOD risk analysis
View V_TBANK_PP_DISTR (via tcode S_GF1_13000059) determines the load balancing for GRC access control SOD risk analysis:
Load balancing for SCM-APO-CIF transfer initial loads
Initial load transactions towards SCM-APO via the CIF interface (CFM2, CFM9, etc) have a section to set parallel processing:
OSS note 943334 – TMS setup in high-availability systems describe the enabling of load balancing via logon group SPACE for TMS via program TMS_MGR_LOADBALANCING. A different logon group is not possible via this program.
To check if load balancing has done its job, go to transaction ST03, and open the section Load History and Distribution, Instance comparison, then the time frame:
Check that the load is evenly distributed among the application servers. The central instance will off course have a different load profile.
Troubleshooting OSS notes and blogs
The following OSS notes can be useful for troubleshooting:
To change the message subject of a mail, create a new message in SE91. Example is class Z_CUSTOM message 010 with text: “Gentle reminder of workflow”. Now put in field message class for subject field the name of your class (Z_CUSTOM) and the message number in message number for Subject:
Changing the body of the message of the reminder mail
Goto transaction SE61 and select text type Text in Dialog. First the default text SWU_NOTIF_INBOX:
Now use the copy button to copy the text to a Z text. For example Z_SWU_NOTIF_INBOX. Change the text as per you requirement and activate the text.
Now you can use this new text in the workflow reminder mail program:
SAP workflow inbox
Using transaction SOY5 or via program RSSOINBO you can get an overview of the amount of workflow items per user:
Via program RSSOINBD you can delete the inbox of a user:
In the second screen select all the items you want to terminate and use menu option Edit / Work Item / Logically Delete. The workitem will now to status CANCELLED. Then they can be archived (see blog).
Workflow development objects can give some issues in transports, since not all objects are immediately put into a transport upon development.
If you have set a workflow task to general and want to transport it, use program RHMOVE30 to put it into a transport. For more background read this SAP blog.
Substitution and forwarding
Using transaction SBCS_EXTCOM you can setup forwarding for a user ID towards different user ID as admin. This might be needed in case of illness of a user:
In the third tab of this transaction you can see if a user has setup a substitution himself.
With transaction SWEQADM you can manage the workflow event queue. Transaction SWEQBROWSER can be used to view the content of the queue. Program RSWEQDELETE can be used to clean up the workflow event queue.
With data archiving you reduce the database size of SAP and increase the performance by reducing the amount of records in the SAP tables. The data archiving process write files with the archived data. These files must still be stored securely, since on file level any admin can delete the files and you might loose valuable business data.
This blog explains the setup of storage of data archiving files by using SAP content server as storage medium.
Questions that will be answered are:
How do I setup the link from SAP netweaver ABAP stack to the SAP content server?
Which settings do I need to make in the archiving objects to store the archiving file to SAP content server?
How do I store the files in the SARA transaction?
General tips and tricks for SAP content server can be found in this blog.
Setup of SAP content server 7.5 information can be found in this blog.
How to setup archiving technically can be found in this blog.
Linking the SAP Netweaver ABAP stack to SAP content server
First we need to maintain a special protocol in customizing using this path:
Create a new protocol:
This protocol can now be assigned to the SAP content server you want to use for storing the data archiving files. Go to transaction OAC0 to link the protocol to your content server:
If the field protocol is not visible immediately there, click the button Full administration first.
Data archiving object specific linking
After the steps above to make the general connection to content server available, the content server needs to be explicitly mentioned in each data archiving object. For any data archiving object (start transaction SARA first and select the object), click on the customizing button:
In the popup screen now select Technical Settings in Archiving Object-Specific Customizing:
At the bottom fill out the content server repository and decide if you want to start automatically or immediately:
Remark 1: the F4 search help does not work here! Key in the value directly and check using the check button. Then save the data.
Remark 2: always tick the option Delete Program Reads from Storage System. This forces that the archive file is securely stored first, before the deletion run is allowed to start.
Use of archive routing
If you have a lot of archiving data and a lot of years of archiving done, it can be needed to set up a second or third content server.
With the use of Archive Routing you can determine in which content server to store which archive files.
On the SARA screen push the customizing button and select Archive Routing:
Now set up a rule:
And the conditions of the rule:
This setting does NOT work for the CHANGEDOCU object. To achieve the same for CHANGEDOCU, you must switch to the licensed SAP ILM product.
Storing archive files in SARA
After the configuration is done the new button Storage system appears on the screen in the SARA transaction for this specific object:
If the button does not appear: check the technical settings above, and remember: this is to be repeated for each object.
Storing files that have been written by the Write phase of the data archiving process can now be stored by pressing the Archive Files button:
Select the file(s) to store:
Now a batch job starts (per file!) to store the archive file into the SAP content server.
After correct storage of the file, the file can be selected in the delete phase.
SAP has released content server 7.5. Content server can be used to store attachments, documents and archiving files outside of the SAP database.
Questions that will be answered in this blog are:
Where can I find more information on SAP content server 7.5?
How to upgrade to SAP content server 7.5?
What is the support on my SAP content server 6.5 installations?
SAP content server 7.5
The main OSS note for SAP content server 7.5 is 2786364 – SAP Content Server and Cache Server 7.5 (and higher). This is a major different technology setup: there is no Apache or Microsoft webserver needed any more. The content repository setup itself does not change.
As mentioned before the technology has changed on how data is put into content server and how it is retrieved, but the data structure itself is the same. Note 2786364 – SAP Content Server and Cache Server 7.5 (and higher) is also describing the migration process. Your database (most of the times MaxDB) remains as is. But you have to install new 7.5 content server. Then you migrate the configuration. You stop the old 6.5 server and start up the new 7.5 server. You test that all works via the content server check programs from this blog (you might need to perform changes in transaction OAC0). SAP recommends after successful migration to clean up the old 6.5 as soon as possible to avoid issues (like an overzealous admin starting it up again…).
Support of SAP content server 6.5
In the main OSS note on SAP content server 6.5 (1983930 – Availability of SAP Content Server 6.50) there is no direct indication of end of support date. SAP content server 6.50 is part of the Netweaver 7.40 stack. The support of this stack ends by 31st of December 2020.
The content server test programs (for example RSCMST) can respond differently with the new content server. SAP is updating these. For more information see the blog on content server tips & tricks.
SAP JCO is the workhorse for JAVA programs and other external programs to call RFC enabled function modules and BAPI’s to SAP ABAP systems.
Questions that will be answered in this blog are:
Where can I find information on the JCO 3.1 version?
What is the end of support for the JCO 3.0 version?
JCO 3.1 version
The main OSS note for JCO version 3.1 is 2786882 – SAP JCo 3.1 release and support strategy. Documentation for JCO 3.1 is available publicly on the SAP site. Or download the PDF of the JCO 3.1 standalone connector directly via this link. General implementation information on both versions is still on the SAP wiki page.
When you are storing a lot of SAP office documents, you will find that table SOFFCONT1 is growing to a large value. Out-of-the-box SAP stores SAP office documents in that table. This blog will explain how you can route the storage of these documents from database to a content server. If you no longer need the SAP office documents, you can also delete them (read this blog on the deletion).
Questions that will be answered are:
Which settings do I need to make to route SAP office documents to the content server?
Which settings do I need to make to route GOS attachments to the content server?
How can I test if the documents are stored correctly in the content server?
Check current settings
Start transaction OAC0 and open the entry for content repository SOFFDB:
Here you can see documents are written to SAP table SOFFCONT1.
Reconfiguration of SAP office to content server
First check with transaction OANR that the number range is defined properly:
Goto transaction OAC0 and alter the settings for SOFFDB to your content server settings:
Also set up a new content server:
Now goto transaction AOCT to change the category settings for 3 entries: SOFFDB, SOFFHTTP and SOFFPHIO:
There are more settings to be done or validated. It might be that these settings are already done in your system. If not, make the settings.
First define the Data carrier in customizing:
Make sure the entry for Data Carrier for front end has the type PC defined with a temporary storage path:
Please make sure that the end user has full rights to this directory. Some companies shield a lot. Without write and delete rights a temporary file cannot be stored here and the function will not work.
Now check that the default entry for data carrier is present. If not present use the Create Default Entry button to create it:
Now check the workstation application settings in the customizing path below, or directly via transaction DC30:
Search for the application type PDF and make sure the entries for 1 (display), 2 (change) and 3 (print) are maintained:
%AUTO% means it will take over the value from windows default to open PDF file.
Repeat this check for the popular formats DOC and DCX (Word), PPT and PPX (powerpoint), XLS and XLX (excel), ZIP (compressed files).
Testing the setup for SAP office
To test the setup for SAP office goto transaction SBWP to create a new message:
Create a document with attachment:
During upload you will see in the left bottom side the Test HTTP destination and destination test ok:
This means the document will be moved to content server. If this does not come, it is not ok.
If all is uploaded and you have filled out a receiver: hit the send button.
Now go back to SBWP and select the outbox. Double click on your message you just created and go to the attachment tab:
The document opens now.
You can ask your basis team to stop the content server. If that is stopped the document will not open (you get a HTTP error). This proves that the attachment is stored in the content server.
Testing the setup for GOS
To test the setup for GOS goto one of the transactions supporting the GOS setup. In our example we will use purchase requisition change (transaction ME52N). Select a purchase requisition and open the GOS box top left:
Select Create… and then option Create Attachment and upload a file.
Now select attachment list:
Open the document. Ask you basis team to stop the content server. Now try to open again and you will get an http error proving the document is stored in the content server.
Migrating existing documents
To migrate existing documents from the database to the content server, you can use program RSIRPIRL. The use of this program is explained in OSS note 2459712 – How to use report RSIRPIRL. For GOS documents: better use program RSGOS_RELOCATE_ATTA.
Depending on your database the moving of attachments from database to content server will immediately free up storage, or only after database table reorganization.
For users that do not use the SAP GUI regularly, you can use the SAP GUI for HTML as an alternative. The end users will then access the SAP system via the GUI shown in the web browser. This way the end user does not need to install the fat client on his laptop or desktop.
Questions that will be answered in this blog are:
How to activate the SAP GUI for HTML?
How to change the theming?
How to monitor the ITS behind the SAP GUI for HTML?
How to call the ITS for a specific transaction?
The main help.sap.com page is located at this link. It contains extensive help on the complete ITS webgui setup, how-to documents and troubleshooting guides.
Activation of SAP GUI for HTML via integrated ITS
In transaction SICF activate the SAP GUI for HTML node /sap/bc/gui/sap/its/webgui:
URL for a specific transaction
If you wan to use the ITS webgui for a specific SAP transaction, the URL build up is as follows:
The SAP GUI for HTML is using SAP ITS (internet transaction services) to render the HTML pages. Transaction SITSPMON is the monitoring transaction for ITS:
The SAP GUI for HTML is very sensitive for issues in the SAP kernel. When applying a kernel update, test the use of SAP GUI for HTML carefully for the functions your business needs. More on kernel patching strategy can be found in this blog.
Upload and download of files with the WEBGUI file browser