In SAP Spartacus document there is a page for “How to Debug a Server–Side Rendered Storefront” using Visual Studio Code. https://sap.github.io/spartacus-docs/3.x/how-to-debug-server-side-rendered-storefront/ This document just introduces another way to debug, using Chrome Dev Tools instead of Visual Studio Code.The steps are written based on Spartacus library with version 3.4.1. (1) create a Storefront using Spartacus library....

As a ABAP developer, creating and deploying your application in SAP BTP Platform is now very easy. Use of ABAP Restful application Programming model makes this tasks very easy. More over there is a huge demand now to deploy your application in ABAP on Cloud and to consume it in your On-premise applications and enhancements.....

The era of Cloud computing for ABAP is here. And hence the power of AI / ML are also unleashed with newly created packages and tools developed for ABAP. Here you can find an example of it. The main idea of using AI is to automate manual tasks or to help human in taking decisions.....

All Blogs in this Series – AI Powered Invoice Management with SAP RAP and ABAP on Cloud AI Powered Invoice Management with SAP RAP and ABAP on Cloud – Part 1 AI Powered Invoice Management with SAP RAP and ABAP on Cloud – Part 2 AI Powered Invoice Management with SAP RAP and ABAP on....

All Blogs in this Series – AI Powered Invoice Management with SAP RAP and ABAP on Cloud AI Powered Invoice Management with SAP RAP and ABAP on Cloud – Part 1 AI Powered Invoice Management with SAP RAP and ABAP on Cloud – Part 2 AI Powered Invoice Management with SAP RAP and ABAP on....

All Blogs in this Series – AI Powered Invoice Management with SAP RAP and ABAP on Cloud AI Powered Invoice Management with SAP RAP and ABAP on Cloud – Part 1 AI Powered Invoice Management with SAP RAP and ABAP on Cloud – Part 2 AI Powered Invoice Management with SAP RAP and ABAP on....

 Blog Series  Quirky Nuggets (N01-N02): CAP Event Handler, Data Uniquenes (@assert.unique) Quirky Nuggets (N03-N04): OData Operator, Undeployment of DB artifacts Introduction During research, development, and testing of applications, we often encounter small but interesting details that can consume a significant amount of time to discover and comprehend. These valuable insights are often forgotten or overlooked....

 Blog Series  Quirky Nuggets (N01-N02): CAP Event Handler, Data Uniquenes (@assert.unique) Quirky Nuggets (N03-N04): OData Operator, Undeployment of DB artifacts Introduction This blog post is part of the ongoing series titled ‘Quirky Nuggets.’ Within this blog post, we will delve into the world of OData operators and delve into the undeployment of database artifacts using....

Introduction: Side-by-Side Extension in SAP refers to the approach of extending or enhancing existing SAP systems without modifying their core functionality. It allows for the development and deployment of additional custom applications or functionalities alongside the existing SAP landscape, minimizing the risk of system disruptions. In a recent project, I was assigned the development of....

Beginning with OpenUI5 and SAPUI5 1.116 (planned for July 2023), UI5 framework libraries will start using modern ECMAScript syntax in their code and define “Specification Version 3.0“ in their UI5 Tooling configuration. If you use UI5 Tooling in your projects, this means you will have to upgrade to UI5 Tooling Version 3. In addition, you have to make sure that your project’s....

We are in the midst of the age of cloud computing and the change in IT system landscapes and software development projects is both noticeable and irreversible. Large, heavyweight monoliths are no longer in vogue, IT systems are becoming smaller and more distributed, technology stacks more heterogeneous, a development that also no longer stops at....

NOTE: this blog post is intended for developers who have previous experience in developing multi-tenant CAP applications using SAP Business Application Studio, SAP BTP destinations, and the destination and XSUAA services. Introduction After I published this blog post, many developers reached out to me with the classical question: “does this microservice work in a multi-tenant scenario?”....

In this blog, I will try to show you how you can start developing CAP-based Fiori apps. My purpose is to learn and share the basics of CAP application building. I’m just getting started with developing cap applications, so any advice or feedback is really appreciated. You will learn below topics; Developing a basic CAP....

This SAP Tech Byte is about how to use the SAP Approuter in combination with another Node.js based application and set up proper authentication between the two using JSON Web Tokens. In this scenario, we benefit from SAP Approuter capabilities such as easy connections to destinations and the XSUAA service (Authorization and Trust Management Service), while also having....

In my last blog post Keep the Core Clean with CAP Model, we found out that CAP’s service API doesn’t support handling the draft-generated properties out-of-the-box, however, it’s technically feasible to handle this ourselves in the custom handler. And you might be wondering, has anyone done it? Well, the answer is yes, because I did! Let....

SAP Cloud Integration (CPI) provides functionality to automatically sign a message with a digital signature using the Simple Signer. In a previous blog post we’ve learned how to verify such signature with Node.js in an HTTP receiver. Then we’ve showed the weakness of that scenario. Today we’ll make the scenario more secure. Quicklinks: Quick Guide Sample Code Content 0.1. Prerequisites 0.2. Preparation 1. Introduction: Security....

SAP Cloud Integration (CPI) provides functionality to automatically sign a message with a digital signature using the Simple Signer. In the previous blog post we’ve learned how to verify such signature with Node.js in an HTTP receiver. Today we’re going to show the weakness of that scenario by simulating a hacker exploit. Quicklinks: Sample Code Content 0. Prerequisites 1. Introduction 2. Hacker Scenario....

This is a follow-up blog post to my previous one called Keep the Core Clean with RAP Model. Like in the previous blog post, this is not about convincing you to adopt a clean core policy and why it is important, but instead, this blog post is more about asking the question: Can we keep the....

This blog post describes how you can apply deep filtering in your SAPUI5 application, using CAP and odata V4. This can be used to filter in expanded entities, which has come available in V4. Please note that using an oData V2 model to do this will not work, since this type of filtering is not....

I’ve been looking into SAP Graph and GraphQL for quite some time now, and out of curiosity, I tried to look into CAP if it already supports GraphQL, and lucky enough CAP just recently started supporting GraphQL by releasing @cap-js/graphql which acts as a GraphQL adapter. In this blog post, I will be giving a quick introduction to....

This blog series is just a simple demo of how to create any Nodejs app and run it on both the local and SAP BTP platform. Part – 1: Create nodejs application. Part – 2: Create Authentication instance. Part – 3: Run app locally.   Create Local NodeJs application First create folder basicnodejs. Then inside....

This blog series is just a simple demo of how to create any Nodejs app and run it on both local and SAP BTP platform. Part – 1: Create nodejs application. Part – 2: Create Authentication instance. Part – 3: Run app locally.   This part we will run the app from BAS using the....

This blog series is just a simple demo of how to create any Nodejs app and run it on both local and SAP BTP platform. Part – 1: Create nodejs application. Part – 2: Create Authentication instance. Part – 3: Run app locally.   Create Authentication To do that we will need BTP authorization and....

SAP has released quite a big list of APIs for SAP Cloud Connector . I recently noticed this wonderful blog written by Philipp Stehle describing the CLIs created by Philipp and was inspired to test out the APIs I am a Basis Consultant who has recently started learning node js . So, I started working on this idea to test out....

This SAP Tech Byte is about how to consume SAP BTP destinations during local development – covering both instance level and subaccount level destinations. The source code for this blog post can be found at https://github.com/SAP-samples/sap-tech-bytes/tree/cloud-foundry-basics/post4. Building on top of the previous blog post of this “Cloud Foundry Basics” series, where we learned how to consume data using....

06.03.23 – Added information for the newly available and integrated GPT-3.5 model. 27.02.23 – Added a link to part 3. This is the second post of a small series of blog posts in which I’ll delve into the conceptual and technical details of building a ChatGPT-like chat app using the SAP Cloud Application Programming Model, SAPUI5....

We often come across a requirement that we need to generate a dynamic HTML template but with minimalistic code and without having any different UI components, To achieve that we need to have a sophisticated way to do that, and to summarize that we can conclude in the below statement Template engines are the backbone....

More information about the SAP Cloud Application Programming Model: Welcome to CAP In this tutorial we will develop and deploy a CAP Node.js Service with simple functions and create an Action Project.The goal is to cover all the necessary steps to consume the CAP Service API functions in a Process, not to proivde a real use case.....

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....

この記事は SAP Advent Calendar 2022 の12月4日分の記事として執筆しています。 日本語のCAP情報が不足していると感じたため、本記事ではCAP初心者向けのTipsや参考情報を紹介したいと思います。 CAPについて SAP Cloud Application Programing Modelとは、サーバサイドアプリケーションを作成するためのフレームワークであり、簡単にODataサービスを作成することができます。 Fiori ElementsやUI5の相棒として使われます。 なお、CAPはNode.jsで開発するか、Javaで開発するかを選択することができますが、本記事ではNode.jsを選択することとします。 CAPの使い方(基本) CAPの最もオーソドックスな使い方は、HANA Cloud内のテーブルを読み書きするためのODataサービスを作成する。 ということになります。 下記の記事やチュートリアルを参考にすると良いでしょう。 https://qiita.com/tami/items/d1b69a93da14e288faf2 https://developers.sap.com/tutorials/appstudio-cap-app.html 外部APIを呼び出す 外部のOData APIを呼び出すケースも考えられます。 例えばS/4HANAの拡張アプリケーションをUI5+CAPで作成する場合には、アプリからはHANA Cloudの読み書きができるだけでは不十分で、S/4HANAのAPIも呼び出す必要があるでしょう。 下記のチュートリアルが参考になります。 https://developers.sap.com/tutorials/btp-app-ext-service-add-consumption.html Expressを利用する Node.jsでWebアプリケーションを作成するときに最もよく使われるフレームワークがExpressです。 そもそもCAPはExpress上で動いているのですが、素のExpressを利用したくなることがあります。 CAPの標準機能だけではどのように実装すれば良いかわからない場合があったとしても、ExpressはWeb上にサンプルコードや参考情報が非常に多く、大抵のことはできるようになるでしょう。 例えばエクセルやCSVをアップロードして、サーバ側で処理してDBに格納するなどもExpressであれば簡単です。 Expressを利用するには、server.jsという名前でファイル作成し、srv直下に置くだけで利用できます。 中身は下記のようにして下さい。 https://<ホスト名>/endpoint や https://<ホスト名>/endpoint2にブラウザでアクセスすると、Expressのルーティングが有効になっていることを確認できます。 もちろん、server.jsのソースコード上部で必要なモジュールをどんどんrequireし、様々なNode.js向けのモジュール(ライブラリ)を活用した複雑な処理を実装することが可能です。 const cds = require('@sap/cds'); cds.on('bootstrap', app => { app.post('/endpoint', function(req, res, next) { // express handler....

In the tutorial Create Multi-Cloud Application Consuming Object Store Service , the method consuming Object Store Service on AWS with Java has been  introduced in detail .  In help portal the method in Java also  has been introduced. In the blog Connecting to SAP BTP Object Store running on Microsoft Azure Platform using NodeJS,Ujala Kumar Panda has introduce use nodejs to....

This blog post shows how to do client-credentials flow with IAS using “identity” service in SAP BTP. We create a minimalistic sample app2app scenario where 2 application communicate with each other while authentication is done with the OAuth flow called “client-credentials”. Used technologies: SAP Business Technology Platform (SAP BTP), Cloud Foundry Environment, SAP Cloud Identity....

This blog post shows how to do client-credentials flow with IAS using “identity” service in SAP BTP. We create a minimalistic sample app2app scenario where 2 application communicate with each other while authentication is done with the OAuth flow called “client-credentials”. The difference to previous tutorial is that this time we’re using a client certificate in order....

This blog post shows how to do client-credentials flow with IAS using 2 different instances of  “identity” service in SAP BTP. We create a minimalistic sample app2app scenario where 2 application communicate with each other. Today, both apps are bound to a different instance of identity service. Used technologies: SAP Business Technology Platform (SAP BTP),....

In the previous blog, we saw how tenant onboarding works, tenant-specific schema creation and dependency injection. In this blog we are going to focus on the following topics: Accessing Tenant Specific Data and improving the performance of data access from the database. How to access destination data coming S/4HANA Cloud/on-premise system from the subscriber subaccount in....

In this blog you will see how to implement the following concepts of Multitenancy: Creating tenants Deleting tenant Dependency callbacks Creating and updating the database schema and deploying the artefacts for the tenant. Our reference application has a microservice to handle onboarding requests. This helps in isolating the responsibilities and scaling the application as per demand.....

As a developer, there are always more tasks to complete than you have time for in a day. While it’s important to prioritize time-sensitive, impactful or blocking issues, they’re usually not the kind of things that can be knocked off your list quickly. If you try breaking down bigger tasks into smaller subtasks, you just....

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....

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....

The XSUAA service of SAP BTP offers a REST API which allows to programmatically handle security artifacts like Roles, Role Collections, Users etc. This blog post shows how to use it and provides a simple example. Used technologies: SAP Business Technology Platform Cloud Foundry environment, SAP Authorization and Trust Management (XSUAA) service, Node.js. Quicklinks: Quick....

Trust and believe, nobody’s going to be where they are not supposed to be. Warrants the SAP Authorization and Trust management service. Which its sole mandate is to provide support to your security policies of your organization, permit user authorization and trust to identity providers. Developers may configure and deploy application-based security artifacts containing authorizations....

NOTE: this blog post is intended for developers who have previous experience in developing CAP applications using SAP Business Application Studio, SAP BTP destinations, and the destination and XSUAA services. Introduction Secure cloud software should always rely on some sort of authentication and authorization mechanism to let users benefit from its functionality and protect it....

Qualtrics allows users to create surveys and generate reports without much programming effort. we have faced many requests where customers want to connect Qualtrics in their BTP setup and get real-time feedback/surveys built in their application along with a reporting tool to understand the feedback surveys and take informed decisions in their projects. We implemented....

In this video series, we will look at some of the intermediate and advanced concepts of SAP Cloud Application Programming Model We will cover various topics like background tasks, emitting events and handling events, connecting to remote services, multi-tenancy, job scheduler etc. More videos will be added periodically   Synopsis: OData V2 service support Retrieving....

coauthor: Ralf Handl SAP Fiori Elements Object Page Floorplan Draft Scenario Displaying an Error Message   OData Error Message Introduction When building applications with the SAP Cloud Application Programming Model (CAP), generic service providers significantly shorten the service development time by providing many out-of-the-box solutions to recurring tasks allowing you to focus on the specific business logic of your application,....

This blog post gives a simple example of using authorization in a simple project. It also shows a simplistic way of using attributes. The project is based on Node.js and runs on SAP BTP Cloud Foundry. Security is based on XSUAA and relies on SAP ID Service as Identity Provider. The next blog post uses IAS. Disclaimer: this is not an official reference application.....

There are things known and things unknown and in between are the doors. -Jim Morrison (Singer) Introduction: When we are working on BTP, most probably one of the initial service we lay our hands on is the XSUAA service as all security on BTP is controlled by and revolves around xsuaa. Approuter is a Node.js....

This blog post is based on the previous post where we did our first steps with authorization handling and attributes. Today we’re going to connect a custom Identity Provider to our Subaccount. This allows us to showcase some more possibilities of fine-tuning authorization handling. Used technologies: SAP Business Technology Platform (SAP BTP), Cloud Foundry Environment, SAP Cloud....

NOTE: this blog posts series is intended for developers who have previous experience in developing CAP applications using SAP Business Application Studio, SAP BTP destinations, and the destination and XSUAA services. Introduction Secure cloud software should always rely on some sort of authentication and authorization mechanism to let users benefit from its functionality and protect....

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....

Hi Everyone, I am Ujala Working with SAP For the last 8 years in different roles like Operation Specialist, Developer, Architecting, design and Developing solutions in Public Cloud, mostly with Azure. This blog is mainly targeted at developers. If you are someone who has gone through the SAP Help document for the BTP Object store....

To follow-up with this blog post you must complete the following prerequisites: Read the Series Introduction post; Create an SAP BTP Trial Account following this tutorial; Setup SAP Business Application Studio in your SAP BTP trial following this tutorial; In your SAP Business Application Studio, create a dev space for Full-Stack development. Access SAP Business Application Studio We are going to start by accessing the selected IDE....

Why Use Morgan In one sentence, morgan simplifies the task of logging HTTP requests to and from your application. What does this mean? Normally (without morgan), developers need to manually create all the logging logic. They need to instruct Node.js/Express.js what, how, and where to save. Morgan does this for you. It collects logs from....

In this tutorial we configure trust (SAML) between 2 Cloud Foundry subaccounts located in different regions in SAP Business Technology Platform (SAP BTP). This allows us to call a protected application across subaccounts, across regions. Used technologies: XSUAA, SAML2, OAuth2, Destination, OAuth2SAMLBearerAsertion, Node.js, Quicklinks: Quick Guide Sample Code Disclaimer: This tutorial is not a recommendation....

In this tutorial we’re going to create 2 little apps and deploy them to 2 different trial accounts. We configure trust (based on SAML) and create a destination configuration of type OAuth2SAMLBearerAssertion. This tutorial is based on the explanations given in the previous blog post. Quicklinks: Quick Guide Sample Code Content Part 1: Theory-Torture (previous blog) 0.1. Introduction....

This blog post shows how to support authorization (scope, role) in a user-centric scenario where a REST endpoint is called from an application in a different subaccount (in different region). Used technologies: SAP BTP, Cloud Foundry, XSUAA, SAML2, OAuth2, Destination, OAuth2SAMLBearerAsertion, Node.js, This blog post builds completely on top of the scenario described in detail....

I like a lot, that SAP Cloud Application Programming Model (CAP) supports enumerations in data modeling (ref documentation). In my opinion, enumerations are an easy way to bring more semantic in the data model and write code easier to read and therefore to maintain. Unfortunately, using enumeration in service implementation is not possible yet in CAP.....

In this article, you can make interactive maps with folium and pandas library using SAP Commission API’s to find out heatmap of Payments been generated in different location Sample Code def index(): start_coords = [48.218871184761596, 11.624819877497147] folium_map = folium.Map(location=start_coords,tiles = "Stamen Terrain", zoom_start=15) #tiles='OpenStreetMap' , tiles='Stamen Toner' , tiles='Cartodb dark_matter' tooltip = "Click Here For....

In the previous blog post in this series, we took a deep look at the two major different JavaScript modules that act as HANA Clients: @sap/hana-client and hdb. Architectural differences aside, let’s return to that sample usage of the @sap/hana-client we saw at the end of the previous blog post: import hanaClient from "@sap/hana-client" import * as xsenv from "@sap/xsenv" export....

This blog post gives an example on how to implement token exchange in a multitenant scenario. It builds on the previous tutorial and adds multitenant capabilities. Quicklinks: Quick Guide Sample Code Content 0. Introduction 1. Backend Application 2. Frontend Application 3. Run the Scenario Appendix: Sample Code Prerequisites To follow this tutorial, the following prerequisites are required: – Access to 2 subaccounts....

Going back to our discuss in the previous blog post in this series about @sap/hana-client and hdb, the situation is now even more complex. @sap/hana-client supports promises, but hdb doesn’t. That’s just one of several differences between the two modules.  There are also other functions like connection pooling or calling stored procedures that can be done in both @sap/hana-client and hdb, but perhaps could be made even easier with....

  In this blog post series, we’ve explored several aspects of the HANA client tooling for JavaScript developers. In part one, we examined the differences between @sap/hana-client and hdb modules. In part two, we saw how to optimize our code using Promises / Async / Await. Then in part three, we looked at the value of additional wrapper modules like @sap/hdbext and....

In my recent project we come across a requirement where we need to connect Node.js with Python. So, I thought of writing a blog on it. In below example we will create a simple service where we run Python script and  show “Hello world from python”. First we need to install python for node modules....

Welcome to the Eight episode (Not the last) of the Series: SAP CAPM Full Stack UI5 Application with CRUD Operations. Till now we have created Development Space in BAS with project structure for development, created entities, exposed Odata services and done Update & Delete Operation. In this episode, we will do Edit Operation in the created table. Assumption(OR....

Job Scheduling is nothing new for us being an ABAPer and with SM36/37 or even programmatically we submit jobs, so now the question is how to use the same job scheduling from BTP. Obviously leveraging a service available for the same. Challenge was a little more for me when I had to perform certain on-prem....

Introduction: automation using Zapier I doubt it, you don’t know what Zapier is, but for a short recap: it’s the SaaS application that “automates apps in millions of ways”. You can choose ready to implement receipts that connect and automate the most popular applications into one workflow. Set it once – and forget. From my....

Hi Experts, Hope all is going well! Quick Overview Krishna Chaitanya Nandimandalam & Myself has been working on SAP Conversational AI Chatbots for a while and want to share one of the interesting use case in which, we will do an end to end integration from the S/4 Hana system to SAP Conversational AI Chatbot and....

In this three-part series I outline and demonstrate an approach to help newcomers get started more quickly with our tutorials, by describing and providing an environment with all the prerequisite tools installed ready to go. This is part one, where I describe the challenge and the base solution I’m going to go with. See also....

In this three-part series I outline and demonstrate an approach to help newcomers get started more quickly with our tutorials, by describing and providing an environment with all the prerequisite tools installed ready to go. This is part two, where I add the tutorial prerequisite detail to the Dockerfile I created in part one, and....

Intro SAP iRPA & SAP CAI are the two prime topics that are changing the game in this rapid and volatile Enterprise Plannings and Product Designing approach. SAP already has proven that no-code/low-code can be a very useful and easy way to design modern AI-Bot driven Enterprise Softwares. This blog will give an overview of the integration aspects of iRPA....

This is the second part of a blog series dedicated to exploring the SAP Business Technology Platform (BTP).  It provides instructions for deploying and configuring the “Campton Hills Products” application, which is described in Ten Days with SAP BTP, AWS, a Third-party API, and Node.js – Part I.  The goal of this installment is to provide....

Introduction I wanted to create some public API with Node.JS which needs to deploy on Cloud foundry environment. In that I had to consume on-prem service. While consuming on-prem service in unauthenticate Node.JS app, throwing me error as Invaild Proxy Authorization Header. After lot of  search, I figure out the solution for it. So I’m....

Introduction As a Professional Software Developer I prefer always to use my localhost environment to develop applications. Everything runs faster on localhost and it’s the most controlled environment you may get. I think this is the reason why the most conversations between testers and developers end with the expected : “It works on my machine”…....