abap-programmierung für sap netweaver bw · pdf filesap press abap-programmierung...

32
SAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch. ca. 276 S. Hardcover ISBN 978 3 8362 1878 8 Format (B x L): 16 x 24 cm Wirtschaft > Betriebswirtschaft: Theorie & Allgemeines > Wirtschaftsinformatik, SAP, IT-Management schnell und portofrei erhältlich bei Die Online-Fachbuchhandlung beck-shop.de ist spezialisiert auf Fachbücher, insbesondere Recht, Steuern und Wirtschaft. Im Sortiment finden Sie alle Medien (Bücher, Zeitschriften, CDs, eBooks, etc.) aller Verlage. Ergänzt wird das Programm durch Services wie Neuerscheinungsdienst oder Zusammenstellungen von Büchern zu Sonderpreisen. Der Shop führt mehr als 8 Millionen Produkte.

Upload: duongdung

Post on 06-Feb-2018

275 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

SAP PRESS

ABAP-Programmierung für SAP NetWeaver BW – KundeneigeneErweiterungen

Bearbeitet vonDirk Herzog

erweitert 2012. Buch. ca. 276 S. HardcoverISBN 978 3 8362 1878 8

Format (B x L): 16 x 24 cm

Wirtschaft > Betriebswirtschaft: Theorie & Allgemeines > Wirtschaftsinformatik, SAP,IT-Management

schnell und portofrei erhältlich bei

Die Online-Fachbuchhandlung beck-shop.de ist spezialisiert auf Fachbücher, insbesondere Recht, Steuern und Wirtschaft.Im Sortiment finden Sie alle Medien (Bücher, Zeitschriften, CDs, eBooks, etc.) aller Verlage. Ergänzt wird das Programmdurch Services wie Neuerscheinungsdienst oder Zusammenstellungen von Büchern zu Sonderpreisen. Der Shop führt mehr

als 8 Millionen Produkte.

Page 2: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

Bonn � Boston

Dirk Herzog

ABAP™-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen

®

Page 3: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

5

Inhalt

Vorwort zur 3. Auflage ............................................................................. 9Einleitung ................................................................................................. 11

15

1 Performance ........................................................................ 15

1.1 Tabellenarten in ABAP ........................................................... 161.2 Schleifen und Lesezugriffe auf Tabellen .................................. 191.3 Feldsymbole .......................................................................... 201.4 Datenbankzugriffe und Cache ................................................ 22

25

2 User-Exits und BAdIs bei der Extraktion ............................ 25

2.1 Verwendungsmöglichkeiten ................................................... 252.2 Generische Extraktoren .......................................................... 262.3 User-Exit RSAP0001 .............................................................. 31

2.3.1 Verwendung ............................................................ 322.3.2 Strukturierter Aufbau des Includes ZXRSAU01 ......... 342.3.3 Implementierung des User-Exits

EXIT_SAPLRSAP_001 für die Währungsextraktion .... 382.3.4 Verwendung des Hierarchie-Exits ............................. 402.3.5 Ersatz für den generischen Hierarchieextraktor ......... 432.3.6 Parameterübergabe an den User-Exit ....................... 43

2.4 BAdI RSU5_SAPI_BADI .......................................................... 442.4.1 Methoden ................................................................ 452.4.2 Vor- und Nachteile .................................................. 46

49

3 User-Exits in Ladevorgängen von Daten ............................. 49

3.1 Transformation ...................................................................... 493.1.1 Ableitung von Merkmalen ........................................ 523.1.2 Ableitung von Kennzahlen ....................................... 563.1.3 Startroutine in der Transformation ........................... 613.1.4 Endroutine in der Transformation ............................. 653.1.5 Expertenroutine in der Transformation ..................... 69

Page 4: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

Inhalt

6

3.2 Routinen in den Datentransferprozessen ................................ 783.2.1 Selektion eines Dateinamens im

Datentransferprozess ............................................... 783.2.2 Bestimmung einer Merkmalsselektion im

Datentransferprozess ............................................... 803.3 Hierarchie aus einem unstrukturierten

Microsoft Excel-Blatt laden .................................................... 833.3.1 Anlegen des DataStore-Objektes .............................. 853.3.2 Anlegen der DataSource .......................................... 853.3.3 Anlegen der Transformation ..................................... 873.3.4 Anlegen einer Startroutine ....................................... 893.3.5 Anlegen der Endroutine ........................................... 903.3.6 Anlegen eines Datentransferprozesses ...................... 983.3.7 Anlegen einer Query ................................................ 1003.3.8 Umsetzung in SAP BW 3.x ....................................... 100

3.4 Empfehlungen für die Umstellung auf SAP NetWeaver 7.3 ..... 101

103

4 User-Exits und BAdIs im Reporting .................................... 103

4.1 Variablen-Exit RSR00001 ....................................................... 1034.1.1 Interface des Funktionsbausteins

EXIT_SAPLRSR0_001 ............................................... 1054.1.2 Implementierung bei I_STEP = 1 .............................. 1094.1.3 Implementierung bei I_STEP = 2 .............................. 1144.1.4 Implementierung bei I_STEP = 0 .............................. 1174.1.5 Implementierung bei I_STEP = 3 .............................. 1184.1.6 Validierung einer einzelnen Variablen ...................... 1204.1.7 Verprobung von Merkmalskombinationen

in Step 3 .................................................................. 1224.2 Virtuelle Kennzahlen und Merkmale ...................................... 125

4.2.1 Implementierung ..................................................... 1264.2.2 Weitere Hinweise .................................................... 1374.2.3 Übergabe von Variablenwerten an das BAdI ............. 138

4.3 VirtualProvider ...................................................................... 1394.3.1 Anlegen eines VirtualProviders ................................. 1404.3.2 Dos and Don’ts bei der Implementierung

des Service ............................................................... 1454.4 BAdI SMOD_RSR00004 ......................................................... 1494.5 Implementierung von eigenen Leseroutinen

für Stammdaten ..................................................................... 153

Page 5: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

Inhalt

7

4.5.1 Anlegen einer Stammdatenleseklasse ....................... 1544.5.2 Beispielimplementierung einer

Stammdatenleseklasse ............................................. 1614.5.3 Eintragen der Klasse in das InfoObjekt ..................... 167

171

5 User-Exits in der Planung ................................................... 171

5.1 Variablen in der Planung ....................................................... 1715.1.1 Variablen in SAP BW-BPS ........................................ 1725.1.2 Variablen in der BW-integrierten Planung ................ 179

5.2 Merkmalswertableitungen ..................................................... 1825.2.1 Merkmalswertableitungen in SAP BW-BPS ............... 1835.2.2 Merkmalswertableitungen in der

BW-integrierten Planung ......................................... 1905.3 Exit-Funktionen in der Planung .............................................. 200

5.3.1 Exit-Funktionen in SAP BW-BPS ............................... 2005.3.2 Exit-Funktionen in der BW-integrierten Planung ...... 208

5.4 Fazit ...................................................................................... 215

217

Anhang ...................................................................................... 217

A Übersicht über die Exits und Erweiterungen in SAP NetWeaver BW 7.3 ....................................... 219A.1 Erweiterungen in der Administrator Workbench .................... 219A.2 Erweiterungen in der Extraktion ............................................ 223A.3 Erweiterungen im Reporting .................................................. 224A.4 Erweiterungen in der Planung ................................................ 228A.5 Sonstige Erweiterungen ......................................................... 231

B Generierte Tabellen und Objekte in SAP NetWeaver BW ................. 235B.1 Tabellen in InfoCubes ............................................................ 235B.2 Tabellen in DataStore-Objekten ............................................. 236B.3 Tabellen in InfoObjekten ....................................................... 236B.4 Datenstrukturen im Datenfluss .............................................. 237B.5 Generierte Objekte in SAP NetWeaver BW ............................ 237

C Arbeiten in SAP BW 3.x ................................................................... 239C.1 Übertragungsregeln in SAP BW 3.x ........................................ 239C.2 Fortschreibungsregel in SAP BW 3.x ...................................... 254

D Der Autor ........................................................................................ 267

Index....................................................................................................... 269

Page 6: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

11

Einleitung

Das Thema ABAP-Programmierung innerhalb von SAP NetWeaver Business Warehouse ist für viele Berater mit einer Hassliebe verbunden: Nicht jeder kann das Programmierhandwerk in der SAP-Entwicklung gelernt haben, aber ich habe jedem BW-Berater, der mich um Rat gefragt hat, den Tipp gegeben, ABAP-Kurse zu besuchen. Denn die vielfältig vorhandenen User-Exits und BAdIs bieten erfahrenen BW-Beratern die Möglichkeit, anstelle eines einfa-chen Standard-Reportings aus dem Business Content ein Reporting zu imple-mentieren, das auf die Benutzeranforderungen eingeht, dabei den Aufwand für den Benutzer durch eine weitgehende Automatisierung minimiert und so einen deutlichen Mehrwert schafft. Dies ist mit einem erheblich geringeren Aufwand zu implementieren als die immer wieder gern von »alten IT-Hasen« ins Spiel gebrachte Oracle- oder Microsoft SQL Server-Datenbank. Und der Charme, den SAP NetWeaver BW dabei aufbietet, ist, dass man sich bei der Implementierung auf die Umsetzung der betriebswirtschaftlichen Anforde-rungen konzentrieren kann, weil es die oft aufwendige Implementierung der performanten Datenbeschaffung und -speicherung übernimmt und dies so effizient, wie man es selbst kaum implementieren könnte.

Wenn man dazu noch berücksichtigt, dass mit dem Release SAP NetWeaver BW 7.3 ein Reporting-Werkzeug ausgeliefert wird, das formatiertes Repor-ting, eine saubere Druckerausgabe über Adobe-Integration und die Ausgabe in Microsoft Excel sowie im Webbrowser und auch Mobile Reporting erlaubt, sieht man die Vorteile, die ein Standardprodukt wie SAP NetWeaver BW gegenüber den selbst entwickelten Insellösungen bietet.

Natürlich wird man heutzutage immer wieder gefragt, ob SAP NetWeaver BW denn überhaupt noch benötigt wird. Man brauche doch »nur« mit SAP-BusinessObjects-Lösungen auf ein SAP ERP powered by SAP HANA zuzugrei-fen und habe schicke Oberflächen bei erstklassiger Performance.

Doch SAP NetWeaver BW kann viel mehr. Die wenigsten Unternehmen heutzutage verfügen nur über ein ERP-System und keine anderen Datenquel-len. Seien es Anwendungen von Drittanbietern, Datenlieferungen per Flat File oder die externe Datenbank, die man in den Bericht integrieren muss – SAP NetWeaver BW ist heute wichtiger denn je. Denn konnte man bis jetzt die Daten direkt über die SAP BusinessObjects Business Intelligence Platform

Page 7: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

Einleitung

12

zusammenführen, verliert man im Zeitalter des In-Memory-Computings den entscheidenden Geschwindigkeitsvorteil, wenn man neben ERP-Daten auch auf andere Datenquellen zugreift, die nicht durch HANA unterstützt werden. In Zukunft wird es daher aus Performancegründen sinnvoll sein, alle Fremd-daten in ein SAP NetWeaver BW powered by SAP HANA zu laden, sie dort zusammenzuführen und für das Reporting aufzubereiten. Dabei wird sich die Datenmodellierung von der jetzigen Datenmodellierung unterscheiden, weil diese stark von der Performanceoptimierung geprägt ist, der eigentliche Einsatz von SAP NetWeaver BW ist aber heute genauso sinnvoll wie vor zwölf Jahren, als ich meine ersten Gehversuche in SAP NetWeaver BW unternahm, damals noch in Release 1.2.

Doch vor den erfolgreichen Einsatz von SAP NetWeaver BW hat SAP den Schweiß in Form von zahlreichen User-Exits gesetzt. Dabei besteht in vielen Fällen das Problem nicht darin, die unternehmensspezifischen Anforderun-gen zu implementieren, sondern den richtigen User-Exit für die jeweiligen Anforderungen zu finden. Mein Ziel in diesem Buch ist es deshalb, die Stan-dard-Exits, die eigentlich in jedem BW-Projekt genutzt werden, zu beschrei-ben und vor allen Dingen zu erklären, wann und wie die Exits verwendet werden. Vielleicht wird so in Zukunft die eine oder andere Frage im SAP Developer Network oder an den Berater Ihres Vertrauens durch einen Blick in dieses Buch überflüssig.

Zielgruppe

Mit diesem Buch wende ich mich sowohl an BW-Berater, die nur ABAP-Grund-kenntnisse aufweisen, als auch an ABAP-Programmierer, die kein Vorwissen zu SAP NetWeaver BW mitbringen, aber vielleicht mit BW-Anwendern Anforde-rungen diskutieren müssen. Ich bemühe mich aufgrund der unterschiedlichen Zielgruppen auch darum, möglichst wenige Fachbegriffe zu verwenden, sie zu erklären oder, wo möglich, durch einfachere Begriffe zu ersetzen.

Doch auch erfahrenen BW-Beratern wird dieses Buch durch die Auswahl der Beispiele neue Ideen und Anregungen bieten: Die Extraktion der Wechsel-kurse zu Reporting-Zwecken und insbesondere die Möglichkeit, eine sor-tierte Hierarchie aus Microsoft Excel zu laden und dabei automatisch die Vater-Kind-Beziehungen richtig zu sortieren, sind Anforderungen, die über den üblichen Standard in BW-Projekten hinausgehen.

Damit möchte ich zeigen, dass selbst komplexe Anforderungen, die viele Bera-ter mit einem »Das kann BW so nicht!« quittieren würden, durch eine geschickte Auswahl von Exits mit begrenztem Aufwand zu implementieren sind.

Page 8: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

Einleitung

13

Aufbau

Dieses Buch beginnt in Kapitel 1, »Performance«, mit der Leistung von ABAP-Entwicklungen, da dieser Punkt oft ein kritisches Problem in der BW-Programmierung darstellt.

Die eigentlichen User-Exits und BAdIs sind dann in der Reihenfolge beschrieben, in der die Daten die Exits durchlaufen: In Kapitel 2, »User-Exits und BAdIs bei der Extraktion«, lernen Sie die Extraktion der Daten aus dem Quellsystem kennen.

Kapitel 3, »User-Exits in Ladevorgängen von Daten«, beschreibt das Data Staging, das heißt den Datenfluss zwischen dem Eingang der Daten in SAP NetWeaver BW und ihrer Ablage im Datenziel, bevor in Kapitel 4, »User-Exits und BAdIs im Reporting«, zum Abschluss die Möglichkeiten beschrie-ben werden, wie Sie mit ABAP-Programmierung in das Reporting eingreifen können.

Kapitel 5, »User-Exits in der Planung«, beschreibt die User-Exits sowohl in der alten Planung in BW-BPS als auch in der neuen BW-integrierten Pla-nung.

Im Anhang finden Sie schließlich eine Übersicht sämtlicher User-Exits und BAdIs in SAP NetWeaver BW 7.3 sowie die Namenskonventionen für ABAP-Dictionary-Objekte zu typischen BW-Objekten. Des Weiteren finden Sie hier Informationen zu den Übertragungs- und Fortschreibungsregeln, die in Release 3.x des SAP BW verwendet wurden.

Um Ihnen die Lektüre zu erleichtern, werden in diesem Buch die folgenden Symbole verwendet:

Dieses Symbol weist Sie auf Besonderheiten hin, die Sie beachten sollten. Es warnt Sie außerdem vor häufig gemachten Fehlern oder Problemen, die auf-treten können.

Mit diesem Symbol werden Tipps markiert, die Ihnen die Arbeit erleichtern können. Auch Empfehlungen, die Ihnen z. B. dabei helfen, weiterführende Informationen zu dem besprochenen Thema zu finden, werden mit diesem Symbol hervorgehoben.

Wenn das besprochene Thema anhand von praktischen Beispielen erläutert und vertieft wird, mache ich Sie mit diesem Symbol darauf aufmerksam.

Page 9: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

Einleitung

14

Voraussetzungen

Die Beispiele in diesem Buch basieren in der Regel auf SAP NetWeaver Busi-ness Warehouse 7.3. Jedoch können bis auf wenige Ausnahmen, bei denen dies explizit erwähnt ist, alle Beispiele auch in SAP BW 3.x implementiert werden. Die Beschreibung der User-Exits bei der Extraktion gilt für alle von SAP unterstützten Versionen der Service-API, das heißt ab Version 2004_1.

Um die Beispiele möglichst einfach zu halten, verzichte ich so weit wie mög-lich auf ABAP Objects. Auch wenn ich persönlich glaube, dass sich jeder, der sich mit ABAP beschäftigt, mit ABAP Objects befassen sollte, weiß ich aus Erfahrung, dass viele Kollegen bis jetzt nur über ein beschränktes Know-how in diesem Bereich verfügen. Und da ABAP Objects in der Exit-Program-mierung in SAP NetWeaver BW nur selten wirkliche Vorteile bringt, ver-wende ich hier lieber Funktionsbausteine und kann auf diese Weise sicher sein, dass die Beispiele verstanden werden. Wer sich gut mit ABAP Objects auskennt, wird ohnehin keine Schwierigkeiten haben, die Beispiele entspre-chend umzustellen.

Einzig bei der integrierten Planung in BW in Kapitel 5, »User-Exits in der Pla-nung«, ist es nicht möglich, auf ABAP Objects zu verzichten. Deshalb gibt es in diesem Kapitel auch eine Schritt-für-Schritt-Anleitung für Einsteiger in die Materie. Generell ist in den letzten Jahren die Entwicklung in Richtung ABAP Objects so schnell verlaufen, dass ich jedem, der mit der Materie zu tun hat, empfehle, in Zukunft komplett auf ABAP Objects umzusteigen, sofern dies noch nicht geschehen ist.

Page 10: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

103

4 User-Exits und BAdIs im Reporting

Die bisher behandelten Exits sind zweifellos sehr mächtig und bieten Ihnen die Möglichkeit, die Daten so aufzubereiten, dass viele typische Reporting-Anforderungen damit erfüllt werden können. Jedoch gibt es immer wieder Anforderungen, die Berichte durch die Eingabe von Variablen flexibler zu gestalten. So würde beispielsweise kein SAP NetWeaver BW-Berater emp-fehlen, pro Kostenstelle im Unternehmen einen eigenen Bericht zu definie-ren, sondern die Kostenstelle als einzugebende Variable zu bestimmen.

Andererseits soll diese Flexibilität aber nicht auf den Anwender abgewälzt werden, sodass er mit einer Vielzahl von Variablen überfordert wird. Daher können Sie versuchen, dem Anwender möglichst die Kostenstelle(n) vorzu-schlagen, die er abhängig von seiner Position und Verantwortung vermutlich in dem Bericht sehen möchte.

Im Folgenden wird daher erklärt, wie Sie durch geschickte Programmierung Variablenwerte ableiten und Vorschlagswerte setzen. Danach werden Sie sich mit virtuellen Merkmalen und Kennzahlen sowie mit dem Thema Vir-tualProvider auseinandersetzen. Während die Variablen die Auswahl der Werte zum Zeitpunkt der Berichtsauswertung flexibilisieren, gehen diese beiden Techniken noch einen Schritt weiter und ermöglichen es, die Daten selbst zum Berichtszeitpunkt anzupassen. Dazu ist jedoch auch eine komple-xere Form der Implementierung notwendig. Abschließend lernen Sie kurz alle weiteren Techniken kennen, die mittels ABAP eine Anpassung des Reportings erlauben.

4.1 Variablen-Exit RSR00001

Der User-Exit RSR00001 enthält im Kern den Funktionsbaustein EXIT_SAPLRRS0_001, der mehrere verschiedene Funktionen rund um die Variab-leneingabe erfüllt. Dieser Exit hat dasselbe Problem wie der User-Exit zur Extraktorerweiterung in Abschnitt 2.3, »User-Exit RSAP0001«: In einem typischen BW-System wächst und wächst der User-Exit. Daher sollten Sie schon zu Beginn darauf achten, dass Sie die Implementierung nicht im Include ZXRSRU01 vornehmen, sondern die Implementierung vom Include

Page 11: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

User-Exits und BAdIs im Reporting4

104

lösen. Das können Sie zum Beispiel tun, indem Sie aus dem Variablennamen den Namen eines Funktionsbausteins ableiten.

In der Schnittstelle des User-Exits gibt es jedoch zwei zentrale Parameter: Neben dem Namen der Variablen I_VAR ist außerdem der Aufrufschritt I_STEPentscheidend. Dabei handelt es sich um einen Zähler, denn der User-Exit wird mehrmals an insgesamt bis zu vier verschiedenen Stellen aufgerufen. Zu die-sen unterschiedlichen Zeitpunkten können Sie verschiedene Funktionen im-plementieren. Vor der eigentlichen Behandlung der Implementierung soll deshalb zunächst der Parameter I_STEP erklärt werden:

� I_STEP = 1Der erste Aufruf des User-Exits dient dazu, Vorschlagswerte zu berech-nen, das heißt die Werte, die in den eingabebereiten Variablen als Vor-schlag für den Benutzer angezeigt werden. Dazu wird der Exit einmal pro Variable des Typs Customer-Exit aufgerufen. Dies ist zugleich eine große Schwäche des Exits. Möchten Sie einer bestehenden Eingabevariablen nachträglich einen Vorschlagswert geben, sind Sie gezwungen, eine neue Variable vom Typ Customer-Exit anzulegen und diese eingabebereit zu machen. Es wäre wünschenswert, wenn in diesem Schritt auch die ande-ren eingabebereiten Variablen versorgt werden könnten.

Auch wenn in diesem Schritt normalerweise Vorschlagswerte bestimmt werden, können ebenso Variablen gefüllt werden, die nicht eingabebereit sind. Dies ist jedoch nur interessant, wenn Sie die Werte in Schritt 2 benö-tigen, um weitere Variablen abzuleiten.

� I_STEP = 2Dieser Schritt wird nicht für alle Variablen vom Typ User-Exit aufgerufen, sondern nur für die Variablen vom Typ User-Exit, die nicht eingabebereit sind. In diesem Schritt werden die endgültigen Variablenwerte bestimmt. Dazu wird für jede nicht eingabebereite Variable der User-Exit einmal auf-gerufen. Sie können daher in diesem Schritt keine Eingaben des Benutzers überschreiben. Dies ist generell nicht möglich, weil ein derartiges Verhal-ten meist zu einer starken Verunsicherung des Anwenders führt. Daher sollten Sie entweder gar keine Benutzereingabe zulassen oder die Benut-zereingabe mit einer Fehlermeldung zurückweisen.

� I_STEP = 3Der dritte Schritt wird im Gegensatz zu den ersten beiden Schritten nicht pro Variable aufgerufen, sondern nur einmal insgesamt. Dabei werden Ihnen sämtliche Variableninhalte übergeben, um diese zu validieren. Sie können demnach überprüfen, ob die »Periode von« kleiner gleich der

Page 12: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

Variablen-Exit RSR00001 4.1

105

»Periode bis« ist, wenn sie nicht als Intervall, sondern in zwei verschiede-nen Variablen eingegeben werden. Diese Technik ist für eine flexible Vali-dierung unerlässlich, das heißt eine Überprüfung, ob die Eingabewerte zueinander passen, jedoch für eine saubere Trennung nach Querys oder wenigstens Projekten hinderlich, da Variablen möglichst projektübergrei-fend verwendet werden sollten, um ihre Anzahl zu reduzieren. Daher müssen Sie ein anderes Feld verwenden, um eine Trennung in der Imple-mentierung zu erreichen.

� I_STEP = 0Der Schritt 0 wird nur selten eingesetzt. Er wird bei allen Aufrufen ver-wendet, die nicht in Zusammenhang mit dem Variablenbild stehen. In SAP NetWeaver 7.x und in SAP BW 3.x gibt es dazu drei Anwendungen:

� Zum einen nutzen Sie diesen Schritt, wenn Variablen im InfoPackage für die Selektion verwendet werden.

� Zum anderen wird der Schritt für die Bestimmung der Filterwerte im Navigationsblock der Query angewendet.

� Zum dritten und vielleicht wichtigsten dient er dazu, Variablen zu fül-len, die in Berechtigungen genutzt werden. Dies ist besonders dann nützlich, wenn Berechtigungen aus Tabellen gefüllt werden sollen, die in ein DataStore-Objekt geladen wurden, oder wenn die Berechtigun-gen aus Stammdaten abgeleitet werden sollen.

In diesem Buch wird ausschließlich der letzte Fall behandelt, da die ande-ren Fälle in der Praxis zu selten vorkommen.

4.1.1 Interface des Funktionsbausteins EXIT_SAPLRSR0_001

Nachdem die Bedeutung des Parameters I_STEP geklärt ist, lernen Sie die komplette Schnittstelle kennen. Der Kopf des Funktionsbausteins sieht dabei wie in Listing 4.1 aus.

FUNCTION EXIT_SAPLRRS0_001.*"---------------------------------------*"*"Lokale Schnittstelle:*" IMPORTING*" VALUE(I_VNAM) LIKE RSZGLOBV-VNAM*" VALUE(I_VARTYP) LIKE RSZGLOBV-VARTYP*" VALUE(I_IOBJNM) LIKE RSZGLOBV-IOBJNM*" VALUE(I_S_COB_PRO) TYPE *" RSD_S_COB_PRO*" VALUE(I_S_RKB1D) TYPE *" RSR_S_RKB1D

Page 13: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

User-Exits und BAdIs im Reporting4

106

*" VALUE(I_PERIV) TYPE *" RRO01_S_RKB1F-PERIV*" VALUE(I_T_VAR_RANGE) TYPE*" RRS0_T_VAR_RANGE*" VALUE(I_STEP) TYPE I DEFAULT 0*" EXPORTING*" VALUE(E_T_RANGE) TYPE RSR_T_RANGESID*" VALUE(E_MEEHT) LIKE RSZGLOBV-MEEHT*" VALUE(E_MEFAC) LIKE RSZGLOBV-MEFAC*" VALUE(E_WAERS) LIKE RSZGLOBV-WAERS*" VALUE(E_WHFAC) LIKE RSZGLOBV-WHFAC*" CHANGING*" VALUE(C_S_CUSTOMER) TYPE *" RRO04_S_CUSTOMER OPTIONAL*"---------------------------------------

Listing 4.1 Schnittstelle des Funktionsbausteins EXIT_SAPLRSR0_001

Die einzelnen Parameter haben dabei folgende Bedeutung:

� I_VNAM

Dieser Parameter enthält in Step 0, 1 und 2 den Variablennamen, der berechnet werden soll.

� I_VARTYP

Dieser Parameter gibt in Step 1 und 2 an, um welchen Variablentyp es sich handelt, das heißt, ob als Rückgabe ein Merkmalswert, Text, Formelwert, Hierarchieknoten oder eine Hierarchie erwartet wird.

� I_IOBJNM

Dieser Parameter gibt das InfoObjekt an, auf das sich die Variable bezieht.

� I_S_COB_PRO

Dieser Parameter enthält verschiedene Informationen über das InfoObjekt, auf das sich die Variable bezieht. ATRNAVFL gibt beispielsweise an, ob es sich bei der Variablen um ein Navigationsattribut handelt, oder ATRTIMFL, ob das Navigationsattribut zeitabhängig ist. Des Weiteren gibt er ähnliche Informationen, die nur in speziellen Situationen benötigt werden, weil sie normalerweise zum Zeitpunkt der Programmierung feststehen und nicht verändert werden. Dieser Parameter wird deshalb nur selten benötigt.

� I_S_RKB1D

Dieser Parameter enthält Informationen wie den Query-Namen, den Auf-rufer etc. Er ist vor allem in Step 3 von Bedeutung, um zu bestimmen, wel-che Validierungen durchgeführt werden sollen. Wichtige Felder dafür sind INFOCUBE (der Name des InfoProviders, auf dem der Bericht ausge-führt wird) und COMPID (der Query-Name, der gerade ausgeführt wird).

Page 14: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

Variablen-Exit RSR00001 4.1

107

� I_PERIV

Dieser Parameter enthält die Geschäftsjahresvariante, sofern sie in der Query eindeutig bestimmt werden kann. Dies ist immer dann wichtig, wenn aus einem Datum eine Periode bestimmt, beispielsweise die aktuelle Buchungsperiode als Vorschlagswert gezeigt werden soll. Da aber nur sel-ten mehrere unterschiedliche Geschäftsjahresvarianten in einem System vorhanden sind, wird der Parameter auch entsprechend selten benötigt.

� I_T_VAR_RANGE

Dieser Parameter enthält eine Tabelle, die sämtliche weiteren Variablen-werte beinhaltet. Dies ist besonders in Step 2 und 3 sinnvoll.

� I_STEP

Der Schritt für die Variablenbestimmung wurde bereits ausführlich erläu-tert.

� E_T_RANGE

In dieser Tabelle müssen die Rückgabewerte in Step 0, 1 und 2 zurückge-geben werden. Sie ist im Prinzip wie eine Ranges-Tabelle aufgebaut, die weiteren Felder können ignoriert werden. Abhängig von der Art der Vari-ablen, müssen dabei folgende Beschränkungen berücksichtigt werden:

� Das Feld LOW enthält bei Merkmalswertvariablen den Wert oder die Wertuntergrenze (bei Intervallen), bei Textvariablen den Text, bei Hie-rarchievariablen die Hierarchie, bei Knotenvariablen den Knotennamen und bei Formelvariablen den Rechenwert.

� Das Feld HIGH enthält bei Merkmalswertvariablen für Intervalle oder Selektionsoptionen die Obergrenze des Intervalls. Bei Hierarchieknoten-variablen beinhaltet dieses Feld das InfoObjekt des Hierarchieknotens. Dieses kann entfallen, wenn es sich bei dem Knoten um ein Blatt der Hie-rarchie handelt. Bei anderen Variablen ist es immer leer.

� Das Feld SIGN enthält in der Regel immer ein I (für include: einschlie-ßen). Einzige Ausnahme können Selektionsoptionen sein, bei denen auch ein E (für exclude: ausschließen) erlaubt ist. SAP NetWeaver Busi-ness Warehouse erlaubt ein E auch bei Intervallen. Da dies aber nicht der Logik von Intervallen entspricht, sollten Sie solche Variablen als Selek-tionsoptionen implementieren.

� Das Feld OPT wird in der Regel mit EQ (für equal: gleich) gefüllt. Bei Inter-vallen können Sie auch BT (für between: zwischen) oder NB (für not bet-ween: nicht zwischen) verwenden. Bei Selektionsoptionen sind sämtli-che in Ranges-Tabellen zulässigen Operatoren möglich, die Sie zum Bei-spiel in der ABAP-Dokumentation zum Schlüsselwort IF finden können.

Page 15: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

User-Exits und BAdIs im Reporting4

108

� E_MEEHT, E_MEFAC, E_WAERS, E_WHFAC, C_S_CUSTOMERDiese Parameter sind in der Schnittstelle zwar angegeben, werden jedoch nicht abgefragt.

Aufgrund der unterschiedlichen Bedeutungen der Schritte können Sie auch die Implementierung des Exits entsprechend vorgeben. Möchten Sie, wie bereits zu Listing 4.2 beschrieben, eine generische Vorgabe machen, die dann einzelne Funktionsbausteine aufruft, können Sie folgende Implemen-tierung verwenden (siehe Listing 4.2):

DATA: l_d_fname(30) TYPE c.CASE i_step. WHEN 1. CONCATENATE 'Z_VAR_PRE_POPUP_' i_vnam INTO l_d_fname. WHEN 2. CONCATENATE 'Z_VAR_POST_POPUP_' i_vnam INTO l_d_fname. WHEN 0. CONCATENATE 'Z_VAR_AUTHORITY_' i_vnam INTO l_d_fname. WHEN 3. l_d_fname = 'Z_VAR_CHECK_VALIDITY'.ENDCASE.TRY. CALL FUNCTION l_d_fname EXPORTING I_VNAM = i_vnam I_VARTYP = i_vartyp I_IOBJNM = i_iobjnm I_S_COB_PRO = i_s_cob_pro I_S_RKB1D = i_s_rkb1d I_PERIV = i_periv I_T_VAR_RANGE = i_t_var_range I_STEP = i_step IMPORTING E_T_RANGE = e_t_range E_MEEHT = e_meeht E_MEFAC = e_mefac E_WAERS = e_waers E_WHFAC = e_whfac CHANGING C_S_CUSTOMER = c_s_customer EXCEPTIONS OTHERS = 1. IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY

Page 16: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

Variablen-Exit RSR00001 4.1

109

NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4 RAISING ERROR_IN_VARIABLE. ENDIF.CATCH CX_SY_DYN_CALL_ILLEGAL_FUNCTION.* Nichts machen, weil kein Exit implementiert wurde,* zum Beispiel in Step 1, wenn nur Step 2 implementiert wurde.ENDTRY.

Listing 4.2 Beispielimplementierung für den Variablen-Exit ZXRSRU01

Wenn Sie sich die Funktionsbausteine RSVAREXIT_* anschauen, werden Sie feststellen, dass Variablen mit einem SAP-Exit von der SAP-Entwicklung fast genauso implementiert werden, nur dass die Entwicklung nicht nach dem I_STEP unterscheidet. Sie sollten in diesem Schritt jedoch eine Unter-scheidung vornehmen, da Sie auf diese Art und Weise bereits am Namen des Funktionsbausteins erkennen, wozu er gedacht ist. Haben Sie bereits in größeren BW-Systemen gearbeitet, werden Sie festgestellt haben, dass der Exit ZXRSRU01 einer der größten im System ist. Alle Änderungen an die-sem Exit sind kritisch, da gegebenenfalls sämtliche Berichte davon betrof-fen sind. Nach Ihrem ersten Transport eines nicht syntaxfehlerfreien Exits in ein Produktivsystem werden Sie wissen, wovon hier die Rede ist. Sie sollten deshalb von Anfang an die Beispielimplementierung übernehmen, um damit ein lästiges Problem zu vermeiden, das sich meist erst zeigt, wenn mehrere Projekte in dem System bereits produktiv laufen: einen inhaltlich getrennten Transport, um verschiedene Variablenimplementie-rungen zu ermöglichen. Natürlich stellt sich dann noch die Frage, wer die Verantwortung für den Funktionsbaustein Z_VAR_CHECK_VALIDITY über-nimmt. Aber im Zweifelsfall können Sie in diesem Baustein aus jedem Pro-jekt heraus einen zentralen Funktionsbaustein aufrufen und die Prüfergeb-nisse sammeln.

4.1.2 Implementierung bei I_STEP = 1

Nun zur eigentlichen Implementierung der Variablenlogik. Da I_STEP = 1 die Vorschlagswerte setzen soll, können Sie nur Algorithmen implementieren, die keine Benutzereingaben erfordern. Daher gibt es hauptsächlich zwei Arten von Algorithmen:

� eine datumsabhängige Vorschlagswertbestimmung

� eine tabellengesteuerte Vorschlagswertbestimmung

Page 17: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

User-Exits und BAdIs im Reporting4

110

Beispiel 1: Datumsabhängige Vorbelegung

Eine Variable WEEK6F soll für das InfoObjekt 0CALWEEK implementiert werden. Diese Variable ist eine Merkmalswertvariable vom Typ Intervall und soll als Vorschlagswert das Intervall von der aktuellen Woche bis in sechs Wochen erhalten. Das Coding hierzu könnte wie in Listing 4.3 aussehen.

DATA: l_d_datum TYPE d, l_d_woche TYPE /bi0/oicalweek. DATA: l_s_range TYPE rsr_s_rangesid.CASE i_vnam. WHEN 'WEEK6F'. IF i_step = 1. "Vor dem Pop-up* Aktuelle Woche bestimmen CALL FUNCTION 'DATE_GET_WEEK' EXPORTING date = sy-datum IMPORTING week = l_d_woche.* Woche in Rückgabe aufnehmen l_s_range-low = l_d_woche. l_s_range-sign = 'I'. l_s_range-option = 'EQ'.* Jetzt sechs Wochen später bestimmen l_d_datum = sy-datum + 42. "42 Tage = 6 Wochen CALL FUNCTION 'DATE_GET_WEEK' EXPORTING date = l_d_datum IMPORTING week = l_d_woche.* Ende des Rückgabeintervalls füllen l_s_range-high = l_d_woche. APPEND l_s_range TO l_t_range.

Listing 4.3 Beispiel zur datumsabhängigen Variablenvorbelegung

Beispiel 2: Tabellenabhängige Vorbelegung

Im zweiten Beispiel soll eine Variable LASTCPER die letzte im Quellsystem abgeschlossene Periode enthalten. Damit nicht bei jedem Query-Aufruf das Quellsystem mittels Remote Function Call aufgerufen wird, wurde zu diesem Zweck eine Tabelle Z_BEX_VAR angelegt, die manuell während des Monats-abschlusses gepflegt wird und aus den Feldern KEY (CHAR 20) und VALUE (CHAR 60) besteht. KEY ist dabei das einzige Schlüsselfeld der Tabelle, VALUE das Datenfeld.

Page 18: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

Variablen-Exit RSR00001 4.1

111

In dem Eintrag mit KEY = 'LASTCPER' wird dabei manuell die letzte abge-schlossene Periode gepflegt. Das Coding zur Abfrage der Tabelle sieht wie in Listing 4.4 aus.

DATA: l_s_bex_var TYPE z_bex_var, l_s_range TYPE rsr_s_rangesid.CASE i_vnam. WHEN 'LASTCPER'. IF i_step = 1. "Vor Variablen-Popup* Tabelleneintrag lesen SELECT SINGLE * FROM z_bex_var INTO l_s_bex_var WHERE key = 'LASTCPER'. IF SY-SUBRC = 0.* In Rückgabe übertragen l_s_range-low = l_s_bex_var-value. ELSE.* Hier könnte man auch einen Fehler ausgeben clear l_s_range-low. ENDIF. l_s_range-sign = 'I'. l_s_range-opt = 'EQ'. ENDIF.ENDCASE.

Listing 4.4 Beispiel zur tabellenabhängigen Vorbelegung

Aus der gewünschten Art der Vorbelegung ergibt sich, welche Art der Imple-mentierung Sie nutzen. Häufig wird die tabellenabhängige Vorbelegung auch für eine Vorbelegung abhängig vom Benutzernamen oder gar von bestimm-ten Benutzerberechtigungen verwendet. Da das Handling von Reporting-Berechtigungen nicht ganz einfach ist, wird im Folgenden noch anhand eines etwas komplexeren Beispiels gezeigt, wie Sie Reporting-Berechtigungen der Klasse RSR oder die neuen Analyseberechtigungen lesen, ohne für jeden Stammdateneintrag einen AUTHORITY-CHECK durchzuführen.

Beispiel 3: Vorbelegung aus Berechtigungen

Für einen Kunden, der über gesellschaftsübergreifende Geschäftsbereiche ver-fügt, soll ein zweidimensionales Berechtigungsobjekt implementiert werden, das die externe Unternehmensstruktur (InfoObjekt 0COMPANY) und die interne Unternehmenssicht (InfoObjekt 0BUS_AREA) in einem Berechtigungsobjekt ver-eint. Auf diese Weise soll die externe und die interne Sicht besser unterschie-den werden. Je nach Bericht sollen die Verantwortlichen entweder alle Kosten ihrer Gesellschaft oder alle Kosten in ihrem Geschäftsbereich sehen.

Page 19: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

User-Exits und BAdIs im Reporting4

112

Daher haben zahlreiche Mitarbeiter zwei Ausprägungen des Berechtigungs-objektes, beispielsweise:

� 0COMPANY = 100 und 0BUS_AREA = *

� 0COMPANY = * und 0BUS_AREA = 1000

Dieses Konzept bereitet eine große Schwierigkeit: Ruft ein Mitarbeiter einen Bericht in der externen Sicht auf, soll ihm automatisch seine Gesellschaft 100als Vorschlagswert eingeblendet werden. Lassen Sie die Variable jedoch aus der Berechtigung füllen, wird dem Benutzer immer die erweiterte Ausprä-gung * vorgeschlagen; in diesem Fall eine leere Selektion.

Die Implementierung in Listing 4.5 liest die Berechtigungen und füllt den Vorschlagswert entsprechend. Dabei werden im ersten Schritt die existie-renden Berechtigungen zu dem InfoObjekt 0BUS_AREA gelesen. Anschlie-ßend werden diese überprüft. Handelt es sich um eine allgemeine Berechti-gung (*-Berechtigung), wird diese ignoriert. Handelt es sich um einen konkreten Geschäftsbereich, wird dieser in die Vorbelegung der Variablen zurückgegeben.

DATA: v_tsx_auth_values_user TYPE rssb_tsx_auth_values_user, w_sx_auth_values_user TYPE line of rssb_tsx_auth_values_user, w_sx_auth_values_auth TYPE rssb_sx_auth_values_user_auth, w_sx_auth_values_iobjnm TYPE rssb_sx_auth_values_user_iobj, w_sx_auth_values_range LIKE rrrange, v_ts_authnode TYPE rssbr_ts_authnode, w_s_authnode TYPE line of rssbr_ts_authnode, v_authhieruid TYPE rssauthhieruid.CONSTANTS: c_zcomp_bus TYPE rssb_sx_auth_values_user-object VALUE 'ZCOMP_BUS', c_attrinm_company TYPE rssb_sx_auth_values_user_iobj-iobjnm VALUE '0COMPANY',

Zweidimensionales Berechtigungsobjekt

Es ist sicherlich eher eine Ausnahme, dass zwei InfoObjekte in einer Reporting-Berechtigung Verwendung finden, und vielen ist bestimmt nicht bewusst, dass dies möglich ist. Aber sowohl Reporting als auch Planung laufen in dem System ein-wandfrei und verproben die Berechtigungen korrekt.

Page 20: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

Variablen-Exit RSR00001 4.1

113

c_attrinm_busarea TYPE rssb_sx_auth_values_user_iobj-iobjnm VALUE '0BUS_AREA'. IF i_step = 1.* Lies alle Reporting-Berechtigungen für den Benutzer* (nur InfoObjekt 0BUS_AREA) CALL FUNCTION 'RSSB_AUTHORIZATIONS_OF_USER' EXPORTING I_IOBJNM = '0BUS_AREA' I_INFOPROV = 'DEMOCUBE' I_UNAME = sy-uname I_HIENM = 'DEMOHIER' I_DATETO = sy-datum I_VERSION = '000' IMPORTING* E_T_RANGESID = E_TSX_AUTH_VALUES_USER = v_tsx_auth_values_user* E_NIOBJNM =* E_NODE =* E_TS_NODE =* E_TS_AUTH_VALUES_HIERARCHY =* E_T_MSG = EXCEPTIONS NOT_AUTHORIZED = 1 INTERNAL_ERROR = 2 USER_DOESNT_EXIST = 3 X_MESSAGE = 4 OTHERS = 5. IF sy-subrc <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4 RAISING not_authorized. ENDIF.* LOOP über alle Reporting-Berechtigungen des Benutzers LOOP AT v_tsx_auth_values_user INTO w_sx_auth_values_user.* Welches Berechtigungsobjekt? CHECK w_sx_auth_values_user-object = c_zcomp_bus.* Doppelberechtigungsobjekt LOOP über alle Ausprägungen * zum Berechtigungsobjekt LOOP AT w_sx_auth_values_user-auth INTO w_sx_auth_values_auth.* Company-Ausprägung lesen READ TABLE w_sx_auth_values_auth-values_iobjnm

Page 21: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

User-Exits und BAdIs im Reporting4

114

INTO w_sx_auth_values_iobjnm WITH KEY iobjnm = c_attrinm_company. IF sy-subrc = 0.* Gesellschaft gefunden LOOP AT w_sx_auth_values_iobjnm-ranges INTO w_sx_auth_values_range. IF ( w_sx_auth_values_range-sign = 'I' ) AND ( w_sx_auth_values_range-opt = 'CP' ) AND ( w_sx_auth_values_range-low = '*' ).* Existiert eine *-Berechtigung für 0COMPANY? * Geschäftsbereich bestimmen. READ TABLE w_sx_auth_values_auth-values_iobjnm INTO w_sx_auth_values_iobjnm WITH KEY iobjnm = c_attrinm_busarea. IF sy-subrc = 0.* Berechtigung zum Geschäftsbereich LOOP AT w_sx_auth_values_iobjnm-ranges INTO w_sx_auth_values_range. MOVE-CORRESPONDING w_sx_auth_values_range TO l_s_range. APPEND l_s_range TO e_t_range. ENDLOOP. "w_sx_auth_values_iobjnm_range ENDIF. "sy-subrc = 0 ENDIF. "*-Berechtigung für 0COMPANY ENDLOOP. " w_sx_auth_values_iobjnm-ranges ENDIF. "sy-subrc = 0 ENDLOOP. "w_sx_auth_values_user-auth ENDLOOP. "v_tsx_auth_values_user

Listing 4.5 Ableitung der Berechtigungen aus speziellen Berechtigungsobjekten

4.1.3 Implementierung bei I_STEP = 2

Im Prinzip unterscheidet sich die Implementierung von Schritt 2 nicht von der Implementierung von Schritt 1. Es gibt jedoch eine bedeutende Abwei-chung, die enorm wichtig ist: In Schritt 2 haben Sie die Möglichkeit, auf die Werte zurückzugreifen, die im Pop-up eingegeben wurden. Dies ist oft nötig, wenn der Benutzer einen Zeitpunkt eingibt und abhängig von dem Zeit-punkt Ableitungen getroffen werden. Dies wird im folgenden Beispiel erläu-tert.

Beispiel 4: Zeitabhängige Versionen

Der Benutzer soll in der Variablen REP_PER eine Berichtsperiode eingeben. Die Variable REP_VERS soll dann abhängig von dem Zeitpunkt der Variablen REP_PER die Werte in Tabelle 4.1 annehmen.

Page 22: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

Variablen-Exit RSR00001 4.1

115

Die Implementierung dazu finden Sie in Listing 4.6. Dabei wird zuerst die Berichtsperiode REP_PER gelesen. Anschließend wird der letzte Tag der Berichtsperiode bestimmt. Nach den Vorgaben der Tabelle 4.1 wird dann der Rückgabewert bestimmt.

DATA: l_s_range TYPE rsr_s_rangesid.DATA: l_s_var_range LIKE rrrangeexit, l_d_datum LIKE sy-datum, l_d_year TYPE /bi0/oifiscyear, l_d_per3 TYPE /bi0/oifiscper3.CASE i_vnam. WHEN 'CUMMONTH'. CLEAR l_s_range. IF i_step = 2. "Nach Pop-up* Eingabe der Variablen REP_PER lesen READ TABLE i_t_var_range INTO l_s_var_range WITH KEY vnam = 'REP_PER'. IF sy-subrc = 0. l_d_year = l_s_var_range-low(4). l_d_per3 = l_s_var_range-low+4(3). CALL_FUNCTION 'LAST_DAY_IN_PERIOD_GET' EXPORTING I_GJAHR = l_d_year I_PERIV = i_periv I_POPER = l_d_per3 IMPORTING E_DATUM = l_d_datum EXCEPTIONS OTHERS = 1. IF SY-SUBRC <> 0.* Nicht bestimmbar (fehlende * Geschäftsjahresvariante?) => Default setzen l_s_range-low = 'ACT'. ELSE. IF l_d_datum <= sy-datum.* Periode abgeschlossen l_s_range-low = 'ACT'. ELSE. CALL_FUNCTION 'FIRST_DAY_IN_YEAR_GET'

Zeitpunkt REP_PER Wert REP_VERS

Periode ist abgeschlossen. ACT (Ist-Version)

Periode ist im aktuellen Jahr, aber nicht abgeschlossen. PRE (Vorschau)

Periode ist in einem der Folgejahre. PLN (Planversion)

Tabelle 4.1 Versionsumsetzung

Page 23: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

User-Exits und BAdIs im Reporting4

116

EXPORTING I_GJAHR = l_d_year I_PERIV = i_periv IMPORTING E_DATUM = l_d_datum EXCEPTIONS OTHERS = 1. IF sy-subrc <> 0.* Nicht bestimmbar (aber Periode war * bestimmbar?) => Default setzen l_s_range-low = 'ACT'. ELSE. IF l_d_datum > sy-datum.* Geschäftsjahr noch nicht begonnen l_s_range-low = 'PLN'. ELSE. l_s_range-low = 'PRE'. ENDIF. ENDIF. ENDIF. ENDIF. ELSE.* Variable wurde irrtümlich verwendet, sinnvollen * Default setzen (zum Beispiel ACT) l_s_range-low = 'ACT'. ENDIF. l_s_range-sign = 'I'. l_s_range-opt = 'EQ'. APPEND l_s_range TO e_t_range.

Listing 4.6 Beispiel zur Variablenbestimmung abhängig von Eingabevariablen

Typische Beispiele für die Variablenbestimmung abhängig von Eingabevari-ablen sind:

� Ableitung einer Formelvariablen aus einer eingegebenen Periode zur Hochrechnung von Jahresprognosen oder Verteilung von Jahreswerten

� Ableitung einer Vergleichsgruppe (zum Beispiel einer Hierarchieknoten-variablen) zu einem eingegebenen Merkmal, beispielsweise einem Profit-Center

� Ableitung der Unter- oder Obergrenze eines Zeitintervalls, das nicht durch eine feste Anzahl von Perioden, sondern durch andere Schranken definiert ist, zum Beispiel Quartalsanfang oder -ende

� Bestimmung einer berechtigungsabhängigen Formelvariablen zur Anzeige von noch nicht freigegebenen Perioden. Dabei wird abhängig von der ein-

Page 24: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

Variablen-Exit RSR00001 4.1

117

gegebenen Periode geprüft, ob die Periode schon freigegeben ist. Wenn nicht, wird eine Berechtigungsprüfung durchgeführt. Schlägt diese fehl, wird 0 zurückgeliefert, sonst 1. Die Query multipliziert daraufhin den tat-sächlichen Wert mit dem Ergebnis der Formelvariablen.

� Ableitung von Variablen für MultiProvider. So können Sie zum Beispiel eine Variable für eine Kostenstelle abfragen und aus der Kostenstelle dann das zugeordnete Profit-Center ableiten, da in einem der beteiligten Info-Provider keine Kostenstelle, sondern nur das Profit-Center enthalten ist.

4.1.4 Implementierung bei I_STEP = 0

Step 0 ist unter anderem für die Ableitung von Variablen in Berechtigungen vorgesehen. Sie können in einer Reporting-Berechtigung einfach eine Vari-able verwenden, indem Sie einen Variablennamen eintragen, der mit einem Dollarzeichen ($) beginnt. Diese Variable muss vorher im Query Designerdefiniert worden sein. Bei der Ausführung eines Berichts wird der Exit auf-gerufen, und Sie können die Bestimmung der Berechtigung in ABAP durch-führen.

Bei der Bestimmung der Berechtigungen wird die Rückgabetabelle wie eine Berechtigung aufgefasst, daher müssen auch hier die Einschränkungen wie bei Berechtigungen berücksichtigt werden. Dementsprechend muss SIGNimmer den Wert I haben, OPT muss einen der Werte EQ oder BT annehmen. Ausschließende Berechtigungen, zum Beispiel »alle Gehälter außer den Vor-standsbezügen«, sind nicht erlaubt.

Mögliche und typische Anwendungen dafür sind Ableitungen von Berechti-gungen aus Tabellen oder aus Stammdaten. Auf diese Art und Weise ist es jedoch auch möglich, die Berechtigung abhängig vom aktuellen Datum zu vergeben. Eine typische Anwendung dafür zeigt das folgende Beispiel.

Beispiel 5: Berechtigungen in der Quiet Period ändern

In diesem Beispiel soll für eine Regionalhierarchie eine Berechtigung zeitab-hängig gesteuert werden. Dabei haben alle Mitarbeiter immer die Berechti-gung auf alle Regionen, nur in der sogenannten Quiet Period vom 25. eines Monats zum Quartalsende bis zum 15. des Folgemonats (im Januar bis zum 25. Januar) dürfen sie ausschließlich die Regionen sehen, die in einer Tabelle abgelegt sind. Dazu ist in ihrer Berechtigung die Variable $QREGION hinter-legt. Diese Variable wird in Listing 4.7 gefüllt. Dabei wird zuerst der aktuelle Tag bestimmt. Anschließend wird überprüft, ob der Tag in den definierten

Page 25: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

User-Exits und BAdIs im Reporting4

118

Perioden liegt. Wenn ja, darf der Benutzer nur bestimmte Regionen sehen, im Übrigen darf er alles sehen.

DATA: L_S_RANGE TYPE RSR_S_RANGESID.CASE i_vnam. WHEN 'QREGION'.* Datum in der Quiet Period? DATA: l_d_tag(4) TYPE n, l_s_region TYPE z_user_region. l_d_tag = sy-datum+4(4). IF ( l_d_tag <= '0125' ) OR ( ( l_d_tag >= '0325' ) AND ( l_d_tag <= '0415' ) ) OR ( ( l_d_tag >= '0625' ) AND ( l_d_tag <= '0715' ) ) OR ( ( l_d_tag >= '0925' ) AND ( l_d_tag <= '1015' ) ) OR ( l_d_tag >= '1225' ). l_s_range-sign = 'I'. l_s_range-opt = 'EQ'. SELECT * FROM z_user_region INTO l_s_region WHERE uname = sy-uname. l_s_range-low = l_s_region-region. APPEND l_s_range TO e_t_range. ENDSELECT. ELSE. l_s_range-sign = 'I'. l_s_range-opt = 'CP'. l_s_range-low = '*'. APPEND l_s_range TO e_t_range. ENDIF.

Listing 4.7 Implementierung einer Berechtigungsvariablen

Die IF-Abfrage in Listing 4.7 würde normalerweise nicht direkt in die Vari-able geschrieben, sondern in eine separate Check-Funktion ausgelagert, eventuell sogar in einer Customizing-Tabelle hinterlegt werden. In der Praxis würden diese Zeilen sonst regelmäßig geändert.

4.1.5 Implementierung bei I_STEP = 3

Die Implementierung bei I_STEP = 3 ist anders und etwas komplizierter als die Implementierung der anderen Schritte. Dies liegt vor allem an zwei Fak-toren: Zum einen ist darauf zu achten, dass nicht in jeder Query dieselben

Page 26: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

269

Index

Index

A

ABAP Objects 46, 49, 55, 133ABAP-Query 28Ableitung

Kennzahl 56Merkmal 52

ADD_NEW_BLOCKS 211Aggregationsebene 198ALV-Grid 40Anwendungskomponente 27, 28Attributsableitung 22, 184

B

BAdI 25, 44, 46RSR_OLAP_BADI 127, 128RSU5_SAPI_BADI 44, 46SMOD_RSR00004 149

BAPI 139BAPI_INFOCUBE_READ_REMOTE_

DATA 141Struktur 144

Basisplanungsgebiet 183Berechtigungsverprobung 26, 32Berichts-Berichts-Schnittstelle 74, 75,

149, 150Bewegungsdaten 27, 33Bewegungsdaten-DataSource 87BEx � Business ExplorerBinnenumsatzeliminierung 138BPS0 172Business Add-In � BAdIBusiness Consolidation 144Business Explorer 142, 171Business Planning and Simulation � SAP

BW-BPSBW Query 181BW-Hierarchie 84BW-integrierte Planung 171

Exit-Funktion 208Merkmalswertableitung 190Variable 179

C

C_TH_DATA 213Cache 22CASE 35CHARACTERISTICS 143Child-ID 97CL_RSBM_LOG_CURSOR_STEP 69CL_RSDRV_REMOTE_IPROV_SRV 143CL_RSMD_RS_GENERIC_DOMAIN 153CL_RSPLFC_BPS_EXITS 215Code

dynamischer 20COMPUTE 130, 133, 134, 135, 136, 137CONCATENATE 80CONSTRUCTOR 137CONVERT_TO_FOREIGN_CURRENCY

263CONVERT_TO_LOCAL_CURRENCY 263CREATE 154, 189Customizing-Tabelle 245CX_RSROUT_ABORT 55CX_RSROUT_SKIP_RECORD 55

D

DATA 143Data Package 30, 34, 244DATA_TRANSFORM 45DataSource 26, 33, 45, 46, 49, 66, 85,

86, 139, 239anlegen 86generische 26, 29

DataStore 37Objekt 85, 87, 105, 138, 145

Dateinamebestimmen 79

Dateinamenselektion 78Datenanreicherung 18Datenbankselektion 139Datenbankzugriff 22Datenbereinigung 49, 63Dateneigentümer 32Datenfluss 51

Page 27: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

270

Index

Datenladevorgang 49Datenmodell 239Datenmodellierung 40, 75, 254Datenpaket 23, 31, 51, 242, 257Datenqualität 265Datenquelle 145Datensatz 15

Reihenfolge 137Datenselektion 142Datentransferprozess 78, 85, 98, 100

Merkmalsselektion 80Selektion eines Dateinamens 78

DatenübertragungProtokollierung 243

Datenvolumen 15Datenziel 75, 239

Datenzielstruktur 265fortschreiben 23

datumsabhängige Vorbelegung 110Default-Wert 123, 252DEFINE 130, 131, 132, 134Delta

generisches 30Delta-Upload 30DTP � Datentransferprozess

E

Einheitenberechnung 56, 262Einheitenrückgabe 59Einzelpostenbericht 75Einzelverarbeitung 137Einzelwert 175

Rückgabe 173Endroutine 51, 60, 65, 66, 70, 84, 90,

97, 100Enterprise Data Warehouse 51ET_MESG 203ETO_CHAS 203EXECUTE 213EXIT_SAPLRRS0_001 103, 135, 138EXIT_SAPLRSAP_001 33, 35EXIT_SAPLRSAP_002 33EXIT_SAPLRSAP_003 33EXIT_SAPLRSAP_004 33, 43EXIT_SAPLRSBBS_001 149EXIT_SAPLRSBBS_002 149EXIT_SAPLRSR0_001 105

Exit-FunktionBW-integrierte Planung 208SAP BW-BPS 200

Exit-Funktionsbaustein 203, 205EXPERT_ROUTINE 74Expertenroutine 60, 66, 69, 70, 75, 77Export-DataSource 43Extraktion 25, 46

SAP ERP 38Extraktor 34

generischer 25, 26, 30, 31, 43Hinzufügen von Sätzen 37

Extraktor-Checker 31Extraktstruktur 44

füllen 36

F

Fehlerbehandlung 69, 257SAP BW 3.x 250Tabelle 251

Fehlermeldung 121, 244ausgeben 265Rückgabe 124

Feldändern 201Erweiterung 31I_S_RKB1D-COMPID 124Maskierung 26Symbol 15, 20Vorrat 202

FIELDNAME 82Filterwert 105Filterwertbestimmung 83FINISH_EXECUTION 215Flat File 27Fortschreibungsregel 22, 49, 60, 100,

239, 240, 250, 254, 256, 257, 259, 261, 262, 265

Full Table Scan 19Full Upload 30Funktion

CREATE 189selbst geschriebene 171WS_UPLOAD 200

Funktionsbaustein 33BAPI_INFOCUBE_READ_REMOTE_

DATA 141, 142

Page 28: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

271

Index

CONVERT_TO_FOREIGN_CURRENCY 263

CONVERT_TO_LOCAL_CURRENCY 263

Daten berechnen 139EXIT_SAPLRRS0_001 103EXIT_SAPLRSAP_001 33, 35EXIT_SAPLRSAP_002 33EXIT_SAPLRSAP_003 33EXIT_SAPLRSAP_004 33, 43EXIT_SAPLRSR0_001 105Exit-Funktionsbaustein 203, 205feste Schnittstelle 173Init-Funktionsbaustein 202RRMS_MESSAGE_HANDLING 124,

125RSDRI_INFOPROV_READ 146Z_VAR_CHECK_VALIDITY 109, 120

G

G_T_ERRORLOG 250Geschäftsjahresvariante 154, 239GET_ATTRIBUTES 160, 165GET_CAPABILITIES 155GET_REF_DATA_SEL 210GET_TEXT 159, 166GET_VALUES 157Gruppe

semantische 99

H

HASHED TABLE 17Hash-Tabelle 17, 19, 22, 242HAUPT_KST 167HIER_TRANSFORM 45Hierarchie 26, 33, 40, 45, 83, 184

Aggregation 138BW-Hierarchie 84Exit 43Extraktor 43sortierte 83

HistorieTransformation 69

I

I_MAXROWS 157I_STEP 104, 109, 114, 117, 118I_T_SELOPT 157I_TS_REQ_ATR 157IF_RSPLS_CR_METHODS~CHECK 191IF_RSPLS_CR_METHODS~CREATE 194IF_RSPLS_CR_METHODS~DERIVE 198I-Meldung 265Implementierung, Logik 54Implementierungsname 128Include

ZXRSAU01 34ZXRSRU01 103

Index 98INFOCUBE 141InfoCube 62, 70, 138, 145, 148, 201,

265InfoObjekt 37, 97, 125, 168, 189, 211

0AMOUNT 750BUS_AREA 1110COMPANY 1110CURRENCY 60Ableitung 245, 252HAUPT_KST 167

InfoPackage 79, 98, 99, 105, 244, 255InfoProvider 49, 69, 125, 127, 138, 139,

140, 148, 152, 171, 239, 240InfoSource 51, 69, 239, 240, 257INIT_EXECUTION 209Init-Funktionsbaustein 202Initialisierung 63INITIALIZATION 129, 133, 134Instanzattribut 133International Accounting Standards 84INVALID 184INVERSE_EXPERT_ROUTINE 74INVERSE_EXPERT_SELECTION 74Ist-Daten 171IT_EXITP 203ITO_CHA 203ITO_CHASEL 203, 205ITO_KYF 203

Page 29: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

272

Index

K

Kennzahl 145, 1480QUANTITY 75virtuelle 125

Kennzahlenableitung 56, 261Kennzahlenberechnung 59Kennzahlenmodell 75KEYDATE 141KEYFIGURES 143Kind 84, 97Klasse

CL_RSBM_LOG_CURSOR_STEP 69CL_RSDRV_REMOTE_IPROV_SRV 143CL_RSMD_RS_GENERIC_DOMAIN 153CL_RSPLFC_BPS_EXITS 215

Knoten 84, 97Knotennummer 83Kombinationsprüfung 183Kombinationsverprobung 120Kombinationsvorschlag 183Kommunikationsstruktur 128, 129, 133,

241, 244, 248, 256, 261, 266Kontenmodell 75Konvertierung 32, 49Kostenrechnungskreis 239Kostenstellenkategorie 66Kunden-Exit 46

L

Ladeprozess 15, 55Leseroutine, für Stammdaten 153Lesezugriff, Tabelle 19Linkknoten 97LISTCUBE 148Log 77Logik, Implementierung 54LOOP AT TABLE WHERE 19Löschen

Satz 63

M

Mandant 154Mapping 149Mapping-Tabelle 37

Maskierung 31Mengeneinheit, Umrechnung 59Merkmal 125, 148Merkmalsableitung 49, 52, 66, 171Merkmalsberechnung 259Merkmalsbeziehung 183Merkmalskombination 122, 138, 211Merkmalswert 145, 182Merkmalswertableitung 182, 189

Attributsableitung 184BW-integrierte Planung 190hierarchische 184SAP BW-BPS 183

Merkmalswertkombinationerzeugen 186prüfen 184

Methode_VALUES_GENERATE 160, 164ADD_NEW_BLOCKS 211COMPUTE 130, 133, 134, 137CONSTRUCTOR 137CREATE 154DATA_TRANSFORM 45DEFINE 130, 132, 134EXECUTE 213EXIT_SAPLRSBBS_001 149EXIT_SAPLRSBBS_002 149EXPERT_ROUTINE 74FINISH_EXECUTION 215GET_ATTRIBUTES 160, 165GET_CAPABILITIES 155GET_REF_DATA_SEL 210GET_TEXT 159, 166GET_VALUES 157HIER_TRANSFORM 45IF_RSPLS_CR_METHODS~CHECK 191IF_RSPLS_CR_METHODS~CREATE 194IF_RSPLS_CR_METHODS~DERIVE 198INIT_EXECUTION 209INITIALIZATION 129, 130, 133, 134INVERSE_EXPERT_ROUTINE 74INVERSE_EXPERT_SELECTION 74SET_KEY_DATE 155

Microsoft Excel 83MONITOR_RECNO 257Multiplanungsgebiet 183MultiProvider 125, 139, 148

Page 30: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

273

Index

N

Nachricht 244Nachrichtenklasse 244Nachrichtensammler 124Navigationsattribut 143, 168Navigationsblock 105Next-ID 98

O

Objektreferenz 215Obligodaten 259ODS-Objekt 85OLAP-Prozessor 143O-Notation 20

P

ParameterI_IOBJNM 106I_MAXROWS 157I_PERIV 107I_S_COB_PRO 106I_S_RKB1D 106I_STEP 104, 107, 109, 114, 117, 118I_T_VAR_RANGE 107I_VARTYP 106I_VNAM 106

Parent-ID 97Performance 15, 16, 20, 69, 70, 74, 126,

139, 186, 249, 251, 254, 255Periodeneingabe 122Persistent Staging Area � PSAPlanungsebene 172, 183Planungsfunktion 171, 176, 200, 206Planversion 173Positionsauswahl 66Programm, aktiviertes 257PSA 23, 32, 78, 257

Q

Quartalsbericht 121Quellmerkmal 189Quellstruktur 77

Quellsystem 26, 75, 239, 250, 251Query 100, 145Query Designer 117Query-Erstellung 179Query-Name 152

R

RAISE EXCEPTION 124RANGES-Tabelle 177READ TABLE 18READ TABLE INDEX 19READ TABLE WITH KEY 19READ TABLE WITH TABLE KEY 19Referenzdaten 208, 210, 213RemoteCube 74, 139, 251RESULT_PACKAGE 73RESULT_TABLE 266RETURN 142RFC-Verpacken 141, 143, 144Routine

anlegen 79Einheit 57

RRMS_MESSAGE_HANDLING 124, 125RSAP0001 44RSBBS 149RSDRI_INFOPROV_READ 146RSO2 26RSR_OLAP_BADI 127, 128RSR00001 103RSR00002 126RSR00004 149RSU5_SAPI_BADI 44, 46Rückgabetabelle 239, 265Rundungsdifferenz 139

S

SAP BW-BPS 171Variable 180Variablenkonzept 172

SAP ERP 171SAP NetWeaver BW 7.0 85, 86, 98SAP NetWeaver BW 7.3 50, 61, 83, 101SAP NetWeaver BW 7.x 100SAP SEM-BCS 144Satz löschen 63

Page 31: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

274

Index

Schleife 19Schlüssel 84Schlüsselfeld 16SE19 127SE80 154, 161, 191SELECTION 142Selektion 30Selektionsbedingung 198Selektionsfeld 30, 44Selektionsoptionsvariable 181SET_KEY_DATE 155SID-Unterstützung 141, 143, 144SMOD_RSR00004 149Sonderzeichen

Entfernung 55SORTED TABLE 16SOURCE_PACKAGE 62Spalte, Selektion 30Stammdatenattribut 18, 33Stammdatenleseklasse 168

anlegen 154Implementierung 161

Stammdatenleseroutine 153Stammdatentabelle 145Stammdatentext 33STANDARD TABLE 16Standardabweichung 137Standardextraktor 25, 31Standardtabelle 16, 19Startroutine 51, 61, 65, 66, 70, 84, 100,

240, 241, 242, 250, 255, 256, 257, 265SY-DATUM 80

T

Tabelle 27ANY TABLE 36C_T_DATA 36C_T_FOLDERT 42C_T_HIENODE 42C_T_MESSAGES 36C_TH_DATA 213Customizing-Tabelle 245E_T_RANGE 107ET_MESG 203ETO_CHAS 203G_T_ERRORLOG 250Hash-Tabelle 17, 19, 22, 242I_T_SELOPT 157I_TS_REQ_ATR 157

IT_EXITP 203ITO_CHA 203ITO_CHASEL 203, 205ITO_KYF 203L_T_RANGE 82Mapping-Tabelle 37MONITOR_RECNO 257RESULT_PACKAGE 73RESULT_TABLE 266S_T_TCURF 40sortierte Tabelle 16, 19Standardtabelle 16, 19TCURR 27, 29, 40XTH_DATA 206

tabellenabhängige Vorbelegung 110Tabellenart 16Tabellendefinition 18Tabelleneintrag lesen 137Tabellentyp 15Tabellenzugriff 19Transaktion

BPS0 172CMOD (Pflege von SAP-Erweiterungen)

32LISTCUBE 148RSA3 (Extraktor-Checker) 31RSBBS 149RSO2 (generischen Extraktor anlegen)

26RSRT 75SBIW (Anwendungskomponentenhierar-

chie bearbeiten) 28SE19 127SE80 154, 161, 191SE91 124, 244, 251

Transferstruktur 242, 250Transformation 49, 51, 60, 65, 83

grafische Darstellung 50Historie 69

Transport 70Typ

_ty_s_SC_1 54_ty_s_TG_1 54

U

Übertragungsregel 49, 100, 239, 240, 241, 242, 250Startroutine 31

Page 32: ABAP-Programmierung für SAP NetWeaver BW · PDF fileSAP PRESS ABAP-Programmierung für SAP NetWeaver BW – Kundeneigene Erweiterungen Bearbeitet von Dirk Herzog erweitert 2012. Buch

275

Index

Upload 18Ursprungsobjekt 26User-Exit 25, 32, 43

EXIT_SAPLRRS0_001 135, 138EXIT_SAPLRSAP_001 34für Hierarchien 40Planung 171RSAP0001 31, 32, 44RSR00002 126RSR00004 149

V

Validierung 105, 120Variable 103, 171

Ableitung 117BW-integrierte Planung 179Handling 119Kombination 120lesen 180Planung 171projektabhängige 119SAP BW-BPS 172, 180schreiben 181Selektionsoptionsvariable 181setzen 173Strategie 120übergeben 138übernehmen 181Überprüfung 119Wert 138zentrale 119

VariablenbestimmungBeispiel 116

Variablen-Exit 172RSR00001 103, 172ZXRSRU01 109

Varianz 137Vater 98

Verprobung, Merkmalskombination 122

Verteilmechanismus 46Verwendungsart 25View 27VirtualProvider 74, 139, 146, 148

anlegen 140Implementierung 145

virtuelle Kennzahl 125virtuelles Merkmal 125Vorbelegung 176

aus Berechtigung 111datumsabhängige 110tabellenabhängige 110

W

Währungsumrechnung 69Wertemenge

Rückgabe 175, 177Werttyp 259WS_UPLOAD 200Wurzelknoten 84

X

X-Message 142XTH_DATA 206

Z

Z_VAR_CHECK_VALIDITY 109Zielstruktur 77Zirkelbezug 84ZXRSAU01 34ZXRSRU01 103, 109