1 2 3 4 Previous Next

Data Warehousing

49 Posts

Raymond Busher gave a very comprehensive presentation with a lot of tips where to look and what to do to improve the performance of your ETL. In his presentation he discussed monitoring, data models, ABAP techniques, Shared object memory (SOM) and finally process chains.

It was a very comprehensive session.  But let me start with the points he wanted to take us home :

  • Ongoing
  • raised and benefit your development team as a whole
  • Ensure cubes are compressed regularly
  • Ensure indices are active and statistics are collected regularly
  • Key to improving overall performance is to minimize database
  1. access. Using Shared Object Memory can help you to achieve
  2. this.
  • Ensure

of your available BATCH processes

  • Performance analysis must be ongoing
  • Develop standards and guidelines for your development team and

monitor your system by checking metadata guidelines are being

adhered to

 

I highlighted some words as it is evident that finetuning is not a one off project but a continuing process. In the take away it becomes evident that fine-tuning means constant looking at the BW system and be on guard.  You can have new developments, new people in your team, but you need to rely on BW as a solid system.

 

 

In the session we started with looking at monitoring options. First transactions that can be used for SQL monitoring (DB02, ST04, ST05, SE30) and process chain monitoring via transaction ST13.

Then we looked at all the components of extraction. In the extraction time we monitor the DB time to select data and user exits.

Look  at delta vs full updates, start and endroutines.  Check your DTP’s. Semantic grouping for example does deliver a large overhead.

 

Data Model

Look at the cubes to model them in a performance oriented way. The layout in the multiprovider can be user oriented.  This means using all the dimensions to get the dimensions as small as possible. With DSO’s if they are not used for reporting, turn off SID generation.  If you summarize data to new keyfigures use a 7.x infosource instead of a staging DSO.

 

There are a lot more tips but the main one

Define clear and accessible guidelines for your development team

 

Use the Multiprovider hint table (RRKMULTIPROVHINT). Until 7.3 if you do not, the multiprovider will fire a query to all the underlying cubes while perhaps only one cube is relevant.  From 7.3 it is covered with Semantic  Partitioned Objects.

You can check your designs with SM50 for processes accessing the NRIV table, ST13 drilling down to DTP and use the ABAP program SAP_INFOCUBE _DESIGNS. Raymond told us that he and his team use a slightly different version where you can select an infocube instead of the standard where all the cubes are shown. Mind though that the program looks at statistics. When they are not up-to-date the result will not be reliable.

 

Settings must be monitored. This is an ongoing process especially after transport, modification or redesign.

 

ABAP techniques

There were a lot of detailed ABAP tips. The main ones were that it is best to use generated / dynamic calls. If there is bad programming in new projects this will ensure that it does not drag the entire system with it. For example if a query variable if faulty it will only affect itself, not the rest of query variables.

 

Golden rules :

  • Keep result sets small (filter)
  • Keep data transfers small (no SELECT *, it is especially bad for HANA)
  • Array Fetch (Into table)
  • Keep DB overhead small (proper indexing and optimizer)
  • Avoid database access where possible

 

Set up a programming standard using best practices and make them available to developers. Check before go-live that these standards are met.

 

Shared Object Memory (SOM)

From release 6.40 you can store data in SAP memory.  This is shared between users sessions so it can freely be used by other processes. This makes it more flexible than session memory.

You can use these SOMs by loading the masterdata into memory after the masterdata reorganization as it won’t change anymore. Every transaction data process that needs to look up this masterdata can skip the database loading part.

You can use this technique in the user exits in OLTP and the START routines you can read from SOM instead from the database.

 

You can set up the process chain that the SOM load follows the masterdata reorganization step.

 

Building better process chains

Keep an eye on performance, use ST13 for this. You can look at one process chain for many days. Use prefixes in the naming of process chains as this makes filtering easy in the tool.

Do process chain maintenance in production. This reduces the turnaround and correction time. Also as development and Quality are different systems, settings in production do not make sense there.

 

Find bottlenecks with ST13 go to DTP’s where all details are available. There is the DB logs check catch the SQL statement and analyze it. If you make changes watch out for side effects (processes occupied, memory consumption etc.)

Always include the aggregate rollup step. Use the switch “end process successfully if no aggregate exists”. If this is the case in all chains then maintenance of aggregates becomes very easy as you know you don’t have to take additional steps to maintain the aggregate.

 

Clean up PSA’s, Clean up changelogs. Again well named infoareas make easy selection for changelog deletion.

 

Finally do a regular check of the SAP market place for performance improvements and notes for your SAP release.

 

Raymond Busher gave a lot more in depth tips and examples in the session than I described here. Most important is that monitoring and fine-tuning is an ongoing process.

Scenario

Sometimes the a process chain fails at particular step due to some kind of error.

 

  • Data is loaded by using process chain
  • Data is loaded successfully in several DSOs / InfoCubes, but the process chain failed on one step
  • We maually correct the upload and do not use Repair function of the process chain
  • The process chain should be restarted from "One Step Ahead" where it was failed as the manual corrections are done and loaded data.

 

 

Common steps

 

  • Getting instance Information of the process chain step that was errornous
  • Right-click the faulty step and select the "Displaying Messages" option
  • Copy the Variantand Instance from screen
  • Use Transaction SE11 or SE16 and select the table – RSPCPROCESSLOG
  • Put the value for variant and instance into corresponding fields
  • Open a new Modus with /OSE38 and start the programm RSPC_PROCESS_FINISH
  • Enter the values in the fields received from above table and make the STATE field as „G‟
  • Execute the programm

 

 

Put all the steps into a Report

 

The mention steps are not complicated but quite annyoing. That's why I decided to put them into a Report where you have to enter "Variant" and "Instance" only once!

 

 

 

 

DATA:     lv_variant   TYPE rspcprocesslog-variante,
               lv_instance  TYPE rspcprocesslog-instance,

              wa_rspcpro   TYPE rspcprocesslog.


PARAMETERS:   p_vari      LIKE lv_variant   OBLIGATORY,
              p_inst      LIKE lv_instance  OBLIGATORY.


START-OF-SELECTION.

SELECT SINGLE * FROM rspcprocesslog
           INTO wa_rspcpro
           WHERE variante = p_vari AND instance = p_inst.

END-OF-SELECTION.

IF wa_rspcpro IS NOT INITIAL.

CALL FUNCTION 'RSPC_PROCESS_FINISH'
   EXPORTING
     i_logid         = wa_rspcpro-log_id
*     I_CHAIN         =
     i_type          = wa_rspcpro-type
     i_variant       = wa_rspcpro-variante
     i_instance      = wa_rspcpro-instance
     i_state         = 'G'
*     I_EVENTNO       =
*     I_HOLD          =
*     I_JOB_COUNT     =
     i_batchdate     = wa_rspcpro-batchdate
     i_batchtime     = wa_rspcpro-batchtime
*     I_DUMP_AT_ERROR =
   .


ENDIF.

IF sy-subrc = 0.

WRITE: / '........'.

ENDIF.



snibbel.png

 

 

RSPCPROCESSLOG - Logs for the Chain Runs

 

FieldText
VARIANTEProcess Variant (Name)
INSTANCEProcess Instance (Value)
LOG_ID Log-ID of a Process Chain Run
TYPE Process Type
BATCHDATE Release Date for Background Scheduling
BATCHTIMERelease time of scheduled background job

 

 

 

 

Purpose:While creating InfoCube we may use huge number of infoobjects at the same time we may
NOT use all infoobjects in BEx Report .

 

 

Disadvantages of holding unused infoobjects in InfoCube:

 

  • Occupy database space
  • No room for new dimension’s for enhancing InfoCube
    with new infoobjects (Ex Merging new company data with existing cube)

 

How to identify such unused infoobjects in InfoCube

 

 

Step 1: To get list infobojects used in Infocube goto table RSDCUBEIOBJ and give Infocube name execute

                For Mulitprovider use table RSDICMULTIIOBJ

                For DSO/ODS used table RSDODSOIOBJ

                For Infoset use table RSQFOBJ

               

 

Step 2: Download all content in excel sheet

 

 

Step 3: Use following ABAP Code, it will generate one excel sheet in given path

 

 

Step 4: Filter value 1KYFNM with in column E and delete all records and after delete duplicate infoobjects.

 

 

Step 5: Compare both sheets infoobjects with VLOOKUP function in excel sheet. (InfoObjects
which are not there in excel sheet which is generated through ABAP program those are unused infoobjects)

 

 

RSZ_X_COMPONENT_GET:Function module pull all infoobjects used in report (like in selections, filters and restricted key figures)

 

 

 

ABAP
CODE Attached to the BLOG.

 

 

Note: You may change ABAP code as per your requirement.

Hear how process management solutions from SAP can help you quickly automate and flexibly optimize business processes during our series of five Webcasts.

 

You’ll learn about simple workflows to integrate processes spanning applications, geographies, and organizational boundaries and discover how to gain full real-time process visibility for faster, better-informed decision making.

 

Find out more about our process management Webcast series ›

 

Create Integrated Systems and Automate Business Processes
Wednesday, May 29, 2013
12:00 p.m. EDT / 9:00 a.m. PDT
Join this first Webcast in our series for an overview of middleware solutions from SAP and our latest improvements in process monitoring and business-to-business (B2B) integration.
Register today ›

 

Trade Faster with Business Partners

Wednesday, June 5, 2013
12:00 p.m. EDT / 9:00 a.m. PDT
Learn how you can leverage the B2B add-on for SAP NetWeaver Process Orchestration to connect with your trading partners.

Register today ›

 

Changing Business Rules without the Help of IT

Wednesday, June 12, 2013
12:00 p.m. EDT / 9:00 a.m. PDT

See how SAP’s business rules solutions can help people directly effect business process change in an instant.
Register today ›

 

Driving Big Value from Big Processes with SAP Operational Process Intelligence, powered by SAP HANA
Wednesday, June 19, 2013
12:00 p.m. EDT / 9:00 a.m. PDT
Discover how big process challenges can be overcome using SAP Operational Process Intelligence powered by SAP HANA.
Register today ›

 

SAP’s Vision and Road Map for Process Integration, Automation, and Monitoring

Wednesday, June 26, 2013
12:00 p.m. EDT / 9:00 a.m. PDT
Hear about SAP’s plan and vision in areas including cloud-based integration and process intelligence.
Register today ›

I’m a fortunate guy. For the 3rd time in two weeks I’m looking at a program plan for one of my (big) clients and they are asking me (the guy from the wrong side of the tracks I might add) if it makes any sense. And for the third time in a row, it does. Why? It is almost an exact copy of the previous two program plans I saw the weeks before.

 

Big companies are struggling with the same challenges. They basically went through the same life cycle: introducing ERP as the core for their operational processes, the introduction of a multitude of different data warehouses (often inherited from an acquisition or two), created stove pipes (architecture was not that popular some years ago) and now they have DWHs which need to overcome the challenges of a failing economy, in short: cost need to go down. Cost is one thing these companies worry about. The other components are often performance related, the time to information being to long, the “business” taking matters in there own hand any buying easy-entry BI tools (you know who they are) and reliability of data being poor. Those are quite some challenges. Honestly, I love them, because I often have a pretty good approach on getting the answers for them: optimizing the DWH, allowing “other” BI tools in a controlled way, while showing the advantages of controlled data, getting data lineage and reconciliation in place, adding master data management and governance, … well you get it, basically all those things that make a difference now but were lacking back then due to lack of control, time, architecture and quite frankly, to much money to worry.  Times have changed.

 

But then after taking a long sip from my morning coffee, I find in program plan xyz, that one element which makes life truly difficult, the one question to rule them all: the need to ask the “business” what information they really need to increase their bottom line, spend efficiency, controls,… well, fill in whatever you like.

 

And with that ladies and gentlemen, life becomes complicated for me.

 

That last element in any BI program plan deals with something fundamental. It all boils down to the one question to rule them all: “how can I ask my business what they want, if they don’t know what the future question will be”.

 

Consulting just turned into an Olympic sport again.

 

As you might have guessed by now, I don’t have an answer. I truly don’t. What I do have is my top 10 on approaches and their pros and cons. I put them in a neatly formatted table. I dare you to read them, mock them and criticize them, but do that for one reason and one reason only: lets get an answer to that universal question.

 

 

Approach

Pro

Con

1. Just give them all information they will ever need approach

Well, they got it all, how can you go wrong

There are dozens off reasons. There is no moment in time when you can catch all information. Information is moving. Giving raw data to an end-user and hoping that they will make sense out of it is a recipe for multiple version of truth and interpretations

2. Self-service BI approach

Users will be able to make there own reports and calculations. Decreasing time to information

And then what. Most likely you are still delivering sub-optimal data. You just re-placed your problem where it shouldn’t be: at your (internal) customers desk

3. Lets get a strategic advisor approach

Often a valuable approach, focused workshops, combined energy, benchmarking against your peers, post-its!

Expensive, takes an awful lot of throughput time, often discussed what is important now and not what is important in two years time: how would you know…)

4. Lets write down all our KPIs approach

You could get some type of idea on your KPIs (if they are not in the 100s which is (remarkable enough) often the case

Most likely you will end up with two many of them. Each of your business units will come with a list with what is important to them. Try to get consensus out of that

5. The consolidate and hide approach

This is a version of the “Lets write down all of our KPIs". You basically define some high level measure in which you roll up your business unit specific measures.  You have a consolidated view! Well, sort off.

High-level measures…. Those are kind of, well high level. Not giving the insights you often need. Think margin information without knowing if freight or insurance gave a decreased margin.

6. Lets just start approach (aka agile development)

Your making traction fast. Using agile as a methodology, will give you a working demo in no time

Eventhough your gut will tell you differently,  this is actually not a bad approach. BI solutions often mature into a desired end-state. Now do bring enough money, courage and time

7. The royal approach

Writing down your CEOs strategy, translating that in measures and KPIs, make them actionable, make people responsible for them, put a bonus schema in place, get the strategy down into the organization up to the level of operational KPIs.  Keep communicating the strategy into all levels of the organization. It will stick, eventually…

It is the royal approach. The grand daddy of EPM, however KPIs have a tendency of dealing with information often not stored in BI systems or even operational systems. Whole workforces of people are mobilized to fill them every month. Hardly a way of getting into BI/operational excellence

8. The pain approach

The pain approach is all about telling your users what they don’t have at the moment (real time insights in sales figures, margin information, liquidity analysis which falls behind…). Telling them what they don’t have might trigger what they actually need

I kind of like this approach because at least it makes people think out of the box.

Knowing that you don’t have insights and your peers do, will give a whole new dynamic to the discussion

9. The outside in approach

What better way then comparing yourself to your peers and getting that industry specific KPI and benchmark figure. If we outperform the benchmark, how could we not make more money?

Its your competitor. I repeat, its your competitor. Now how reliable is that benchmark figure. Who came up with the calculation? Do you really want your information requirements to be steered by an outside company (I repeat, your competitor)

10. The collect and conquer approach

I saved our most used approach for last. Here we go: collect all current reports, find commonalities, define the “ iron core” reporting set, bombard everything else to ad-hoc reporting (enter self-service BI)

This is the ultimate plaster. You managed to define a harmonized set of reporting, but be sure to know, that you will be back to the universal questions in no time. Your looking at the companies status quo!

 

Sorry guys and galls, no silver bullet. Looking forward to the comments!

 

Thank you for reading and take care,

 

Ronald

 

Disclaimer

  • Any resemblance to existing customers is purely coincidental ;-)

Scenario:


It happens sometimes that process chains stop their activity caused by inaktive objects. Their are tools that check all objects of a system but this can lead to confusion since not all objects are part of certain process chains.

 

The idea behind this tool is to check only the objects of one certain process / meta chain and inform the user about their activity status.

 

Let's say that we check the status of DTPs only. Since they are affected by ICs, DSOs, Transformations, etc. they should give us a good overview of the process chain. We will use the following BW tables:

 

  • Resources:

 

    • RSBKDTP - BW: Data Transfer Process Header Data

 

FieldDescription
dtpData Transfer Process ID

objvers

Object version

tgtName of the Data Target for a Data Transfer Process
srcName of Source Object of a Data Transfer Process
tstpnm

Last changed by

timestmp

UTC Time Stamp in Short Form (YYYYMMDDhhmmss)

 

    • RSBKDTPSTAT - Status Information on Data Transfer Process

 

Field
Description
dtpData Transfer Process ID
objstatObject Status

 

    • RSPCCHAIN - Process chain

 

FieldDescription
chain_id

Process Chain

objvers

Object version

typeProcess type
varianteProcess variante (name)

 

 

  • Programm flow:

 

    1. Tracking down inaktive DTPs in the system environment into a table #1
    2. Identifying all DTPs that belong to a certain Chain / Meta Chain table #2
    3. Removing all DTPs from table #1 that are not part of table #2
    4. Out put of the consolidated table #1

 

  • Solution / Coding:

 

 

*&---------------------------------------------------------------------*

*& Report  Z_PROCESS_CHAIN_CHECKER

 

 

REPORT  Z_PROCESS_CHAIN_CHECKER LINE-SIZE 150 NO STANDARD PAGE HEADING.

 

 

*----------------------------------------------------------------------

* Declaration area

*----------------------------------------------------------------------

 

 

TYPE-POOLS: rssm.

 

 

TYPES:      " Structures

            BEGIN OF ls_dtp,

              dtp      like rsbkdtp-dtp,

              tgt      LIKE rsbkdtp-tgt,

              src      LIKE rsbkdtp-src,

              tstpnm   LIKE rsbkdtp-tstpnm,

              timestmp LIKE rsbkdtp-timestmp,

              aedat    LIKE sy-datum,

              aezeit   LIKE sy-uzeit,

            END OF ls_dtp,

 

 

            BEGIN OF ls_pchain,

              pc_id               TYPE RSPC_CHAIN,

              pc_typ              TYPE RSPC_TYPE,

              pc_variante         TYPE RSPC_VARIANT,

            END OF ls_pchain.

 

 

DATA:       " local variables

            lv_index              TYPE i,

            lv_error(1)           TYPE c,

            lv_timestamp_txt(15)  TYPE n,

            lv_pos                TYPE i,

            lv_maxpos             TYPE i,

            lv_input              TYPE c LENGTH 60,

            lv_mail_title         TYPE string,

            lv_text               TYPE c LENGTH 120,

 

            " local tables

            lt_dtp       TYPE TABLE OF ls_dtp,

            lt_pchain    TYPE TABLE OF ls_pchain,

            lt_hpc_chain TYPE TABLE OF ls_pchain,

 

            " workareas

            wa_dtp       LIKE LINE OF lt_dtp,

            wa_pchain    LIKE LINE OF lt_pchain.

 

 

**********************************************************************

 

 

PARAMETERS:  p_pc LIKE (lv_input) OBLIGATORY.

 

 

START-OF-SELECTION.

 

 

******************** track down intactive DTPs ***********************************

* Step 1

 

SELECT r~dtp tgt src tstpnm timestmp

  FROM rsbkdtp AS r

  INNER JOIN rsbkdtpstat AS l

  ON r~dtp = l~dtp

  INTO CORRESPONDING FIELDS OF TABLE lt_dtp

  WHERE objvers = 'A' AND

        l~objstat = 'INA'.

 

 

* splitting field timestmp

    IF sy-subrc = 0.

      LOOP AT lt_dtp INTO wa_dtp.

        lv_index = sy-tabix.

        IF NOT wa_dtp-timestmp IS INITIAL.

          lv_timestamp_txt = wa_dtp-timestmp.

          wa_dtp-aedat   = lv_timestamp_txt+1(8).

          wa_dtp-aezeit  = lv_timestamp_txt+9(6).

          MODIFY lt_dtp FROM wa_dtp INDEX lv_index.

        ENDIF.

      ENDLOOP.

    ENDIF.

 

 

********************** Indentify objects of a certain chain *****************************

* Step 2

 

SELECT chain_id type variante

  FROM rspcchain

  INTO TABLE lt_pchain

  WHERE chain_id = p_pc AND objvers = 'A'.

 

 

LOOP AT lt_pchain INTO wa_pchain.

  IF wa_pchain-pc_typ = 'CHAIN'.

 

 

    SELECT chain_id type variante

      FROM rspcchain

      APPENDING TABLE lt_pchain

      WHERE chain_id = wa_pchain-pc_variante

        AND objvers = 'A'

        AND type = 'DTP_LOAD'.

 

 

  ENDIF.

ENDLOOP.

 

 

DELETE lt_pchain WHERE pc_typ NE 'DTP_LOAD'.

 

 

 

 

**********************************************************************

* Step 3

 

 

LOOP AT lt_dtp INTO wa_dtp.

     lv_index = sy-tabix.

     READ TABLE lt_pchain

        WITH KEY pc_variante = wa_dtp-dtp

        TRANSPORTING NO FIELDS.

          IF sy-subrc <> 0.

            DELETE lt_dtp INDEX lv_index.

          ELSE.

            "Do nothing

          ENDIF.

      ENDLOOP.

 

 

 

 

*********************** Table header **************************************

 

 

  NEW-PAGE.

 

 

  lv_maxpos = 150.

 

 

  NEW-LINE. ULINE AT 1(lv_maxpos).

 

 

  DATA: lv_outputtext TYPE string.

 

  CONCATENATE '| Inactive objects in process chain: ' p_pc

    INTO lv_outputtext.

 

  WRITE: / lv_outputtext, AT 150 '|'.

 

 

  NEW-LINE. ULINE AT 1(lv_maxpos).

 

  WRITE: / '| Object | Technical ID                  | Target                      | Source                        |                 -- last change --           |',

         / '| status |                               |                             |                               | User         | Date          | Time         |'.

 

 

  NEW-LINE. ULINE AT 1(lv_maxpos).

 

 

******************* Table ***********************************************

 

 

  IF lt_dtp IS NOT INITIAL.

 

 

    LOOP AT lt_dtp INTO wa_dtp.

 

      ADD 1 TO lv_index.

 

      NEW-LINE.

 

      lv_pos = 1.

 

      WRITE AT lv_pos sy-vline.

        ADD 2 TO lv_pos.

      WRITE AT lv_pos icon_red_light AS ICON.

        ADD 7 TO lv_pos.

          WRITE AT lv_pos sy-vline.

            ADD 2 TO lv_pos.

      WRITE AT lv_pos wa_dtp-dtp.

        ADD 30 to lv_pos.

          WRITE AT lv_pos sy-vline.

            ADD 2 TO lv_pos.

      WRITE AT lv_pos wa_dtp-tgt.

        ADD 28 TO lv_pos.

          WRITE AT lv_pos sy-vline.

            ADD 2 TO lv_pos.

      WRITE AT lv_pos wa_dtp-src.

        ADD 30 TO lv_pos.

          WRITE AT lv_pos sy-vline.

            ADD 2 TO lv_pos.

      WRITE AT lv_pos wa_dtp-tstpnm.

        ADD 13 TO lv_pos.

          WRITE AT lv_pos sy-vline.

            ADD 2 TO lv_pos.

      WRITE AT lv_pos wa_dtp-aedat.

        ADD 14 TO lv_pos.

          WRITE AT lv_pos sy-vline.

            ADD 2 TO lv_pos.

      WRITE AT lv_pos wa_dtp-aezeit.

         ADD 13 TO lv_pos.

          WRITE AT lv_pos sy-vline.

    ENDLOOP.

 

 

  ELSE.

 

      write: / "the process chain is okay".

 

  ENDIF.

 

 

  NEW-LINE. ULINE AT 1(lv_maxpos).

 

 

 

  • Result:

 

Input mask

 

input.png

 

Output table

 

 

output.jpg

 

  • Outlook:

 

In a second step we will implement a emailing possibility and check further objects that could affect process chains.

Steps

 

 

 

  1. Goto table RSZCOMPDIR and give BEx report technical
    name at COMPID field
  2. Execute and take relevant COMPUID as shown in below screenshot

  1.jpg

 

 

     3.  Go to SE37 Execute function module RSZ_X_QUERY_GET

 

     4. Pass COMPUID as shown below

2.jpg

    5. Execute or press F8.

 

    6. Press on table icon as shown in below image.

 

3.jpg

4.jpg

 

 

7. In E_T_MAP structure we can see ELTUID and MAPNAME here ELTUID is UID of variable and MAPNAME is technical name of variable which we see in BEX designer.

 

 

8. Take all ELTUID’s and pass to RSZGLOBV table in VARUNIID field and keep VPROCTP value equal to 3 and execute ( 3 means customer exit variables).

5.jpg

 

9. we can see list of customer exit variables using in a specific BEx report as like below.

 

6.jpg

So, ZQ_TEST report contain two customer exitvariables

Purpose:

 

Before moving BEx queries from Development to
Quality/Production, its good practice to check all reports are error free.

 

 

However its very labours and time consuming process
to get into each report and checking, especially if we have huge reports.

 

 

There is an ABAP program which will check
single/multiple reports OR single data target/multiple data target reports.

 

 

Step 1

 

 

Goto SE38

 

 

Step 2

 

 

Execute Program QUERY_CHECK

 

 

Step 3

1.jpg

 

 

Fill the selection screen as per your requirement.

 

 

And Execute

 

2.jpg

 

 

Here all reports are consistency only one report contain errors, to know the error, press on help (Question mark symbol).




 
 
 
 
 
 
 
 
 
 
 
 


 


Purpose:


While transporting developed objects from one system to another system, transport request might fail due to following reason (for example)

 

  • Dependent objects missed or inactive in target system


Error details would be more technical format as like below


Routine set to inactive N6LZSYWU4B5BM8TBEHHQX493


Here we don't know what is N6LZSYWU4B5BM8TBEHHQX493 and which routine it is.


In such a case to see Meta data for one particular TRANSFORMATION use following ABAP program


RSTRAN_DDIS


1 Execute RSTRAN_DDIS
2 Provide Transformation ID and Execute


In next window, it will display the Meta data for given transformation.

Whilst currently on business in Singapore, I have been fortunate enough to attend the SAP Analytics Tour. Timo Elliott , as always, gave a great presentation. Whilst covering the full range of SAP analytic offerings, he opened the attendee’s eyes to the possibilities of real-time analytics, by showcasing new SAP products through some awesome demos. The inspiration for this blog transpired from an offline discussion Timo Elliott and I had before his presentation, around the importance of information, data governance, management & quality, and just how vital these are in order for consumers of that information to benefit from their data.

Roll on two nights later, and I’m having dinner with fellow SAP Mentor and educator, Paul Hawking,  also in Singapore. After the pleasantries were exchanged, the conversation quickly went to this topic. What was meant to be a quick bite out, turned into a deep, five hour conversation on how customers are going to deal with real-time analytics and dirty data on the fly, regardless of which vendor they run their systems on.

 

Back at my hotel, I spent a restless night thinking about this post (I’ve been here over a week now, so it's not jet lag). I thought it best to get my thoughts down, so that I could get some sleep ;-D

Let's take a step back. For those who don't know where I fit in, I am an Enterprise Data Warehouse (EDW) geek, who has been building EDW's for the last 15 years. I am evangelistic about getting things right first time, rather than the panel beating approach that you typically see these days. When I engage with customers for the first time, I always ask them about their Master Data Management (MDM) and/or Data Quality (DQ) strategy, and the usual response is "just build the BI reports first and we will get to the data quality later".  We all know that doesn’t work, but I see this happen time and time again. Just ask an IT or business department for a budget to run an MDM initiative within your organization, and you will soon find out what I mean. Yes, there are the handful of customers who do have this right, and kudos to them, but they are, in my experience, rare.

I know there has been talk about the "death of the Data Warehouse", and that all the "layers" of complexity are no longer needed. I agree, in certain circumstances, that EDW's are over engineered and complicated, but when one takes a look under the hood, there is often a good reason for that. In many large corporates today, there are source systems, extracts, files & mainframes that no-one is willing to touch or change in case they break. In most cases, the person who wrote that system (which is no longer supported by the vendor) has left and vague maintenance instructions have been passed down over the years.

I am the first person to say "fix the problem at source", as this is the only way to ensure that you have quality information coming into your EDW. We all know that "garbage in equals garbage out”, but this is often more challenging than meets the eye.

 

If you find yourself in a situation as above, where you are just letting your legacy source systems tick over till end-of-life, then typically all new business rules and data anomalies are handled in your extract-transform-load (ETL) layer within your architecture. If you still have an active team developing and maintaining your source system, and need to cater for new variations in the system, this change is often slow and tedious, and locked down by strict prioritization and change control processes.

 

In the textbook world, you would wait for the changes needed to take place at source. In the real world, however, I want the consumers of my information to be able to trust the data and use it daily. If your end users lose faith in the functionality of both your system and the information within that system, then you are fighting a loosing battle.

 

So how do we ensure that the end users can answer business questions and keep up with change? The answer is simple. By writing complex ETL jobs and processes to handle all the possible variations, so that your users can keep answering business questions while the source systems slowly catch up to the demand for change. There is also the case, as mentioned above, when the source systems are never going to change, as they are end of life.

Another situation to consider, which I have assisted many companies through a few times, is when companies go through an acquisition or merger. Let's take SAP as an example. Over the last few years, in order to have a single version of the truth of a customer, they would have needed to have merged, matched and enriched customer data from SAP, BusinessObjects (assuming BusinessObjects had done a good job with the Crystal acquisition), Sybase, SuccessFactors, Syclo etc. to name but a few. Any takers for that job?

Up till now, I have consciously left tools out of this post for a reason. SAP, as well as their competitors, has some great solutions that can enable a customer to drive and succeed at an MDM initiative within their organization. I used the word “enable” on purpose, as in almost all aspects of my job I see and treat technology as an enabler. This is even truer when you are looking at MDM within your organization. As a side note, here is a great blog post covering a Data Governance webinar held by SAP and showing Information Steward  and one of my old time favorites PowerDesigner working together.

I don't want to paint a picture of doom and gloom, but what I’m trying to illustrate is that managing data, especially within in a corporate domain, is complicated. My former boss and mentor, Bryn Davies from InfoBlueprint, has always said that customers need to treat their data as if it were the only non-depreciating asset on their balance sheet. Give it the love and respect it deserves and it will empower you to make trusted decisions for years to come. Very wise words from a wise man.  The only way I have seen this working is the top down approach, where board or C level executives actually base some of their staff's KPIs on the quality of information within their department/cost center.

Do I think that customers will be running all their transactions and analytics off in-memory solutions in years to come? Absolutely! But, for me, the key is how we get there.

 

As I alluded to above, if your end user does not trust your system and the data in it, whether a month old or real-time, then you have lost the battle. The key for people advising customers, who start looking at using the new in-memory solutions, is to stress the importance of the enterprise information strategy within the organization. It should almost be a non-negotiable dependency as a phase in the project plan and an ongoing initiative within the organization. At first glance, customers are often horrified at the quality of the information within their organization, which leads to another one of my favourite sayings: "How deep does the rabbit hole really go", but that is another blog entirely.

 

I understand, from a vendors point of view, the appeal  of selling real-time analytics is a great one, but as a man who has gained many battle scars trying to rectify failed EDW projects, I know, first hand, the importance of getting your data management done right first time.

One thing I do know is that it is going to be an exciting journey to manage the ever-exploding data landscape around us with the customers need for instant and quality information at their fingertips in real-time. End users are going to be drinking from the fire hose of information shortly, in real-time, and we need to ensure that the water  is not toxic.

 

http://www.harvardpress.com/Portals/0/issues/2009_07_10/fourth_la_8978_550w.jpg

 

 

I am a firm believer that the end user should not have to know or care about the legacy issue within an organization, or when the "batch window" will finish etc. They all know that they can type any question they want into Google, using their iPhones & iPads, and get an answer immediately - so why can't they have that at work?

So, I leave you with this thought - once end users get access to real-time data within their organizations, without all the layers of ETL and Data Quality, will they get the fright of their lives, and will this lead to MDM initiatives being kicked off at a rapid rate?

 

I personally hope this is the case and look forward to seeing how it all pans out...

Would love to hear your thoughts on this ...

Step 1: Execute ABAP program RSAWBN_REQ_TEST_TB

 

 

Alternatively you can use

Transaction code RS09

Function module RSAWBN_REQ_SHOW_TB

 

Step 2: Here provide the transport Request id, which you want to see the details (Transport Request id either it ismodified/released)

Untitled.jpg

Step 3: Press Enter

 

Step 4: Output will be like this

 

Untitled.jpg

Step 5: Now you can explore what objects captured under this request id like DTP/Infocube/Transformation etc, if you double click on any object, it will take to you relevant screen

This is part two of my series that covers my experiences during the upgrade to BW 7.3.

 

BEx Queries -

 

Along with the upgrade to 7.3, there was also a parallel project to move all 3.x queries and workbooks to 7.x (Yes, there were still many queries in 3.x). There werecomparatively less errors for BEx queries. The majority of the errors were reserved for MDX interface. Couple of errors that we got when we tried to execute the queries -

  1. Error in CL_RSR_RRK0_ATTR_C and in CREATE_PARTITION-01 - SAP note 1683164 fixed the issue.
  2. System error in program CL_RSR and form GET_INITIAL_CHAVL_OFF-02- SAP note 1646416 fixed the issue.
  3. Program error in class SAPMSSY1 method: UNCAUGHT_EXCEPTION - This error was seen in some queries that had hierarchies. SAP notes 1647217 and 1632194 fixed the issue.

 

MDX -

 

SAP has redeveloped its MDX interface in 7.3. It also has new functions in MDXTEST. One of the most helpful was the ability to store various MDX statements. This was helpful when we wanted to do regression testing after applying SAP notes.

MDX statements gave us the most heartburn during the upgrade. We came across multiple issues during WEBI report execution. SAP seems to have left this piece out of their pre-release testing schedule. We noticed around 60-70 notes created by SAP in a very short interval for issues related to MDX. Most of these fixes are in SP8.

  1. Webi performance is too slow - Long run times were noticed in the class CL_RSDM_READ_MASTER_DATA. We applied various SAP notes - 1660089, 1670128, 1686281 and 1732291. SAP note 1732291 fixed the issue.
  2. Error 000ORA-00942: table or view does not exist - When info object 1CUDIM was included in the Bex query, the universe did not generate or the MDX failed with the given error. It was suggested that we add info object 1CUDIM and SID value 2000000910 to table /BI0/SIOBJNM.
  3. MDX statements that used to work in 7.1, stopped working in 7.3. The statement was on a multiprovider that had a remote cube. SAP note 1684590 fixed the issue.
  4. BRAINOLAPAPI510 - We faced this issue for queries that had excluded hierarchy nodes in the filter. SAP has created a knowledge base article for this issue - 1721908. SAP note 1730306 discusses the same issue.
  5. Some of the MDX statements gave the following error, "The function call of RRSV_INITIAL_SIGN_REPLACE failed; a field may have been assigned to the parameter I_CHAVL whose type is not compatible Message no. RS_EXCEPTION000". SAP note 1739872 fixed the issue.
  6. Invalid MDX command with GET_ATTRIBUTE_NAME-01- If the MDX statement contained a compounded infoobject value, it gave an error. SAP note 1730758 fixed the issue.
  7. When we tried to jump from one Webi report to another (while passing multiple values to various objects), we got an MDX error. SAP note 1664646 fixed this issue.
  8. Value &2 for characteristic &1 unknown- This error occurred when we tried to run a MDX statement. SAP note 1654731 fixed the issue.

 

We also noticed in couple of cases that applying one note fixed one issue while introducing a different issue. It does seem though that SAP has finally got a handle on this one.

 

Part I - Process chains and transports

I’ve been working with BW 7.3 for a while. I think it is just around one year I worked for one upgrade project. But it just occurred to me that Attribute tab on IO maintenance screen of Administrator Workbench has (finally!) one very nice and important feature.

This feature is search on IO’s attributes binocular icon – so called Find in Attributes.


Here’s how this screen looks like in BW’s up to 701 (e.g. SP level 10):

 

find_in_attr01.JPG

 

Here’s same screen with this nice feature as of BW 730 SP 07:

 

find_in_attr02.JPG

 

Popup in particular look like:

 

find_in_attr03.JPG

 

I realize that this blog post is not very informative for most of BW guys. They all same as me just simply got used of this feature. However I want to take this as opportunity to thank all developers of BW backed which made this happen. Simply initiatives like SCN’s Idea Place are definitely paid off.

Dear SAP BW-ers,

 

This is my 1st time blog posting experience, I would like to share with you my journey when upgrading to BW 7.30 SP05 from BW 7.01 SP07.

Whatever I've written below is purely my opinion and not my employer.

 

It has been a painful project yet rewarding since this will enable the BW to be on HANA and have much better integration with other Business Objects tools.

 

Data Modelling Issue

·         There is a new data validation check procedure in BW 7.30, some of our daily batch jobs fails because of this new behavior. We have to remove conversion routine in 0TCTTIMSTMP and also write an ABAP routine to do the conversion during data loading. The same thing happened for 0WBS_ELEMT, we wrote a routine to fix this thing as well.

 

·         Cannot activate an InfoSource after the upgrade, run program RS_TRANSTRU_ACTIVATE_ALL in debugging mode and set the value of the parameter “v_without” to “x”.

 

·         3.x DBConnect Data source stopped working after upgrade, needs to be regenerated because it was corrupted after the upgrade Go-Live

 

BWA Issue

·         If you are running on BWA 7.20 lower than revision 22, please set the query properties back into using Individual access instead of Standard/Cluster access. You can also do mass maintenance of every queries in an InfoProvider in transaction RSRT. If you don’t do this you will be having major performance problem, for example a query that used to take 9 secs before upgrade will come back in 800 seconds if the cluster access is enabled.

 

Reporting Issue

·         Error #2032 because of dashboard crosstab data binding, we experienced this with most query that has 0CALDAY. You have to remove the 0CALDAY and then put it back again in the query so that the BICS connection will be refreshed from the query to the dashboard.

 

·         UOM conversion issue after the upgrade for some query, implements this SAP Note 1666937 to solve the issue.

 

·         Cell defined value was not impacted by scaling factor in BW 7.01, but in BW 7.30 it does. We have to make lots of adjustment in few queries because of this.

 

·         A condition on a hidden key figures no longer supported in BW 7.30, again some queries has to be adjusted because of this.

 

·         Dashboard Design 4.0 cannot be connected to BW 7.30 system until we upgrade SAP GUI version to 7.20 SP10.

 

This is the list of major issues that we encountered so far a week after Go-Live; hope that this will help your journey. I personally say to run the upgrade better we need to have a copy of production right before the upgrade and do the heavy testing few times and involve the business when doing so. You will then expect only few minor issues during the go-live.

 

Regards,

Erdo Dwiputra

Virtual Analysis Authorization implementation within BW 7.30+ and a zero management approach

 

Summary

Most flexible Analysis Authorization: The combination of a self-service maintenance of characteristic values and associated key figures to users with an automated and by runtime created "Virtual Analytics Security Object (ASO)" for the Query user allows either to reduce implementation time for authorization projects or especially reduces intensively the creation and maintenance time of user profile assignemts for new and changing security demands. The two aspects include the following:

  • An online user interface (UI) for departments key users to maintain their users authorizations rights on characteristic values, key figures and hierarchies;
  • an implementation of the BAdI for Virtual Analysis Authorization.

Both aspects will be covered within this BLOG.

 

Many thanks and appreciation to my current/last customer project - in person the SD/BI Developer Matthias Hommer - who felt confident either with the concept or the development/implementation to this new approach.

 

Architecture and implementation

Following picture represents the data model which will be explained with possible alternatives:

AA_ASO_SELF.jpg

On the left hand side of the picture the basis to store user authorization values is displayed. On the right hand side you can see the aspects for virtual analysis authorization on query execution runtime.

 

Self-service maintenance for analysis authorization values, hierarchy values and key figures

Idea:

Following the principles of "data ownership" (by departement), "self-service BI administration szenarios" and "zero administration" the idea is to let a few key users of each department maintain the authorization values for each of their query users directly into the system. In detail they have to maintain following:

  • characteristic values assigned to the departemental or organizational view to their users. They have to maintain eg. distribution channel down to customer number values to each user;
  • key figures which are allowed to be reported by each user;
  • hierarchies and hierarchie nodes which are allowed to be reported by each user.

 

Possible UI alternatives:

From our perspective there are multiple ways how you can enter and store this data:

  • XLS or CSV file as UI which is maintained by the department and uploaded into any table or BI object (characteristic, DSO);
  • (Web-)Dynpro as UI to store the data in any DDIC table(s);
  • InfoObjects with the BW backend transaction to add/edit master data;
  • Transactional InfoCube with planning query - use a key figure value for authorization rights on characteristic value combination: 0 = no right, 1 = data access allowed;
  • not a question of UI but "loading" authority values:
    • standard technical content DSO's for authorization object generation;
    • assignment to ERP authorization eg to accounting fields;

To us all of the mentioned possibilities were not appropriate or had some minor / major disadvantages so we decided to use a different approach. Here some arguments we had: by using XLS or CSV you have a break within the media; Dynpro programming seemed to be too complex to us for a hand ful of fields; with InfoObject master data maintenance we did not want to shift authorization to the backend as an other area even for the key users; the concept to use a transactional InfoProvider needs to create (via exit) all possible characteristic value combinations to let the necessary key figure become by default 0 (= not authorized) or via planning query to modify the value combination to 1 (= authorized) by the key user ... also complex.

 

Implementation:

We have decided to use following - see "I" within the picture above:

  • We wanted to use BW objects like InfoObjects or DSO's because of being able to use the already loaded InfoObject master data values. Also we wanted to be able to combine the objects by a MultiProvider in order to read user authorization values during runtime with a standard interface (please see later).
  • missing asterics masks master data values like "abc*" or "1*" could we enhance manually within the InfoObject master data maintenance (text description eg: "for analysis authorization")
  • We wanted to allow the maintenance of excluding values which is not possible for ASO's and standard analysis authorizaton - excluded values like "all customers beside 4711 and 4712" can be transformed during runtime into including values.
  • We created DSO's which represent hierarchies, key figures and the department view to each reporting areas by the authorization relevant InfoObjects.
  • The maintenance will be done by generated DDIC-maintenance-views on the active table of the DSO; to each maintenance view we can address a transaction code for authorization easily.
  • we followed the template DSO's which are delivered by the technical content for analysis authorizations (0TCT*);
  • all DSO's have some fields in common which will be filled automatically by maintenance view exit: BW Sys-ID, last changing user, last changing date;
  • all DSO's have some fields in common which need to be maintained manually: User, InfoProvider, validity date and activity;
  • The DSO structures for hierarchy includes the fields corresponding the technical content eg. InfoObject (to the hierarchy), hierarchy name, hierarchy version, hierarchy node, etc.;
  • The DSO structures for key figures include the fields corresponding the technical content eg. key figure name;
  • The DSO structures for reporting areas eg. 'Sales' includes the (authorization relevant flagged) InfoObjects as fields like distribution channel, customer and/or material class.

 

Virtual Analysis Authorization in combination with exit variables and authorized F4-Values in a class library

 

Idea:

Comparing

  • to the "old" (and still common) idea - transaction RSECADMIN - of generation in fore front of Analysis Authorization Objects to all possible value combinations in addition to key figures and hierarchies and an assignment to user (roles) accordingly
  • with the new concept of Virtual Analysis Authorization by (Query-)user the ASO is created and checked during runtime

--> only the authorization values for one single user at one processing time of a Query execution will be processed.

 

Possible alternatives:

Due to the fact of having a kind of "performance pressure" the alternatives tend to reduce processing time of creating and checking the ASO to each Query execution of a user. Possible is to read the authorization values faster by indexing the DSO's into the BWA (possible with BWA7.20). Also to consider is having instanced the reading of the authority values by the BAdI enhancement implementation already.

In our implementation and system environment we have not many (concurrent) users. So it would be very interesting how virtual ASO's will perform with hundred's or even thousands of Query execution users.

 

Implementation:

Our implementation is based on a customer class library - please see representing "A" within the picture. Here we combine as well as transformation coding encapsulation like start-, end- or field-routines or Query variable exit coding or other pieces of helping coding within the overall BW environment.

  • One helping function is a class method to read all authorization values for one single user - please see the representing number "2" within the picture. With the standard function module RSDRI_INFOPROV_READ_RFC we are able to read via the MultiProvider all necessary authorization values to one user and to the exact list of requested query characteristics (which is provided during runtime by the BAdI interface). Also the coding checks the maintained authorization values for correctness:
    • are the characteristics authorization relevant (with function module RSEC_GET_AUTHREL_INFOOBJECTS);
    • include the key figure field names which are authorization relevant;
    • include hierarchy authorization values (InfoObject of hierarchy, node, node InfoObject, level, etc.);
    • turn maintained exclude filters into include filters;
    • check asterics masks signs like "*" and change into "contains pattern" accordingly.
  • When prompting for a variable we want to restrict to those F4 values for which the user is allowed. So when having a Query variable (see number "1" within the picture) we process the variable exit within the correct i_step within a class-method (see number "3" within the picture) which calls the class method just mentioned before (numer "2" within the picture).
  • And before all of that will be called the exit for the new BAdI enhancement implementation method - see number "4" within the picture above).
    • For that you can refer to the help-side however this is very spartanic.
    • The reference within the system does help more by far - I have copied it into the Appendix so you can read through it.
    • Also an example method helps to understand and even you can test it easily by un-commenting the delivered class-method ABAP code.
    • The over-ruled method GET_AUTHS needs to be delivered in it's interface tables C_T_HIE and C_T_VAL; in our implementation the interface to the helping method to read the authorization values by user - see number "2" delivers the values within this type of format already.
    • When you have understood the manual maintenance of security analysis objects within transaction RSECADMIN then it is easy to understand how to fill the interface tables and how the BAdI method is working.
  • Here you can see our implementation:
    • Transaction SE18:
      AA_SE18_1.jpg
    • Enhancement implementation:
      AA_SE18_2.jpg
    • Enhancement implementation element:
      AA_SE18_3.jpg
    • Overruled class method "GET_AUTHS" implementation:
      AA_SE18_4_class.jpg

Final thoughts

From my personal point of view this new BAdI interface is exciting - it is just great when thinking of all these authorization projects out there and also how much work it is to maintain permanent shifting authorization rights for Query users out there. The combined approach seems to me a tremendous work load rejection of any BI- or system-administration-security team. Please feel free to comment or enhance this idea and/or implementation or give suggestions to similar ideas!

 

Appendix

RSEC_VIRTUAL_AUTHS

Description

This BAdI interface enables users to generate virtual analytics security objects (ASOs). These ASOs are generated at runtime and are checked as analysis authorizations.

It is therefore only possible to determine which authorizations the user has, at runtime. You can also enhance existing authorizations. Furthermore, you can use variables in virtual authorizations; these variables are then processed as normal customer exit variables as usual at runtime. For reasons of clarity, however, we do not recommend this since the required runtime operations could be executed during the implementation for the virtual ASOs.
  Virtual authorizations (analytics security objects) can often actually replace variable processing in authorizations and can therefore make the process flow clearer.

Use

Method GET_AUTHS requests for the content as value authorizations and hierarchy authorizations in parameters C_T_HIE and C_T_VAL. These tables contain the ASO or authorization names and the relevant InfoObjects along with an authorization definition in the form of intervals (C_T_VAL) or hierarchy nodes with the authorization definition (C_T_HIE). One row is expected for each interval and each hierarchy node. The various authorization combinations are grouped together as rows for each authorization (TCTAUTH field). (See example.)

The method can be called in two ways; with or without InfoProviders:

If the InfoProvider is specified in parameter I_INFOPROV, only the authorizations for this InfoProvider are required. If the InfoProvider is not specified, InfoObject I_IOBJNM should generally be used if the module is called in the standard environment for a query. Both parameters can only be initial in the case of documents that are protected with authorizations. InfoProvider-independent, that is, cross-InfoProvider authorizations are then required. Since authorization-relevant attributes are generally specified for a particular InfoObject, these attributes are automatically entered in the input parameter I_T_ATR for the sake of simplicity and to accelerate processing. They can then, for example, be authorized explicitly (I CP * in C_T_VAL), or not authorized, if required.

The user name is also provided when a transaction is started with the function Execute as Other User (RSUDO); the user name does not have to match the value for sy-uname. This means the analysis authorization check is made with a user that differs from sy-uname. You should therefore always use parameter i_uname instead of sy-uname.

Example

Two virtual ASOs, 'ONE' and 'TWO', are to be created. In the first ASO, the interval [A, D] is to be authorized for characteristic 0EMPLOYEE, which is authorized for a specific cost center node. In addition, the combination [D, G] is to be authorized for another cost center.

This is to be done as follows:

Field in C_T_VAL:

TCTAUTH ONE TWO

TCTIOBJNM 0EMPLOYEE 0EMPLOYEE

TCTSIGN I I

TCTOPTION BT BT

TCTLOW A D

TCTHIGH D G

Field in C_T_HIE:

TCTAUTH ONE TWO (Name of authorization or ASO)

TCTIOBJNM 0COSTCENTER 0COSTCENTER

HIESID 123 123 (Field can be left empty)

HIEID AXYDGFHE... AXYDGFHE... (Field can be left empty)

TCTHIENM MYHIERARCHY MYHIERARCHY

TCTHIEVERS

TCTHIEDATE 99991231 99991231

TCTNIOBJNM 0HIER_NODE - (Empty means end node or leaf)

TCTNODE 100_all 100123

TCTATYPE 2 1 (Authtype; Authtype = 0 never permitted for leaves (only nodes))

TCTACOMPM 0 0

TCTTLEVEL 2 0

TCTHDATE 00000000 00000000

Notes

To find out what is used for interval and hierarchy authorization definitions, see database tables RSECVAL and RSECHIE.

Function module RSEC_GET_AUTHREL_INFOOBJECTS can be used to identify which InfoObjects are relevant (see the documentation for the module).

 

RSEC_VIRTUAL_EXEC_AUTH_BADI

Use

You can use this enhancement to check the execution authorization by implementing your own method instead of using authorization object S_RS_COMP (method get_execution_auth).If an implementation is active, the method of this implementation is checked instead of authorization object S_RS_COMP.If either of the two mechanisms permits execution, the query can be executed.See the technical documentation on implementation.The return value of the method is a boolean value with two possible values:True (=X): Execution authorization exists: A standard check is not performed.False (=empty/initial): No execution authorization by BAdI. -> There is also a standard check for S_RS_COMP.Execution authorization for one of the two mechanisms is therefore sufficient to execute the query (OR logic).

This also guarantees that a user with a SAP_ALL profile can always execute the query, even if the BAdI is not active or returns "no authorization".

Filter Blog

By author:
By date:
By tag: