Ansicht
Dokumentation

ABENCLASS_INTERACE_POOLS - CLASS INTERACE POOLS

ABENCLASS_INTERACE_POOLS - CLASS INTERACE POOLS

SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up   SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- Anweisungen in Class- und Interface-Pools

Class- und Interface-Pools sind die ABAP-Programme der Klassenbibliothek. Sie werden in den ABAP Development Tools (ADT) oder mit dem Werkzeug Class Builder der ABAP Workbench definiert und dienen als Ablage für globale Klassen und Interfaces.

Diese Anweisungen werden vom Class Builder generiert.

Ein Class-Pool bzw. ein Interface-Pool kann jeweils nur eine globale Klasse oder nur ein globales Interface enthalten. Diese werden mit folgenden Anweisungen deklariert:

Diese Anweisungen werden ebenfalls vom Class Builder aus den dort eingegebenen Eigenschaften generiert.

Weitere Anweisungen in Class-Pools

Ein Class-Pool kann neben der Deklaration der globalen Klasse nur noch folgende Anweisungen enthalten:

  • Deklaration programmlokaler Datentypen mit der Anweisung TYPES. Diese können von der globalen Klasse im privaten Sichtbarkeitsbereich sowie im Implementierungsteil verwendet werden.
  • Deklaration programmlokaler Konstanten mit der Anweisung CONSTANTS. Diese können von der globalen Klasse im privaten Sichtbarkeitsbereich sowie im Implementierungsteil verwendet werden.
  • Deklaration programmlokaler Interfaces mit den Anweisungen INTERFACE ... ENDINTERFACE. Diese können von der globalen Klasse im privaten Sichtbarkeitsbereich sowie im Implementierungsteil verwendet werden.
  • Deklaration und Implementierung programmlokaler Klassen mit den Anweisungen CLASS ... ENDCLASS. Diese können von der globalen Klasse im privaten Sichtbarkeitsbereich sowie im Implementierungsteil verwendet werden.

Für die programmlokal definierten Typen, Klassen und Interfaces in Class-Pools gibt es folgende Anwendungsfälle:

  • Nur die Methoden der globalen Klasse greifen auf die programmlokalen Deklarationen und Implementierungen zu. Diese stellen z.B. Hilfsmethoden zur Verfügung, die in der Schnittstelle der globalen Klasse nicht sichtbar sein sollen. Dies ist der häufigste Anwendungsfall. Änderungen an den programmlokalen Deklarationen haben keinen Einfluss auf die Schnittstelle der globalen Klasse.
  • Außer den Methoden der globalen Klasse beziehen sich auch Deklarationen in deren privaten Sichtbarkeitsbereich auf die programmlokalen Deklarationen. In diesem eher seltenen Anwendungsfall beeinflussen Änderungen an den programmlokalen Deklarationen die Schnittstelle der globalen Klasse und Unterklassen sowie Freunde der globalen Klasse werden vor der nächsten Ausführung erneut kompiliert.

Weitere Anweisungen in Interface-Pools

Ein Interface-Pool kann neben der Deklaration des globalen Interfaces keine eigenen lokalen Deklarationen und Implementierungen enthalten. Syntaktisch ist auch noch die obsolete Anweisung TYPE-POOLS möglich.

Programmorganisation

Class- und Interface-Pools bestehen wie jedes andere ABAP-Programm aus einem globalen Deklarationsteil für Deklarationen und einem Implementierungsteil für Implementierungen (Prozeduren).

  • Der globale Deklarationsteil eines Class-Pools kann also neben dem eigentlichen Deklarationsteil der globalen Klasse die Deklarationen lokaler Datentypen, lokaler Interfaces und lokaler Klassen enthalten. Der Implementierungsteil eines Class-Pools kann neben dem Implementierungsteil der globalen Klasse die Implementierungsteile lokaler Klassen enthalten.
  • Der globale Deklarationsteil eines Interface-Pools kann nur die Deklaration des globalen Interfaces enthalten und der Implementierungsteil eines Interface-Pools ist immer leer.

Die ABAP Development Tools (ADT) oder der Class Builder organisieren die verschiedenen Deklarationen und Implementierungen eines Class- bzw. Interface-Pools in Include-Programmen, deren Namen dem Entwickler in der Regel nicht sichtbar sind. Durch Auswahl entsprechender Funktionen des Class Builders wird das zugehörige Include-Programm im ABAP Editor geöffnet und kann dort bearbeitet werden. Es gibt beispielsweise eigene Include-Programme für:

  • Es gibt beispielsweise eigene Include-Programme für:
  • jede Implementierung einer Methode der globalen Klasse
  • programmlokale Deklarationen und Implementierungen
  • Testklassen von ABAP Unit

Zum Bearbeiten der globalen Klasse bietet der Class Builder neben der Verarbeitung der einzelnen Include-Programme auch einen Quelltext-basierten Modus an, in dem die zugehörigen Include-Programme wie ein einziges Programm angezeigt und bearbeitet werden können.

Außer den oben aufgeführten Anweisungen sind in Class- und Interface-Pools keine anderen Anweisungen außerhalb von CLASS - ENDCLASS bzw. INTERFACE - ENDINTERFACE notwendig und daher nicht erlaubt. Für alle erlaubten Anweisungen gelten die Syntaxverschärfungen von ABAP Objects.

Folgende Einschränkungen sind besonders wichtig:

  • Keine Verarbeitungsblöcke außer Methoden
Es sind weder Ereignisblöcke wie z.B. START-OF-SELECTION, AT SELECTION-SCREEN,GET oder AT LINE-SELECTION, noch Dialogmodule, definiert durch MODULE - ENDMODULE erlaubt. Die Ereignisse des Laufzeit-Frameworks können also nicht verarbeitet werden. ABAP Objects hat dafür ein eigenes Ereigniskonzept. Weiterhin können weder Funktionsbausteine noch Unterprogramme über FUNCTION - ENDFUNCTION bzw. FORM - ENDFORM definiert werden. Die Methoden eines Class-Pools können aber außer Methoden auch weiterhin externe Funktionsbausteine und Unterprogramme aufrufen.
  • Keine Schnittstellen-Arbeitsbereiche zu anderen Programmen
Die Anweisungen TABLES, NODES und der Zusatz COMMON PART der DATA-Anweisung sind nicht möglich. Class- und Interface-Pools unterstützen also keine programmübergreifenden globalen Datenbereiche innerhalb einer internen Sitzung.
Die in den übrigen ABAP-Programmen übliche Bildschirmverarbeitung ist nicht möglich. In einem Class- oder Interface-Pool können keine Dynpros definiert werden. Wenn noch klassische Dynpros inklusive Selektionsbilder verwendet werden sollen, wird deren Kapselung in Function-Pools empfohlen. Statt klassischer Listen sind andere geeignete Ausgabemedien zu verwenden. Für tabellarische Listenausgaben dienen die Klassen des SAP List Viewers (ALV), wie z.B. CL_SALV_TABLE. Für einfache Textausgaben bieten sich Verschalungen des Browser-Controls wie z.B. über dynamische Dokumente oder Verschalungen des Textedit-Controls an.
  • Keine Verarbeitung von Extrakten
In globalen Klassen können keine Extraktdatenbestände verarbeitet werden, da die definierende Anweisung FIELD-GROUPS in Class- oder Interface-Pools verboten ist.





rdisp/max_wprun_time - Maximum work process run time   Vendor Master (General Section)  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 10707 Date: 20240606 Time: 055902     sap01-206 ( 161 ms )