Saturday, 7 December 2024

Steps to Replace OData in Business Application Studio UI5 Extension Project

How to change OData service when using BAS Extension Project for Standard Apps

Background: Sometimes, standard FIORI apps cannot be extended via BAS Adaptation Project. This limitation arises if the app contains synchronous views. In such cases, you may need an alternative approach to customize the app effectively.

Requirement: The standard app ‘Transfer Stock - Cross-Plant’, includes buttons to transfer stock between plants. My requirement is to customize the app to grey out the buttons based on the plant category.

Saturday, 5 October 2024

Oracle Listener doesn't starts after DB instance installation

During the installation of Netweaver 7.3 on Oracle 19, we faced a scenario where the SWPM stopped while installing the primary application server at the stage where it tends to restart the SAP instance. Further investigation led to the log which suggested that the application host was unable to connect to the database

"R3trans -d" was failing

On checking further it was revealed that the Listener was not running and when an attempt was made to start the listener, it failed

Saturday, 7 September 2024

Currency conversion in SAP Datasphere

Currency conversion is a fundamental capability across most SAP products, playing a vital role in enabling accurate financial reporting and analysis across different currencies. Whether you're working within the traditional BW environment or leveraging the modern features of SAP Analytics Cloud, there are various techniques available to handle currency conversion effectively.

In this blog, I’ll take you through a comprehensive, step-by-step guide to modeling currency conversion in SAP Datasphere, helping you unlock the full potential of this essential feature.

Disclaimer: All the data created are for demo purposes, the approach is used to demo the functionality of the currency conversion in SAP Datasphere, not intended for production design or usage.

Tuesday, 27 August 2024

Automating Username Generation for Employee BP Records mandatory in SAP EHS

In the context of SAP EHS (Environment, Health, and Safety), ensuring that all employees have a unique Business Partner (BP) record is crucial for effective management and compliance. Each employee must have a username to be assigned as part of their BP data, which is essential for proper system integration and user access.

This guide demonstrates how to create an ABAP program that automatically generates usernames for employees. The usernames are derived from the first letter of the employee’s first name and their last name, followed by a numeric suffix to ensure uniqueness if similar usernames already exist. This is particularly useful in the SAP EHS module, where each employee's BP record requires a unique identifier.

Saturday, 27 July 2024

Understanding SAP RAP, CAP, Build, Joule, Embedded Analytics: A Simple Guide

Introduction


In the rapidly evolving world of SAP, staying updated with the latest technologies can be challenging. Today, we will simplify five key SAP technologies: SAP RAP, SAP CAP, SAP Build, SAP Joule, and SAP Embedded Analytics. Let’s understand what they are, how they differ, and when to use each one.

SAP RAP (Restful ABAP Programming)


Let’s start with SAP RAP. ABAP has been the backbone of SAP for years, and RAP brings a modern approach to it.

Wednesday, 10 July 2024

ABAP CDS Select from dynamic data source

I faced a little problem while reporting in Fund Management (FM) module as the tables are generated automatically while creating derivation rules with dynamic names and differs by system /client.

The rule entries are stored in the generated table "FMFMOAXXXYYYZZZZ", where XYZ symbols means as follows:

  • XXX is the system specification (e.g., DE1 or QE1)
  • YYY is the client number (e.g., 120 or 200)

ZZZZ is the number of the derivation rule (which you should have as per your table 31, 51, 64, or 61)

To be able to move my report / solution I had to selecting from dynamic source which is not supported in CDS!

Monday, 8 July 2024

A Comprehensive Guide to Using OLE Objects in SAP ABAP

In this blog, we’ll explore how to use OLE objects in SAP ABAP to automate tasks in Microsoft Word. We will cover the basics, including how to create an OLE object, manipulate data, and handle errors.

Introduction to OLE in SAP ABAP

OLE Automation in ABAP enables you to control Microsoft Office applications. You can create documents, fill in data, format cells, and even run macros—all from within your ABAP programs. This is particularly useful for generating reports, exporting data, and performing complex calculations.

Prerequisites

Before you begin, ensure that:

You have access to a Microsoft Office installation on the machine running the SAP GUI.

You have basic knowledge of ABAP programming.

Saturday, 6 July 2024

Efficient Data Retrieval and UI Binding To Value Help: Using Batch Requests with OData in SAPUI5

I have observed that there is limited content available regarding the process of sending batch requests from SAPUI5 applications to OData services, receiving the response, and subsequently binding the retrieved data to a Combo Box for value help

So in this Blog I would like to explain create a Combo Box using XML, Send a batch request from SAP UI5 and Bind the data to Combo Box for Value Help.

What is a batch Request?


In SAP OData, a batch request is a mechanism for sending multiple HTTP requests as a single batch to the OData service endpoint. Instead of sending individual HTTP requests for each operation, such as read, create, update, or delete, you can group multiple operations into a single batch request.

Friday, 5 July 2024

How to Create a Custom Validation from Fiori App Manage Substitution and Validation Rules

As we are moving to Fiori first yet cloud ready approach for any development, why restrict us to GGB0 or GGB1 for creating validation or substitution rules?

We can utilize the Fiori application - Manage Substitution and Validation Rules to create the rules which will be applied to all the standard processes such as standard interfaces, GUI T-codes and managing standard processes in custom program.

In this blog, we will create a custom-defined function in the validation rule on asset creation or modification done through the Fiori app - ‘Manage Fixed Assets’. The rule will validate against the supplier assigned to the asset master record.

Wednesday, 3 July 2024

Full screen list in Maintenance Views

Introduction


With or without Fiori in the picture, Maintenance View is one of the main tools for maintaining SAP configuration. Reliable and easy to use, it is a proverbial workhorse.

However, since widescreen monitors became a standard, it has always been frustrating to me to see how much space is left unused (not to say wasted) in the list of a Maintenance View. The obvious solution was to modify the screen manually, but this was overwritten whenever a list was recreated.

Today, I will show you a way of making the Maintenance View list use as much space as possible, always.

Monday, 1 July 2024

SAP Datasphere: Replicating Custom CDS Views from S4 HANA to Azure Data Lake with CDC

Introduction


In this article I will share work experiences of using a custom CDS view on Joining BKPF and BSEG table in S4HANA and consuming it in SAP Datasphere for delta enabled replication (Change Data Capture) to Azure Data Lake Storage Gen2.

SAP Datasphere: Replicating Custom CDS Views from S4 HANA to Azure Data Lake with CDC

Create a Custom CDS View: ADT on Eclipse


Go to ABAP Repository Object and Click on the drop down for Core Data Services and then click on Data Definitions:

Friday, 28 June 2024

SAP Cloud Transport Management

Introduction


I have experimented a bit with SAP Cloud Transport Management.

The Big Picture


As usual on SAP BTP you have to use a service from the service marketplace to use the SAP Cloud Transport Management. You also have to create a solution landscape on the SAP BTP. 

I designed it as follows:

Wednesday, 26 June 2024

MFS Testing strategy for smooth transition and reliable performance

It is crucial to test the MFS solution thoroughly before Go Live to ensure a smooth transition and reliable performance. Different projects require different test strategies. Below, I share some general approaches I followed in various MFS implementation projects.

During the build phase, we usually use an ABAP program (SCWM/MFS_TEST_MFS_RECEIVE2 or a custom program) to test our solution. However, this does not provide visibility into how the PLC would react to different situations. Therefore, we use emulation software where the warehouse automation layout is modelled and all possible logic is implemented. In SIT, we typically use this emulation software to test the MFS solution.

MFS Testing strategy for smooth transition and reliable performance

Many cases, existing PLC logic is changed to ensure it can work with MFS solution. Even sometimes a master PLC is introduced which communicate with lower-level PLC or hardware’s & then communicate with MFS with telegram messages. So, it is important to test these PLC changes. For this we usually place the new version of PLC software in place of the existing Legacy PLC & do the test with MFS. These kind of test needs warehouse down time.

Many warehouses run 24/7 & getting a down time is a big challenge. So, it is very crucial to plan these kinds of tests in detail so we can utilize this downtime to the fullest. This is also a great opportunity to test all your warehouse automation & integration with other software’s.

We usually try to replicate a day after Go Live in the testing environment which gives us a very good visibility & confidence how the EWM/MFS solution would work in production environment.

MFS Testing strategy for smooth transition and reliable performance

Operational test Planning:

We need to ensure following key items are addressed before we start operational testing for Warehouse Automation with MFS.

Master data: Need to ensure all the master data such as products, packaging specifications, any other data entries are in place in test system so you can use these production data for these tests. These test data also need to be available in other software test system. You may need to block bins not part of the agreed test scope so to ensure testing process does not mess up current legacy production inventory.

Network issues: Network team need to set up the firewall rules so Test MFS system can communicate with Test PLC without any issues. Similarly, connection between Test EWM/MFS system, Test Fleet management software which controls the AGV & any other application which we would like to test as part of end to end operational test needs to be in place.

Resources: It is crucial to have resources from business teams and all other applications available during planning & execution of operational test. All warehouse key resources should be trained on the new MFS processes so they can participate actively and appreciate the test results..

Test Scenarios: You need to have test cases covering both happy paths and all exception scenarios. Decide how to recreate exception scenarios. For example, to simulate a "No Read" scenario from a scanner, you might need to cover the scanners so the PLC sends telegrams accordingly.

Test Cases/Pallets: Ensure you have enough cases and pallets with all possible data variations. For partial pallet scenarios, have partial pallets ready. Also, include oversize pallets, mixed pallets, etc. Decide the entry and exit points of these pallets, Cases for each test. For instance, in the Goods Receipt process, determine where pallets should enter and where they should be stored. If cases are used to build pallets, decide where cases need to enter the system and where pallets should come out.

Rollback Approach: It is critical to have a solid roll back plan so after the test everything is brought back to BAU status. 

Operational Test Execution:

During the test, all the test results, observations need to recorded correctly. Not everything goes as planned, so need to be able to change the approach on the fly with due consideration to overall design architecture.

After Test execution:

During the test, things move very fast & so many transaction data gets posted. So after the completion of the test, it is important to analyze the data to see of anything has any abnormal posting. Log all defects & track for its closure.

It is very critical to complete the rollback steps before handing over to business. Such as replacing the test PLC with current production PLC, changing the IP address at MFS. Network team reverting the Firewall rules. If any test EWM labels are used, it is necessary to replace with actual labels. If any BAU labels are damaged, ensure to reprint them in current legacy software. Do a stock count & ensure they are in right places. Sometimes you need to bring back the pallets, cases to its original positions or manually adjust the new position of these stock in legacy WMS application.

Monday, 24 June 2024

Next time "Just Ask": Simplifying Data Exploration - Configuration using a standard ABAP CDS View

Introduction


Just Ask is a feature in SAP Analytics Cloud which is powered by Generative AI and allows users to ask questions in natural language and receive visualizations and insights based on the data available in SAP Analytics Cloud.

This feature uses machine learning and natural language processing to understand and interpret user questions and provide relevant data visualizations and insights. This allows users to easily access and interact with data without needing to have expertise in data analysis or querying languages.

Availability and Roadmap


Just Ask -initial release is available from QRC Q1 2024 in all SAP Analytics Cloud (SAC) tenants hosted on Cloud Foundry (AWS), Google Cloud Platform, and Microsoft Azure. It is not available for tenants hosted on Neo or AliCloud environments.

Currently, Just Ask works with data from acquired models and Live SAP Datasphere models and supports English language.

Just Ask vs Search to Insight - Is it just rebranding?


Some frequently asked questions that I have observed. The 'Just Ask' feature resembles the 'Search to Insight' feature, what sets them apart? Is it merely a rebranding of the same feature?

Short Answer - No, they are not same.

Detailed Answer - Even though Search to Insight and Just Ask address the same audience and process natural language queries to present data in graphs/charts the difference lies in the core NLQ technology used in Just Ask. Just Ask leverages AI models to provide more relevant results. Another big difference that I see is in the control and refinement options that Just Ask provides to the admins which is not there in Search to Insight. Details below:

Some features that set Just Ask apart from Search to Insight and are not available in the latter:

  • Central place to define models to be enabled as searchable - this reduces ambiguity (say models with same name) and also if the models are not fully ready or partially released or may not have refine data.
  • Define synonyms and rules to refine results - example if the typed question by user includes "by year" or say "current month" then admin can define a rule to restrict data to the "current year", "current month" etc. depending on the model in question and business requirements.
  • Create questions (search queries) presented as recommendations to end users
  • Based on AI models (LLM) and use embeddings

In Search to Insight by default all the models were included, no option in Search to Insight to configure/refine models/result by leveraging synonyms/rules/questions.

Enabling Just Ask


SAP Analytics Cloud tenant admin can enable the feature from the below path and can be easily accessed from the top toolbar icon

Next time "Just Ask": Simplifying Data Exploration - Configuration using a standard ABAP CDS View
Figure1

◉ System--> Administration--> Default Appearance
◉ Under Home Screen Tile - Set Conversational Analytics to ON
◉ Under Conversational Analytics section - Switch default mode from Search to Insight to Just Ask

Next time "Just Ask": Simplifying Data Exploration - Configuration using a standard ABAP CDS View
Figure 2

Consuming S/4HANA ABAP CDS View in SAP Analytics Cloud


Now to understand how to configure a model for Just Ask, I have used a standard ABAP CDS View to create a model in SAC and enable it for Just Ask.

The standard ABAP CDS View I am using is Material Stock for Key Date (C_MaterialStockByKeyDate).

Structure of SAC model on top of ABAP CDS View:

Next time "Just Ask": Simplifying Data Exploration - Configuration using a standard ABAP CDS View
Figure 3

Data in the model

Next time "Just Ask": Simplifying Data Exploration - Configuration using a standard ABAP CDS View
Figure 4

Note: Please refer SAP help on SAP Analytics Cloud on how to import ABAP CDS views from S/4HANA to SAP Analytics Cloud or many great blogs already written on this topic.

Launching Just Ask


Click the Idea /Bulb button from the toolbar (refer Figure1 above).

Customizing Just Ask:

On the Just Ask screen admins can add free text using "edit description" to maintain description about Just Ask or general information for the end users.

Example - I have maintained to share what models have been indexed or available. Another example - One can maintain models from a particular project or business area which are available for Just Ask.

Next time "Just Ask": Simplifying Data Exploration - Configuration using a standard ABAP CDS View
Figure 5

Configuring Model for Just Ask

Just Ask screen when the model is not indexed.

Next time "Just Ask": Simplifying Data Exploration - Configuration using a standard ABAP CDS View
Figure 6

There are two options available:

Option 1--> Add the model directly to the current session OR

Option 2--> Index the model using Manage Models option (top right) to make it available for the users

Note: In above screenshot - Material Stock is not indexed yet and that is why it is not in the list of indexed models.

Option 1 --> Add Model directly to Just Ask for the current session - The model added, will not be available after the end of current session.

Next time "Just Ask": Simplifying Data Exploration - Configuration using a standard ABAP CDS View
Figure 7

After adding the model

Next time "Just Ask": Simplifying Data Exploration - Configuration using a standard ABAP CDS View
Figure 8

Immediately, Just Ask will suggest the dimensions and measure available in the model. Example - Asking a question on Stock by Plant and Base Unit of Measure generates below chart.

Next time "Just Ask": Simplifying Data Exploration - Configuration using a standard ABAP CDS View
Figure 9

Option 2 - Indexing the model

Follow steps as shown to index the model

Next time "Just Ask": Simplifying Data Exploration - Configuration using a standard ABAP CDS View
Figure 10

After the model is indexed

Next time "Just Ask": Simplifying Data Exploration - Configuration using a standard ABAP CDS View
Figure 11

Defining Synonyms

After defining synonyms for the fields.

Next time "Just Ask": Simplifying Data Exploration - Configuration using a standard ABAP CDS View
Figure 12

Note - Admins should align model selection and synonym/rule definition with key users, as they are more familiar with the terms commonly used.

Synonyms for the values in the Plant field.

Next time "Just Ask": Simplifying Data Exploration - Configuration using a standard ABAP CDS View
Figure 13

Defining Rules: Simply put rules are like logic which gets executed when certain conditions are met.

Example - If the prompt has Stock Quantity then show results with Plant , Base UOM and Stock for 01.01.2024 to 11.06.2024 and for only US Plant.

Next time "Just Ask": Simplifying Data Exploration - Configuration using a standard ABAP CDS View
Figure 14

Output after testing the Rule:

Next time "Just Ask": Simplifying Data Exploration - Configuration using a standard ABAP CDS View
Figure 15

Next time "Just Ask": Simplifying Data Exploration - Configuration using a standard ABAP CDS View
Figure 16

Note: It is always recommended to test the rule and make adjustments to get desired output before publishing it.

Sample Questions:

Just Ask also provides a great feature to create "Sample Questions" for a model. This feature allows admins to create sample questions (queries), helping users explore available data and fields easily. It's a quick start to get users comfortable with the data in the model and boost adoption. This is another way to customize Just Ask for the end users.

Creating Sample Questions:

Next time "Just Ask": Simplifying Data Exploration - Configuration using a standard ABAP CDS View
Figure 17

Sample Questions created for the model:

Next time "Just Ask": Simplifying Data Exploration - Configuration using a standard ABAP CDS View
Figure 18

Result and the list of Suggestions and other Sample Questions:

Next time "Just Ask": Simplifying Data Exploration - Configuration using a standard ABAP CDS View
Figure 19

Indexed Model related setting:

An indexed model can be disabled as searchable for Just Ask. Some examples when this option can be used:

  • Model is indexed however, configuration (synonyms /rules etc.) is still work in progress OR
  • Model is no longer required OR
  • Is not fully ready yet

Next time "Just Ask": Simplifying Data Exploration - Configuration using a standard ABAP CDS View
Figure 20

Just Ask in Action

Now as the model is now indexed and configured by defining synonyms and rules, let's see Just Ask in action. The Material Stock model is now available under indexed models.

Case 1: Here Inventory and Production Facility both are synonyms and as per the rule defined results are filtered out to show only US Plant and between January 2024 to June 2024

Next time "Just Ask": Simplifying Data Exploration - Configuration using a standard ABAP CDS View
Figure 21

Case 2: For this case rule was disabled. In this case Quantity, Location, US are all Synonyms defined in the model configuration, where Quantity --> Stock Quantity, Location--> Storage Location and US --> Plant 1 US

Next time "Just Ask": Simplifying Data Exploration - Configuration using a standard ABAP CDS View
Figure 22

Case 3: Searching by synonyms defined for the data values. Here synonym "Cake" was created for Materials filtered in the query generated.

Next time "Just Ask": Simplifying Data Exploration - Configuration using a standard ABAP CDS View
Figure 23

Conclusion

In conclusion, Just Ask offers advanced NLQ technology and greater control for administrators compared to Search to Insight. These features reduce ambiguity and improve relevance while providing more customization and flexibility in presenting data to end users, making Just Ask a more powerful tool for natural language query processing.

Friday, 21 June 2024

How to replicate your Fiori Inbox in Microsoft Teams

Using Looply you can replicate your Fiori Inbox in Teams, and it’s fast and easy.

Putting outstanding workitems in the face of those users who are not logged into SAP Work Zone / Fiori LaunchPad / SAPGUI can accelerate processes and lead to a host of other benefits.

We can build the solution in 4 steps.

[1] Consider the trigger points.


You have options. You might run a background job periodically to update Teams. This is easy to set up, but resource-intensive if you decide to run it every few minutes instead of, say, twice per day.

Wednesday, 19 June 2024

Setting up an ABAP Environment on SAP BTP

Overview


We will set up the ABAP Environment on SAP BTP by using the Cloud Foundry runtime environment.

1. Add a Service Plan

Go to your Subaccount.
Add an new Service Plan and search for "ABAP environment".
Select all 3 options for the available plans.

Monday, 17 June 2024

Develop an application utilizing the RAP Web API with SAP Build Apps framework in S4Hana OnPremise

In this blog it will be shown how SAP Restful Application Programming Model can be used and consumed in SAP Build App to create an APP.

Technology used:


1. SAP RAP
2. SAP Build Apps
3. SAP BTP
 

Development Steps:


1.  Create RAP Model objects in Managed scenario.

◉ Database Table
◉ Interface View
◉ Transactional View
◉ Consumption View
◉ Transactional Behavior Definition
◉ Consumption Behavior Definition
◉ Service Definition
◉ Service Binding

Friday, 14 June 2024

Upload and modify OpenXML documents via RAP App in SAP BTP ABAP Environment

Introduction


In this blog post, I would like to share some insights for generating OpenXML documents by use of the RESTful Application Programming Model with Cloud-released development objects. With this app, you will be able to upload .docx templates and fill them with information from you CDS view (could be used for generating invoices, business documents and so on...).

Prerequisite


  • SAP BTP ABAP environment or an S/4 system to your disposal.  
  • Eclipse IDE installed on your local machine with the ABAP Development Tools.

Wednesday, 12 June 2024

Introducing new type of Data Access Control "Operator and Value" for SAP Datasphere

Row-level security in SAP Datasphere is implemented via Data Access Controls (DACs) to allow a more granular assignment of authorisations and access to data on dedicated views within a Space.

In general DACs are objects which can be created in SAP Datasphere as objects in their own right which control access to data for each user within a Space. Hence, an integral part of a DAC is a list of values a user is allowed to see for a dimension (e.g. 'Sales Units') a user is allowed to see. This list can be maintained  in a local table, a view or even a table function. Each value a user is allowed to see must be represented by one record in this list of authorised values.

Monday, 10 June 2024

CDS based Analytical oData for Fiori

During my developments I found that analytical oData services (or maybe to be more precise "analytical entitysets" within oData services) are needed quite often but it's not very well documented what options can be used to create them. In most of the official literature you will find oData generated on top of "analytical query" but this option is not supported in Restful ABAP programming model and makes some stuff (like adding additional entitysets in the same service) difficult.

As a first thing let's explain "analytical oData" on a very simple example and probably most common scenario: you have some kind of document item which has for example Supplier, Company Code, Fiscal Year, Amount with Currency code and Quantity with Unit. And you perhaps need to get the "sums" of amounts and quantities on different levels