Quality Identification of rail-road tracks – An application of Dynamic Time Warping using SAP HANA PAL


In this blog the Dynamic Time Warping algorithm of SAP HANA PAL is applied to align two signals that can be used to assess the quality of a long section of railroad track. The algorithm is fast and efficient and proves to be a very useful addition to the Predictive Analysis Library for the solution of problems involving the comparison and averaging of time series.


As of 2016, there were nearly 30 million train riders each year in the USA, with nearly 40 million carloads shipped and $82 billion in freight revenue being generated annually along 140,000 rail miles operated by seven Class I railroads [1,2].

Maintenance of the constituent components of the railway is important to ensure that the train can be safely driven since rail defects are usually the cause of derailment accidents [3]. To guarantee safe traffic conditions it is important to test rails that are in constant use with minimal disruption to train times. This maintenance process is expensive due to tamping, ballast cleaning or renewal, sleeper replacement, joint repair, rail grinding or replacement and substructure treatment and other maintenance interventions.

Track quality is traditionally monitored by running a specialized-on-moving measuring car that measures track geometric basic parameters at intervals of about three months. Usually, the inspection car measures and records the variation of the track gage, vertical and lateral alignments and cross-level (angular variation on a track among many others. These measurements are recorded about every 900 mm, from lengths of up to 100 km, resulting in long sequences of data (signals).

The condition of the track is assessed by comparing the signals to a set of previously recorded reference signals. Before this can be accomplished, the two sets of signals need to be aligned so that the corresponding signals refer to the same point on the track with the caveat that the matching has to be done simultaneously. This matching is often done manually using visual inspection of the signals simultaneously

In order to automate the process and minimize the time for matching long sequences of signals we use SAP HANA Predictive Analysis Library (PAL) new Dynamic Time Warping algorithm [4]. Automating this process would diminishing the errors associated with visual estimation of optimal alignment and expedite accurate results, which are particularly difficult for long stretches of sequences.

The data set corresponds to a region near the lake of Chapala, Mexico as shown in Figure 1. This is an area with hazardous natural topography and the road traverses across the Sierra Madre Occidental, an area with shifting wind conditions that is prone to regular maintenance [5].

Figure%201.%20Area%20of%20interest%20near%20Chapala%20lake%2C%20Mexico.%20The%20insert%20depicts%20the%20section%20of%20railroad%20around%20the%20%u2018Volcan%20de%20Colima%u2019%20shown%20in%20bold%20red.Figure 1. Area of interest near Chapala lake, Mexico. The insert depicts the section of railroad around the ‘Volcan de Colima’ shown in bold red.

Dynamic Time Warping

The Dynamic Time Warping (DTW) was developed for speech recognition [6] and is commonly used for comparing data sequences, time series or classification samples in machine learning applications for optical character recognition, robotics, medical applications, time-series averaging etc. The alignment of two sequences of feature vectors is accomplished by stretching the time axis iteratively by duplicating distinctive data points until an optimal metric between the two sequences is minimized in an optimal way.

It is assumed that we want to compare two sequences, namely a target or query x = (x1, x2, x3, …, xN) and a reference y = (y1, y2, y3, …, yM).  Both sequences start at the bottom left of the grid shown in Figure 2. In order to align the sequences for comparison, a distance matrix C of N x M dimension has to be built. The element of the matrix C is an appropriate distance between two points xi and yj and represented by cij, e.g. for the Euclidean distance, cij = (xiyj)2. Once the distance matrix has been built, the DTW algorithm finds the alignment path, satisfying boundary conditions, monotoniciy and step size, which runs through the matrix elements that defines a mapping between x and y. Details of the algorithm and its implementation can be found in [6].

Figure 2. Optimal warping path illustrating the alignment idea of two sequences. The query (bottom horizontal axis) and a reference (left vertical axis).

The data set

The data along the track shown in Figure 1 is a section of about 27,000 m, from km 117 to km 144. The query set (target) has 88,749 points and the reference set has 91,261 points. Three signals from the set were aligned simultaneously, namely Curvature (Curvatura), Loaded Gauge (Medidor Cargado), Cross Level (Nivel Cruzado).

Since the accumulated distance matrix C has N x M entries, the computational complexity of the classic DTW algorithm is O(NM), i.e. for very long sequences, the computational cost of building a DTW solution could be very expensive. In our case, the size of the distance matrix C is N x M = 8,099,322,000 for the small portion of rail track that we are analyzing.

To reduce the computational time and memory requirements for this problem we partition the reference and query into a sub-series of lengths of 1.2 km and 1 km respectively, ensuring that there is always overlapping between the partitions and the location in the query, i.e. the query is a subset of the location in the reference. The final output is simply the appended values of the aligned signals at 1 km intervals that cover the entire length of the track. This is illustrated in the sequence of images shown in Figure 3.


Figure 3. Small extract from two Cross-Level signals illustrating the matching and partitioning. The black line corresponds to the query and the blue to the reference.

The images illustrating the Cross-Level signals of the reference and query as function of the reference location are shown in Figure 3. The blue lines correspond to the reference signal and the location interval is 1 km. The end of the signals in Figure 3(b) correspond to the beginning of the signal Figure 3(d). Similarly, the end of the signals of Figure 3(d) correspond to the beginning of the signals in Figure 3(f). By assembling the signals in this manner, we obtain the alignment of the entire data set. This is accomplished using a loop and the DTW from the Predictive Analysis Library native to HANA. We note in passing that that the alignment is just the preparation for the analysis of predictive maintenance. Once we have the reference signal and the target signal aligned, the difference in the signal along the location can be used for the analysis of the railroad conditions.

We have implemented the solution using DTW from SAP HANA PAL using SQL script [4], and for comparison of performance in R and Python. We found that DTW in HANA is tremendously faster by at least a factor o 100. The solution in R takes about 27 seconds (package “dtw” [7]), in python 20 seconds (package “dtw-python” [8]) and in HANA using SQL PAL less than a second to compute the entire data set. The SQL script and data can be obtained by contacting the author or in the github repository [9]. A sample code demonstrating the use of the DTW for two channels is provided in the Appendix.


There are many applications of the DTW algorithm applicable to Data Science, and predictive maintenance for railroads is just one of them. The DTW algorithm is a welcomed addition to the SAP HANA Predictive Analysis Library in SAP HANA 2 SPS05 and SAP HANA Cloud. We are currently using this algorithm for the averaging of time-series [10] with applications to maritime awareness. The procedure for time-series averaging and application to constructing the path that a vessel travels from port to port using DTW will be presented in the near future.


[1] https://www.amtrak.com/content/dam/projects/dotcom/english/public/documents/corporate/nationalfactsheets/National-Fact-Sheet-FY2016-0717.pdf

[2] https://gacc.nifc.gov/sacc/predictive/intelligence/NationalLargeIncidentYTDReport.pdf

[3] https://railroads.dot.gov/

[4] SAP HANA Predictive Analysis Library (PAL) https://help.sap.com/viewer/2cfbc5cf2bc14f028cfbe2a2bba60a50/2.0.05/en-US

[5] https://theguadalajarareporter.net/index.php/news/news/lake-chapala/53457-firefighters-battle-wildfire-in-chapala-mountain-range-2

[6] Sakoe H., Chiba S. (1978). “Dynamic programming algorithm optimization for spoken word recognition”, IEEE Trans. Acoust. Speech Signal Processing, Vol. ASSP-26, 43-49. https://ieeexplore.ieee.org/document/1163055

[7] Giorgino, T. (2009). Computing and Visualizing Dynamic Time Warping Alignments in R: The ‘dtw’ Package. Journal of Statistical Software, 31(7), 1-24, doi:10.18637/jss.v031.i07. http://dtw.r-forge.r-project.org/

[8] The python package ‘dtw-python.’  https://pypi.org/project/dtw-python/

[9] SAP HANA Machine Learning Github: https://github.com/SAP-samples/hana-ml-samples/tree/master/PAL-SQL/usecase_examples

[10] Petitjean F., Ketterlin A., Gancarski P. (2011). “A global averaging method for dynamic time warping, with applications to clustering.” Pattern Recognition, 44(3), 678 – 693. ISSN 0031-3203. URL https://doi.org/10.1016/j.patcog.2010.09.013.

Appendix – Sample Code

set schema DM_PAL; drop table PAL_FAST_DTW_DATA_TAB; create column table PAL_FAST_DTW_DATA_TAB ( "ID" nvarchar(100), "TIMESTAMP" nvarchar(100), "ATTR1" integer, -- only support integer or double "ATTR2" double ); drop table PAL_PARAMETER_TAB; create column table PAL_PARAMETER_TAB ( "PARAM_NAME" nvarchar (256), "INT_VALUE" integer, "DOUBLE_VALUE" double, "STRING_VALUE" nvarchar (1000) ); drop table PAL_FAST_DTW_RES_TAB; create column table PAL_FAST_DTW_RES_TAB ( "LEFT_ID" nvarchar(100), "RIGHT_ID" nvarchar(100), "DISTANCE" double ); drop table PAL_FAST_DTW_ALIGN_TAB; create column table PAL_FAST_DTW_ALIGN_TAB ( "LEFT_ID" nvarchar(256), "RIGHT_ID" nvarchar(246), "LEFT_INDEX" integer, "RIGHT_INDEX" integer ); drop table PAL_FAST_DTW_STAT_TAB; create column table PAL_FAST_DTW_STAT_TAB ( "STAT_NAME" nvarchar(256), "STAT_VALUE" nvarchar(1000) ); truncate table PAL_FAST_DTW_DATA_TAB; -- time series 1 insert into PAL_FAST_DTW_DATA_TAB values (1, '2020-01-01', 1, 5.2); insert into PAL_FAST_DTW_DATA_TAB values (1, '2020-01-02', 2, 5.1); insert into PAL_FAST_DTW_DATA_TAB values (1, '2020-01-03', 3, 2.0); insert into PAL_FAST_DTW_DATA_TAB values (1, '2020-01-04', 4, 0.3); insert into PAL_FAST_DTW_DATA_TAB values (1, '2020-01-05', 5, 1.2); insert into PAL_FAST_DTW_DATA_TAB values (1, '2020-01-06', 6, 7.7); insert into PAL_FAST_DTW_DATA_TAB values (1, '2020-01-07', 7, 0.0); insert into PAL_FAST_DTW_DATA_TAB values (1, '2020-01-08', 8, 1.1); insert into PAL_FAST_DTW_DATA_TAB values (1, '2020-01-09', 9, 3.2); insert into PAL_FAST_DTW_DATA_TAB values (1, '2020-01-10', 10, 2.3); -- time series 2 insert into PAL_FAST_DTW_DATA_TAB values (2, '2020-02-01', 7, 2.0); insert into PAL_FAST_DTW_DATA_TAB values (2, '2020-02-02', 6, 1.4); insert into PAL_FAST_DTW_DATA_TAB values (2, '2020-02-03', 1, 0.9); insert into PAL_FAST_DTW_DATA_TAB values (2, '2020-02-04', 3, 1.2); insert into PAL_FAST_DTW_DATA_TAB values (2, '2020-02-05', 2, 10.2); insert into PAL_FAST_DTW_DATA_TAB values (2, '2020-02-06', 5, 2.3); insert into PAL_FAST_DTW_DATA_TAB values (2, '2020-02-07', 4, 4.5); insert into PAL_FAST_DTW_DATA_TAB values (2, '2020-02-08', 3, 4.6); insert into PAL_FAST_DTW_DATA_TAB values (2, '2020-02-09', 3, 3.5); insert into PAL_FAST_DTW_DATA_TAB values (2, '2020-02-10', 3, 2.2); insert into PAL_FAST_DTW_DATA_TAB values (2, '2020-02-11', 1, 3.2); insert into PAL_FAST_DTW_DATA_TAB values (2, '2020-02-12', 5, 7.8); insert into PAL_FAST_DTW_DATA_TAB values (2, '2020-02-13', 5, 5.1); insert into PAL_FAST_DTW_DATA_TAB values (2, '2020-02-14', 6, 1.3); insert into PAL_FAST_DTW_DATA_TAB values (2, '2020-02-15', 2, 2.0); -- print select * from PAL_FAST_DTW_DATA_TAB order by ID, "TIMESTAMP"; truncate table PAL_PARAMETER_TAB; insert into PAL_PARAMETER_TAB values ('RADIUS', 5, null, null); insert into PAL_PARAMETER_TAB values ('THREAD_RATIO', null, 1, null); insert into PAL_PARAMETER_TAB values ('DISTANCE_METHOD', 2, null, null); -- 1: MANHATTAN; 2: EUCLIDEAN (default); 3: MINKOWSKI; 4: CHEBYSHEV; 6: COSINE; --insert into PAL_PARAMETER_TAB values ('MINKOWSKI_POWER', null, 0.7, null); -- only valid when DISTANCE_METHOD = 3, default 3.0 insert into PAL_PARAMETER_TAB values ('SAVE_ALIGNMENT', 1, null, null); do begin -- call DTW lt_data = select * from PAL_FAST_DTW_DATA_TAB; lt_param = select * from PAL_PARAMETER_TAB; call _SYS_AFL.PAL_FAST_DTW(:lt_data, :lt_param, lt_res, lt_align, lt_stat); insert into PAL_FAST_DTW_RES_TAB select * from :lt_res; insert into PAL_FAST_DTW_ALIGN_TAB select * from :lt_align; -- print output table select * from PAL_FAST_DTW_RES_TAB; select * from PAL_FAST_DTW_ALIGN_TAB; -- post operation of getting warped time series, assuming the left one is the referenced one and the right one is the warped one -- first attach timestamp index on original time series starting from 0 lt_time_series = select *, (row_number() over (partition by id order by "TIMESTAMP") -1) as IDX from PAL_FAST_DTW_DATA_TAB; -- print select * from :lt_time_series; -- may have multiple timestamp of the same value lt_warped_without_merge = select t0.LEFT_ID, t0.RIGHT_ID, left_t."TIMESTAMP", right_t.ATTR1, right_t.ATTR2 from PAL_FAST_DTW_ALIGN_TAB t0 join :lt_time_series left_t on t0.LEFT_ID = left_t.ID and t0.LEFT_INDEX = left_t.IDX join :lt_time_series right_t on t0.RIGHT_ID = right_t.ID and t0.RIGHT_INDEX = right_t.IDX; -- print select * from :lt_warped_without_merge; -- aggregate attribute value of same timestamp. User can use other aggregate functions like MIN/MAX lt_warped = select LEFT_ID, RIGHT_ID, "TIMESTAMP", avg(ATTR1) as ATTR1, avg(ATTR2) as ATTR2 from :lt_warped_without_merge group by LEFT_ID, RIGHT_ID, "TIMESTAMP" order by "TIMESTAMP"; -- print select * from :lt_warped; -- the warped time series 2 you wanted, which is aligned by timestamps of time series 1 select RIGHT_ID, "TIMESTAMP", ATTR1, ATTR2 from :lt_warped; end; 

Let’s install an Open Source infrastructure for the SAP Datahub on-premise – Part 1 of 2

In this article we want to explain how to install an SAP Datahub into an Open Source infrastructure and what’s important to consider. This is the first part, which deals with the underlying container- and storage-system.

Since SAP officially releases only Enterprise Kubernetes products like SUSE CaaS Platform or RedHat OpenShift to use for SAP Datahub installations on-premise, we will give you a short overview on how to get the Datahub running on an officially unsupported, but free to use Kubernetes installation. Whether your company is just beginning to look into the Datahub world or needs it for developing purposes, the recommended approach by SAP will sooner or later require a big financial investment, even just for the containerized infrastructure behind. An implementation as described in this article could offer a solution to increase your know-how with these products and save money. Kubernetes itself is an Open Source product developed by Google, for non-productive environments, which is why there is no need for any enterprise overhead, if you pay attention to some simple details.

Let’s start with a few basic thoughts and decisions on our project to prevent problems later on. There are several Open Source projects, which, besides the ones that must be paid for, also pursue the goal of implementing a simple and easy to handle Kubernetes infrastructure. So why don’t we use one of those? The problem is, that most of them immediately implement the newest versions of Kubernetes, Docker, Python and more components as soon as new versions are available, which is exactly what we don’t want. SAP is usually conservative in releasing its products for versions from other manufacturers, which is why the automatic updates might damage the implemented system. We therefore recommend installing Kubernetes directly from the Google repositories on your preferred Linux distribution and to perform the necessary configuration yourself, to keep control over the used versions. After testing the Datahub installation and playing with different distributions, the RedHat EL based CentOS 7 Linux has proven to be very stable in its performance and compatible with all of our requirements.

Apart from the container environment, a storage system that supports dynamic volume provisioning is of great importance for the Datahub installation. SAP recommends specific storage solutions in combination with corresponding container platforms. In our case, we also wanted to rely on Open Source, so we checked the Kubernetes documentation to figure out which solutions would be compatible.


We had good experiences with Ceph RDB so far. You can find easy instructions for the installation online and the storage system can be adapted and scaled to the individual requirements. So, let’s go ahead and show what we are about to do.

For the Kubernetes infrastructure we will use a cluster consisting of one master and three worker nodes. There is not really a need for high availability in our development installation and implementing more than one master node will increase complexity, that is why we decided to use this setup, which will still allow for a good computing performance through our three workers.

At this point, we would like to mention that the Datahub works with less hardware performance than we use for our installation. This depends on your individual needs and the resources available.

Make sure you are aware of the following checkpoints for the infrastructure installation:

  1. Install the base OS with minimal packages and disable the SWAP partition. We will configure 40GB /root for the master and 100GB for the worker nodes and use the LVM.

  2. Check firewall settings and configure the required rules.

  3. Edit the SELinux config and disable it:                                                                [root@datahubmaster ~]# vi /etc/selinux/config

  4. Install the following components:

    • Kubernetes v1.13
    • io and Docker
    • Python 2.7 and python-yaml (required by the SAP Datahub)
    • Ceph-common (required by the storage connection later)
  5. Bootstrap the cluster and implement a preferred network policy. As known for good performance and scalability, we used Calico. For more information, just follow the link. Your kube-system Namespace should now look something like this:                                                                                  [root@datahubmaster ~]# kubectl -n kube-system get pods

  6. Install Helm and deploy Tiller to your cluster, if everything works correctly, you will receive one more pod:

As mentioned above, we had good experience with Ceph RBD providing our dynamic storage. The installation is well described and easy to handle, when you follow the steps here. During the Datahub installation, several volumes are created, so make sure you provide at least 500GB of space.

Hint: The storage system can be deployed very large and scaled fail-safe, as well as redundant over several nodes. We think that for the time being it is sufficient to save resources by installing all components on one server.

After you put the storage unit into operation, deploy the corresponding Storage-Class to your cluster and check out, if test claims dynamically creates persistent volumes, for example with a test claim like that finding here.

[root@datahubmaster ~]# kubectl create -f ceph-test-claim.yml

[root@datahubmaster ~]# kubectl get pvc

If everything is working, you are good to move onto the next steps and install SAP Datahub through the Jumphost with Docker registry.

Welcome to the SAP Learning Hub Newsletter – July 2020

– For subscribers of SAP Learning Hub, professional edition, SAP Learning Hub, business edition, SAP Learning Hub, student edition, and SAP Learning Hub, solution editions.

With your SAP Learning Hub subscription, you can take advantage of exclusive e-books and audiobooks provided by Bookboon to broaden your knowledge on topics of your interests and those complementary to SAP skills.

For the full library please go to your ‘Learning Content’ area in SAP Learning Hub and click on ‘Learn Soft Skills’ to read more on your chosen topics.

Here is a selection of our upcoming sessions:

SAP S/4HANA Cloud Implementation Learning Room (in SAP Learning Hub, professional edition and SAP Learning Hub, edition for SAP S/4HANA Cloud):
• Live session on SAP S/4HANA Cloud – customer organizational readiness (Asian-Pacific-Japan time friendly): July 21, 2:00 p.m.- 4:00 p.m. (IST)

Customer Experience Learning Room (in SAP Learning Hub, professional edition, and SAP Learning Hub, edition for customer experience):
• Live session on SAP Advanced Workflow 2008 – release briefing: July 22, 5:30 p.m.- 6:00 p.m. (CEST)

SAP Ariba Overview Learning Room (in SAP Learning Hub, professional edition, and SAP Learning Hub, edition for procurement and networks):
• Live session series on SAP Ariba Procurement: July 20-24, 12:00 p.m.- 2:00 p.m. (EDT) and later from 3:00 p.m.- 5:00 p.m. (EDT)

Welcome Room (all editions of SAP Learning Hub except SAP Learning Hub, edition for SAP Business One):
• Live session on SAP Learning Hub onboarding (Asian-Pacific-Japan time friendly): July 28, 10:00 a.m.- 11:00 a.m. (GMT+8)

You can find the entire live session schedule for July here. Please always refer to ‘Events Calendar(s)’ in the corresponding SAP Learning Rooms for the most up-to-date dates and topics. The links are accessible when logged into SAP Learning Hub and for room members.

In our quest to continuously improve the learning experience for our SAP Learning Room members, we are now live with all SAP SuccessFactors live sessions in the SAP Learning Hub content library.

What this means for you:

• You can now search for future SAP SuccessFactors live sessions in the content library in SAP Learning Hub, where you can directly register for the sessions and track them in your learning history

• This new registration process applies to all SAP SuccessFactors Learning Room sessions from July 1st, 2020

You will need to register for each individual live session (registration links are also posted in each day in the ‘Events Calendar’ or under the ´Join Events & Live Sessions’ tab in SAP Learning Rooms) and join with the login details sent in your confirmation email from SAP Learning Hub. If you register but you don’t receive your login details you can always join from your ‘My Learning Content’ area in SAP Learning Hub, under ‘My Active Courses’.

Additional courses have recently been added to the SAP Live Access portal, including:

• SAP Integrated Business Planning – Excel Add-in Features (IBP110)
• Implementing SAP S/4HANA Cloud – Professional Services (S4C20)
• Implementing SAP S/4HANA Cloud – Sales (S4C60)
• Implementing SAP S/4HANA Cloud – Finance (S4C30)
• Implementing SAP S/4HANA Cloud – Supply Chain (S4C45)
• Implementing SAP S/4HANA Cloud – Warehouse Management (S4C90)

Learners can access the entire catalog for SAP Live Access here. Check out the courses now to practice and expand your SAP software skills.

Welcome to the SAP Learning Hub Newsletter – June 2020

Welcome to the June update of the SAP Learning Hub News, keeping you up do date with the latest developments, achievements of SAP Learning Hub. Check out the SAP Learning Hub News archive if you have missed previous updates. You can also sign up for our email newsletter here to get the news delivered directly to your Inbox.

Satisfaction Survey for SAP Learning Hub Now Open

We value your opinion, so don’t miss the opportunity to share your thoughts in the satisfaction survey for SAP Learning Hub. The survey is open until June 26, 2020 and requires no more than three to five minutes of your valuable time. Your answers will remain anonymous and will help us improve your learning experience on SAP Learning Hub. You can access the survey here.

Have more to say?

• As a user of SAP Live Access, please share your experience in the separate SAP Live Access satisfaction survey.

• To participate in usability studies for our newest innovations for SAP Learning Hub, please join the Welcome Room and visit the SAP Learning Hub Test Lab.*

*Link accessible for members of the Welcome Room.

Enablement for SAP Enable Now

Enablement for the SAP Enable Now solution is available for subscribers of the following editions of SAP Learning Hub: professional edition, business edition, and solution editions.

Many consultants for SAP Enable Now are leveraging enablement options of SAP Enable Now to make the most out of their SAP solutions. If you want to hear everything about this standardized deployment service, you can take advantage of the recordings* of dedicated live sessions for SAP Enable Now. These live sessions are perfect for SAP Enable Now consultants with prior project experience and are available for SAP Learning Hub subscribers.

Consultants must have a subscription to SAP Learning Hub to access the user deployment service methodology for SAP Enable Now. You can subscribe here.

*Link accessible when logged in to SAP Learning Hub.

Soft Skill E-Books in SAP Learning Hub

Introducing the S-User Lifetime Process

To help protect your sensitive company information and ensure GDPR compliance, SAP is assisting organizations in their responsibility of user administration by assigning an expiration date to all S-users, since June 2, 2020. Due to this, subscribers with S-users will get a 24-month lifetime applied to their user IDs. After 24 months, the administrators can extend the S-user ID lifetime, or it expires.

For more information, please visit this page.

German Virtual Education Forum

Get inspired and learn how to best implement new educational and learning approaches for your employees from June 24 to 25 in the virtual SAP Education Forum (German language only). Check out the exciting keynotes with Cawa Younosi, head of Human Resources Germany at SAP Deutschland SE & Co. KG and SAP SE, and Sebastian Kolberg, global project lead of AI4Talent at Bayer AG, plus get many further highlights and discussions. Take advantage of an agenda on several key topics such as lifelong learning, high-performance teams, and mobile learning, as well as knowledge exchanges on strategies and experiences about training and enablement products and solutions.

For more information and registration, click here.

SAP Learning Rooms – Live Sessions

Below is a selection of upcoming live sessions:

SAP S/4HANA Cloud Implementation Learning Room (in SAP Learning Hub, professional edition and SAP Learning Hub, edition for SAP S/4HANA Cloud):
• Live session series on SAP S/4HANA Cloud project readiness for partners and customers (North America time friendly): June 22–26, 8:00 a.m.–10:00 a.m. (EST)
• Live session series on SAP S/4HANA Cloud – Warehouse Management (S4C90) (Asia Pacific Japan time friendly): June 29–30, 1:00 p.m.–3:00 p.m. (IST)

Customer Experience Learning Room (in SAP Learning Hub, professional edition, and SAP Learning Hub, edition for customer experience):
• Live session series on essentials of the SAP Customer Data Cloud portfolio (Asia Pacific Japan time friendly): June 22–24, 09:30 a.m. to 11:30 a.m. (IST)

SAP Ariba Overview Learning Room (in SAP Learning Hub, professional edition, and SAP Learning Hub, edition for procurement and networks):
• Live session series on administration: June 22–26, 12:00 p.m.–3:00 p.m. (EST) and later 3:00 p.m.–5:00 p.m. (EST)

Greater China Learning Room (in the following editions of SAP Learning Hub: discovery edition, professional edition, business edition, student edition, solution editions, edition for SAP Business One, edition for SAP PartnerEdge, and academic edition):
• Live session series on project head first “Spartacus”: June 19, 8:00 a.m.–10:00 a.m. (GMT)
• Live session series on head first commission: June 23, 3:00 p.m.–4:00 p.m. (CST)

You can find the entire live session schedule for June here. Please always refer to the “Events Calendar(s)” in the corresponding SAP Learning Rooms for the most up-to-date dates and topics. The links are accessible for room members, logged into SAP Learning Hub.

New Courses in SAP Live Access

Additional courses have recently been added to the SAP Live Access portal, including:

• Implementing Central Finance in SAP S/4HANA (S4F61)
• SAP User Experience Fundamentals and Best Practices (SAPX01)
• SAP BPC Optimized for SAP S/4HANA (S4F80)
• Production Planning in SAP S/4HANA (S4220)
• Case Study on Implementing Treasury Management (HOF50)
• New General Ledger Accounting (in SAP ERP) for SAP S/4HANA Adopters (AC211)
• Integrated Business Processes in SAP S/4HANA (TS410)

Please access the entire catalog for SAP Live Access here.

SAP Business Application Studio – Product Walkthrough

You probably heard the announcement of SAP Business Application Studio in the SAP Business Application Studio Info Blog – the new SAP Cloud Platform service on the Cloud Foundry environment which offers a development environment for business applications, and read It’s time to try out SAP Business Application Studio 

SAP Business Application Studio (AppStudio) provides a tailor-made development environment (aka dev space – you can read about dev spaces in this blog) for specific development scenarios. With each of these scenarios, you can develop different types of applications. It is based on standard development paradigms and tools, as well as open source tools such as: Theia, Yeoman, LSP,  GitHub, Docker, and Kubernetes. 

The openness of the development environment provides you the ultimate flexibility, allowing you to use standard tools during development. Additionally, you can customize your dev space by installing any CLI tool, reuse existing VS Code extensions, or by adding new functionality using extensions. 

In this blog, I would like to introduce the SAP Business Application Studio IDEfocused on the basic features, and I will show you how you can personalize your work environment. We, in AppStudio, care about your productivity and want to simplify the way you work. If you are curious about how we leverage your development experience, read about our SAP Business Application Studio – Productivity Tools. 

Let’s start with the basic IDE capabilities

AppStudio uses the Eclipse Theia open source platform to develop its multi-language Cloud IDE that runs in the browserTheia embraces many of the design decisions and even directly supports VS Code extensions.


SAP Business Application Studio IDE


Opening the integrated terminal allows you to access the underlying system. You can create multiple terminals open to different locations and easily navigate between them. The terminal is a convenient tool because you don’t need to switch windows or change the state of an existing terminal to perform a quick command-line task. 

From the terminal, you can use almost every tool, including running maven or using npm. You can create new projects or modules, build applications, and deploy applications. 


SAP Business Application Studio: Terminal


Command Palette 

The Command Palette is an interactive window that provides access to all the SAP Business Application Studio functionality, including keyboard shortcuts for the most common operations. You can open files, execute editor commands, connect to the Cloud Foundry environment, and launch the AppStudio productivity tools, such as ‘Create new project from template’, ‘Consume SAP Services’, and many more. You can reach the command palette from the top menu by selecting View > Find command or use  ⌘P in Mac or F1 in Windows to bring it up.


SAP Business Application Studio: Command Palette

File Explorer  

The File Explorer is used to browse, open, and manage the files and folders in your project. You can ‘CreateDelete, and Rename files and folders, move files and folders with drag and drop, and use the context menu to explore all options. 

AppStudio works very well with other tools that you might use. For example, if you want to run a command-line tool in the context of the folder you currently have open in AppStudio, right-click the folder and select Open in Code Editor or Open in Terminal. 

You can select multiple files in the File Explorer, open those files in editors, or select Compare With Each Other from the context menu to quickly diff two files. 


SAP Business Application Studio: File Explorer – compare files



SAP Business Application Studio provides extensive search and replace capabilities within your workspace using the Search view or from the find input box (Ctrl+F). We support regular expressions, matches, include and exclude terms, grouping conditions, ranges, and more. The search results are grouped into files containing the search term, with an indication of the hits in each file and its location. Expand a file to see a preview of all the hits within that file. Then, single-click on one of the hits to view it in the editor. 


SAP Business Application Studio: Search view


SAP Business Application Studio enables you to connect and interact with the Git control system, letting you connect and interact with remote Git repositories. 

SAP Business Application Studio provides a graphical user interface for executing Git commands and managing your source control and versioning. You can also manually perform other Git commands from the terminal.


SAP Business Application Studio: Git view


The Debug view in AppStudio allows you to see your project’s variables, handle watches, view elements in the Call stack view, and manage your breakpoints. You can use the Debug toolbar to control your debugging flow, for example, Continue / Pause, Step Over, Step into or out, Restart, and Stop. 

The debug status bar helps you change the active launch configuration and start debugging without needing to open the Debug view, and you can use the Debug Console panel to view the logs during a debugging session. 


SAP Business Application Studio: Debug view



The Outline view displays a symbol tree structure of the file that is currently active in the editor area, it shows the elements, classes, fields, and methods. It also includes an input box which finds or filters symbols as you type. The contents of the Outline view are editorspecific 


SAP Business Application Studio: Outline view

Problems View 

The Problems view displays a list of the problems in your project. When you double-click the icon for a problem, the editor for the associated resource automatically opens and highlights the line containing the problem. By default, the Problems view will order your problems by severity. 


SAP Business Application Studio: Problems View


Code completion 

In SAP Business Application Studio, you will find outofthe-box support for “code completion”, “content assist”, and “code hinting” for JavaScript, TypeScript, JSON, HTML, CSS, and more, depending on the dev space you created. Just type a character, and if the language service knows possible completions, a suggestion will pop up. If you continue typing characters, the list of members (variables, methods, etc.) is filtered to only include members containing your typed characters. 

You can also see the ‘quick info’ for each method by either pressing ⌃Space or clicking the info icon. 


SAP Business Application Studio: Code completion


Dynamic layout 

You can open several editors and place them in the editor area for sidebyside editing. To open more than one editor, drag the editor’s tab to the preferred location in the editor area. Drag the editor’s edge to resize it.  


SAP Business Application Studio: Dynamic layout


User and Workspace Settings 

SAP Business Application Studio provides two different setting scopes: User Settings that apply globally to any instance you open, and Workspace Settings that apply when the workspace is open. Workplace Settings are specific to a project and can be shared across developers. 

You can search and discover settings using the search bar, customize your editor by language, specify an executable that AppStudio will run to perform certain operations, view the default values in the Settings editor, and more. 

If you want to personalize your theme, SAP Business Application Studio supports dark themes, light themes, and high contrast themes. You can choose your preferred color theme from the Settings menu. 

To open the User Settings, select File > Settings > Open preferences from the menu bar.


SAP Business Application Studio: User and Workspace Settings


Now it’s time to develop your first application on AppStudio!

If you already have an application, you can clone it from your Git repository or follow the instructions for Migrating Fiori Application from SAP Web IDE to SAP Business Application Studio or Migrating Your CAP Applications from SAP Web IDE to SAP Business Application Studio

Otherwise, you can create a new app from a template using our Application wizard.

To keep track of the progress in SAP Business Application Studio, subscribe to the Business Application Studio newsletter.

I hope you’ll enjoy developing apps with SAP Business Application Studio! 🙂





Dynamic CHARTs and Dynamic URLs in CAI

Hi All,

I found a very interesting blog displaying-kpi-sap-cai written by Sudip Ghosh. And recently I was working in something to display dynamic Web-contents in dynamic URL in SAP-CAI chat output.

I have tried to merge these two things together.

Source Code : GitHub SAP CAI( Dynamic CHARTs & Web page)

This development is done in SAP NEO Env, and it’s written in XSJS & JS.

This package has dynamic URL Generation techniques in JavaScript, using which you can have a nice dynamic web-page.

Prerequisites ->

  1. SAP Cloud Platform DB in neo Trail
  2. SAP CAI account
  3. Some Prior knowledge in Javascript
  4. Some basic concepts in SAP CAI

Used API of -> https://quickchart.io/

Tested same from CAI:

Dynamic Web-page:

Markers for geographical areas (with SAP HANA SQL)

This post has been triggered by this Covid-19 map.

But the post itself will not be about coronavirus this time. I wrote about that in the past already: Quickly load Covid-19 data with hana_ml and see with DBeaver.

What caught my eye this time was that bubble chart for Croatia, or the fact that it seemed to be outside of the Croatian border.

We discussed using SAP HANA geospatial SQL finding central points already in SAP HANA, tell me where the center of Europe is.

Let’s check the center (centroid) of Croatia. I have World Borders dataset loaded in my SAP HANA, express edition, already, as described in Get to know your neighbors with SAP HANA.


I ran it in DBeaver, and indeed because of the shape of the country, the centroid is right outside of it.

Interesting, are there more countries like that?


There are 49 accordingly to the World Borders data set. Another case similar to Croatia is Vietnam.

But mostly there are island countries, and even Great Britain happened to be one of these. Probably results would be different, should the geospatial data include territorial waters in the shape of countries.

Among eye-opening cases are The Gambia, where the center of the country is on the River Gambia. But this part of the river is outside of the country’s borderlines.

So, how to calculate the market for the country without placing it outside of its borders?

There is a spatial method ST_PointOnSurface that returns a point guaranteed to spatially be within the shape.


Let’s verify. Now both markers — for Croatia and for Great Britain — are placed on their respective countries.

PS. That UK’s point is near Manchester. I am wondering if this is there DJ Adams lives 😜

Stay healthy, everyone ❤️
-Vitaliy (aka @Sygyzmundovych)

SAP Customer Checkout in the Cloud?


very often we get questions from partners and customers if SAP Customer Checkout is also available as a cloud-offering from SAP or other partners. So, I am writing this short blog to share more information on this topic.

First, we have to distinguish between two software components which are part of the SAP Customer Checkout product.

  • SAP Customer Checkout: the point-of-sale solution which is used by cashiers running locally in a store, shop, or restaurant.
  • SAP Customer Checkout manager: the central component for SAP Customer Checkout PoS which enables you to manage master data, and other central functions like gift cards, loyalty, software distribution, integration and others.

SAP Customer Checkout PoS is an on-premise solution, and not offered as cloud product. This enables the solution to work with different hardware devices, such as printers, payment terminals, drawers, and additionally ensures that the POS system works even if the network connection is interrupted.

SAP Customer Checkout manager is a web application which can be hosted on premise and also on the cloud. From SAP in the standard, it is available as an on-premise offering. SAP as of now does not offer SAP Customer Checkout manager on the SAP Cloud Control Center for example. However, there are several partners who offer cloud hosting models for SAP Customer Checkout manager. As each customer scenario is individual, you must verify and check all details upfront to find the right technology and partner fitting to your business, size and needs.

Please find below a list of offerings for SAP Customer Checkout manager Cloud hosted by Partner:

  • Cloudiax: Discover the unique functionalities of SAP Customer Checkout in the Cloud hosted by Cloudiax.

If you are a partner and wants your hosting possibilities also to be noted down here, kindly contact us.

Thank you!

Elena Vavitsa

How SAP Business One can Help you Increase the Sales

SAP Business One, an ERP solution is best known for automating essential business functions like sales and opportunity, financials and purchasing, supply chain management, analytics, and business intelligence, project management and many more. This business management software has been specially designed for small and medium-sized organizations. It transforms the way you conduct your business by leveraging information in a way that maximizes efficiency, reaches potential customers and in-turn ensures profit and growth.

SAP Business One’s ability to acquire data at a single and centralized platform helps one in accessing critical information in real-time to make informed, quick, and best decisions for your enterprise. It also integrates all the key areas of your business to ensure a definite and clear insight into the various areas of your business.

When we talk about sales, we all know that it is an essential business aspect which also helps one in building relationships with clients that could last a lifetime. For that one needs to understand what are the demands of the customer and identify products that could be relevant to one’s needs. So, what is the role of SAP Business One in this? Right from making contact with a potential customer, to making a sale and after-sale support, SAP Business One provides tools that help to manage the entire sale process in a seamless and efficient manner.

SAP Business One, with its features, can help one convert a potential customer, increase sales and profitability, and ensure the satisfaction of the customer needs. This helps one in comprehending and meeting the needs of a buyer in a better manner. It’s tools also help one in expanding their customer base and ensure retention through customer satisfaction, by helping one manage their sales pipeline and reports accurately.

SAP Business One’s ability to give a comprehensive analysis of various sales opportunities and the accuracy of sales forecast made using it is what makes it so popular among SMEs.

The objective for SAP Business One 10.0 will be around the ease of using the platform, its cost-effectiveness, and the ability to operate on the cloud. It will help in the growth of it’s customers and partners via its improved extension management systems and the process of importing/exporting SAP HANA schemas.

How SAP Business One can help you in Increasing your Sales:

  1. Managing customers:

SAP Business One helps you in making your customer the center of the entire sales process. It starts with analysing the needs and preferences of a customer, their purchasing pattern, and creates a centralized report for providing a better understanding for the sales representative. It essentially creates a full view of the customer by storing all essential data in one place and managing the various contacts stored in one’s Microsoft Outlook account. This in turn helps in converting a potential opportunity into sales.

  1. Developing potential opportunities:

Using SAP Business One, your sales team is able to devise and enter potential opportunities and constantly add information around the volume of the sales, the stage of conversion and the estimated closing dates. This ERP software takes this information and helps the sales team in understanding which lead has the highest potential and thus information and critical details regarding that particular need are generated to help the sales team in creating a better pitch.

  1. Inventory linked directly to sales:

In order to ensure smooth delivery of services, SAP Business One automates and streamlines one’s sales order process by linking sales to inventory. This helps the business in conducting quick availability checks and have real-time access to the inventory to ensure that the customer needs can be met with before committing to one.

  1. Management of the marketing campaign:

SAP Business One helps a business in creating a campaign list with the customer base available and the leads that have been created. Thus, it does not only create a marketing campaign, but it also tracks and makes regular updates to it. This campaign is essentially used for sending emails and newsletters to the target audience.

  1. Management of the sales pipeline:

SAP Business One allows a business to seamlessly manage its entire pipeline activity and in turn achieve the expected growth. They do so by precisely defining the various sales processes as well as proving training to the various sales representatives on how a sales pipeline can be used to one’s advantage. It also helps small businesses in reaching their target accurately forecasting potential sales opportunities.

  1. Management of after-sale services:

SAP Business One comes with elemental Customer Relationship Management functions and features as a part of its application. This allows your team to effectively handle after-sales support as well as warranty and service contracts. It also ensures a quick response to all support related calls and queries.

SAP Business One, if leveraged correctly can ensure hassle-free management of all your sales activities which varies from making sales forecast to the conversion of a lead as well as proving after-sale services by providing a detailed analysis of every opportunity. We hope this blog was helpful. Let us know your feedback in the comment section below. Stay Safe!

About APPSeCONNECT (Integration Platform as a Service):

Now, you can easily integrate your SAP Business One ERP with Ecommerce store / Marketplace / CRM / POS System to automate the business process!

Multi-level approval in SAC using Calendar Tasks


This blog describes how to perform multi-level approval in SAC using Calendar Tasks.


In planning solutions, the workflow is an important feature that’s always requested. In SAC Input tasks, a workflow can be configured but it is limited to only one assignee and a reviewer whereas multiple levels of approvals are often required in planning scenarios.
Multiple levels of approvals can be achieved in SAC planning using Calendar Tasks.

The following business scenario in this blog is discussed with 1 assignee to enter the budget values and 2 levels of reviewers.

User License Type and Roles Assigned:


License Type: Planning Professional

Roles: Planner Reporter, Modeler


License Type: Planning Standard

Roles: Planner Reporter


License Type: Concurrent – Business Intelligence

Roles: BI Content Viewer

Model and Driving Dimension

A Planning model has been created with Plant (Generic) as driving dimension containing Person responsible, L1 (Level 1 reviewer), L2 (Level 2 reviewer) as properties.

Steps for Multi-level approval in Calendar task

1, Create a Process in the calendar

Task/Process by Driving dimension cannot be created without a process. If the workflow to be configured is for a single task, General task can be created without a process. In this blog, I will be using Task/Process by Driving dimension with Plant as a driving dimension in my model.

2. Add the required common file

The common file can be included in the process or at individual tasks also. The context set for the required file will be applied in the Common file added in the task/process. The Context and Assignee and Reviewer in tasks since it’s available in the driving dimension corresponding to each leaf member. A task gets created for each leaf member in the dimension. The additional file can also be included in the process to provide additional information but the context filter will not be applied to this file.

Save the process after making the required changes here.

3. Create Task/Processes by Driving Dimension

  • Select the Model and Driving dimension.

  • Select the assignee and reviewer maintained in the attribute corresponding to the leaf members of the driving dimension. Additional reviews for multiple levels of approvals are added in individual tasks created.

  • Select the leaf members for which the tasks to be created.

  • This toggle button if enabled activates the tasks automatically at start time. Generate the tasks.

The Context, Assignee and Reviewer get added with respect to the driving dimension properties for each task.

4. Add additional level of reviewers

Additional levels of reviewers can be added using ‘Add a new round’ option.

5. Assign reviewers on this level

6. Activate the Process and the Tasks



This blog describes how to achieve multi-level approval in SAC planning. Additionally, data locking tasks can be assigned to reviewers to lock data once approved to avoid changes in the public version.