Monday, August 31, 2020

BW statistics not collected for certain BW object or object type

Normally BW statistics data is being collected into BW statistics technical tables like RSDDSTAT, RSDDSTATAGGR, RSDDSTATINFO, RSDDSTATAGGRDEF, RSDDSTATEVDATA, etc. Particular table is used depending on BW object type. For example statistics details about DTP processing is stored in table RSDDSTATDTP.

In case BW statistics data is missing in particular tables, the BW statistics customizing needs to be checked. In most cases, customizing is missing for either particular BW object or BW object type. Main table that stores the BW statistics for customizing is RSDDSTATOBJLEVEL - objects such as Queries, InfoProviders, Web Templates and Workbooks are to be maintained in there in order to collect the BW statistics. Those particular BW objects can be maintained directly via t-code RSDDSTAT.

More over other BW objects or objects types needs to be entered into the RSDDSTATOBJLEVEL table manually via SE16/SM30 t-code.

Therefore, if no statistics written to the statistics tables always check if the corresponding entry in the RSDDSTATOBJLEVEL table exists. Once customizing entry is there then the BW statistics data must be collected by the BW system.


More information:

934848 - Collective note: (FAQ) BI Administration Cockpit

2470847 - How to Delete BW statistics Data

Friday, August 21, 2020

Few words about SAP transports

 For developers coming to SAP world from different ecosystems it is sometimes confusing to understand how does SAP (e.g. within NetWeaver) works with transporting of developer objects. As a starter there are few terminology things as per different types of development objects transporting:

ABAP world:

Change and Transport System (CTS) - organizes development projects in ABAP Workbench and in Customizing, and then transport the changes between the SAP systems in system landscape.

Transport Management System (TMS) - it is infrastructure for the transports, provides tools to configure transport routes, display import queues, import requests, transport workflow etc.

Non-ABAP world:

The CTS is used to transport ABAP objects. There is also Enhanced Change and Transport System (CTS+), used to transport also non ABAP objects, mostly JAVA based artefacts (like SAP BusinessObjects, SAP Cloud Platform, SAP Enterprise Portal, SAP HANA. SAP Hybris Commerce Suite, SAP Manufacturing Integration and Intelligence (SAP MII), SAP Mobile Platform, SAP NetWeaver Development Infrastructure (NWDI), SAP NetWeaver Master Data Management, SAP Process Integration (PI), etc.).

HANA world:

When it comes to HANA development artefacts there is so called SAP HANA Application Lifecycle Management (HALM) or CTS+ for SAP HANA. It is used to move HANA objects throughout their application development lifecycle. There is also SAP HANA Transport for ABAP (HTA) that can be used to synchronize objects and packages from the SAP HANA repository to the SAP HANA Transport for ABAP repository (HTA repository) in the ABAP system and add them to a transport request. Concerning this there is SAP HANA Transport for ABAP for SAP HANA Deployment Infrastructure (HTA for HDI). The HTA for HDI is the successor of HTA.

SCP world:

Lastly when it comes to SAP Could Platform (SCP) there is suite of solution to support change management of either pure could related development artifacts (so called cloud native) and hybrid applications.

Now back to ABAP world. At last year TechEd there was a git-enabled CTS (gCTS) solution presented. This is basically the SAP move towards DevOps thing that is present in non-SAP ecosystems. SAP is trying to leverage state-of-the-art processes and tools that are out there mostly in form of open source project within the SAP change management. It comprises of two main components:

Git-based versioning like branch and merge support

• Connect ABAP processes with Continuous Integration (CI) tools (e.g. Jenkins, Bamboo, GitLab, etc.)

For me this is still quite a faraway future. These tools are currently not present in SAP system out-of-the-box. It is a usual case that to deploy it they require a significant effort to implement it. There needs to be other non SAP server available to run e.g. CI server etc. Because all of these many customers are not getting all advantages of DevOps. Thus are stuck with old technology, only utilizing what is available out of the box from SAP. As a side note the CI is a complex topic but it is a practice of merging all developers working copies to a shared code line several times a day.

Note that there is also abapGit as open source project. However, SAP is not using it and they came up with their own implementation of the git for purposes of the gCIT.

One more remark on how SAP NetWeaver transports are working. It is an important thing is to understand that in SAP NetWeaver transports only records that a change was made to a particular object. It does not records what the change was about. In other words, the systems always create a kid of a snapshot of the involved object. For the version, management there is a different thing – Version history, build in developer t-codes like SE8/SE38 (going forward all this will be replaced by the git based repositories). Also all the changes done are only stored in original system (so called development system). They are not moved to any other system in the landscape. It means that complete version history of all repository objects are only remain in the development system. This is also in line with SAP strategy that advises customer to always retain the development system. There can be special cases in case the DEV is being replaced (deleted or somehow not planned to be used anymore) and there is a need to get all the version history to the new DEV system. In such a case see SAP Note 130906 - How can versions be transported?. It describes possible workaround to exported the complete version database and import it the other system (e.g. a system copy of “old” DEV system).

The fact that system only records object into which the change was done is important to understand as there may pop up many transport collisions between multiple developers working on same objects. E.g. in case there are several methods being developed in one ABAP class it is not possible to just move the one method and do not include others which are there. Simple just to put an entry like LIMU METH <method_name> into the transport request won’t move the particular method. Along such an entry, also the whole class definition (R3TR CLAS <class_name>) needs to be present in the transport request.


More information:

ABAP: CTS, gCTS

nonABAP: CTS+

HANA: HALM

SCP: Software Logistics for SAP Cloud Platform

Wednesday, August 12, 2020

Running out of transport request numbers?

In large SAP installations serving multinational companies where many SAP clients are heavily customized within one SAP system there can be a huge IT department where even hundreds of SAP developers are working. While developing either a new of changed functionality the developers are using transport numbers to carry the changes across the systems in a landscape. On top of that, also SAP functional consultants are moving their changes via customizing transport requests. In such an environment after few years, the SAP installation can face an issue that number range that is providing numbers for the transport requests is running out of the numbers.

Normally the number range for the transport requests generates the numbers within the range ( <SID>K900000 - <SID>K999999 ). Theoretically, there can be up to 100k transport requests with the range. If the number get closer to the 999.999 it means that, the system is reaching to the limits of that particular number range.

Starting with SAP ERP Release 4.6A (back then around year 2000 called R/3 system) a new interval will be automatically used by the SAP NetWeaver based system. It is the range ( <SID>K9A0000 - <SID>K9ZZZZZ ). This will guarantee that another more than 40 million free transport requests numbers are available for future.

 

More information:

106911 - Transport system: number range filled for requests

1674286 - How to modify CTS transport number range (ABAP)

2951296 - Transport TR range getting exhausted

Monday, August 3, 2020

BW transport error: Object ABC needs object XYZ; latter is not in a request

Today one more blog post about BW transports. While releasing the BW transport there can be below error message:

Object ABC needs object XYZ; latter is not in a request Message No. RSO657
Diagnosis
The required object XYZ is not in a request. The request should not be released.
System Response
The object ABC would result in an error during import since the required object XYZ cannot exist in the target system.
Procedure
Write the required object IOBJ XYZ in a request.

Issue is very clear from the BW system consistency standpoint. It identified the missing object and it does not want to allow the transport be released as it would lead to inconsistency. However in most of the cases it is obvious that object that the system is complaining about is already existing for quite some and was transported across a landscape. That means it object XYZ doesn’t need to be in the transport.

According the SAP Notes such as 1801262 the error message can be ignored. It means that import to target BW system can be performed with an option of "Release despite errors? While doing it in person via dialog mode in t-code SE10. However there is no such an option in case there is an change management tool (e.g. Solman CHaRM) used in the landscape. In such a case, it make sense to put particular transport into the table RSTPCHECKEXC (Exception Table: Before Export Check). The table hold in information about all the transports that are to be exceptioned from “Before Export Check” phase of the transports while it is being released.

The report RSO_TLOGO_CHECK_REQUEST also using this table while executing the transport consistency check for before export check phase of releasing the transport.



More information:

1801262 - Releasing of transport request ends with message RSO656 / RSO657 / RSO672
2137751 - BPC NW 10.0/10.1 Transport Release error 'Object A needs object B; latter is not in a request' is being generated - Message No. RSO657
1377342 - Prüfung der Konsistenz von Transformationen im Transport