Showing posts with label BW. Show all posts
Showing posts with label BW. Show all posts

Friday, July 10, 2026

S416* suite of data browser related t-codes in BW system

In my last post I wrote about a suite of Data Browser related tcodes. Those SE16* tcodes exits in SAP systems that runs on S/4HANA Foundation such as SAP S4/HANA. This is because they are part of software layer SAP_APPL  or SAP_FIN. However, the tcodes mentioned were ported to other software layer - SAP_ABA. Thus, are available in BW (as well as SCM, CRM, Solution Manager, etc.)  systems as well.

What is different is actually the particular tcodes it self. In S/4 they follow SE16* but in other systems they follow S416* or S4H16* names.

SAP_APPL name

corresponding SAP_ABAP name           

description

SE16N

S416N and S4H16N

GTB

SE16H

S416H and S4H16H

Enhanced GTB

SE16D

S416D and S4H16D

GTB Display Mode

SE16S

S416S

GSS

SE16S

S4H16S

GSS Multi Text

SE16SL

S416SL

GSS Column Based

SE16SL

S4H16SL

GSS Depend Read

SE16N_ROLE

S416N_ROLE

GTB Role Maintenance

SE16J

S416QL

GTB Query Launcher

SE16S_CUST

S416S_CUST

GSS: Maintenance of Search Patterns

n/a

S416S_DEP

GSS: Maintenance of Dependencies

n/a

S416CD

GTB: Display Change Documents

 

GTB stands for Generic Table Display

GSS stands for Generic Smart Search

 

More information:

2140828 - GTB: Documentation of generic table display functions

1636416 - CO-OM tools: Functions of transaction SE16H

2124497 - Downport of the SE16* transactions to the software layer SAP_ABA

 

S416CD               GTB: Display Change Documents

S416D                Generic Table Browser Display Mode

S416H                Enhanced Generic Table Browser

S416N                Generic Table Browser

S416N_ROLE           GTB: Role Maintenance

S416QL               GTB: Query Launcher

S416S                Generic Smart Search: Text Input

S416S_CUST           GSS: Maintenance of Search Patterns

S416S_DEP            GSS: Maintenance of Dependencies

S416SL               Generic Smart Search (column based)

S4H16D               Generic Table Browser Display Mode

S4H16H               Enhanced Generic Table Browser

S4H16N               Generic Table Browser

S4H16S               Generic Smart Search: Multi Text

S4H16SL              Generic Smart Search: dependent read


Sunday, May 31, 2026

ABAP Program to report on DTPs - RSBK_DTP_PROPERTIES

ABAP program RSBK_DTP_PROPERTIES is a standard program in BW  used to analyze and retrieve various properties related to Data Transfer Processes (DTPs).

 

Here are some details about the DTP properties the program deals with:

1. Retrieving DTP Properties in Bulk:

   - The report fetches and displays various technical properties of one or more DTPs.

   - It allows administrators to interactively check DTP-specific settings across a system.

2. Supporting Operational and Debugging Tasks:

   - You can use this program to troubleshoot data transfer issues by verifying the settings of related DTPs.

   - It helps in scenarios where a specific DTP is not performing as expected, such as issues in extraction, transformation, or loading (ETL).

3. Custom Analysis and Automation:

   - Developers can use ABAP enhancements or custom versions of the report for bulk analysis, monitoring, or automation of property adjustments.

4. Useful in Migration or Upgrade Projects:

   - During upgrades, migration, or system consolidation, this report can help identify and document all DTP properties to ensure consistent configurations.

 

The DTP properties retrieved vary depending on the system setup and DTP configuration. However, here are some important properties included:

1. General DTP Attributes:

   - DTP Technical Name and Description

   - Source and Target InfoProviders

   - Extraction Mode (`FULL`, `DELTA`, etc.)

   - Activation and Deletion Flags

2. Execution Settings:

   - Data Extraction Mode (e.g., `Serialized`, `Parallel Processing`)

   - Maximum Parallel Processing Options (Number of Processes/Packages)

   - Error Handling Settings (e.g., `Terminate After n Errors`)

3. Filter and Transformation Details:

   - Active Filters and Filters Fields

   - Associated Transformations (e.g., Start Routine, End Routine)

   - Semantic Key Settings

4. Error Handling:

   - Settings related to error handling, such as error handling mode (`No Reporting for Errors`, `Request Green After Errors`, etc.).

   - Error Stack Activation and Management Parameters

5. Monitor and Logging Details:

   - Log Retention Settings

   - Update Mode (`Insert`, `Overwrite`, etc.)

6. Special Runtime Properties:

   - Runtime Modes

   - Data Package Sizes

   - Threshold Limits for Data Records

 

Program selection screen:


Program output:


Sunday, February 15, 2026

Strange entry in BW load job log – ENDx:Get Long TS from / START:Get Long TS from

Recently I observed a strange entry in my BW4/HANA data load job log that appeared like below:

END9:Get Long TS                           RSAR          051

Looking at the particular message details and trying to find its long text number doesn’t help as it is just a placeholder for four strings - & & & &, means very generic message.

Then I tried to find a place in the ode which triggered the message. I found within Function Module RSSM_GET_TIME (that is a part of Function Group RS_GENERAL). There are a few calls of MESSAGE ABAP statement like those below:

message s051(rsar) with 'START:Get Long TS from ' s_destination.

message s051(rsar) with 'END1:Get Long TS from ' s_destination l_error.

message s051(rsar) with 'END2:Get Long TS from ' s_destination l_error.

message s051(rsar) with 'END3:Get Long TS from ' s_destination l_error c_trace.

message s051(rsar) with 'END4:Get Long TS from ' s_destination l_error.

message s051(rsar) with 'END5:Get Long TS from ' s_destination l_error i_from_enq_server.

message s051(rsar) with 'END6:Get Long TS from ' s_destination l_error.

message s051(rsar) with 'END7:Get Long TS'.

message s051(rsar) with 'END8:Get Long TS'.

message s051(rsar) with 'END9:Get Long TS'.

This identifies the place of the BW’s codebase that shows the message. From the code around those MESSAGE statements it was obvious that TS means timestamp. Later I found that the FM has a function (form) TIME_STAMP_ENQ_SERVER. In the form a RSADMIN table parameter LONG-TIMESTAMP-RFC-TRACE is evaluated. Following values of the parameter are being evaluated: X or ON or OFF. Trace level variable is set based on the values evaluated. Later on I found SAP Notes listed below discussing this issue. As per the notes the message are not a errors and there is no harm to the system. However, displaying the message may just slow done the system a little bit. Setting up the LONG-TIMESTAMP-RFC-TRACE parameter with OFF value in the RSADMIN table will make the messages in the job long disappear.

 

More information:

3437790 - Job log shows several entries with message text: Get Long TS from <destination>

3227606 - P29:RSSM_GET_TIME: Hanging situation

3382126 - P29:RSSM_GET_TIME:Switch OFF Traces and too many s-messages END9:Get Long TS


Friday, January 2, 2026

ABAP Function Group RS_GENERAL

Among ABAP class CL_RSAR_FUNCTION there are also other useful places of ABAP code important to BW development. This time I picked up Function Group RS_GENERAL. It bundles generic helper function modules that are reused across SAP. It contains following Function Modules:

RRSV_SYSTYPE_GET                                Determine System Type (SAP/Customer)

RSAR_DATE_CHECK_PLAUSIBILITY             Plausibility Check for Date

RSBB_URL_PREFIX_GET                           Return of Protocol, Server, and Port

RSDG_MSG_APPEND_TO_PROTOCOL          Add Message to Application Log

RSDG_WORD_WRAP                                Divides a String into Substrings of Defined Length (Word Wrap)

RSPC_SHOW_DOCUMENTATION                 Display Documentation for a Process Type

RSRA_GET_DEFAULT_LANGUAGE                Returns Default Language of System

RSR_SYSTEM_GET_UNIQUE_ID                  Temporary Wrapper of SYSTEM_unique_ID_GET

RSSM_ADD_TIMESTAMPS                          Adds Two Time Stamps (One of Which Is Earlier Than 1.1.0001)

RSSM_CHECK_ASSERT_BREAKLUXM_ON     break_luxm stuff

RSSM_CONVERT_DAYSEC2TIMESTAMP        Converts Days and Seconds into Date, Time, and Time Stamp

RSSM_CONVERT_TIMESTAMP2DAYSEC        Converts Date and Time or Time Stamp into Days and Seconds

RSSM_EVENT_RAISE                                Trigger BP_Event_Raise; Can Be Called Using RFC

RSSM_GET_TIME                                     Get Time

RSSM_GET_TIME_INT INTERNAL:               Get Time from Enqueue Server

RSSM_ICON_CREATE                               Create Icon with Quick Info Longer Than 30 Chars (132 Bytes in Total)

RSSM_SLEEP_DEBUG                               Sleep Debug User / Sap - System

RSSM_SUBSTRACT_TIMESTAMPS               Subtracts Two Time Stamps from One Another

RSSM_UNIQUE_ID                                   Temporary Wrapper for SYSTEM_UNIQUE_ID_GET

RS_POPUP_TO_CONFIRM_ONLY_ONCE        Confirmation Popup "Do Not Show This Question Again"

RS_RFC_IS_GUI_ON                                Determine Whether GUI Is Available for Popups and so On

 

The functions in there are focused to:

General BW operations: various supporting fields and functions (time etc).

Monitoring and Data Loading/Processing: functions used during BW data loading processes (e.g. RSSM_GET_TIME that handles timing and monitoring operations during BW data processes).

Especially FM RSSM_CHECK_ASSERT_BREAKLUXM_ON checks the breakpoint of SAP internal BW backend developer called Matthias Lux. He is mentioned in quite a few of BW objects I wrote about it here - Most famous BW backend SAP developer :)

Notice the functions in this group are not released to be used!


Wednesday, December 31, 2025

Which Support Package is recommended for BW?

Many customers I worked for were looking for a reply to this question. The thing is that it goes beyond the SAP BW’s usual "BW Support Strategy" according to which – a quote from SAP Note:

To assist SAP in providing an optimal level of support it is important for the customer system to be up to date. For this, SAP recommends running the latest (or latest – 1) BW Support Package available on the SAP service marketplace.

Thus, SAP doesn’t publish one single “recommended Support Package” number that fits all customers — instead it is the general recommendation - to always run the most up-to-date Support Package Stack that is available for particular release, or at least the latest and the one immediately before the latest.

OK clear. But there are also security issues fixes delivered via SAP Security Notes with high or very high priority. Those normally customers implement on ad-hoc basis as the Notes are published. But some customers may neglect those activities. Therefore, to stress this importance SAP issues following statement – again a quote from SAP Note:

We therefore strongly recommend to update the system at least once per year to the latest Support Package.

Last thing – where to check what is the latest support pack available for my BW? Go to PAM – Product Availability Matrix for that. Find your BW there and published SP are listed on Support Package Stacks tab.

 

More information:

2792181 Which Support Package is recommended for BW/4HANA-customers?

375631 Which Support Package is recommended for BW-customers?

PAM or PAM or PAM – listing more links as they may be changed in future

SAP BW/4HANA (B4H) versions


Friday, December 5, 2025

Executing BW transformation in on-prem/cloud based system

There is a different call of ABAP method that executes the BW transformation introduced for cloud based BW systems. It can be spotted in method TRANSFORM of class CL_RSTRAN_TRFN_CMD. First there is a check if the BW is cloud based system. If so the request parameter (i_r_request) that is passed to a method call is l_r_request_cloud. In case it is on-premise based BW system the value of the same parameter is l_r_request.


 

The two request are generated by a same class and different method call:

cl_rsar_function=>set_request_cloud( i_r_request = l_r_request_cloud ).

cl_rsar_function=>set_request( i_r_request = l_r_request ).

 

In case cloud system the request is instance of IF_RSBK_REQUEST_PROXY_CLOUD.

For on-prem request it is instance IF_RSBK_REQUEST_ADMINTAB_VIEW.

Both the interfaces provide access to runtime attributes of a data load request during its processing. It acts as a bridge between an infoprovider admin screen/tab (in the class called as - IPRO Admin Tab) used for monitoring and administration of requests) and the request object itself in the BW system.


Wednesday, September 17, 2025

Debugging process chains

There are few possibilities for debugging a process chain. In case BW system is based on older versions it needs to be debugged is a background process. This can be done via capturing the background process from the chain’s job.

In case the BW system is newer the chain debugging function is available out of the box. In the process chains related t-codes (e.g. RSPC1) when the chain is in EDIT mode there is a drop down menu called “Debug Loop…”.

 



After that a popup window is displayed. In that window it is possible to enter a number of seconds that represent how long the process waits before executing the task. During this waiting time you either go to Job Overview (t-code like SM37) or the Process Overview (SM51, SM50) and capture the process from there. Or make it simpler and set the break point in your code prior to the debugging). After entering the “Debug Loop…” the chain needs to be saved and activated.

The debugging itself can be started from RSPC1’s menu Execution -> “Execute Synchronous to Debugging”.


In a nutshell:

1.    Open the PC in Edit Mode

2.    Find a process you want to debug

3.    Right click and select “Debug Loop”

4.    Set a time in seconds e.g. 5 seconds

5.    Save and activate the chain

6.    In the menu -> Execution -> Execute Synchronous to Debugging

 

More information:

Finding any process in Process Chain that deals with certain object

Reassigning of Process Chain’s InfoArea

Streaming for Process Chains

Possibilities of Process Chain monitoring

Other ways of starting Process Chains

Critical path of a process chain

Process chain where used

Dummy report for process chain decision processes

Skip Process Chain’s process – some details


Sunday, August 31, 2025

DTP runtime:739444Days 12H 59m 29s?

Recently I encountered a strange DTP runtime figure. The runtime value was displayed in the DTP monitor screen and when I saw it, I rolled up my eyes. The duration of the DTP runtime was 739444Days 12H 59m 29s.

That looked really strange to me. When I debug it I saw that the duration is calculated by FM RSSM_SUBSTRACT_TIMESTAMPS. The FM is called by a method TSTMPS_TO_DURATION in ABAP class CL_RSDSO_MNG_TSN_UTIL.

What the FM is using is to provide a values of the duration in days/hours/minutes/seconds. How it calculates it is basically just a subtraction from the two timestamps: the starting and finishing one. There is one more FM involved in this calculation - RSSM_CONVERT_TIMESTAMP2DAYSEC. That one is counting with a date that is equal to '00010101'. This date is basically the first January of the year 0001 (year one).

What could happen in my case is that for my request the starting timestamp was not available for the calculation for whatever reason. Thus, the BW system based duration’s calculation starting at time the vey morning ('000000') of the first January of the year 0001 ('00010101'):

 

  DATAl_c_datum TYPE d VALUE '00010101'

        l_c_time TYPE t VALUE '000000'.

 

As I ran the DTP on 13th of June 2025, the difference between that data and date year one is 739444Days. Plus, there were some hours/minutes/seconds added.

Wednesday, July 23, 2025

Notifications and Subscriptions in BW4/HANA

Notifications and Subscriptions functionality is available in BW4/HANA based BW systems. In case of the Notifications, the user has a chance to receive notification either via email or to mobile devices about different events that happened in the BW system. The events are following:

Process chain run aborted

Process chain run completed

Process chain run is overdue

Process chain run is seriously delayed

Process chain run takes longer

Process chain run takes much too long

Request ended with errors

Subscriptions on other hand defines specific conditions of BW∕4HANA objects that user receives the notifications for.

Settings related to notifications and subscriptions are available SAP BW∕4HANA Cockpit – (BW Fiori Launchpad). From here the notifications/subscriptions can be enabled/disabled.


From the BW backend perspective the functions are needed first to be customized.  In a t-code SPRO there is an item called Notification Channel -> Notification Channel Provider Enablement. Here all customizing needs to be done from the Configuration and Administration perspective. To switch the function on - the customizing under Administration -> Notification Provider Settings -> Manage Notification Providers (t-code /IWNGW/VB_REG_P, maintenance view /IWNGW/VB_REG_P and table /IWNGW/B_REG_P) needs to be activated.

There are a few tables that holds data about the settings:

BW4FLPNOTIF                    BW/4 FLP Notifications, each notification has a unique ID (NOTIF_ID), TYPE_KEY identifies type of the notification (BW ones e.g.: BW4_RSPC_VERY_LONG, BW4_RSPC_LONG, BW4_RSPC_BERY_LATE, …)

BW4FLPNOTIFREC                 BW/4 FLP Notification Receivers, a list of the user per unique notification ID

BW4FLPNOTIFSUB                 BW/4 Notification Subscriptions, each subscription has unique ID (GUID), user (USER_ID) specific the user to whom the subscription belongs to, OBJECT columns defines object which the subscription is related to (e.g.: ADSO, PC, PREC, etc.), validity columns from – to, who created, when,…

BW4FLPNOTIFSUBCO               BW/4 Notification Subscriptions Conditions, condition has unique ID (SUBSCR_GUID), FIELDNAME, and SEL_LOW and SEL_HIGH define object e.g. PC tech name

Some of these tables can grow fast thus housekeeping needs to be performed on them. There are standard programs like RS_BW4_FLP_NOTIF_DELETE and RS_BW4_FLP_NOTIF_OFF to support that.

 

More information:

Online documentation

2922364 - FAQ: BW/4HANA 2.0 Cockpit Notifications



Process Chain – Processed with Errors

While checking process chain there can following message displayed:



Processes with Error        Message No. RSPC022

Diagnosis

Error occurred when checking the process chain.

System Response

When errors occur, the system does not activate the chain.

Procedure

Call the relevant messages for the processes that are marked in yellow and red using the context menu.

 

The problem with that message is that it doesn’t say what process has the error. The error is just shown as generic and from the message it is not possible to say what is wrong.

To get to know what process the error is related to a debugging is needed. Check of PC’s processes are executed by method CHECK of ABAP class CL_RSPC_CHAIN. There is an internal table called E_T_CONFLICTS holding information about the erroneous process:


In my case the error was related to aDSO activation process. The aDSO object technical name is shown in field MSGV1.


Tuesday, June 17, 2025

Loading hierarchies’ data between InfoObjects

Recently I have developed a BW flow to load hierarchies data from one InfoObject to another.

I have found a SAP documentation that discusses IO 0H_NORESRNO (Display assigned nodes only) usage in such a data transformations. Recommendation here is to do not map this IO at the transformation due to performance. The IO mentioned is present in the Hierarchy Header segment of the transformation. There is also other SAP official help page where the recommendation is opposite (to do a map it to 'X' value using a constant).

The 0H_NORESRNO IO is basically driving a behavior of master data attribute values. Values that are not assigned nodes (attribute values that occur in the attribute table of the InfoObject but not in the hierarchy) are not saved in the hierarchy SID table and do not have to be loaded into memory at runtime.

For me the transformation runtime was better in case that I do not map the mentioned IO.