Thursday, September 20, 2018

miniSAP - SAP NetWeaver 7.52 SPS1, installation

After release of “miniSAP - SAP NetWeaver 7.51 SPS2” which occurred last year on SAP TechEd 2017 this year the SAP is coming with newer version of ABAP stack which is SAP NetWeaver 7.52 SPS1. It looks like that the SAP is starting a good practice releasing the newest versions of their ABAP servers for developers. This is something that many people are very welcoming including myself. Even in the age of cloud computing the cloud is not solution for everyone (speaking here about cost of running SAP in cloud providers from independed SAP developer perspective or even student).

This year I choose OS openSUSE Leap 15.0 (released on 2018-08-21) is higher OS version as openSUSE Leap 42.3 (released in 2017) for the miniSAP NW752SP01.

As usual installation files can be downloaded from SAP Store. You either look it up directly at or go to and find a link to the SAP Store there. Alternatively you can go via or to save all the hassle go directly to the page with the files. If you have a troubles with downloading the file like I had (see here) getting an error “You are not authorized to download this file” try to delete cookies or use different web browser.

Again within this release an installation procedure is very well described in blog by Julie Plummer that can be found at SAP AS ABAP 751 SP02 Developer Edition to Download. Therefore, I’m not going to describe the installation step by step. I just focus on one issue that I faced. 

In particular, it was related to license file of ASE database. In case your install fails with error like below: 

ERROR      2018-09-15 18:37:19.273 (root/sapinst) (startInstallation) [CInstallerCallBackImpl.cpp:259] id=ind-rel.ind-os.ind-db.assertionFailed errno=CJS-00030 CInstallerCallBackImpl::abortInstallation()
Assertion failed: Unable to verify database access for login SAPSR3. Refer to trace file sapinst_dev.log for further information

ERROR      2018-09-15 18:37:19.274 (root/sapinst) (startInstallation) [iaxxbjsmod.cpp:83] id=modlib.jslib.caughtException errno=MUT-03025
Caught ESAPinstException in module call: Assertion failed: Unable to verify database access for login SAPSR3. Refer to trace file sapinst_dev.log for further information..

ERROR      2018-09-15 18:37:19.537 (root/sapinst) (startInstallation) 
[CSiStepExecute.cpp:1102] id=controller.stepExecuted errno=FCO-00011 CSiStepExecute::execute()
The step syb_step_login_check with step key |offlineadjustment_dialogs|ind|ind|ind|ind|0|0|offlineadjustment_db_post|ind|ind|ind|ind|db_post|0|syb_rename_db_post_dia|ind|ind|ind|ind|syb|0|NW_SYB_DB_REN|ind|ind|ind|ind|syb2|0|syb_step_login_check was executed with status ERROR (Last error reported by the step: Assertion failed: Unable to verify database access for login SAPSR3. Refer to trace file sapinst_dev.log for further information). 

You need to download correct ASE license file (SYBASE_ASE_TestDrive.lic) from location and put it to folder /sybase/NPL/SYSAM02_0/licenses. Do not forget to set proper owner of the file (chown sybnpl SYBASE_ASE_TestDrive.lic) and group (chgrp sapsys SYBASE_ASE_TestDrive.lic). The correct license file is valid till March 31st 2020. 

Afterwards restart the installation. Once it is successfully over you shall get a message like this:

Enjoy the newest version of the miniSAP!

More information:

miniSAP - SAP NetWeaver 7.51 SPS2, installation

Well; a term miniSAP is not used any more. Nowadays they just call it "SAP NetWeaver AS ABAP Developer Editon" but for me it always will be the miniSAP as it reminds me my SAP early days back in begging’s of 2000’s when I started my SAP career.

After some time when old good versions of miniSAP weren’t available and as all software is moving to cloud there is a brand new version of SAP NetWeaver software - SAP NetWeaver 7.51 SPS2 as of SAP TechEd 2017. First of all, here’s what needs to be downloaded:

1. miniSAP NW 7.51 SPS2 installation files, a link to where installation file can be downloaded from is located at (edit: physical files for download removed from this site but there a links SAP Store where you can download it). There are 10 files about if size 1,4GB each in RAR files.

2. linux OS, several distributions are available, I chose SUSE Leap for SAP installations, at the time of my installation (fall 2017) the version 42.3 available here:

3. virtualization tool, e.g. VM Ware Player or VirtualBox I chose the latter one.

Once all the software is downloaded extract all 10 RAR files into folder. You will need approximately 14.3GB to store downloaded files. After the extraction it will have approximately 26GB including OS linux - openSUSE Leap 42.3. Start your virtualization tool and load image of linux OS. Then start the virtual machine and install the linux OS by choosing Installation on 1st screen. Rest of the OS install is very well described in article Linux for newbies or follow guide here, download info here, FAQs here, another Newbies Guide here and openSAP guide here. All the OS install shall not take more than 20 min at least that was a case on my intel i7 /32 GB memory based machine.

By starting up installation script ( first a license needs to be accepted (by typing ‘yes’) and then it asks to provide OS user password. Afterwards the installation starts to process files:

If you do not reserve enough space the installation may end up like below one J normally for installation there should be approx. 100GB of hard drive space available.

In case there is enough space the installation normally continues by extracting the files.
Password should follow rules: at least seven chars, big letter, small letter, digits, no special chars.
Below are errors I faced during the install:
1. Error: ‘unable to determine parameter DNS domain name’
Check whether host name and full host name with domain name is fulfilling requirements. Go with the name:   vhcalnplci vhcalnplci.dummy.nodomain

2. Error: ‘unable to verify database access for login SAPSR3’

And during the install change the file that is there in folder /sybase/NPL/SYSAM-2_0/licenses/SYBASE_ASE_TestDrive.lic with the downloaded file. This step is quite a tricky one. I had to make several attempts before I finally succeeded. Issue is that you do know exactly when you shall change the file and that was the biggest challenge. Also you need to be a bit skilled in linux command file as you need to set proper owner of the file (command chown).and group of the file (command chgrp).

More information:

Thursday, August 9, 2018

SAP HANA Extended Application Services (SAP HANA XS) flavors

HANA has built-in an application server for native development in the SAP HANA environment. There are actually two flavors application servers. I depict here the two and mention some differences. 

HANA native application development resides on the XS server (or also called as XS Engine or just XS). The XS is a small footprint application server including: web server and basis for an application development environment.  The XS is installed on the same hardware as SAP HANA. It does extend the SAP HANA database. It makes a platform out of it.

XSC - SAP HANA XS classic, lightweight application server includes web based HTTP and OData services. It can consume HANA database artifacts (e.g. calculation views) and it has built in support for the SAP Fiori UI. Also supports transactional services based on core data services (CDS). It uses database permissions, there are DB users in HANA itself. It was introduced in SAP HANA SPS 05 (around year 2012). 

Programming model: OData REST services is generated from any existing SAP HANA Table or View. All metadata and source codes (XS server-side JavaScript (XSJS)) for XS Classic app are stored in the SAP HANA repository.

XSA - SAP HANA XS Advanced is a new application server for native development in the SAP HANA environment. It supersedes SAP HANA XS. It is decoupled from HANA, are not necessary users in HANA DB. XSA started to be delivered SAP HANA SPS 11 (around year 2015).

Programming model: UI rendering and other front end processing is normally done in web browser using HTML5 and client-side JavaScript. Application logic, business logic, calculations, and data processing talks place in HANA DB by using SQL, SQLScript procedures, Calculation Engine (CE) functions. Means data processing is performed in database - close to the data. Three runtimes currently supported: 

XSJS - same as in XSC
Node.js – to support asynchronous web programming model, to leverage node.js’s ecosystem as there are many open source nodejs modules
Java – as there is a huge number of popular Java frameworks out there

More information:
SAP HANA SPS 11 new developer features xs advanced

Tuesday, August 7, 2018


It is OpenJDK implementation released and supported by SAP company. It is intended to enable SAP customers who runs OpenJDK in their environments. As they also use it productevelly SAP needs a platform to support their customers. It is technically fork from OpenJDK project but as SAP needs to react quickly on customer issues they rather providing “their own” OpenJDK implementation as for regular OpenJDK being open-source software the changes are not going on that fast as SAP would need. Another purpose of the SapMachine is used to showcasing and adding a new features of SAP’s proprietary Java Virtual Machine (SAP JVM) – also because they want to make it quicker than regular OpenJDK.

Related links:
What version of JAVA platform does SAP support?

SAP JVM online docu
1278274 - SAP JVM Restrictions (FAQ)

Unified Connectivity (UCon) framework part 2

I wrote about the UCon already few years ago see here: NetWeaver Unified Connectivity (UCON).
This post has refreshed info on the topic.

I introduced whitening / blacking (list) features of SAP in my older blog spot: White / Black Lists. In SAP terminology a securing of some of SAP objects is also called in as Unified Connectivity (UCON). It was introduced on NetWeaver platform in version 74. Very high level speaking the UCON is all about logging and blocking. By using the UCON only those of remote enabled function modules (RFM or BAPI) that are used in deployed scenarios are allowed to be executed. Execution of rest of them is forbidden and thus the NetWeaver system is secured on server side because possible attack to the system is reduced. 

To identify which RFMs are to be exposed and which are to blocked there are three phase process and toolset provided by the UCON. 

First of all, a system parameter ucon/rfc/active needs to be set in tcode RZ11 – system profile parameters. 

In 1st phase (Logging) you need to identify objects that ae accessed from outside systems. Here a tool called ”Phase Tool Unified Connectivity” (tcode UCONPHTL, prog UCON_PHASE_TOOL) is used. Also CCMS contains SAP Unified Connectivity Monitor Templates that are supporting the tool. 

Now in 2nd phase (Evaluation) it checks whether objects are not interrupting deployed business scenarios by being blocked.  Also tcode UCONPHTL is used in here.

And finally in 3rd phase (Activation) it needs to be confirmed that UCON checks will become effective. 

There is also possibility to override blocking settings of some RFM delivered by SAP. This is of course at your own risk. The ABAP program RS_RFC_BLACKLIST_CUSTOM can be used for that. By giving the RFM name to the program you can see what were original settings of the RFM. No need to add that all changes to the settings are logged. So by this way blacklisted RFM can be unblocked. The settings done by the program are transportable.

More information:

Tuesday, July 31, 2018

Can’t navigate in SE80 because left part of screen (tree) is too small?

I experienced this situation couple of times. By accident I made left part of SE80 (ABAP workbench or Object Navigator) screen so small that I couldn’t use the SE80 anymore. The left par basically allows selection of repository with which developer works subsequently object type selection and so on… Without access to that area no productive work can be performed.

The reinstallation of the SAP GUI doesn’t help as this information is persistently written in SAP backend system for every user. The table where the information is residing is called RSEUMOD. The table consists of all settings for ABAP Workbench which are normally maintainable via menu of the SE80 -> Utilities -> Settings.

However, the particular settings related to width of the area is not present in the settings. navigator in pixels. Therefore, only solution is to adjust it manually via tcodes like SE16N. The name of respective parameters is WIDTH - Width of navigator in pixels.

Number of pixel for TREE control on the left part of RSA1 (monitor of info packs). Useful to e.g. it in case it is too small and user can’t navigate e.g. can’t be enlarged. Any value below 50 has no meaning. I suggest to put value like 300 to make the area perfectly visible.

User related settings for tcode RSA1

There are couple of user related settings when it comes to Data Load Monitor function of BW’s Administration Workbench (RSA1). They are stored in table RSRADIOMON. In this post I will discuss what are they about and how to set it. 

Monitor is mostly handled by a report RSMO1_RSM2 and a call of FM RSSM_MON_SHOW_MONITOR_IC_RSM2 (include LRSM2I05, FG RSM2) and FM SELECTOPTIONSDATE. Depending of BW version, the Monitor looks like following:

UNAME                             User for which particular settings is valid for

Below columns are representing customizing of Load Monitor, whether it shall display (possible values either blank or X):
NOW                                Load monitor will show “Today’s” requests only

YESTERDAY                     Load monitor will show ”Yesterday’s and Today’s” requests only

WEEK                               Load monitor will show requests from Past Week (button ”In the Past Week”)

MONAT                             Load monitor will show requests from “This and Last Month”

FREE                                Represents flag: If Active in Time Period (if set means requests will be selected for which the system logged a message in the specified period). Free data range is saved in global memory under ID SELECTOPTIONSDATE, no persistent storage.

Following columns (possible values either blank or X) are representing Request Overview, whether it shall be displayed in format of:
TREE                                Overview Tree

LISTE                               Overview List

DYNPRO                           Planning Table

Following columns are representing visual (look and feel) settings of the Load Monitor:
PICTYPE                          Type of screen on the right side (possible values: 0 = Default; 1 = no; 2 = customer-defined pic)

PICNAME                         Image name for monitor/scheduler

PICSTRETCH                     Whether the picture shall be stretched over the screen (possible values: X or blank)

TREEWIDTH                     Number of pixel for TREE control on the left part of RSA1 (monitor of info packs). Useful to e.g. it in case it is too small and user can’t navigate e.g. can’t be enlarged.

STATSEL                          What statuses of the data load requests shall be filtered in the Load Monitor

RNRSEL                            What Request ID (Request Number) shall be displayed by default

SYSSEL                            What source system shall be selected when user enters Source Systems section

VIEWSEL                         Single-Character Indicator

LIFETIME                         Consider all data monitor entries found (possible values: X or blank)

CHAIN_TREEWIDTH        Number of pixel for TREE control on the left part of RSA1 (monitor and process chain monitor). Useful to e.g. it in case it is too small and user can’t navigate e.g. can’t be enlarged.

CHAIN_ACCESSABLE       Possibility of showing PC tree displayed in Network view. Normally this is not available for SAP GUI for JAVA. If you need to display your PCs in the Network view set this field to Y manually in the table for your user. Possible values: N or Y.

More information:
1991961 - P33; MON; PC: TREE control on left of monitor and PC monitor is too small

Zero elimination for cubes

Zero elimination (sometimes called NULL elimination) is process within BW which does deletion of records in fact table where all Key Figure values are zero. This can be normally seen as BW administration task. It can be performed on Manage screen of cubes in RSA1. On tab called COLLAPSE a check box “With Zero Elimination” is available. 

This task can also be done outside from the RSA1 by executing or scheduling a ABAP report RSCDS_NULLELIM. The report calls FM RSCDS_EXEC_NULLELIM for the task execution. In case the BW system is HANA based there is a report RSHDB_EXECUTE_CLEANUP_NULLELIM for HANA DB.

Parameters of program are very well described in this wiki.

From technical point of view notice there are few limitations of this functionality. Main one is that there is no 100% zero elimination for the Key Figures of type FLTP. It is not possible to precisely evaluate whether the KF type of FLTP is really equal to zero. Value of the KF may be close to zero but not precisely zero. Therefore, as word of advice in scenarios that rely on exact summing never use the KF type of FLTP. Report is using value 1.0E-50 which is pretty close to zero but there might be a values stored in the BW that are even smaller.

Also the NULL elimination is only possible if the KF aggregation is SUM for all of the KF used in the cube. If the cube contains the KF with aggregation types other than SUM (e.g. MIN or MAX) the database cannot eliminate the zero lines during the compression.

More information:
1224631 - Program RSCDS_NULLELIM and Float-Keyfigures (Type FLTP)
1587759 - Duplicate Records in InfoCube Dimensions
1820706 - Report RSCDS_NULLELIM fails on SAP HANA
2206835 - Report RSCDS_NULLELIM now also on SAP HANA
2521338 - Compression with Zero Elimination does not work

Tuesday, July 17, 2018

Issues while setting up SAP RFC Connector for NodeJS (node-rfc) connector

In one of my last posts I wrote about nodejs RFC Connector provided by SAP to connect SAP backend systems. The Connector works very well. However, while I was setting it up I faced few issues. I’m listing them here with solutions how to overcome them; perhaps it will be useful for someone else too.

1. Library MSVCP120.dll missing

One of prerequisites of nodejs RFC Connector is that SAP NW RFC SDK needs to be present on machine which will be used for making called to the SAP system. However sometimes SAP NW RFC SDK is not installed correctly on the machine. Basic check of the installation is to run command rfcexec. In case of issue there is an error like:
The program can’t start because MSVCP120.dll is missing...

Solution is to install Microsoft Visual C++ (2010, 2013, or newer depending on your OS platform) Redistributable component. Once installed there shall be following output of rfcexec:

2. NPM module xyz can’t be found

On attempt to run nodejs app using the Connector call there is a following error thrown:

Error: The specified module could not be found.

Basically the node-rfc tries to find rfc.node in specific folder /build/rfc but it's not in there because by default when it is installed another subfolder is placed there. In my case on OS Windows it is the subfolder "win32_x64". Solution is to just move or copy the rfc.node file to one level up.

3. Issues related to path variable.
As mentioned in point no.1 SAP NW RFC SDK needs to be present on the machine where the calls will be performed from. The folder where the SDK is installed needs to be included in path variable e.g.: