46
Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ®

ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

Bonn � Boston

Dirk Herzog

ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs

TM

®

1228.book Seite 3 Donnerstag, 2. Oktober 2008 11:35 11

Page 2: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

5

Inhalt

Vorwort zur 2. Auflage ............................................................................. 9

11

1 Einleitung ............................................................................. 11

15

2 Performance ......................................................................... 15

2.1 Tabellenarten in ABAP ............................................................ 162.2 Schleifen und Lesezugriffe auf Tabellen ................................... 182.3 Feldsymbole ........................................................................... 202.4 Datenbankzugriffe und Cache ................................................. 22

25

3 User Exits und BAdIs bei der Extraktion ............................. 25

3.1 Verwendungsmöglichkeiten .................................................... 253.2 Generische Extraktoren ........................................................... 263.3 User Exit RSAP0001 ............................................................... 31

3.3.1 Verwendung .............................................................. 323.3.2 Strukturierter Aufbau des Includes ZXRSAU01 ............ 343.3.3 Implementierung des User Exits EXIT_SAPLRSAP_001

für die Währungsextraktion ........................................ 393.3.4 Verwendung des Hierarchie-Exits ............................... 413.3.5 Ersatz für den generischen Hierarchieextraktor ............ 443.3.6 Parameterübergabe an den User Exit .......................... 44

3.4 BAdI RSU5_SAPI_BADI ........................................................... 453.4.1 Methoden .................................................................. 463.4.2 Vor- und Nachteile .................................................... 47

49

4 User Exits in Ladevorgängen von Daten .............................. 49

4.1 Transformation ....................................................................... 494.1.1 Ableitung von Merkmalen .......................................... 514.1.2 Ableitung von Kennzahlen ......................................... 564.1.3 Startroutine in der Transformation ............................. 604.1.4 Endroutine in der Transformation ............................... 644.1.5 Expertenroutine in der Transformation ....................... 68

4.2 Routinen in den Datentransferprozessen ................................. 774.2.1 Selektion eines Dateinamens im Datentransferprozess 774.2.2 Bestimmung einer Merkmalsselektion im

Datentransferprozess ................................................. 79

1228.book Seite 5 Donnerstag, 2. Oktober 2008 11:35 11

Page 3: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

Inhalt

6

4.3 Hierarchie aus einem unstrukturierten Excel-Blatt laden ......... 834.3.1 Anlegen des DataStore-Objektes ................................ 854.3.2 Anlegen der DataSource ............................................ 854.3.3 Anlegen der Transformation ....................................... 874.3.4 Anlegen einer Startroutine ......................................... 884.3.5 Anlegen der Endroutine ............................................. 904.3.6 Anlegen eines Datentransferprozesses ........................ 994.3.7 Anlegen einer Query .................................................. 1014.3.8 Umsetzung in SAP BW 3.x ......................................... 101

4.4 Übertragungsregeln in SAP BW 3.x ......................................... 1024.4.1 Startroutine in der Übertragungsregel ........................ 1044.4.2 Routine zur InfoObjekt-Ableitung .............................. 1094.4.3 Implementierung der InfoObjekt-Ableitung ............... 115

4.5 Fortschreibungsregel in SAP BW 3.x ....................................... 1174.5.1 Startroutine ............................................................... 1194.5.2 Füllen von Feldern einer Datenstruktur ...................... 1224.5.3 Merkmalsberechnung ................................................ 1244.5.4 Kennzahlenableitung ................................................. 1264.5.5 Einheitenberechnung ................................................. 1274.5.6 Rückgabetabelle ......................................................... 130

131

5 User Exits und BAdIs im Reporting .....................................131

5.1 Variablen-Exit RSR00001 ........................................................ 1315.1.1 Interface des Funktionsbausteins

EXIT_SAPLRSR0_001 ................................................. 1335.1.2 Implementierung bei I_STEP = 1 ................................ 1385.1.3 Implementierung bei I_STEP = 2 ................................ 1435.1.4 Implementierung bei I_STEP = 0 ................................ 1465.1.5 Implementierung bei I_STEP = 3 ................................ 1475.1.6 Validierung einer einzelnen Variablen ........................ 1495.1.7 Verprobung von Merkmalskombinationen in Step 3.... 151

5.2 Virtuelle Kennzahlen und Merkmale ....................................... 1545.2.1 Vor- und Nachteile .................................................... 1555.2.2 Implementierung ....................................................... 1565.2.3 Weitere Hinweise ...................................................... 1675.2.4 Übergabe von Variablenwerten an das BAdI ............... 167

5.3 VirtualProvider ....................................................................... 1695.3.1 Anlegen eines VirtualProviders ................................... 1695.3.2 Dos and Don’ts bei der Implementierung des

Service ....................................................................... 174

1228.book Seite 6 Donnerstag, 2. Oktober 2008 11:35 11

Page 4: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

Inhalt

7

5.4 BAdI SMOD_RSR00004 .......................................................... 1795.5 Implementierung von eigenen Leseroutinen für Stamm-

daten ...................................................................................... 1835.5.1 Anlegen einer Stammdatenleseklasse ......................... 1845.5.2 Beispielimplementierung einer Stammdaten-

leseklasse ................................................................... 1915.5.3 Eintragen der Klasse in das InfoObjekt ....................... 198

201

6 User Exits in der Planung .....................................................201

6.1 Variablen in der Planung ........................................................ 2016.1.1 Variablen in SAP BW-BPS .......................................... 2026.1.2 Variablen in der BI-integrierten Planung .................... 210

6.2 Merkmalswertableitungen ...................................................... 2136.2.1 Merkmalswertableitungen in SAP BW-BPS ................. 2146.2.2 Merkmalswertableitungen in der BI-integrierten

Planung ..................................................................... 2226.3 Exit-Funktionen in der Planung ............................................... 232

6.3.1 Exit-Funktionen in SAP BW-BPS ................................. 2326.3.2 Exit-Funktionen in der BI-integrierten Planung ........... 241

6.4 Fazit ....................................................................................... 248

249

7 Zusammenfassung ................................................................249

251

Anhang ....................................................................................... 251

A Weitere Erweiterungsmöglichkeiten .................................................. 253A.1 Weitere BAdIs und User Exits in SAP NetWeaver BI ................ 253

A.1.1 BAdIs ......................................................................... 253A.1.2 Exits ........................................................................... 254

A.2 Generierte Tabellen und Objekte in SAP NetWeaver BI .......... 254A.2.1 Tabellen in InfoCubes ................................................ 255A.2.2 Tabellen in DataStore-Objekten ................................. 256A.2.3 Tabellen in InfoObjekten ........................................... 256A.2.4 Datenstrukturen im Datenfluss ................................... 256A.2.5 Generierte Objekte in SAP NetWeaver BI ................... 257

B Der Autor ......................................................................................... 259

Index......................................................................................................... 261

1228.book Seite 7 Donnerstag, 2. Oktober 2008 11:35 11

Page 5: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

9

Vorwort zur 2. Auflage

Manchmal muss man zu seinem Glück gezwungen werden: Seit ich im Jahr2000 aus der CO-Entwicklung in Walldorf in die BI-Beratung nach Berlinwechselte, habe ich mich immer mehr zum Spezialisten für die ABAP-Pro-grammierung von Business Add-ins (BAdIs) und User Exits in SAP NetWea-ver Business Intelligence 7.0 entwickelt, der aus vielen Bereichen Anfragenbezüglich Ideen und Lösungsvorschlägen erhält. Auch der Gedanke, einBuch darüber zu schreiben, kam mir schon öfter, jedoch habe ich als Famili-envater den damit verbundenen Aufwand immer wieder gescheut, bis ichplötzlich eine Anfrage aus dem Lektorat von SAP PRESS erhielt, ob ich nichteine Publikation zu genau diesem Thema verfassen möchte – mit meinenVeröffentlichungen im SAP Developer Network (SDN), die sich oft mit die-sen Themen beschäftigen, hatte ich auf mich aufmerksam gemacht.

Es ist kaum zu glauben, dass inzwischen schon mehr als zwei Jahre seitErscheinen der Erstauflage vergangen sind. In dieser Zeit habe ich vonLesern viel Zuspruch erhalten. Auch in den Kursen, die ich gehalten habe,sah ich das Heft häufig auf dem Tisch liegen. Von daher kam die Anfrage ausdem Lektorat, die Publikation zu überarbeiten, um sie im neuen Format derReihe »SAP Essentials« herauszubringen, nicht überraschend.

Insbesondere habe ich dadurch die Möglichkeit, Ihnen ein Thema näherzu-bringen, das mich in den vergangenen zwei Jahren sehr beschäftigt hat: diePlanung. Seit der Veröffentlichung der ersten Auflage hatte ich das Vergnü-gen, an einem relativ großen Planungsprojekt teilnehmen zu dürfen. Diesesbeinhaltete die komplette Vertriebsplanung eines großen deutschen Indus-trieunternehmens und stellte hohe Anforderungen an die Funktionalität, dadie Lösung zügig an mehrere Hundert Mitarbeiter auszurollen war.

Ich hatte schon vorher Dutzende von Exit-Funktionen geschrieben, die abereher den Sinn von Transaktionen auf normalen BI-Würfeln hatten. Doch indiesem Projekt kam ich in den Genuss, die Exits in ihrer ganzen Bandbreitezu erleben, was dazu führte, dass ich erstmals die Meldung erhielt, dass mannicht mehr als 99 Funktionsbausteine in einer Funktionsgruppe anlegendarf. Wer daher trotz der beschriebenen Exits über Langeweile klagt, wird inder Planung mehr als genug zu tun haben. Dabei ist es mir im neuen Kapitel 6,»User Exits in der Planung«, – wie auch in den anderen Kapiteln – darüberhinaus wichtig, dass ich nicht nur die Syntax beschreibe, sondern vor allemauch den Zweck der Anwendung der User Exits.

1228.book Seite 9 Donnerstag, 2. Oktober 2008 11:35 11

Page 6: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

Vorwort zur 2. Auflage

10

Darüber hinaus bin ich froh, dass mir das geänderte Format die Möglichkeitgibt, einige Themen noch detaillierter zu beschreiben, besonders die Exper-tenroutine in der Transformation. Ich war erstaunt, kürzlich zu erfahren,dass mein – zugegebener Maßen – kurzes Beispiel aus der ersten Auflage tat-sächlich das einzig bekannte, öffentliche Beispiel für die Expertenroutinewar. Um diese Lücke zu schließen, habe ich das ausführliche Beispiel zurTransformation um ein zusätzliches Beispiel erweitert, das zeigt, wie dieidentische Aufgabenstellung mit der Expertenroutine implementiert wird.

Trotz allem erwarten Sie bitte nicht, dass dieses Buch sämtliche Problememit SAP NetWeaver BI für Sie löst. Auch wenn ich auf die Frage, welcheReports ein BI-System eigentlich darstellen kann, gerne antworte: »Alle, dieSie mit einem Algorithmus beschreiben können – es ist nur die Frage, wiehoch der Aufwand ist, den Report zu implementieren«, darf nicht die andereSeite, nämlich die Datenmodellierung, vergessen werden. Und wenn dieBedingung in der Query wieder einmal nicht die richtigen Summen undWerte anzeigt, dann überprüfen Sie doch, ob das Ergebnis nicht mit einemzusätzlichen, per User Exit gefüllten Feld und einem entsprechenden Filterviel einfacher erreicht werden kann.

Mein Dank gilt allen, die mich bei diesem Projekt unterstützt haben, insbe-sondere meinen Kollegen Regine Stechow und Jeff Prochnow; meinem ChefJoachim Repsch; Stefan Lindner, der mich damals in die Geheimnisse derBusiness Intelligence eingeführt hat; den Kollegen von der BI-RIG, im Beson-deren Rudolf Hennecke; den Kollegen aus der BI-Entwicklung, die mir wert-volle Tipps gegeben haben; meinem ehemaligen Chef Harald Stuckert, demich es verdanke, bei SAP angefangen zu haben; meinem ehemaligen MentorFrank Freitag, der mir alle Kniffe in ABAP zeigte – und allen anderen, diemich auf meinem Weg bei SAP unterstützt haben.

Vielen Dank auch an alle SDNler, allen voran natürlich Mark Finnern, CraigCmehil und Roberto Negro. Dank euch macht das Entwickeln heute nochmehr Spaß.

Der größte Dank gilt aber meiner wunderbaren Frau und meinen beiden lie-bevollen Kindern, die ohne zu murren meine viel zu geringe Freizeit mit derArbeit an diesem Buch geteilt haben. Ich danke euch und freue mich sehr aufunsere weitere Zukunft.

Dirk HerzogSenior Consultant Business IntelligenceSAP Deutschland AG & Co. KG

1228.book Seite 10 Donnerstag, 2. Oktober 2008 11:35 11

Page 7: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

11

1 Einleitung

Das Thema ABAP-Programmierung innerhalb von SAP NetWeaver BusinessIntelligence ist für viele Berater mit einer Hassliebe verbunden: Nicht jederkann das Programmierhandwerk in der SAP-Entwicklung gelernt haben,aber ich habe jedem BI-Berater, der mich um Rat gefragt hat, den Tipp gege-ben, ABAP-Kurse zu besuchen. Denn die vielfältig vorhandenen User Exitsund BAdIs bieten erfahrenen BI-Beratern die Möglichkeit, anstelle eines ein-fachen Standard-Reportings aus dem Business Content ein Reporting zu imp-lementieren, das auf die Benutzeranforderungen eingeht, dabei den Auf-wand für den Benutzer durch eine weitgehende Automatisierung minimiertund so einen deutlichen Mehrwert schafft. Dies ist mit einem erheblichgeringeren Aufwand zu implementieren als die immer wieder gerne von»alten IT-Hasen« ins Spiel gebrachte Oracle- oder Microsoft SQL Server-Datenbank. Und der Charme, den SAP NetWeaver BI dabei aufbietet, ist,dass man sich bei der Implementierung auf die Umsetzung der betriebswirt-schaftlichen Anforderungen konzentrieren kann, weil es einem die oft auf-wendige Implementierung der performanten Datenbeschaffung und -spei-cherung abnimmt und dies so effizient macht, wie man es selbst kaumimplementieren könnte.

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

Doch vor den Erfolg hat SAP den Schweiß in Form zahlreicher User Exitsgesetzt. Dabei besteht in vielen Fällen das Problem nicht darin, die Anforde-rungen zu implementieren, sondern den richtigen User Exit für die entspre-chenden Anforderungen zu finden. Mein Ziel in diesem Buch ist es deshalb,die Standard-Exits, die eigentlich in jedem BI-Projekt genutzt werden, zubeschreiben und vor allen Dingen zu erklären, wann und wie die Exitsgenutzt werden. Vielleicht wird so in Zukunft die eine oder andere Anfragedurch einen Blick in dieses Buch überflüssig.

1228.book Seite 11 Donnerstag, 2. Oktober 2008 11:35 11

Page 8: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

Einleitung1

12

Zielgruppe

Dabei wende ich mich sowohl an BI-Berater, die nur ABAP-Grundkenntnisseaufweisen, als auch an ABAP-Programmierer, die kein Vorwissen zu SAPNetWeaver BI mitbringen, aber vielleicht mit BI-Anwendern Anforderungendiskutieren müssen. Ich bemühe mich aufgrund der unterschiedlichen Ziel-gruppen daher auch darum, möglichst wenige Fachbegriffe zu verwendenund sie, wo möglich, durch einfachere Begriffe zu ersetzen oder zu erklären.

Doch auch erfahrenen BI-Beratern wird dieses Buch durch die Auswahl derBeispiele 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 dieVater-Kind-Beziehungen richtig zu sortieren sind Anforderungen, die überden üblichen Standard in BI-Projekten hinausgehen.

Damit möchte ich zeigen, dass selbst komplexe Anforderungen, die vieleBerater mit einem »Das kann BI so nicht!« quittieren würden, durch einegeschickte Wahl von Exits mit beschränktem Aufwand zu implementierensind.

Aufbau

Dieses Buch beginnt in Kapitel 2, »Performance«, mit der Performance vonABAP-Entwicklungen, da dieser Punkt oft ein kritisches Problem in der BI-Programmierung darstellt.

Die eigentlichen User Exits und BAdIs sind dann in der Reihenfolge beschrie-ben, in der die Daten die Exits durchlaufen: In Kapitel 3, »User Exits undBAdIs bei der Extraktion«, lernen Sie die Extraktion der Daten aus demQuellsystem kennen. Kapitel 4, »User Exits in Ladevorgängen von Daten«,beschreibt das Data Staging, das heißt, den Datenfluss zwischen dem Ein-gang der Daten in SAP NetWeaver BI und ihrer Ablage im Datenziel, bevor inKapitel 5, »User Exits und BAdIs im Reporting«, zum Abschluss die Möglich-keiten beschrieben werden, wie Sie mit ABAP-Programmierung in dasReporting eingreifen können. Kapitel 6, »User Exits in der Planung«, be-schreibt die User Exits sowohl in der alten Planung in BW-BPS als auch in derneuen BI-integrierten Planung. Kapitel 7, »Zusammenfassung«, fasst die Er-gebnisse dieses Buches noch einmal kurz zusammen.

Im Anhang finden Sie schließlich die Namenskonventionen für DDIC-Objekte zu typischen BI-Objekten.

1228.book Seite 12 Donnerstag, 2. Oktober 2008 11:35 11

Page 9: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

Einleitung 1

13

Voraussetzungen

Die Beispiele in diesem Buch basieren in der Regel auf SAP NetWeaver Busi-ness Intelligence 7.0. Jedoch können bis auf wenige Ausnahmen, bei denendies explizit erwähnt ist, alle Beispiele auch in SAP BW 3.x implementiertwerden. Die Beschreibung der User Exits bei der Extraktion gilt für alle vonSAP 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, dersich mit ABAP beschäftigt, mit ABAP Objects befassen sollte, weiß ich ausErfahrung, dass viele Kollegen bis jetzt nur über ein beschränktes Know-howin diesem Bereich verfügen. Und da ABAP Objects in der Exit-Programmie-rung in SAP NetWeaver BI nur selten wirkliche Vorteile bringt, verwende ichhier lieber Funktionsbausteine und kann auf diese Weise sicher sein, dass dieBeispiele verstanden werden. Wer sich gut mit ABAP Objects auskennt, wirdohnehin keine Schwierigkeiten haben, die Beispiele entsprechend umzustel-len.

Einzig bei der BI-integrierten Planung in Kapitel 6, »User Exits in der Pla-nung«, ist es nicht möglich, auf ABAP Objects zu verzichten. Deshalb gibt esin diesem Kapitel auch eine Schritt-für-Schritt-Anleitung für Einsteiger in dieMaterie. Generell ist in den letzten zwei Jahren die Entwicklung in RichtungABAP Objects so schnell verlaufen, dass ich jedem, der mit der Materie zutun hat, empfehle, sich zumindest mit den Grundlagen zu befassen.

1228.book Seite 13 Donnerstag, 2. Oktober 2008 11:35 11

Page 10: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

49

4 User Exits in Ladevorgängen von Daten

Während die Anpassung der Extraktorenergebnisse meist nur bei ausge-wählten DataSources vorkommt, wird bei den meisten Datenladevorgängenin SAP NetWeaver Business Intelligence irgendwo zwischen DataSource undInfoProvider ein User Exit durchlaufen, sei es zur Konvertierung, zur Ablei-tung neuer Merkmale oder zur Datenbereinigung. Da sich die gesamte Logikvon SAP NetWeaver Business Intelligence mit SAP NetWeaver 7.0 deutlichgeändert hat, werden in Abschnitt 4.1, »Transformation«, detailliert dieMöglichkeiten der Transformation vorgestellt, die neu eingeführt wurden.Diese sind gegenüber den Möglichkeiten in den Übertragungs- und Fort-schreibungsregeln deutlich erweitert und bieten neue Optionen.

Der einzige Nachteil ist sicherlich, dass statt der Formroutinen jetzt Metho-den generiert werden und deshalb im Exit selbst auf die verschärfte Syntaxvon ABAP Objects geprüft wird. Wer sich aber etwas damit beschäftigt, wirddies eher als Vorteil sehen, weil damit eine saubere Programmierungerzwungen wird. Und wer sich partout nicht damit abfinden kann, hatimmer noch die Chance, mit einem einfachen Aufruf eines Funktionsbau-steins in die altbekannte ABAP-Syntax zurückzukehren.

4.1 Transformation

Die Transformation wurde für SAP NetWeaver 7.0 neu eingeführt und ver-einheitlicht die Übertragungs- und Fortschreibungsregeln aus SAP BW 3.x.Während die Übertragungsregeln nur zwischen DataSource und InfoSourceangesiedelt waren und die Fortschreibungsregeln nur zwischen InfoSourceund InfoProvider1, kann die Transformation beliebige Datenquellen mit denDatenzielen verbinden.

Hinzu kommt die Möglichkeit, die Regeln grafisch wiederzugeben: Abbil-dung 4.1 zeigt die grafische Darstellung der Transformation in SAP NetWea-ver 7.0. Dabei sind im Kopf neben dem Namen der Transformation dieDatenquelle und das Datenziel angegeben. In der Grafik darunter ist im lin-ken Kasten ein Ausschnitt aus der Struktur der Datenquelle, im rechten Kas-

1 Auch bei der Fortschreibung aus einem DataStore-Objekt in einen InfoProvider ist technischgesehen eine InfoSource dazwischen geschaltet. Dies lässt sich erkennen, wenn die gene-rierten Objekte in der Administrator Workbench eingeblendet werden.

1228.book Seite 49 Donnerstag, 2. Oktober 2008 11:35 11

Page 11: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

User Exits in Ladevorgängen von Daten4

50

ten ist ein Ausschnitt aus einer Regelgruppe zu erkennen. Die Regelgruppeist eine Struktur, die der Struktur des Datenziels entspricht. Sie soll es er-möglichen, wie in SAP BW 3.x aus einem Quellsatz mehrere Sätze im Daten-ziel abzuleiten. Die teilweise erkennbaren Pfeile zeigen, welche Felder ausder Datenquelle in die entsprechenden Felder des Datenziels eingehen.

Abbildung 4.1 Grafische Darstellung der Transformation

Zusammen mit den verbesserten Möglichkeiten der Exit-Implementierungsollte daher bei neu angelegten Objekten in SAP NetWeaver 7.0 auf dieTransformation zurückgegriffen werden. Ob sich der Aufwand lohnt, diealten Datenflüsse umzustellen, hängt vom Einzelfall ab. Sie sollten es aufjeden Fall dort in Erwägung ziehen, wo entweder in den Fortschreibungs-oder Übertragungsregeln ausschließlich InfoObjekt-Zuweisungen vorkom-men und Sie die Option haben, die verwendete InfoSource zu löschen. Inden anderen Fällen lohnt sich der Aufwand nur, wenn Sie entweder dieRegel ohnehin grundlegend überarbeiten, die Vorteile der neuen Routinennutzen möchten oder die Routinen vereinheitlichen müssen, um SAP Net-Weaver BI übersichtlich zu halten. Letzteres ist besonders in Enterprise DataWarehouses erforderlich, jedoch wird nahezu jeder, der in seinem Systemmehr als drei Projekte mit jeweils unterschiedlichen Projektteams durchge-führt hat, die Notwendigkeit einer gewissen Strukturierung verstehen.

1228.book Seite 50 Donnerstag, 2. Oktober 2008 11:35 11

Page 12: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

Transformation 4.1

51

Insgesamt gibt es fünf Exits in der Transformation:

� den Exit zur Kennzahl- bzw. Datenfeldbestimmung2

� den Exit zur Merkmals- bzw. Schlüsselfeldbestimmung3

� die Startroutine

� die Endroutine

� eine Expertenroutine

Die Expertenroutine ersetzt die komplette grafische Modellierung und bietetIhnen die Möglichkeit, jedes Datenpaket in einer Routine von der Quell- indie Zielstruktur zu konvertieren. Dabei sind die Endroutine und die Exper-tenroutine mit SAP NetWeaver 7.0 neu in die Transformation eingefügt wor-den, in SAP BW 3.x gab es in den Fortschreibungs- und Übertragungsregelnnur die ersten drei Exits. Sie werden im Folgenden noch sehen, wie sehrIhnen die Endroutine und die Expertenroutine die Programmierung erleich-tern.

4.1.1 Ableitung von Merkmalen

Die Ableitung von Merkmalen bzw. Schlüsselfeldern ist sicherlich die ein-fachste Ableitung im Rahmen der BI-Exits, weil sie die wenigsten Variatio-nen hat. Sie wird in einer Vielzahl von Szenarien benötigt, zum Beispiel,wenn Felder aus dem Quellsystem nicht geliefert werden, wenn die Felderim Quellsystem eine andere Struktur haben als in SAP NetWeaver BI, wenneine Konvertierung durchgeführt werden muss oder wenn Zeitmerkmalekonvertiert werden müssen, für die keine Standardkonvertierung implemen-tiert ist.

1. Um eine Routine zur Ableitung von Merkmalen anzulegen, klicken Siedoppelt auf das Merkmal, zu dem die Routine angelegt werden soll, undgelangen in die Regeldetails.

2. Hier wählen Sie unter Regeltyp den Punkt Routine aus. Anschließendkönnen Sie mit einem Klick auf den daneben erscheinenden Anlegen-But-ton die Routine anlegen (siehe Abbildung 4.2).

2 Schreiben Sie in einen InfoCube fort, werden hier nur die Kennzahlen berechnet, bei einemDataStore-Objekt (in SAP BW 3.x: ODS-Objekt) sind es alle Datenfelder, bei einem InfoOb-jekt sind es die Attribute bzw. Texte.

3 Analog werden in einem InfoCube in diesem Exit die Merkmale bestimmt, in einem Data-Store die Schlüsselfelder und in einem InfoObjekt der Wert des InfoObjektes und eventuellgeklammerter Merkmale.

1228.book Seite 51 Donnerstag, 2. Oktober 2008 11:35 11

Page 13: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

User Exits in Ladevorgängen von Daten4

52

Abbildung 4.2 Anlegen einer Routine

Dabei generiert SAP NetWeaver BI eine Rahmenklasse, in die nur die Imp-lementierung eingefügt wird. Das generierte Coding sieht dabei wie in Lis-ting 4.1 aus. Als Eingabe haben Sie die Satznummer, die Anzahl der Sätze,die Quellstruktur des aktuellen Satzes und einige Informationen über denStatus des Ladeprozesses, als Rückgabe werden nur der Wert des Merk-mals und einige Statusinformationen verlangt.

Anmerkung

Viele der folgenden Listingbeispiele enthalten englische Kommentare. Diese wer-den automatisch vom System erzeugt, unabhängig von der Anmeldesprache.

PROGRAM trans_routine.*---------------------------------------** CLASS routine DEFINITION*---------------------------------------***---------------------------------------*CLASS routine DEFINITION.

PUBLIC SECTION.

TYPES:BEGIN OF _ty_s_SC_1,

* InfoObject: 0METYPE Key Figure Type.METYPE TYPE /BI0/OIMETYPE,

END OF _ty_s_SC_1.TYPES:BEGIN OF _ty_s_TG_1,

* InfoObject: 0METYPE Key Figure Type.METYPE TYPE /BI0/OIMETYPE,

END OF _ty_s_TG_1.PRIVATE SECTION.

TYPE-POOLS: rsd, rstr.*$*$ begin of global –* insert your declaration only below this line *-*... "insert your code here*$*$ end of global –

1228.book Seite 52 Donnerstag, 2. Oktober 2008 11:35 11

Page 14: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

Transformation 4.1

53

* insert your declaration only before this line *-*

METHODScompute_0METYPEIMPORTING

request TYPE rsrequestdatapackid TYPE rsdatapidSOURCE_FIELDS TYPE _ty_s_SC_1

EXPORTINGRESULT TYPE _ty_s_TG_1-METYPEmonitor TYPE rstr_ty_t_monitor

RAISINGcx_rsrout_abortcx_rsrout_skip_record.

ENDCLASS. "routine DEFINITION

*---------------------------------------** CLASS routine IMPLEMENTATION*---------------------------------------***---------------------------------------*CLASS routine IMPLEMENTATION.

METHOD compute_0METYPE.DATA:

MONITOR_REC TYPE rsmonitor.*$*$ begin of routine –* insert your code only below this line *-*... "insert your code here*-- fill table "MONITOR" with values of structure*- "MONITOR_REC" to make monitor entries... "to cancel the update process* raise exception type CX_RSROUT_ABORT.... "to skip a record* raise exception type CX_RSROUT_SKIP_RECORD.

* result value of the routineRESULT = .

*$*$ end of routine –* insert your code only before this line *-*

ENDMETHOD. "compute_0METYPEENDCLASS. "routine IMPLEMENTATION

Listing 4.1 Generierte Methode der Merkmalsableitung

1228.book Seite 53 Donnerstag, 2. Oktober 2008 11:35 11

Page 15: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

User Exits in Ladevorgängen von Daten4

54

Wenn Sie sich noch nicht mit objektorientierter Programmierung ausken-nen, müssen Sie an dieser Stelle nicht erschrecken. Dadurch, dass die Rah-menklasse vorgegeben ist, müssen Sie sich ausschließlich mit der Implemen-tierung der Logik beschäftigen und brauchen sich nicht um Vererbung,Interfaces, Attribute etc. zu kümmern. Dies ist an dieser Stelle sogar nocheinfacher als die Implementierung eines BAdI.

Betrachten Sie nun das Listing 4.1 genau: Zu Beginn werden zwei Typendefiniert, _ty_s_SC_1 und _ty_s_TG_1. Der Inhalt der beiden Typen hängtdavon ab, welche Felder Sie in der grafischen Modellierung miteinander ver-binden. Im einfachsten Fall wird nur das Feld 0METYPE der Datenquelle mitdem Feld 0METYPE des Datenziels verbunden, daher enthalten beide Typenauch genau dieses Feld.

Anschließend folgt eine Sektion, in der Sie globale Datenobjekte definierenkönnen. Alle Datendefinitionen, die Sie hier vornehmen, treten in sämtli-chen in dieser Transformation angelegten Routinen auf, und Sie können aufdiese Art und Weise Daten aus einer Routine in die nächste übertragen.

Im nächsten Abschnitt des Listings folgt die Definition der Methode. ABAPObjects trennt zwischen der Definition und der Implementierung derMethode, daher wird hier erst einmal nur die Schnittstelle definiert. Dieseenthält als Importparameter neben der Request-Nummer und der Datenpa-ketnummer nur die Struktur SOURCE_FIELDS, die den definierten Typ _ty_s_SC_1 hat und die die ausgewählten Felder der Quellstruktur enthält. AlsExportparameter sind nur das Feld RESULT für das Ergebnis und die TabelleMONITOR für Fehlermeldungen vorhanden. Die in SAP BW 3.x vorhandenenFlags RETURNCODE und ABORT werden jetzt durch entsprechende Exceptionsersetzt. Soll der Datensatz übersprungen werden, fügen Sie die AnweisungRAISE cx_rsrout_skip_record ein, soll die komplette Verarbeitung desDatenpaketes abgebrochen werden, fügen Sie RAISE cx_rsrout_abort ein. Dainsbesondere die Behandlung des Parameters RETURNCODE in SAP BW 3.xwenig intuitiv war, da er sich in den Übertragungsregeln, in denen er keineFehlermeldung verursachte, anders verhielt als in den Fortschreibungsregeln,in denen er eine Fehlermeldung verursachte, ist dies als deutlicher Fortschrittzu sehen.

Sonst ist die Implementierung trotz leicht veränderter Parameternamenpraktisch identisch mit der Implementierung der Übertragungs- und Fort-schreibungsregeln in SAP BW 3.x, sodass Sie sich praktisch nicht umstellenmüssen und in den meisten Fällen das bestehende Coding kopieren können.

1228.book Seite 54 Donnerstag, 2. Oktober 2008 11:35 11

Page 16: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

Transformation 4.1

55

Die einzige Einschränkung besteht in der strengeren Prüfung der ABAPObjects-Syntax. Wer jedoch absolut nicht auf Tabellen mit Kopfzeilen und alldie anderen lieb gewordenen »Schnörkel« in ABAP verzichten kann, ruft hiereinfach einen Funktionsbaustein auf und kann wieder die komplette Band-breite der zu Recht entfernten ABAP-Relikte benutzen.

Beispiel: Entfernung von Sonderzeichen

Ein typisches Problem beim Laden aus Fremdsystemen ist, dass in Eingabefeldernwie Namen und Straßen auch beliebige Sonderzeichen auftreten können, zum Bei-spiel bei ausländischen Adressen oder Fehleingaben. Diese fangen Sie am bestenper Routine ab. In Listing 4.2 werden in einem InfoObjekt NAME vom Typ CHAR(60)alle Sonderzeichen durch Leerzeichen ersetzt.

Simple Routinen dieser Art führen zu einer deutlich höheren Stabilität der Lade-prozesse und damit zu einem wesentlich geringeren Wartungsaufwand.

METHOD compute_NAME.

DATA:

MONITOR_REC TYPE rsmonitor.

*$*$ begin of routine –

* insert your code only below this line *-*

DATA: l_d_offset LIKE sy-index.

CONSTANTS: c_allowed(100) TYPE c

value 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_'.

RESULT = SOURCE_FIELDS-/BIC/NAME.

* Es sind nur Großbuchstaben erlaubt, also Umwandlung in

* Großbuchstaben.

TRANSLATE RESULT TO UPPER CASE.

DO 60 TIMES.

l_d_offset = sy-index – 1.

IF RESULT+l_d_offset(1) CO c_allowed.

* Erlaubtes Zeichen, mache nichts

ELSE.

* Zeichen nicht erlaubt, ersetzen durch Leerzeichen

RESULT+l_d_offset(1) = ' '.

ENDIF.

ENDDO.

*$*$ end of routine –

* insert your code only before this line *-*

ENDMETHOD. "compute_NAME

Listing 4.2 Methode zum Entfernen von Sonderzeichen

1228.book Seite 55 Donnerstag, 2. Oktober 2008 11:35 11

Page 17: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

User Exits in Ladevorgängen von Daten4

56

4.1.2 Ableitung von Kennzahlen

Die Ableitung von Kennzahlen und Datenfeldern tritt fast ebenso häufig aufwie die Ableitung von Merkmalen und Schlüsselfeldern. Sie wird zum Bei-spiel für einfache Berechnungen verwendet (Rechnungsbetrag = Listenpreis+ Sonderausstattung – Rabatt). Aber auch die Fälle der Ableitung von Merk-malen treten hier auf, wenn die Merkmale im Datenteil von DataStore-Objekten enthalten sind.

Die Ableitung von Kennzahlen bzw. Datenfeldern in der Transformation istim einfachsten Fall genau so simpel wie die Ableitung von Merkmalen – undverwendet sogar exakt dieselbe Routine. Jedoch gibt es eine Abweichung,nämlich die Einheitenberechnung in der Routine.

1. Dazu wählen Sie eine Kennzahl in Ihrem Datenziel aus und öffnen perDoppelklick auf die Kennzahl das bereits bekannte Fenster Regeldetails

(siehe Abbildung 4.3).

Abbildung 4.3 Anlegen einer Routine mit Einheitenberechnung

1228.book Seite 56 Donnerstag, 2. Oktober 2008 11:35 11

Page 18: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

Transformation 4.1

57

2. Nun können Sie unter Regeltyp den Eintrag Routine mit Einheit auswäh-len.

3. Klicken Sie auf den Ändern-Button neben dem Regeltyp, so öffnet sich derABAP Editor. Dabei generiert das System automatisch das Coding in Lis-ting 4.3.

PROGRAM trans_routine.

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

* CLASS routine DEFINITION

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

*

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

CLASS routine DEFINITION.

PUBLIC SECTION.

TYPES:

BEGIN OF _ty_s_SC_1,

* InfoObject: 0AMOUNT Amount.

AMOUNT TYPE /BI0/OIAMOUNT,

* InfoObject: 0CURRENCY Curr. Key.

CURRENCY TYPE /BI0/OICURRENCY,

END OF _ty_s_SC_1.

TYPES:

BEGIN OF _ty_s_TG_1,

* InfoObject: 0AMOUNT Amount.

AMOUNT TYPE /BI0/OIAMOUNT,

* InfoObject: 0CURRENCY Curr. Key.

CURRENCY TYPE /BI0/OICURRENCY,

END OF _ty_s_TG_1.

PRIVATE SECTION.

TYPE-POOLS: rsd, rstr.

*$*$ begin of global –

* insert your declaration only below this line *-*

... "insert your code here

*$*$ end of global –

* insert your declaration only before this line *-*

METHODS

compute_0AMOUNT

IMPORTING

request TYPE rsrequest

1228.book Seite 57 Donnerstag, 2. Oktober 2008 11:35 11

Page 19: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

User Exits in Ladevorgängen von Daten4

58

datapackid TYPE rsdatapid

SOURCE_FIELDS TYPE _ty_s_SC_1

EXPORTING

RESULT TYPE _ty_s_TG_1-AMOUNT

CURRENCY TYPE _ty_s_TG_1-CURRENCY

monitor TYPE rstr_ty_t_monitor

RAISING

cx_rsrout_abort

cx_rsrout_skip_record.

ENDCLASS. "routine DEFINITION

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

* CLASS routine IMPLEMENTATION

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

*

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

CLASS routine IMPLEMENTATION.

METHOD compute_0AMOUNT.

DATA:

MONITOR_REC TYPE rsmonitor.

*$*$ begin of routine –

* insert your code only below this line *-*

... "insert your code here

*-- fill table "MONITOR" with values of structure

* "MONITOR_REC" to make monitor entries

... "to cancel the update process

* raise exception type CX_RSROUT_ABORT.

... "to skip a record

* raise exception type CX_RSROUT_SKIP_RECORD.

* result values of the routine

RESULT = .

CURRENCY = .

*$*$ end of routine –

* insert your code only before this line *-*

ENDMETHOD. "compute_0AMOUNT

ENDCLASS. "routine IMPLEMENTATION

Listing 4.3 Kennzahlenberechnung mit Einheitenrückgabe

1228.book Seite 58 Donnerstag, 2. Oktober 2008 11:35 11

Page 20: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

Transformation 4.1

59

Die Kennzahlenberechnung mit Einheitenrückgabe kann für zwei verschie-dene Arten von Einheiten verwendet werden: für Mengeneinheiten undWährungen. Während die Berechnung von Währungen meist besser durcheine passende Umrechnungsart durchgeführt wird, ist diese Routine die ein-zige Möglichkeit, eine Mengeneinheiten-Umrechnung durchzuführen.

Die Umrechnung von Währungen ist dann notwendig, wenn es sonst zuAbbrüchen kommt, weil Sätze ohne Betrag und ohne Quellwährung geliefertwerden. In diesem Fall sollten Sie die Währungsumrechnung selbst überneh-men. Dies sieht dann aus wie in Listing 4.4.

CLASS routine IMPLEMENTATION.

METHOD compute_0AMOUNT.

* Hier wird die angelieferte Währung in Euro umgerechnet.

* Wird keine Währung geliefert, wird 0 Euro

* zurückgegeben.

DATA:

MONITOR_REC TYPE rsmonitor.

*$*$ begin of routine –

* insert your code only below this line *-*

... "insert your code here

*-- fill table "MONITOR" with values of structure

*- "MONITOR_REC" to make monitor entries

... "to cancel the update process

* raise exception type

* CX_RSROUT_ABORT.

... "to skip a record

* raise exception type

* CX_RSROUT_SKIP_RECORD.

* result values of the routine

IF SOURCE_FIELDS-CURRENCY IS INITIAL.

RESULT = 0.

CURRENCY = 'EUR'.

ELSE.

CALL FUNCTION

'CONVERT_TO_LOCAL_CURRENCY'

EXPORTING

DATE = sy-datum

FOREIGN_AMOUNT =

SOURCE_FIELDS-amount

FOREIGN_CURRENCY =

1228.book Seite 59 Donnerstag, 2. Oktober 2008 11:35 11

Page 21: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

User Exits in Ladevorgängen von Daten4

60

Eine etwas einfachere Alternative dazu ist, bereits in der Startroutine dieWährung 0CURRENCY auf EUR zu setzen. Wird jedoch die Währung in einweiteres Feld fortgeschrieben, kann es einen Unterschied machen, ob SieEuro oder keine Währung fortschreiben.

Die einzige Routine, die in der Transformation gegenüber den alten Fort-schreibungsregeln fehlt, ist die Routine mit Rückgabetabelle. In den meistenFällen kann diese durch die in Listing 4.6 beschriebene Endroutine ersetztwerden, in manchen Fällen werden Sie auf die Expertenroutine zurückgrei-fen müssen. Auch wenn dadurch in Einzelfällen der Umstellungsaufwandgrößer wird, ist die Entscheidung auf den Verzicht sicherlich richtig. Bei derRückgabetabelle war es nie ganz klar, in welcher Reihenfolge die einzelnenExits nun aufgerufen werden, was gelegentlich zu Verwirrungen führenkonnte.

4.1.3 Startroutine in der Transformation

Die Startroutine in der Transformation dient primär der Aufbereitung derQuelldaten. Sie sollte überall dort verwendet werden, wo das Quellsystemdie Daten in einer anderen Form liefert, als SAP NetWeaver BI sie erwartet.Hier sollten Sie Konvertierungen durchführen, wenn zum Beispiel Kostenar-ten ohne Alphakonvertierung oder das Datum im Format 01.05.06 geliefert

SOURCE_FIELDS-currency

LOCAL_CURRENCY = 'EUR'

TYPE_OF_RATE = 'M'

IMPORTING

LOCAL_AMOUNT = RESULT

EXCEPTIONS

OTHERS = 1.

IF sy-subrc = 0.

CURRENCY = 'EUR'.

ELSE.

RESULT = SOURCE_FIELDS-amount.

CURRENCY = SOURCE_FIELDS-currency.

ENDIF.

*$*$ end of routine –

* insert your code only before this line *-*

ENDMETHOD. "compute_0AMOUNT

ENDCLASS. "routine IMPLEMENTATION

Listing 4.4 Währungsumrechnung in der Transformation

1228.book Seite 60 Donnerstag, 2. Oktober 2008 11:35 11

Page 22: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

Transformation 4.1

61

werden. Außerdem können Sätze aus dem Quellsystem, die in SAP NetWea-ver BI nicht benötigt werden, hier schon gelöscht werden. In der Regel ist eseffizienter, mehrere Datenoperationen in der Startroutine durchzuführen,als diese in Einzelroutinen aufzuteilen, insbesondere wenn diese auch nochdieselben Zwischenergebnisse zur Berechnung erfordern.

Eine weitere Anwendung, die Sie gut und effizient in der Startroutine durch-führen können, ist die Verkleinerung des Datenpaketes. Da Sie das gesamteDatenpaket in einer internen Tabelle haben, können Sie performant mit derAnweisung DELETE SOURCE_PACKAGE WHERE ... die Datenmenge verkleinern.Führen Sie dies durch eine Ausnahme in der Merkmalsroutine aus, ist dasweit weniger performant, weil in diesem Fall die Sätze erst aufwendig für dieMerkmalsberechnung aufbereitet werden.

Die Startroutine kann entweder über das Menü der Transformation mittelsEinfügen � Startroutine anlegen oder über einen Klick auf den entspre-chenden Button (siehe Abbildung 4.4) angelegt werden.

Abbildung 4.4 Button zum Anlegen einer Startroutine

Die Startroutine hat als Importing-Parameter den Request sowie die Daten-paketnummer und als Exporting-Parameter die Tabelle mit den Fehlersätzen.Wichtigster Parameter ist jedoch die eigentliche Tabelle SOURCE_PACKAGEmit den Datensätzen, die als Changing-Parameter definiert ist.

Der Effekt, der in Release 3.x bei der Startroutine oft störte, war, dass Felder,die im InfoCube vorhanden waren, in der Startroutine gefehlt haben. DieserEffekt kann nun durch das Vorhandensein der Endroutine praktisch ver-nachlässigt werden. Daher sollten Sie die Startroutine hauptsächlich für Ini-tialisierungen, Datenbereinigung und Löschung von überflüssigen Sätzenverwenden.

Im Beispiel in Listing 4.5 werden zuerst ungültige Zeilen aus dem Datenpa-ket gelöscht und anschließend eine Stammdatentabelle initialisiert.

PROGRAM trans_routine.

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

* CLASS routine DEFINITION

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

*

1228.book Seite 61 Donnerstag, 2. Oktober 2008 11:35 11

Page 23: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

User Exits in Ladevorgängen von Daten4

62

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

CLASS routine DEFINITION.

PUBLIC SECTION.

TYPES:

BEGIN OF _ty_s_SC_1,

* InfoObject: 0CO_AREA Contr. area.

CO_AREA TYPE /BI0/OICO_AREA,

* InfoObject: 0CO_DOC_NO CO Doc.No.

CO_DOC_NO TYPE /BI0/OICO_DOC_NO,

* ...

END OF _ty_s_SC_1.

TYPES:

_ty_t_SC_1

TYPE STANDARD TABLE OF _ty_s_SC_1

WITH NON-UNIQUE DEFAULT KEY.

PRIVATE SECTION.

TYPE-POOLS: rsd, rstr.

*$*$ begin of global –

* insert your declaration only below this line *-*

DATA: g_t_costcenter

TYPE /bi0/qcostcenter

WITH UNIQUE KEY

co_area

costcenter

objvers

dateto.

*$*$ end of global –

* insert your declaration only before this line *-*

METHODS

start_routine

IMPORTING

request TYPE rsrequest

datapackid TYPE rsdatapid

EXPORTING

monitor TYPE rstr_ty_t_monitors

CHANGING

SOURCE_PACKAGE TYPE _ty_t_SC_1

RAISING

1228.book Seite 62 Donnerstag, 2. Oktober 2008 11:35 11

Page 24: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

Transformation 4.1

63

cx_rsrout_abort.

ENDCLASS. "routine DEFINITION

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

* CLASS routine IMPLEMENTATION

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

*

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

CLASS routine IMPLEMENTATION.

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

* Method start_routine

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

* Calculation of source package via

* start routine

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

* <-> source package

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

METHOD start_routine.

*=== Segments ===

FIELD-SYMBOLS:

<SOURCE_FIELDS> TYPE _ty_s_SC_1.

DATA:

MONITOR_REC TYPE rstmonitor.

*$*$ begin of routine –

* insert your code only below this line *-*

... "insert your code here

*-- fill table "MONITOR" with values of structure

* "MONITOR_REC" to make monitor entries

* Zuerst werden die Zeilen gelöscht, die als Partnerobjekt

* einen Auftrag haben.

DELETE SOURCE_PACKAGE WHERE

PIOBJSV = '0COR'.

* Anschließend wird die Tabelle der Kostenstellen

* initialisiert.

DATA: r_cctr TYPE RANGE OF

/bi0/oicostcenter, "Ranges-Tabelle für

"Kostenstellen

1228.book Seite 63 Donnerstag, 2. Oktober 2008 11:35 11

Page 25: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

User Exits in Ladevorgängen von Daten4

64

Beide gezeigten Techniken sind typisch für Startroutinen. Als die Startrou-tine in Release SAP BW 3.x die einzige Routine war, in der das kompletteDatenpaket berechnet wurde, wurde sie oft für eine Vielzahl von Berechnun-gen verwendet. Dies gehört aber systematisch eher in die Endroutine.

4.1.4 Endroutine in der Transformation

Die Endroutine in der Transformation dient hauptsächlich den Nachberei-tungen der Daten. Hier sind neue Felder zu berechnen, die nicht direkt gelie-fert werden; und hier können zusätzliche Prüfsummen, die im Datenzielfortgeschrieben werden sollen, bestimmt werden. Zudem sollte hier einedatenzielspezifische Anpassung der Daten geschehen.

w_cctr LIKE LINE OF r_cctr. "Kopfzeile zu r_cctr

CLEAR w_cctr.

w_cctr-sign = 'I'. "Einschließende Selektion

w_cctr-option = 'EQ'. "Gleichheit abfragen

* In folgender Schleife wird eine Ranges-Tabelle mit allen

* Kostenstellen aufgebaut.

LOOP AT source_package

ASSIGNING <SOURCE_FIELDS>.

w_cctr-low = <SOURCE_FIELDS>-costcenter.

COLLECT w_cctr into r_cctr.

ENDLOOP.

* Jetzt werden die Kostenstellen in die globale Tabelle

* gelesen, die auch im Datenpaket vorhanden sind.

SELECT * FROM /bi0/qcostcenter

INTO TABLE g_t_costcenter

WHERE costcenter IN r_cctr

AND objvers = 'A'.

... "to cancel the update process

* raise exception type

* CX_RSROUT_ABORT.

*$*$ end of routine –

* insert your code only before this line *-*

ENDMETHOD. "start_routine

ENDCLASS. "routine IMPLEMENTATION

Listing 4.5 Beispiel für eine Startroutine inklusive generierter Methode

1228.book Seite 64 Donnerstag, 2. Oktober 2008 11:35 11

Page 26: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

Transformation 4.1

65

Sie können die Endroutine auch für Validierungen benutzen, beispielsweisekönnen Sie erst den Umsatz pro Kunden berechnen und dann in der Endrou-tine alle Sätze löschen, bei denen Kunden unter 10.000 € Umsatz bleiben.Die eigentliche Frage, ob die Berechnung in der Startroutine oder in der End-routine geschieht, wird aber in der Regel aufgrund anderer Überlegungenbeantwortet, insbesondere aufgrund der Frage, ob die Felder, die Sie zurBerechnung der Algorithmen benötigen, denn auch in das Datenziel fortge-schrieben werden.

Betrachten Sie nun die generierte Methode einer Endroutine (siehe Listing4.6). Sie erkennen in der Endroutine deutlich das Spiegelbild zur Startrou-tine. Der einzige Unterschied im Coding ist, dass das SOURCE_PACKAGE ausder Startroutine hier RESULT_PACKAGE heißt.

Beispiel zur Positionsauswahl für die Berechnung

In ein Datenziel soll eine Kostenstellenkategorie KSTKAT fortgeschrieben werden,die sich aus der Kostenstelle und dem Kennzeichen für die Be- und Entlastungableitet. Dabei werden je ca. 100 Kostenstellen zu einer Kostenstellenkategoriezusammengefasst. In der DataSource ist nur die Kostenstelle enthalten. Für dieBerechnung gibt es nun vier mögliche Stellen.

� In der Endroutine ist es systematisch am saubersten, weil die Anreicherungnicht der Datenaufbereitung dient. Jedoch ist die Ableitung dort nur möglich,wenn die Kostenstelle so oder so fortgeschrieben wird. Anderenfalls ist es nichtsinnvoll, die Daten um den Faktor 100 unnötig zu erhöhen.

� In der Startroutine ist es immer möglich, jedoch muss gegebenenfalls die Data-Source um das Feld KSTKAT erweitert werden, auch wenn das Feld in derDatenquelle leer bleibt. Diese Erweiterung ist in der Regel problemlos möglich,muss aber gut dokumentiert werden, da sich Folgeprojekte darauf verlassenkönnten, dass die Datenquelle das Feld liefert.

� In der Routine zur Merkmalsableitung ist es auch möglich und sinnvoll, jedochist es nicht so performant wie in der Start- oder Endroutine. Dafür müssenweder die Quell- noch die Datenzielstruktur angepasst werden.

� Sie können auch die ganze Transformation durch eine sogenannte Expertenrou-tine ersetzen. Dies ist besonders dann sinnvoll, wenn Quell- und Zielfelder starkvoneinander abweichen, jedoch müssen Sie dann jede einzelne Feldableitungprogrammieren und können keine Standardwährungsumrechnung etc. verwen-den.

Fazit: Es gibt keine Standardlösung für die beste zu verwendende Routine, sondernSie müssen von Fall zu Fall entscheiden, welche Lösung die sinnvollste ist.

1228.book Seite 65 Donnerstag, 2. Oktober 2008 11:35 11

Page 27: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

User Exits in Ladevorgängen von Daten4

66

PROGRAM trans_routine.

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

* CLASS routine DEFINITION

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

*

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

CLASS routine DEFINITION.

PUBLIC SECTION.

TYPES:

BEGIN OF _ty_s_TG_1,

* InfoObject: 0FISCPER Fiscal year / per.

FISCPER TYPE /BI0/OIFISCPER,

* InfoObject: 0FISCVARNT Fiscal year var.

FISCVARNT TYPE /BI0/OIFISCVARNT,

* ...

END OF _ty_s_TG_1.

TYPES:

_ty_t_TG_1

TYPE STANDARD TABLE OF _ty_s_TG_1

WITH NON-UNIQUE DEFAULT KEY.

PRIVATE SECTION.

TYPE-POOLS: rsd, rstr.

*$*$ begin of global –

* insert your declaration only below this line *-*

... "insert your code here

*$*$ end of global –

* insert your declaration only before this line *-*

METHODS

end_routine

IMPORTING

request TYPE rsrequest

datapackid TYPE rsdatapid

EXPORTING

monitor TYPE rstr_ty_t_monitors

CHANGING

RESULT_PACKAGE TYPE _ty_t_TG_1

RAISING

cx_rsrout_abort.

1228.book Seite 66 Donnerstag, 2. Oktober 2008 11:35 11

Page 28: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

Transformation 4.1

67

ENDCLASS. "routine DEFINITION

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

* CLASS routine IMPLEMENTATION

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

*

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

CLASS routine IMPLEMENTATION.

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

* Method end_routine

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

* Calculation of result package via

* end routine

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

* <-> result package

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

METHOD end_routine.

*=== Segments ===

FIELD-SYMBOLS:

<RESULT_FIELDS> TYPE _ty_s_TG_1.

DATA:

MONITOR_REC TYPE rstmonitor.

*$*$ begin of routine –

* insert your code only below this line *-*

... "insert your code here

*-- fill table "MONITOR" with values of structure

*- "MONITOR_REC" to make monitor entries

... "to cancel the update process

* raise exception type CX_RSROUT_ABORT.

*$*$ end of routine –

* insert your code only before this line *-*

ENDMETHOD. "end_routine

ENDCLASS. "routine IMPLEMENTATION

Listing 4.6 Generierte Methode einer Endroutine

1228.book Seite 67 Donnerstag, 2. Oktober 2008 11:35 11

Page 29: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

User Exits in Ladevorgängen von Daten4

68

4.1.5 Expertenroutine in der Transformation

Sowohl die Startroutine als auch die Endroutine können nur effizient pro-grammiert werden, wenn sowohl die Ausgangs- als auch die Zieldaten derAbleitungsformeln im InfoProvider bzw. in der InfoSource vorhanden sind.Dies lässt sich in der Praxis jedoch nur bedingt umsetzen.

Mit SAP NetWeaver 7.0 gibt es nun eine weitere Möglichkeit, dieses Pro-blem zu lösen: In der Expertenroutine haben Sie die Option, die Transforma-tion von Quell- in Zieldaten komplett selbst zu implementieren. Implemen-tieren Sie diese Routine, so muss auch die komplette Zielstruktur gefülltwerden, inklusive der Einheiten und einer eventuellen Währungsumrech-nung. Eine eventuelle Attributsableitung muss ebenfalls dann per Hand imp-lementiert werden.

Am komplexesten dürfte aber das Fehler-Handling sein, da Sie in der Exper-tenroutine keine einfache Monitortabelle erhalten, sondern ein Objekt LOGder Klasse CL_RSBM_LOG_CURSOR_STEP. Dieses Objekt nimmt nicht nurdie Nachrichten entgegen, sondern stellt den gesamten Nachrichtenbaumzur Verfügung und dürfte für den unerfahrenen Programmierer das größteHindernis sein, da es doch weitergehende Kenntnisse der objektorientiertenProgrammierung voraussetzt.

Die Expertenroutine besitzt gegenüber der Standardtransformation auchPerformancevorteile. In der normalen Transformation wird nämlich fürjedes Feld des Datenziels eine Routine aufgerufen, die das Feld füllt. WennSie eine einfache Feldzuweisung ausführen, steht in dieser nur eine einfacheZuweisungsanweisung. In diesem Fall ist der ganze Overhead, der zum Auf-bau des Satzes durchgeführt wird, natürlich deutlich langsamer als dersimple MOVE-CORRESPONDING-Befehl, den Sie in der Expertenroutine an dieserStelle verwenden würden.

Ein anderer wesentlicher Grund für den Einsatz der Expertenroutine ist dieMöglichkeit, auf diese Art und Weise eine Historie der Transformation zuerhalten. Ändern sich Transformationen häufig, kann es wichtig sein, imNachhinein feststellen zu können, mit welchen Transformationsregelnbestimmte Daten geladen wurden. Dies ist im Standard nur möglich, wenndie Regeln zum Beispiel sauber in Microsoft Word dokumentiert wurden.Lagern Sie die Expertenroutine jedoch in eine Methode aus, können Sie mitder ABAP-Änderungshistorie jederzeit nachvollziehen, wann welcher Trans-port in das Produktivsystem importiert wurde und welcher Stand zum Zeit-punkt eines bestimmten Datenpaketes galt. Dies setzt natürlich voraus, dass

1228.book Seite 68 Donnerstag, 2. Oktober 2008 11:35 11

Page 30: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

Transformation 4.1

69

der InfoCube noch nicht komprimiert wurde und somit die Request-Num-mer zur Identifikation des Zeitpunkts noch im InfoCube gespeichert ist.

Die Entscheidung, was Sie in der Expertenroutine tun, ist relativ simpel:Wenn Sie aufgrund von Performanceüberlegungen nicht ohnehin die Exper-tenroutine wählen, sollten Sie sie immer dann auswählen, wenn Sie für dieAbleitungen sowohl die Start- als auch die Endroutine benötigen bzw. meh-rere komplexe Routinen zur Merkmals- und Kennzahlenableitung.

Die Expertenroutine kann nur über das Menü Bearbeiten � Expertenroutine

anlegen eingerichtet werden. Legen Sie eine Expertenroutine an, so verän-dert sich das Bild der Transformation, wie in Abbildung 4.5 gezeigt. Wie Siesehen, wurde die Vielzahl von Verbindungen durch einen Pfeil ersetzt, derdie Beschriftung Expertenroutine trägt.

Abbildung 4.5 Transformation mit Expertenroutine

Nach dem Anlegen der Routine erstellt das System automatisch das in Listing4.7 abgebildete Coding.

1228.book Seite 69 Donnerstag, 2. Oktober 2008 11:35 11

Page 31: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

User Exits in Ladevorgängen von Daten4

70

PROGRAM trans_routine.

*---------------------------------------** CLASS routine DEFINITION*---------------------------------------***---------------------------------------*CLASS routine DEFINITION.

PUBLIC SECTION.

TYPES:BEGIN OF _ty_s_SC_1,

* InfoObject: 0CO_AREA Cont. area.CO_AREA TYPE /BI0/OICO_AREA,

* InfoObject: 0CO_DOC_NO CO Doc. Number.* ...* Field: RECORD.

RECORD TYPE RSARECORD,END OF _ty_s_SC_1.

TYPES:_ty_t_SC_1TYPE STANDARD TABLE OF _ty_s_SC_1WITH NON-UNIQUE DEFAULT KEY.

TYPES:BEGIN OF _ty_s_TG_1,

* InfoObject: 0FISCPER Fiscal year/per.FISCPER TYPE /BI0/OIFISCPER,

* InfoObject: 0FISCVARNT Fisc. year var.FISCVARNT TYPE /BI0/OIFISCVARNT,

* ...* Field: RECORD.

RECORD TYPE RSARECORD,END OF _ty_s_TG_1.

TYPES:_ty_t_TG_1TYPE STANDARD TABLE OF _ty_s_TG_1WITH NON-UNIQUE DEFAULT KEY.

PRIVATE SECTION.TYPE-POOLS: rsd, rstr.

*$*$ begin of global –* insert your declaration only below this line *-*... "insert your code here

1228.book Seite 70 Donnerstag, 2. Oktober 2008 11:35 11

Page 32: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

Transformation 4.1

71

*$*$ end of global –* insert your declaration only before this line *-*

METHODSexpert_routineIMPORTING

request TYPE rsrequestdatapackid TYPE rsdatapidSOURCE_PACKAGE TYPE _ty_t_SC_1log TYPE REF TO cl_rsbm_log_cursor_step

EXPORTINGRESULT_PACKAGE TYPE _ty_t_TG_1.

METHODSinverse_expert_routineIMPORTING

i_r_selset_outbound TYPE REF TOcl_rsmds_set

i_th_fields_outbound TYPErstran_t_field_inv

i_r_universe_inbound TYPE REF TOcl_rsmds_universe

CHANGINGc_r_selset_inbound TYPE REF TO

cl_rsmds_setc_th_fields_inbound TYPE

rstran_t_field_invc_exact TYPE

rs_bool.ENDCLASS. "routine DEFINITION

*---------------------------------------** CLASS routine IMPLEMENTATION*---------------------------------------***---------------------------------------*CLASS routine IMPLEMENTATION.

*---------------------------------------** Method expert_routine*---------------------------------------** Calculation of result package via* expert routine*---------------------------------------** -> package of source segments

1228.book Seite 71 Donnerstag, 2. Oktober 2008 11:35 11

Page 33: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

User Exits in Ladevorgängen von Daten4

72

* <- result package*---------------------------------------*

METHOD expert_routine.*=== Segments ===

FIELD-SYMBOLS:<SOURCE_FIELDS> TYPE _ty_s_SC_1.

DATA:RESULT_FIELDS TYPE _ty_s_TG_1.

*$*$ begin of routine –* insert your code only below this line *-*... "insert your code here*$*$ end of routine –* insert your code only before this line *-*

ENDMETHOD. "expert_routine*---------------------------------------** Method inverse_expert_routine*---------------------------------------*** This subroutine needs to be implemented only for* direct access (for better performance) and for the* Report/Report Interface (drill through). The inverse* routine should transform a projection and a selection for* the target to a projection and a selection for the* source, respectively. If the implementation remains empty* all fields are filled and all values are selected.**---------------------------------------***---------------------------------------*

METHOD inverse_expert_routine.

*$*$ begin of inverse routine –* insert your code only below this line *-*... "insert your code here*$*$ end of inverse routine –* insert your code only before this line *-*

ENDMETHOD. "inverse_expert_routineENDCLASS. "routine IMPLEMENTATION

Listing 4.7 Generierte Methode einer Expertenroutine

1228.book Seite 72 Donnerstag, 2. Oktober 2008 11:35 11

Page 34: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

Transformation 4.1

73

Sie erkennen auch hier wieder das eigentlich simple Interface der Methode.Sie erhalten die Request-Nummer REQUEST und die DatenpaketnummerDATAPACKID sowie die Tabelle der Quellmerkmale SOURCE_PACKAGE undfüllen daraus die Tabelle RESULT_PACKAGE und das Objekt LOG, das derRückgabe der Fehlersätze dient. Dabei ist das Datenobjekt LOG keine einfacheTabelle, wie sonst bei den Routinen üblich, sondern Sie können und müssenhier die komplette Struktur des Nachrichtenbaums selbst aufbauen.

Auch hier können Sie wieder globale Datenstrukturen definieren. Sie werdensich jetzt vielleicht fragen, wozu das nötig ist, wenn Sie nur eine Routine inder gesamten Transformation haben. Auf diese Weise können Sie Daten voneinem Datenpaket zum nächsten übergeben. Dies ist insbesondere für Custo-mizing-Tabellen und Ableitungstabellen sinnvoll, die Sie von der Datenbanklesen müssen.

Die Methode INVERSE_EXPERT_ROUTINE muss in der Regel nicht implemen-tiert werden. Sie ist nur sinnvoll, wenn Sie die Transformation für einen Vir-tualProvider, das ist der Name für den RemoteCube aus SAP BW 3.x, oder fürdie Berichts-Berichts-Schnittstelle in das Quellsystem benötigen. Dann kön-nen Sie aus den Selektionen auf dem Datenziel in der Routine Selektionenfür die Datenquelle ableiten.

Die Schnittstelle dazu ist relativ kompliziert, da verschiedene Klassen über-geben werden, die in einer sehr abstrakten Form die Selektionsbedingungenenthalten. Die Implementierung kann noch schwieriger sein, wenn die ver-wendete Transformation im Quellsystem nicht eindeutig umgekehrt werdenkann. Daher sollen Sie zunächst betrachten, was geschieht, wenn die Routinenicht implementiert wird.

Eine leere Selektion bedeutet, dass keine Einschränkungen an das Quell-system übergeben werden. Dies ist in zwei Fällen von Bedeutung:

� Im Falle eines RemoteCubes werden sämtliche auf dem Quellsystembefindlichen Daten gelesen und mit der Methode EXPERT_ROUTINE trans-formiert, anschließend werden die Daten vom OLAP-Prozessor für dieQuery-Ausgabe aufbereitet. Das Ergebnis ist daher das gleiche wie beieiner korrekten Implementierung der Methode INVERSE_EXPERT_SELEC-TION, jedoch kann das Erarbeiten des Ergebnisses ohne die Implementie-rung der Methode deutlich länger dauern, da auf jeden Fall alle Sätze desQuellsystems gelesen werden. Vor allem wenn über einen VirtualProviderauf Einzelpostentabellen zugegriffen wird, dürfte die Performance ohneImplementierung der Methode nicht tolerierbar sein.

1228.book Seite 73 Donnerstag, 2. Oktober 2008 11:35 11

Page 35: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

User Exits in Ladevorgängen von Daten4

74

� Anders ist es, wenn per Berichts-Berichts-Schnittstelle eine Transaktion imQuellsystem aufgerufen wird und die Query-Selektionen im Quellsystemverwendet werden. Dann hat eine fehlende Implementierung der Me-thode entweder den Effekt, dass alle möglichen Daten angezeigt werden(ein Einzelpostenbericht im Quellsystem würde dann entweder alle exis-tierenden Sätze anzeigen oder mit einem Berechtigungsfehler abbrechen),oder der Anwender muss in einem Selektionsbild sämtliche Selektionennochmals neu eingeben.

Ziel der Implementierung muss daher sein, eine möglichst kleine Ober-menge der tatsächlichen Ergebnismenge in den Rückgabeparametern zuselektieren.

Aufgrund der geringen praktischen Relevanz der Routine wird an dieserStelle auf eine genaue Beschreibung der Parameter verzichtet. Wer die Rou-tine benötigt, sollte sich am besten in der Transaktion RSRT im Debugger dieInhalte der Übergabeparameter ansehen, dann wird ersichtlich, wie die Para-meter C_R_SELSET_INBOUND und C_TH_FIELDS_INBOUND gefüllt werden müs-sen, nämlich analog zu den OUTBOUND-Importing-Parametern.

Beispiel für eine Expertenroutine

Eine typische Möglichkeit für eine Expertenroutine ist die Transformation vomKennzahlen- in ein Kontenmodell in der Ergebnisrechnung CO-PA. Ein typischesCO-PA-Szenario besitzt eine Reihe von Merkmalen und Kennzahlen, ein soge-nanntes Kennzahlenmodell. In SAP NetWeaver BI sind Sie jedoch häufig besser miteiner Datenmodellierung bedient, die neben den Merkmalen aus CO-PA nur zweiKennzahlen, nämlich eine Menge (0QUANTITY) und einen Betrag (0AMOUNT), ent-hält und zusätzlich ein Merkmal (hier KENNZAHL), das angibt, um welche Kennzahles sich handelt.

In der Expertenroutine durchsuchen Sie sämtliche Kennzahlfelder der Quellstruk-tur, und wenn das entsprechende Feld ungleich null ist, wird ein passender Eintragin das Datenziel geschrieben. Eine mögliche Implementierung ist in Listing 4.8gezeigt.

METHOD expert_routine.

*=== Segments ===

FIELD-SYMBOLS:

<SOURCE_FIELDS> TYPE _ty_s_SC_1.

DATA:

RESULT_FIELDS TYPE _ty_s_TG_1.

*$*$ begin of routine –

1228.book Seite 74 Donnerstag, 2. Oktober 2008 11:35 11

Page 36: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

Transformation 4.1

75

* insert your code only below this line *-*

* Hier werden die Datenfelder aus dem Quellsystem der Reihe

* nach untersucht. Jeder Wert <> 0 generiert einen Eintrag

* in der RESULT_TABLE.

TYPES: ty_w_dfies TYPE dfies.

TYPES: ty_t_dfies TYPE STANDARD TABLE

OF ty_w_dfies

INITIAL SIZE 0.

DATA: l_t_dfies_tab TYPE ty_t_dfies,

l_t_dfies_wk TYPE ty_t_dfies,

l_s_wa_dfies TYPE ty_w_dfies,

l_d_tablename TYPE ddobjname

* Name der Kommunikationsstruktur der InfoSource

VALUE '/BIC/CSCOPA_DATA',

l_d_currency TYPE dynptype

* Schlüssel zur Identifikation der Währungsfelder

VALUE 'CURR' .

* Feldsymbol für die dynamische Ermittlung der Quellwerte

FIELD-SYMBOLS: <fw> LIKE /BIC/VCOPACUBET-amount.

DATA: l_d_field(40) TYPE c.

* Zuerst wird die Struktur des SOURCE_PACKAGE bestimmt.

* Dies geschieht dynamisch, da sich die Quellstruktur

* ändern kann. Auf diese Art und Weise muss die Routine

* nicht angepasst werden.

CALL FUNCTION 'DDIF_FIELDINFO_GET'

EXPORTING

tabname = l_d_tablename

TABLES

dfies_tab = l_t_dfies_tab

EXCEPTIONS

not found = 1

internal error = 2

others = 3.

IF sy-subrc <> 0.

l_s_message-MSGID = 'ZDEMO'.

l_s_message-MSGNO = '101'.

l_s_message-MSGTY = 'E'.

l_s_message-MSGV1 = 'DDIF_FIELDINFO_GET'.

l_s_message-MSGV2 = l_d_tablename.

1228.book Seite 75 Donnerstag, 2. Oktober 2008 11:35 11

Page 37: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

User Exits in Ladevorgängen von Daten4

76

l_s_message-MSGV3 = sy-subrc.

* l_s_message-MSGV4 = .

CALL METHOD LOG->ADD_MSG

EXPORTING

I_S_MSG = l_s_message

.

* Returncode &3 beim Aufruf von &1 für &2.

ENDIF.

* Es werden nur die Wertfelder vom Typ Betrag = 'CURR'

* betrachtet.

l_t_dfies_wk[] = l_t_dfies_tab[].

DELETE l_t_dfies_wk WHERE datatype ne l_d_currency.

LOOP AT SOURCE_PACKAGE

ASSIGNING <SOURCE_FIELDS>.

* Für jedes Währungsfeld im Datensatz den Wertfeldnamen

* ermitteln und den Betrag setzen.

LOOP AT l_t_dfies_wk INTO l_s_wa_dfies.

* Setze Feldnamen zusammen

CONCATENATE '<SOURCE_FIELDS>-'

wa_dfies-fieldname

INTO l_d_field.

ASSIGN (l_d_field) TO <fw>.

* Wenn Wertfeld 0, keine Übernahme

CHECK <fw> NE 0.

* Alle Merkmale, die identisch sind, übernehmen

MOVE-CORRESPONDING <SOURCE_FIELDS>

TO RESULT_FIELDS.

* Setze Merkmal für den Cube

RESULT_FIELDS-/bic/kennzahl = l_s_wa_dfies-fieldname.

RESULT_FIELDS-AMOUNT = <fw>.

APPEND RESULT_FIELDS TO RESULT_PACKAGE.

ENDLOOP. "th_dfies_wk

ENDLOOP.

*$*$ end of routine –

* insert your code only before this line *-*

ENDMETHOD. "expert_routine

Listing 4.8 Kontenmodell in der Expertenroutine

1228.book Seite 76 Donnerstag, 2. Oktober 2008 11:35 11

Page 38: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

Routinen in den Datentransferprozessen 4.2

77

Generell sollte die Benutzung der Expertenroutine ein Ausnahmefall blei-ben. Sie hat jedoch Vorteile, sodass der erfahrene Programmierer, der sicheinmal mit dem Aufbau des Logs beschäftigt hat, diese Routine gerne nutzenwird.

Der Nachteil der Routine ist, dass hinterher nur noch ein SAP NetWeaver BI-Fachmann mit entsprechenden ABAP-Kenntnissen die Routine ändern kann.Die Aufnahme eines neuen Feldes in die Quell- oder Zielstruktur kann daherdurchaus zu aufwendigeren Änderungen führen. Außerdem können Sienicht mehr grafisch erkennen, welches Feld in der Zielstruktur von welchenanderen Bildern abhängt.

Aufgrund der Komplexität der Implementierung der Expertenroutine erstelltdie Entwicklung bei SAP zurzeit ein Interface zur Unterstützung der Imple-mentierung. Zum jetzigen Zeitpunkt sind allerdings keine weiteren Einzel-heiten bekannt.

4.2 Routinen in den Datentransferprozessen

Zusammen mit der Transformation hat SAP zu Release 7.0 den Datentrans-ferprozess (DTP) eingeführt, der dazu dient, die Daten innerhalb des BI-Sys-tems zu verteilen, wenn Transformationen verwendet wurden. Zum Ladenvon Daten aus anderen Systemen wird weiterhin das InfoPackage eingesetzt.

Im DTP können Sie ebenfalls Routinen benutzen. Dabei können innerhalbdes DTP zwei Routinen verwendet werden, die analog zu den entsprechen-den Routinen im InfoPackage funktionieren, nämlich für den Dateinamenund für die Selektion der Werte.

4.2.1 Selektion eines Dateinamens im Datentransferprozess

Ziel der Dateinamenermittlung ist es, eine Datei, die einen immer unter-schiedlichen, aber per Algorithmus bestimmbaren Dateinamen hat, mittelseines Datentransferprozesses zu laden, ohne jedes Mal den Dateinamen imDTP anpassen zu müssen.

Hinweis

Dabei ist zu beachten, dass dies nur die Ausnahme ist. Normalerweise werdenDateien erst per InfoPackage in die Persistent Staging Area (PSA) geladen, und derDTP benötigt dann keinen Dateinamen.

1228.book Seite 77 Donnerstag, 2. Oktober 2008 11:35 11

Page 39: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

261

Index

_ty_s_SC_1 54_ty_s_TG_1 54_VALUES_GENERATE 191, 1940AMOUNT 740CURRENCY 600QUANTITY 74

A

ABAP Objects 48, 49, 54, 55, 162ABAP-Query 28Ableitung

Kennzahl 56ADD_NEW_BLOCKS 244Aggregationsebene 230ALV-Grid 41Anwendungskomponente 27, 28

Hierarchie 28ANY TABLE 36Attributsableitung 22, 215

B

BAdI 25, 45RSR_OLAP_BADI 156, 157, 158RSU5_SAPI_BADI 45, 47SMOD_RSR00004 179

BAPI 169BAPI_INFOCUBE_READ_REMOTE_

DATA 171, 172Struktur 173

Basisplanungsgebiet 214Berechtigungsverprobung 26, 32Berichts-Berichts-Schnittstelle 73, 74,

179, 180Bewegungsdaten 27, 33BEx � Business ExplorerBEx-Query 212BI-Hierarchie 84BI-integrierte Planung 201

Exit-Funktion 241Merkmalswertableitung 222Variable 210

Binnenumsatzeliminierung 167BPS0 202Business Add-in � BAdIBusiness Consolidation 174Business Explorer 171, 201Business Planning and Simulation � SAP

BW-BPSBW_SCHEDULER 253

C

C_T_DATA 36C_T_FOLDERT 42C_T_HIENODE 42C_T_MESSAGES 36C_TH_DATA 246Cache 22CASE 36CHARACTERISTICS 172CL_RSBM_LOG_CURSOR_STEP 68CL_RSDRV_REMOTE_IPROV_SRV 173CL_RSMD_RS_GENERIC_DOMAIN 183CL_RSPLFC_BPS_EXITS 248CMOD 32Code

dynamisch 20COMPUTE 158, 162, 163, 164, 165, 166CONCATENATE 79CONSTRUCTOR 166CONVERT_TO_FOREIGN_CURRENCY

127CONVERT_TO_LOCAL_CURRENCY 127CREATE 185, 221Customizing-Tabelle 109CX_RSROUT_ABORT 54CX_RSROUT_SKIP_RECORD 54

D

DATA 172Data Package 30, 34, 108DATA_TRANSFORM 46Data-Mart-Schnittstelle 175

1228.book Seite 261 Donnerstag, 2. Oktober 2008 11:35 11

Page 40: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

262

Index

DataSource 26, 33, 46, 47, 49, 65, 85, 86, 102, 169anlegen 86generische 26, 29

DataStore 37Objekt 85, 87, 133, 168, 175

Dateinamebestimmen 79

Dateinamenselektion 78Datenanreicherung 18Datenbankselektion 168Datenbankzugriff 22Datenbereinigung 49, 61Dateneigentümer 32Datenfluss 50Datenladevorgang 49Datenmodell 103Datenmodellierung 41, 74, 117Datenpaket 23, 31, 51, 106, 122Datenqualität 130Datenquelle 175Datensatz 15

Reihenfolge 167Datenselektion 172Datentransferprozess 77, 84, 99, 102

Merkmalsselektion 79Selektion eines Dateinamens 77

DatenübertragungProtokollierung 106

Datenvolumen 15Datenziel 74, 102

Datenzielstruktur 130fortschreiben 23

datumsabhängige Vorbelegung 138Default-Wert 115, 152DEFINE 158, 160, 162, 163Delta

generisches 30Delta-Upload 30DTP � Datentransferprozess

E

Einheitenberechnung 56, 127Einzelpostenbericht 74Einzelverarbeitung 167Einzelwert 206

Rückgabe 203

Endroutine 51, 60, 64, 65, 69, 84, 90, 98, 101

Enterprise Data Warehouse 50Entfernung

Sonderzeichen 55ET_MESG 236ETO_CHAS 236EXECUTE 246EXIT_SAPLRRS0_001 131, 164, 168EXIT_SAPLRSAP_001 33, 34, 35EXIT_SAPLRSAP_002 33EXIT_SAPLRSAP_003 33EXIT_SAPLRSAP_004 33, 44EXIT_SAPLRSBBS_001 179EXIT_SAPLRSBBS_002 179EXIT_SAPLRSR0_001 133Exit-Funktion 254

BI-integrierte Planung 241SAP BW-BPS 232

Exit-Funktionsbaustein 235, 238EXPERT_ROUTINE 73Expertenroutine 60, 65, 68, 74, 77Export-DataSource 44Extraktion 25, 47

SAP ERP 38Extraktor 34

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

Extraktor-Checker 31Extraktstruktur 44

füllen 36

F

Fehlerbehandlung 68, 122SAP BW 3.x 114Tabelle 114

Fehlermeldung 108, 150ausgeben 130Rückgabe 153

Feldändern 234Erweiterung 31I_S_RKB1D-COMPID 153Maskierung 26Symbol 15, 20Vorrat 234

FIELDNAME 82

1228.book Seite 262 Donnerstag, 2. Oktober 2008 11:35 11

Page 41: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

263

Index

Filterwert 133Filterwertbestimmung 82FINISH_EXECUTION 248Flat File 26Fortschreibungsregel 22, 49, 60, 101,

102, 103, 114, 117, 119, 121, 124, 126, 127, 130Praxisbeispiel 118

FOX-Formel 254Full Table Scan 19Full Upload 30Funktion

CREATE 221selbst geschriebene 201WS_UPLOAD 232

Funktionsbaustein 33BAPI_INFOCUBE_READ_REMOTE_DAT

A 171, 172CONVERT_TO_FOREIGN_CURRENCY

127CONVERT_TO_LOCAL_CURRENCY

127Daten berechnen 169EXIT_SAPLRRS0_001 131EXIT_SAPLRSAP_001 33, 34, 35EXIT_SAPLRSAP_002 33EXIT_SAPLRSAP_003 33EXIT_SAPLRSAP_004 33, 44EXIT_SAPLRSR0_001 133Exit-Funktionsbaustein 235, 238feste Schnittstelle 203Init-Funktionsbaustein 235RRMS_MESSAGE_HANDLING 153,

154RSDRI_INFOPROV_READ 175Z_VAR_CHECK_VALIDITY 137, 149

G

G_T_ERRORLOG 114Geschäftsjahresvariante 102, 184GET_ATTRIBUTES 190, 195GET_CAPABILITIES 186GET_REF_DATA_SEL 243GET_TEXT 189, 197GET_VALUES 187

H

HASHED TABLE 17Hash-Tabelle 17, 19, 22, 106HAUPT_KST 198HIER_TRANSFORM 46Hierarchie 26, 33, 41, 46, 83, 215

Aggregation 167BI-Hierarchie 84Exit 44Extraktor 44sortierte 83

HistorieTransformation 68

I

I_MAXROWS 188I_STEP 132, 138, 143, 146, 147I_T_SELOPT 188I_TS_REQ_ATR 188IF_RSPLS_CR_METHODS~CHECK 223IF_RSPLS_CR_METHODS~CREATE 226IF_RSPLS_CR_METHODS~DERIVE 230I-Meldung 130Implementierung

Logik 54Implementierungsname 157Include

ZXRSAU01 34ZXRSRU01 131

INFOCUBE 171InfoCube 61, 69, 129, 130, 167, 175,

178, 234, 254Ergebnis berechnen 130

InfoObjekt 37, 98, 154, 198, 221, 2440BUS_AREA 1400COMPANY 140Ableitung 109, 115HAUPT_KST 198

InfoPackage 45, 79, 99, 100, 108, 119, 133Fehlerbehandlung 108

InfoProvider 49, 68, 103, 154, 156, 167, 168, 169, 178, 182, 201

InfoSource 50, 68, 102, 103, 121INIT_EXECUTION 242Init-Funktionsbaustein 235

1228.book Seite 263 Donnerstag, 2. Oktober 2008 11:35 11

Page 42: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

264

Index

Initialisierung 61INITIALIZATION 158, 162, 163Instanzattribut 162INVALID 215INVERSE_EXPERT_ROUTINE 73INVERSE_EXPERT_SELECTION 73Ist-Daten 201IT_EXITP 236ITO_CHA 236ITO_CHASEL 236, 238ITO_KYF 236

K

Kennzahl 175, 178virtuelle 154

Kennzahlenableitung 56, 126Kennzahlenmodell 74KEYDATE 171KEYFIGURES 172Klasse

CL_RSBM_LOG_CURSOR_STEP 68CL_RSDRV_REMOTE_IPROV_SRV 173CL_RSMD_RS_GENERIC_DOMAIN 183CL_RSPLFC_BPS_EXITS 248

Knotennummer 83Kombinationsprüfung 215Kombinationsverprobung 149Kombinationsvorschlag 215Kommunikationsstruktur 104, 108, 112,

119, 126, 130, 157, 158, 162Kontenmodell 74Konvertierung 32, 49Kostenrechnungskreis 102Kostenstellenkategorie 65

L

Ladeprozess 15, 55Leseroutine

für Stammdaten 183Lesezugriff

Tabelle 18Linkknoten 98LISTCUBE 178Log 77

LogikImplementierung 54

LOOP AT TABLE WHERE 19Löschen

Satz 61

M

Mandant 184Mapping 179Mapping-Tabelle 37Maskierung 31Mengeneinheiten

Umrechnung 59Merkmal 178

virtuelles 154Merkmalsableitung 49, 51, 65, 201Merkmalsberechnung 124Merkmalsbeziehung 214

Detail 215Merkmalskombination 167, 244

Verprobung 151Merkmalswert 175, 214Merkmalswertableitung 213, 221

Attributsableitung 215BI-integrierte Planung 222hierarchische 215SAP BW-BPS 214

Merkmalswertkombinationerzeugen 217prüfen 215

Methode_VALUE_GENERATE 191, 194_VALUES_GENERATE 191ADD_NEW_BLOCKS 244COMPUTE 158, 162, 163, 164, 166CONSTRUCTOR 166CREATE 185DATA_TRANSFORM 46DEFINE 158, 162, 163EXECUTE 246EXIT_SAPLRSBBS_001 179EXIT_SAPLRSBBS_002 179EXPERT_ROUTINE 73FINISH_EXECUTION 248GET_ATTRIBUTES 190, 195GET_CAPABILITIES 186

1228.book Seite 264 Donnerstag, 2. Oktober 2008 11:35 11

Page 43: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

265

Index

GET_REF_DATA_SEL 243GET_TEXT 189, 197GET_VALUES 187HIER_TRANSFORM 46IF_RSPLS_CR_METHODS~CHECK 223IF_RSPLS_CR_METHODS~CREATE 226IF_RSPLS_CR_METHODS~DERIVE 230INIT_EXECUTION 242INITIALIZATION 158, 162, 163INVERSE_EXPERT_ROUTINE 73INVERSE_EXPERT_SELECTION 73SET_KEY_DATE 185

Microsoft Excel 83Tabelle 83

Modellierunggrafische 51

MONITOR_RECNO 121Multiplanungsgebiet 214MultiProvider 154, 169, 178

N

Nachricht 107Nachrichtenklasse 107Nachrichtensammler 153Navigationsattribut 172, 198Navigationsblock 133Next-ID 99

O

Objektreferenz 248Obligodaten 124ODS-Objekt 85OLAP-Prozessor 172O-Notation 20OPENHUB_TRANSFORM 253

P

ParameterI_IOBJNM 134I_MAXROWS 188I_PERIV 135I_S_COB_PRO 134

I_S_RKB1D 134I_STEP 132, 135, 138, 143, 146, 147I_T_VAR_RANGE 135I_VARTYP 134I_VNAM 134

Parent-ID 98Performance 15, 16, 20, 68, 69, 73, 113,

115, 117, 119, 155, 168, 217pro Datensatz 15

Periodeneingabe 151Persistent Staging Area � PSAPlanungsebene 202, 214Planungsfunktion 201, 206, 239

anlegen 233Planversion 204Positionsauswahl 65Programm

aktiviertes 121Prozesskette 254Prozesstyp 254PSA 23, 32, 77, 121

Q

Quartalsbericht 149Quellmerkmal 221Quellstruktur 77Quellsystem 26, 74, 102, 114, 115Query 175Query Designer 146Query-Erstellung 210Query-Name 182

R

RAISE EXCEPTION 153RANGES-Tabelle 208READ TABLE 18READ TABLE … INDEX 19READ TABLE WITH KEY 19READ TABLE WITH TABLE KEY 19Referenzdaten 241, 243, 246RemoteCube 73, 115, 169RESULT_PACKAGE 73RESULT_TABLE 130RETURN 171

1228.book Seite 265 Donnerstag, 2. Oktober 2008 11:35 11

Page 44: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

266

Index

RFC-Verpacken 170, 173, 174Routine

anlegen 78Einheit 57

RRMS_MESSAGE_HANDLING 153, 154RSA3 31RSAP0001 31, 32, 45RSAR_CONNECTOR 253RSBBS 179RSDBC_SQL_STATEMENT 253RSDRI_INFOPROV_READ 175, 176RSO2 26, 27RSOD_DOC_BADI 253RSOD_ITEM_DOC 254RSOD_ITEM_DOC_LIST 254RSOD_WWW_DOC_MAINT 254RSR_OLAP_AUTH_GEN 253RSR_OLAP_BADI 156, 157, 158RSR00001 131RSR00002 156RSR00004 179RSRA_ALERT 253RSU5_SAPI_BADI 45, 47Rückgabetabelle 102, 130Rundungsdifferenz 169

S

S_T_TCURF 41SAP BW-BPS 201, 254

Variable 211Variablenkonzept 202

SAP ERP 201SAP NetWeaver 7.0 49, 51, 68, 83, 84,

85, 86, 99, 101, 157, 167SAP SEM-BCS 174Satz

löschen 61SBIW 28Schleife 18SE19 156SE80 184, 191, 222SE91 154SELECTION 171Selektion 30Selektionsbedingung 231Selektionsfeld 30, 45

Auswahl 30

Selektionsoptionsvariable 212SEMBPS01 254SEMBPS02 254SET_KEY_DATE 185SID-Unterstützung 170, 173, 174SMOD_RSR00004 179Sonderzeichen

Entfernung 55SORTED TABLE 16SOURCE_PACKAGE 61Spalte

Selektion 30Stammdatenattribut 17, 33Stammdatenleseklasse 198, 199

anlegen 184Implementierung 191

Stammdatenleseroutine 183Stammdatentabelle 175Stammdatentext 33STANDARD TABLE 16Standardabweichung 167Standardextraktor 25, 31

Erweiterung 25, 26Standardtabelle 16, 19Startroutine 51, 60, 64, 65, 69, 84, 101,

104, 106, 114, 119, 121, 130anlegen 88Übertragungsregel 31

SY-DATUM 79

T

Tabelle 27C_T_DATA 36C_T_FOLDERT 42C_T_HIENODE 42C_T_MESSAGES 36C_TH_DATA 246Customizing-Tabelle 109E_T_RANGE 135ET_MESG 236ETO_CHAS 236G_T_ERRORLOG 114Hash-Tabelle 17, 19, 22, 106I_T_SELOPT 188I_TS_REQ_ATR 188IT_EXITP 236ITO_CHA 236

1228.book Seite 266 Donnerstag, 2. Oktober 2008 11:35 11

Page 45: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

267

Index

ITO_CHASEL 236, 238ITO_KYF 236L_T_RANGE 81Mapping-Tabelle 37MONITOR_RECNO 121RESULT_PACKAGE 73RESULT_TABLE 130S_T_TCURF 41sortierte Tabelle 16, 19Standardtabelle 16, 19TCURR 27, 29, 40XTH_DATA 238

tabellenabhängige Vorbelegung 139Tabellenart 16

Programmierbeispiel 17Tabellendefinition 18Tabelleneintrag

lesen 166Tabellentyp 15Tabellenzugriff 19TCURR 27, 29, 40Transaktion

BPS0 202CMOD 32LISTCUBE 178RSA3 31RSBBS 179RSO2 26, 27RSRT 74SBIW 28SE19 156SE80 184, 191, 222SE91 107, 115, 154

Transferstruktur 106, 113, 114Transformation 49, 50, 60, 64, 83

grafische Darstellung 49Historie 68

Transport 68Typ

_ty_s_SC_1 54_ty_s_TG_1 54

U

Übertragungsregel 49, 101, 102, 103, 104, 106, 114Startroutine 31

Upload 17Ursprungsobjekt 26

User Exit 25, 32, 41, 44EXIT_SAPLRRS0_001 164, 168Planung 201RSAP0001 31, 32, 45RSR00002 156RSR00004 179

V

Validierung 132, 149einer einzelnen Variablen 149

Variable 131, 201Ableitung 146BI-integrierte Planung 210Handling 148Kombination 149lesen 211Planung 201projektabhängige 148SAP BW-BPS 202, 211schreiben 212Selektionsoptionsvariable 212setzen 203Strategie 148übergeben 167übernehmen 212Überprüfung 147Wert 167zentrale 148

VariablenbestimmungBeispiel 145

Variablen-Exit 202RSR00001 131, 202ZXRSRU01 137

Varianz 167Verprobung

Merkmalskombination 151Verteilmechanismus 47Verwendungsart 25View 27VirtualProvider 73, 169, 176, 178

anlegen 169Implementierung 174

virtuelle Kennzahl 154virtuelles Merkmal 154Vorbelegung 206

aus Berechtigung 140datumsabhängig 138tabellenabhängig 139

1228.book Seite 267 Donnerstag, 2. Oktober 2008 11:35 11

Page 46: ABAP-Programmierung für SAP NetWeaver BI – User Exits und ... · Bonn Boston Dirk Herzog ABAP -Programmierung für SAP NetWeaver BI – User Exits und BAdIs TM ® 1228.book Seite

268

Index

W

Währungsumrechnung 68Wertemenge

Rückgabe 206, 208Werttyp 124WS_UPLOAD 232

X

X-Message 171XTH_DATA 238

Z

Z_VAR_CHECK_VALIDITY 137Zielstruktur 77ZXRSAU01 34ZXRSRU01 131, 137

1228.book Seite 268 Donnerstag, 2. Oktober 2008 11:35 11