Ansicht
Dokumentation

CL_TCL_ITERATOR - Allgemeiner Iterator

CL_TCL_ITERATOR - Allgemeiner Iterator

RFUMSV00 - Advance Return for Tax on Sales/Purchases   PERFORM Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionalität

Die abstrakte Klasse CL_TCL_ITERATORist nach den Vorschlägen der Entwurfsmuster für wiederverwendbare objektorientierter Software entwickelt worden. Sie entspricht dem Muster "Iterator" und wird immer zusammen mit der abstrakten Klasse CL_TCL_AGGREGATE verwendet. Beide zusammen repräsentieren das Verhaltensmuster "Iterator", welches auch als "Cursor" bekannt ist.

Das Aggregat ist eine zusammgesetzet Liste von Objekten. Über die Iterator-Klasse kann auf einzelne Objekte des Aggregates zugegriffen werden. Somit ist ein Aggregat ein Container für gleichartige Objekte, welche über den Iterator traversiert werden können.

Das Konzept des Iterators ist immer dann sinnvoll einzusetzen, wenn es mehrere unterschiedliche Anforderung an die Traversierung über eine Objektliste gibt. Im einfachsten Fall möchte man einmal vorwärts traversieren und an anderer Stelle rückwärts traversieren. Wenn die Programmlogik ansonsten gleich ist, führt dies bei herkömmlicher Programmierung zu redundanten Coding und damit zwangsläufig zu mehr Wartungsaufwand und erhöhtem Risiko für Inkonsistenzen.

Mit Hilfe des Iterator-Verhaltensmusters wird einfach zur richtigen Zeit der benötigte Iterator aktiviert und der Rest des Programms bleibt gleich.

Diese Klasse berücksichtigt die Anforderungen an das zeilenweise Iterieren, indem mit Events gearbeitet wird. Sobald Änderungen in der Objektliste des Aggregates stattgefunden haben, wird die Iterator-Klasse darüber informiert und kann damit das Verhalten anpassen.

Eine ausführliche Beschreibung des Verhaltensmusters Iterator würde den Rahmen dieser Klassen-Dokumentation sprengen. Daher verweisen wir hier auf einschlägige Publikationen über Entwurfsmuster (DesignPatterns).

Beziehungen

Die Iterator-Klasse CL_TCL_ITERATORarbeitet eng mit der Aggregats-Klasse CL_TCL_AGGREGATE zusammen.

Beispiel

Ein ausführliches Beispiel für die Verwendung von Aggregaten und Iteratoren finden sie im Programm TCL_ITERATOR_EXAMPLE.

Hinweise

Das automatische Registrieren der Event-Handler ist per Default abgeschattet. Bitte denken sie daran, diese bei Bedarf zu aktivieren, indem sie beim Instanziieren eines Iterator-Objektes dem Parameter NO_HANDLERden Wert CL_TCL=>FALSE zuweisen.

Diese Iterator-Klasse einthält einige Methoden, die im Kontext abgeleiteter Iterator-Klassen nicht immer sinnvoll sind. Aus diesem Grund werfen diese Methoden die Ausnahme CX_TCL_NOT_SUPPORTED, wenn sie nicht redefiniert werden. Eine Redefinition dieser Methoden macht aber nur dann Sinn, wenn der abgeleitete Iterator eine sinnvolle Funktionalität bereitstellen kann. Ansonnsten sollte die Methode unberührt bleiben. Verwender einer Iterator-Klasse, denen die bereitgestelle Funktionalität unbekannt ist, haben damit zumindest die Möglichkeit, einen Laufzeitfehler abzufangen, wenn eine Iterator-Methode nicht implementiert wurde. Es wäre ja denkbar, dass die Funktionalität in einer späteren Version nachgereicht wird.

Weiterführende Informationen

Für ein besseres Verständsnis der Verwendung von Entwurfsmustern als Elemente wiederverwendbarere objektorientierter Software ist das Buch Entwurfsmusterbzw. Design Patterns der Autoren Erich Gamma, Richard Helm, Raph Johnson und John Vlissides zu empfehlen.






General Material Data   General Material Data  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 4029 Date: 20240420 Time: 022912     sap01-206 ( 81 ms )