In this blog I describe how to create and run a local version of the promotion pricing service (PPS) based on the artifacts delivered with SAP Customer Activity Repository application bundle (CARAB). This delivery offers the central PPS as part of the omnichannel promotion pricing (OPP) module. Previously In a previous blog (https://blogs.sap.com/2018/10/11/sap-opp-black-box-concept-implementation-guidance-for-non-sap-envir…), my colleague ingo.woesner described....

Bärbel Winkler asked a question about how to trigger some kind of popup in ADT/Eclipse using information held on the backend application server. I realise one solution would be to have some code run every time an (ABAP) editor was opened in Eclipse. This code would call a function module on the backend, which could take some....

This is a supplementary article to the recent blog by Daniel Schlachter. As CAP has 2 runtime stacks, namely CAP Java and CAP node.js, you might wonder how the described plugin mechanism looks like in CAP Java. To be honest, I have to correct Daniel a bit. While plugin concept is new to CAP node.js it’s....

Flaky tests (aka fragile, brittle or instable tests) are tests that fail or pass intermittently without any changes to the codebase. They are a common problem in software development and can be frustrating to deal with. However, it is important to be disciplined with flaky tests because they can lead to a number of issues. Why it is important to deal....

There are several possibilities to analyze and troubleshoot GC issues. You can activate the gc log via Unified JVM logging(-Xlog:gc) to get a textual log output. This can be also set for detailed GC phases and to specific levels. The analysis can be done on the textual log file or with available open source tools....

“RFC meets Web” Enable all your RFC functions for web consumption without development? Today, I’m excited to share a new thing: A proxy on SAP BTP that translates from REST to SAP RFC calls, making it possible to use BAPIs and RFC-enabled function modules on older SAP ECC or S/4HANA systems. This solution is particularly useful for....

RFC meets Web – Part II: How to build the proxy Welcome back to the second blog post where we look into building the REST2RFC proxy! It’s a SAP Cloud SDK Java application running on SAP BTP Cloud Foundry runtime. Introduction and BTP services used When I started with the project (which was inspired by....

Clean code é um termo usado para descrever software que é fácil de ler, entender, manter e testar. Neste blog, quero resumir alguns princípios importantes e fornecer uma introdução ao tópico para iniciantes. Além disso, o blog deve se conectar ao repositório de guias de estilo, aos livros e às iniciativas atuais em que os....

SAP’s own Java VM SapMachine comes with a handy monitoring tool you may not know: SapMachine Vitals. Think sysstat tools – pidstat, iostat, etc – plus JVM stats rolled into one and baked into our JVM for your convenience. Curious? After me. Our SapMachine Vitals give you a gap-less history of metrics: JVM-, process- and system-data, periodically sampled and buffered inside the....

Analyzing OOM-kills is no fun. You fly mostly blind, have no meaningful logs – your JVMs just keep disappearing. It can be highly frustrating work. If that sounds familiar, we may have something for you. OOM-kills mean sudden death. The JVM gets no warning, it just receives a SIGKILL from the kernel. Or its container....

One of customers ask if  their existing  application deployed in tomcat server can be deployed into BTP runtimes . I think one option is BTP cloud foundry runtime. I checked the document , BTP cloud foundry has tomcat container. The tutorial Create a Java Application via Cloud Foundry Command Line Interface | Tutorials for SAP Developers give guidance about....

Clean Code – From Contribution to Decision Clean code is a term used to describe software that is easy to read, understand, maintain and test. With the adoption of the clean code style guide by thousands of teams, changes to the style guide can have a large potential impact on developers (e.g. through new static code checks for new rules). While there is....

Clean Code: Wartbar, Lesbar und Testbar Clean Code ist ein Begriff, der Software beschreibt, die einfach zu lesen, zu verstehen, zu warten und zu testen ist. In diesem Blog möchte ich einige wichtige Prinzipien zusammenfassen, um Anfängern einen Einstieg in das Thema zu ermöglichen. Außerdem soll der Blog eine Verbindung zum Style Guide Repository, den....

Clean code is a term used to describe software that is easy to read, understand, maintain and test. In this blog I want to summarize some important principles and provide an entry into the topic for beginners. Besides, the blog shall connect to the style guide repository, the books and current initiatives where experts can....

This blog is about an important principle for improving the quality of documentation. It can also help to improve decision making, collaboration and more effectively use meeting time by leveraging written asynchronous communication. Documentation (e.g. Architecture Documentation, Good Practices and Product Documentation) should be treated as code, which means that it is: placed under version control very simple syntax changes undergo reviews....

In this Blog we are going to see How to validate MYSAPSSO2 cookies with SAP Cloud Integration Introduction Recently, as part of an integration project in one of our clients, I was faced with the challenge of validating MYSAPSSO2 cookies with SAP BTP. After some research I was able to come up with 2 different....

In this blog post i would like to share my experience on upgrading Java projects , BTP CAP Java projects migration to Spring Boot 2.7.5 version   As you might know Spring Boot 2.7 release includes 31 bug fixes, documentation improvements, and dependency upgrades. If you decided to upgrade to Spring Boot Version 2.7.x but if....

An agile approach involves cross-functional teams where individual team members complement each other’s skills. With the move to cloud-based development, teams must often deal with increasing complexity and must learn quickly. Both aspects bring up new challenges when it comes to growing the necessary skills. This blog introduces some problems in empowering the teams to....

In this blog post, we are going to showcase how to update an existing application to version 4 of the SAP Cloud SDK. The new major version has just been released and comes with a lot of under-the-hood improvements as well as some new features. Since updating a dependency – even to a new major version –....

The blog aims to explore the topic of updating Open Source Library dependencies. Goals are to speed up fixing dependencies with vulnerabilities. And secondary to keep dependencies up to date. By that we can improve productivity, reduce toil and improve security. Open Source got a lot of traction in the last years and many system....

Written in collaboration with: Santosh Kumar Previous Blogs: [Blog Series] X.509 certificate-based authentication(mTLS) – Demystified Generating X.509 certificates of BTP managed services Introduction: This is the third blog in this blog post series. This blog will focus on how to communicate to various services which support x.509 certificate authentication using the SAP Destination service. Content: Uploading....

Written in collaboration with: Santosh Kumar Previous Blogs: [Blog Series] X.509 certificate-based authentication(mTLS) – Demystified Generating X.509 certificates of BTP managed services Communicating with services using SAP destination service Introduction: This is the fourth blog in this blog post series. This blog will focus on how to communicate to various SAP BTP services which support x.509....

In this article, you will come to know the coolest language for well developing your extension apps and also talk about every BTP buildpacks (programming languages) on how CPU spikes, memory, Disk space usage based on simple web app deployment.. Once your app is deployed and its currently been consumed by every users in your....

This blog post is about a new scenario enabled by SAP Continuous Integration and Delivery service: Running continuous integration pipelines to deploy SAP Fiori applications to on-premises ABAP systems. Scale up development of Fiori extension for the ABAP platform One of the most common extension scenarios in the ABAP world is to deploy SAPUI5 and Fiori....

You have a java app. It throws a 401 or 403 error. It makes you crazy. But: you’re not alone. Try this troubleshooting blog. Here, you find debugging hints and friends. Together, we’re reproducing the error in a hands-on sample scenario, we add some configuration and create a debugger class to get an idea about....

This blog post tells the story of how we tackled a particular Java memory issue which caused our Cloud Foundry applications to crash. The issue itself might be rather special, but the principles and techniques we used can be applied in a broader context. The Problem We are running in SAP BTP Cloud Foundry, which....

With the Kyma Runtime, you can use services offered by the SAP Business Technology Platform (SAP BTP). Previously service bindings were limited to the SAP BTP Cloud Foundry environment. Learn how to consume them in your application running in the SAP BTP Kyma environment. Introduction SAP BTP services run outside of your Kyma cluster, just like....

In this blog post, I want to share useful tips and tricks for developing Java applications in SAP Business Application Studio (BAS).   BAS helps you develop your applications in a quick and easy manner. The development environment is tailored to the type of application you want to create. This means that if you are....

The company uses email authentication of staff to Linked Learning using Azure. There was a requirement to use the User ID (BizX ID) to update the course completion status from linkedin Learning into company LMS. So I had built interface to integrate LinkedIn Learning with LMS , do the necessary field mappings from Linkedin EmailID....

So, in the last blog post, we created a health check endpoint in our Java application. In this one, we will introduce our entity relation model and build the OData service with help of the Olingo framework. We have a simple entity relation model, which consists of three entities: Mother, Child, and Father. Obviously, a child....

This example demonstrates how to build multitenant application using Cloud Application Programming Model Java SDK and mtx-sidecar node module. Overview: This sample application contains UI module containing a public welcome page which contains link to fetch data from its own tenant database. backend module which contains CDS service exposing OData CRUD APIs on Books entity....

In the series of chaos engineering articles, we have been learning to simulate various performance problems. In this post, let’s discuss how to make threads go into BLOCKED state. Sample Program Here is a sample program from open source BuggyApp application, which would make threads go into BLOCKED state. A thread will enter into a BLOCKED state when....