Tag Archives: transport connection

Analyze content of BW Transport Requests

While being displayed with their human readable description in the BW Administration Workbench (RSA1) some BW transportable objects are identified with a technical name (in UUID format) in the Transport Request object list. This can be quite annoying when one is trying to troubleshoot transport related errors. For instance when someone is trying to determine which Transformations, DTPs or Query Elements are contained in a given transport.

The following program lists all the objects of a transport by their human readable name. The program is in SAPLINK format.

A similar program was published in the SCN code gallery. See the post: BW Transport Validation Utility

Download – NUGG_ZBI_TRANSPORT_REQUEST_CHECK.nugg – 26.7 kB – 383   downloads

Update – Feb 10 2016 – Transaction RS09 or report RSAWBN_REQ_TEST_TB provide the same functionnality. See this SCN Post

BW Transport Validation Utility

This program was originally posted in SCN code gallery. I tested it on my system and created a SAPLINK file for it (see download button below).

This utility lists the contents of a BW Transport Request and translates BW object IDs into readable format.

This applies to

  • Transformations – TRFN
  • Update Rules – UPDR
  • Query Elements – ELMT
  • DTPs – DTPA

 

Download – PROG_ZBW_TRANSPORT_ANALYSIS.slnk – 71.3 kB – 409   downloads

See original article from Kin C. Chan here

BW Inactive Objects Checker – ZBI_INACTIVE_OBJECTS

ZBI_INACTIVE_OBJECTS is a tool that I adapted from a program found on SCN that checks for inactive BW objects. In addition it stores a snapshot of the inactive objects. This way you can execute it before and after a transport operation. A ‘diff’ option will display

  • new or activted objects (that either did not exist or were inactive at the previous execution)
  • inactivated objects (that were active at the previous execution)

In the future I plan to adapt the tool so as to integrate it to the CTS import mechanism. In this way, when a transport contains BW objects, a diff on inactive objects would be automatically be performed and the result inserted in the log and/or mailed to the owner of the transport request.

Download – [NUGG_ZBI_INACTIVE_OBJECTS.nugg] –  34.6 kB – 474   downloads

Translate BEx Query Element Technical IDs in SAP Transport Requests to Readable Format

The code below returns a table with the translation of R3TR ELEM entries in a SAP Transport Request or Sub Task.

It makes use of the function RSZ_DB_COMP_LIST_GET  used in Transaction RSZDELETE to collect all active  BEx Query Elements in the system.


FUNCTION Z_R3T3_ELEM_GET.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     REFERENCE(I_TRKORR) TYPE  TRKORR
*"  EXPORTING
*"     REFERENCE(E_)
*"  TABLES
*"      E_T_OBJECTS STRUCTURE  V_COMPDIR_COMPIC
*"----------------------------------------------------------------------
data:
l_t_e071 type TABLE OF e071,
l_th_components TYPE rzd1_th_compdir_compic.

field-symbols:
<s_e071> type e071,
<s_components>  TYPE rzd1_s_compdir_compic.

"Get ALL available components + Variables
CALL FUNCTION 'RSZ_DB_COMP_LIST_GET'
EXPORTING
i_deftp       = rzd1_c_deftp-all
i_objvers     = 'A'
IMPORTING
e_th_complist = l_th_components
EXCEPTIONS
OTHERS        = 0.

select * from e071 into TABLE l_t_e071
where object = 'ELEM'
and trkorr = I_TRKORR.

loop at l_t_e071 ASSIGNING <s_e071>.
read TABLE l_th_components
ASSIGNING <s_components>
with key compuid = <s_e071>-OBJ_NAME.
append <s_components> to e_t_objects.
endloop.

ENDFUNCTION.

Standard BEx Transport Request Unlocker and Cleaner program

Transport of BEx objects such as Queries, Workbooks, Variables and several other, are managed in BW via a specific process.  See “Transporting BEx Objects” in the SAB BW Documentation for more information on the subject.

In practice, this process is seldom used as designed by SAP. Instead, BW developers usually never release the BEx Transport Request, that tends to collect a very large number of objects, especially when several persons are working on BEx related objects. Furthermore the individual BEx objects are difficult to identify as they are recorded in transport requests via a GUID rather than their technical name.

What a BW developer will then do when he wants to move some BEx related development to the Acceptance or Production BW server is usually the following steps:

1) Unlock the BEx Transport Request and all its sub tasks (there will usually be one per user working on BEx objects). This is done in transaction SE03, Unlock option.

2) Delete all objects in the BEx Transport Request and sub tasks. (This is optional as the following steps will succeed even if you leave the unlocked objects in the BEx Transport Request). This is done by editing the individual Request/Subtasks in SE01.

3) Collect into a new transport the desired BEx Objects via the Transport Connection of the BW Administration Workbench.

To automate steps 1 and 2, I have written a small abap program and 2 function modules.

This program will automatically determine the “Standard BEx Transport Request”  by checking the field BEX_REQUEST in the single record of table RSADMINA.

screenshot.5

It will then list all subtask of this request and unlock and empty each one of them.

Unlocking is done by the 1st FM, which is a batch input recording of the Unlock option in SE03.

Deletion is done by the 2nd FM, which is a batch input recording running program RS_DELETE_KEY_IN_TRANSPORT2, which deletes objects from transports.

If you want to install the program, you can download the Saplink nugget NUGG_xxxx containing all the necessary objects in the following repository:

http://code.google.com/p/2bi-sap-bw-tools/source/browse/

The Nugget file contains the following objects:

TRAN ZTR_OBJ_DEL
TRAN ZTR_UNLOCK
PROG ZSE03_UNLOCK_REQUEST
FUGR Z_TRANSPORT_REQUEST_UNLOCK
FUGR Z_TRANSPORT_REQST_OBJ_DEL
PROG ZBI_BEX_REQUEST_PREPARE

The ZSE03_UNLOCK_REQUEST program is similar to SE03 + Clicking on Unlock Requests

The Transaction codes are necessary as Batch Input sessions are created on Transaction Codes, not on programs.

The Function Groups contain the FM version of the Batch Input recordings

Finally the main program is ZBI_BEX_REQUEST_PREPARE.

Standard BEx Transport Request automation tool

Often in SAP BW environments, the Standard BEx Transport Request mechanism is not used to transport BEx objects. Rather, the BEx Transport Request is never transported and, every time one wants to transport some BEx query,  workbook or other BEx object, he has to unlock the objects in that Transport Request and then collect them into a separate transport via the Transport Connection section of the BW Administration Workbench.

I have worked that way in most  BW environments, but lately, I have been in a project where we tried to use the Standard BEx Transport mechanism.

In this context, you need to assign a new BEx Transport Request in the Transport Connection every time you release the previous one.

To accelerate this procedure, I have written a small program that automates the following steps:

1) Release the BEx Transport Request. The request number does not need to be provided by the user, as it is stored in table RSOBEXREQUEST (one request per Development Package).
Note that a check is made to see if the BEx transport request is empty to avoid releasing empty transports.

2) Create a new request that is named “BEx Transport Request – <package name>”

3) Define  this request as the current BEx Transport Request by updating table RSOBEXREQUEST

You can download the program in ZSAPLINK nugget format via the link below. The program name is NUGG_ZBW_BEX_TRANSPORT_REQST.nugg

https://code.google.com/p/2bi-sap-bw-tools/source/browse/