Saturday, July 29, 2023

Repairable DTP data load request

When using Data Transfer Processes (DTPs) to load data, there is an important feature called "Reparability" If a data load request fails, it appears in red status, indicating that the data was not loaded correctly into the target destination. Such failures can occur due to various reasons, such as extraction issues, network errors, database locks, data transformation errors, or data integrity issues, such as missing master data.

The good news is that, depending on the cause of the data load error, the data
processed by the DTP can still be loaded and repaired. This means that if the
DTP data load request has a "Repairable = Yes" status on the DTP's monitor screen, the data can be fixed and reloaded.

However, this repair option is only available in specific cases, typically when the data is still present in the DTP's temporary storage. There are two particular scenarios that need to be met for successful data repair:

1. The source of the extracted data must hold the data in a table with a technical key (request, data package). Additionally, each data package in the source must be uniquely assigned to a data package extracted by the DTP. In case of incorrectly processed data packages, they can be reconstructed uniquely in another attempt using selections from the source data.

2. If the source does not have this property, there is still an option to reconstruct the incorrect data from the temporary storage created at runtime by the DTP. However, this is only possible when all the data from the source was extracted in the first attempt and when at least one temporary storage was created for all data packages.

The technical evaluation of the data load request for the "Repairable" flag is carried out using the ABAP method IF_RSBK_REQUEST~GET_REPAIRABLE in the class CL_RSBK_REQUEST_RED. The flag itself refers to the data element RSBKREPAIRABLE (Indicator: Request Is Repairable) in the data dictionary.

Inconclusion, the reparability feature of data load requests in DTPs provides a valuable way to address and correct data load failures, ensuring smoother data integration into the target destination.



Thursday, July 27, 2023

SAP BW Standard Transport System

In SAP BW a transport system is used to move BW objects from one system to another. This system facilitates the movement of data models, data sources, transformations, InfoObjects, DataStore Objects, queries objects and other BW specific artifacts between different environments, such as development, testing, and production systems. The standard transport system in SAP BW is part of the overall SAP Transport Management System (TMS). The type of BW transport system is called BW standard transport system. There is a difference between the TMS and BW standard transport system. That BW standard transport system can be active or inactive in the BW system. How the BW system does behaves in case it is active and inactive?

Standard transport inactive (deactivated) – All new objects are created as local objects, means they belong to $TMP developer package. No dialog windows appears to assign the development class neither transport request upon the objects creation. Once these objects need to be transported then need to be collected to different developer package, e.g. via Transport Connection tool.

Standard transport active – New objects are no longer created as local objects. Instead, developer is asked to assign the objects to developer package and assign transport request upon creation of the new BW object.

Developer can switch on/off BW standard transport system in SAP GUI as follows.

1. t-code RSA1 -> Transport Connection, menu Edit -> Transport -> Switch On Standard

2. t-code RSOR -> same mu path as above


Info on what type of transport type a BW system is set is stored in table RSADMINS. In its field called TADIRPOPUP. If there is, an X value saved it means the BW standard transport system is set on.

Technically, there is an ABAP SQL statement UPDATE that manipulates the column. The code is implemented in ABAP class CL_RSO_GUI_REPOSITORY and method TRANSPORT_STD_MODIFY.

One more specialty is there with the respect to BEx/BW query objects. The BEx/BW artefacts are written to a fixed BEx request. In addition, you can optionally determine a BEX request per package. BEx objects are written directly to a request and not to a developer's task. The popup to enter the BEx request is also available in the transport connection tool.




Tuesday, July 11, 2023

Program to find personal data in BW/BEx report objects

Within BW reports (formerly BEx reports), there can be a personal information in form of SAP user name or email stored. There are multiple BW report objects that can store such an information. It can be query element (ELEM), query view (QVIW), workbook (XLBW), web template (BTMP), enterprise report (ERPT), broadcast settings (BRSE), bookmark (ABAP, JAVA runtime or BICS), web item (BITM), Query Variants (RSRT) and so on.

Situation where one particular user that is used in objects like above needs to be replaced with a new one. This can be a case when original user is leaving an organization. Similarly if user email got changed (e.g. in case of marriage). How to find what are all the objects where the user ID/email is stored?

SAP provides an ABAP program to do that. It is called RS_FIND_USER_INFO and it serves for purposes of finding the user information across different BW/BEx objects.



On its selection screen a user needs to be specified whose information is search for. On top of that, program can run in three modes:

1. Display what are particular BW/BEx table where the information was found and how many entrees are there in those tables. See picture below.

2. Replacement of user in OWNER field – OWNER is a user who created the particular BW/BEx object. In this mode of the program run the OWNER value can be replaced.

 3. Replacement of user in other field – Programs replaces the user name in other fields such as AUTHOR, TSTPNM, LASTUSER, CHANGED_BY etc.

One more option on the selection screens is a checkbox for deletion of a records in the tables that carries the user record.

Example of the program’s output:



The program 1st appeared in BW 7.4 SP20 and is present also in BW4/HANA systems.

 

More info:

2603432 - Report RS_FIND_USER_INFO

2642676 - NW 7.50 - BEx 7.x Java runtime – deletion of data

Sunday, July 9, 2023

SAP Notes in different languages

There is a translation of SAP Notes content available on SAP support side for quite some time. A links to translated Notes are available usually at the very end of the note. There is a section called Available Language that lists out all the languages.


There can is an URL parameter that can be used to access the SAP Note in a specific language. Like below examples:

https://me.sap.com/notes/2000325/E      English

https://me.sap.com/notes/2000325/I       Italian

https://me.sap.com/notes/2000325/D      German

https://me.sap.com/notes/2000325/S      Spain

https://me.sap.com/notes/2000325/P      Portugal

https://me.sap.com/notes/2000325/F      French

https://me.sap.com/notes/2000325/R      Russian

https://me.sap.com/notes/2000325/J       Japan

https://me.sap.com/notes/2000325/1      Chinese

https://me.sap.com/notes/2000325/3      Korean

 

Normally except German and English languages, the translation to all other languages is just a machine translation. As with any machine translated texts there is not a guarantee of accuracy or completeness of the translation.

In addition, there can be another problem that a codes snippets, parameters names and similar things that are not supposed to be translated are sometimes translated too.

Anyhow, if someone is interested in learning the new languages this is can be also a chance :-)