Show TOC

HintergrundAnwendungsspezifische Erweiterungen Dieses Dokument in der Navigationsstruktur finden

 

Die SAP Query ist ein generisches Tool, das für alle Anwendungen innerhalb von SAP Systemen für Reporting-Aufgaben verwendet werden kann. Dieser generische Ansatz hat bisher verhindert, daß spezielles Wissen einer Anwendung (spezielle Anwendungslogik) innerhalb der SAP Query ausgenutzt werden konnte.

Eine Ausnahme ist die Anwendung HR. Eine Reihe von spezifischen HR-Lösungen sind in die SAP Query integriert (InfoSet Generierung, Zeilengruppen in Queries usw.). Allerdings sind diese Lösungen fest codiert. d.h. Änderungen oder Ergänzungen sind nur dadurch möglich, daß an der SAP Query Modifikationen vorgenommen werden.

Mit dem aktuellen Release wird damit begonnen, die SAP Query so zu erweitern, daß auch anwendungsspezifische Logik ausgewertet werden kann, ohne allerdings Modifikationen an der SAP Query vornehmen zu müssen. Die Vorgehensweise bei der Einrichtung dieser Erweiterungen ist vergleichbar mit der Definition und Implementierung von Business Add-Ins.

Zu verschiedenen Zeitpunkten z.B. beim Erstellen eines InfoSets oder auch zur Laufzeit einer Query werden spezielle Interface-Methoden gerufen. Diese Interface-Methoden werden entweder von einer Standardklasse implementiert (Standard) oder aber von einer speziellen Klasse, die zusätzliche Anwendungslogik enthält. Sollen die Queries über einem InfoSet für einen bestimmten Service nicht die Standardfunktionalität, sondern anwendungsspezifische Funktionalität nutzen, so kann die Klasse, die das entsprechende Interface implementiert hat, im InfoSet hinterlegt werden. Das InfoSet wird damit zum Träger aller Informationen über anwendungsspezifische Logik.

Beispiel

Ein konkretes Beispiel soll das Verfahren verdeutlichen:

Für die automatische Textidentifizierung beim Erstellen eines InfoSets und für das Lesen der entsprechenden Texte zur Laufzeit der Queries werden die Interface-Methoden IDENTIFY_TEXT bzw. READ_TEXT des Interfaces IF_TEXT_IDENTIFIER gerufen. Dieses Interface wird von der Standardklasse CL_TEXT_IDENTIFIER implementiert, und als Default wird auch diese Implementierung verwendet. In einem bestimmten Anwendungskontext könnten aber eventuell durch zusätzliche Logik Texte ermittelt werden, die durch die Standardklasse nicht identifiziert werden. Dies leistet z.B. die Klasse CL_HR_TEXT_IDENTIFIER im HR-Umfeld. Prinzipiell können die Anwendungsklassen entweder das Interface IF_TEXT_IDENTIFIER neu implementieren oder von der Standardklasse abgeleitet sein. Im InfoSet wird die entsprechende Klasse für die Textidentifizierung angegeben; in allen Queries über diesem InfoSet wird zum Lesen der Texte ebenfalls die entsprechende Implementierung der Interface-Methode gerufen.

Mit dem Programm RS_TEXT_IDENTIFY_TEXT können Sie die Identifizierung von Texten testen. Die Klasse CL_TEXT_IDENTIFIER wertet im wesentlichen das ABAP Dictionary aus. Es kann vorkommen, daß zu bestimmten Feldern Texte existieren, die Beziehung zwischen Wertfeld und Textfeld aber nicht im ABAP Dictionary ersichtlich ist. Für diese Fälle lassen sich im SAP Referenz-IMG (   SAP NetWeaver   SAP Web Application Server   SAP Query  ) Ausnahmen definieren: Man kann z.B. einen Funktionsbaustein zur Beschaffung des Textes angeben, oder aber auch direkt den Text für ein Feld in einer Tabelle hinterlegen. Wie man bei der Definition von Ausnahmen vorzugehen hat, ist in der Dokumentation zum Interface IF_TEXT_IDENTIFIER beschrieben.

Zu Release 4.6C wurden folgende Interfaces definiert:

Automatische Texterkennung

  • Interface: IF_TEXT_IDENTIFIER

  • Methoden: IDENTIFY_TEXT, READ_TEXT

  • Standardklasse: CL_TEXT_IDENTIFIER

InfoSet-Generator (Generierung und Vorbelegung von Feldgruppen)

  • Interface: IF_QUERY_INFOSET_GENERATOR

  • Methoden: MODIFY_INFOSET

  • Standardklasse: CL_QUERY_DATASOURCE_GENERATOR

Eine spezielle Klasse kann auf dem Dialogfenster beim Anlegen eines InfoSets (Weitere Optionen) eingetragen werden.

In der InfoSet-Pflege werden die eingetragenen Serviceklassen im Register Anwendungsspezifische Erweiterungen () angezeigt.