Tiefe Struktur

Aus SAP-Wiki
Zur Navigation springenZur Suche springen

Eine Struktur kann im Gegensatz zu einer Datenbanktabelle "tief" sein. Das bedeutet, dass in einer Struktur interne Tabellen enthalten sind, die wiederum Strukturen oder interne Tabellen enthalten usw.

Erweiterung Tiefe Strukturen

  • Wenn die Tiefen Strukturen inklusive der darin enthalten Strukturen/Tabellentypen im Kundennamensraum liegen, ist die Erweiterung der Tiefen Struktur auf jeder Ebene problemlos möglich.
  • Tiefe SAP-Standardstrukturen sind in erweiterbar, sofern sie in ihren Eigenschaften das Attribut der Erweiterbarkeit gesetzt haben, sodass man kundeneigene Felder und Tabellen in diese Strukturen integrieren kann.

Tiefe Strukturen im Formularwesen

  • Tiefe Strukturen benutzt man häufig in der Formularentwicklung, um die meisten nötigen Daten einem Formular in dieser Tiefen Struktur zu übergeben.
  • Alternativ kann man die Tabellen einzeln dem Formular übergeben und die Tabellenhierarchie dann durch eine Hierarchie im Formular (Kontext) darstellen, wobei die Tabellen durch Where-Bedingungen ihre passenden Verknüpfungen darstellen. Diese Vorgehensweise ist jedoch schwer zu überblicken und es schleichen sich leicht Fehler ein.

Vorteile Tiefe Strukturen

  • Tiefe Strukturen haben den Vorteil, dass man bei einem Formularaufruf die Schnittstelle schlank halten kann, weil nahezu alle Anwendungsdaten in der tiefen Struktur sich befinden und viele Änderungen dann später allein durch durch Hinzufügen von Feldern in der tiefen Struktur im Data-Dictionary möglich sind, ohne das Druckrahmenprogramm oder die Schnittstelle vom Formular (Adobe Forms) ändern zu müssen.
  • Die Anzeige der Tiefen Struktur in der Transaktion SE11 zeigt durch die Hierarchisierung sehr gut die betriebswirtschaftliche Strukturierung der Daten des Formulars. Fehler werden dadurch schneller sichtbar.
  • Kommt im Laufe der Zeit eine neue Anforderung vom Fachbereich, die eine zusätzliche Loop-Ebene erfordert, so kann sie durch die Änderung der Tiefen Struktur wesentlich schneller und sicherer vorgenommen werden als bei flachen Tabellen.

Umwandlung von separaten flachen internen Tabellen in eine Tiefe Struktur

  • Hat ein Formular eine große Komplexität, ist es eine große Herausforderung eine flache Tabellenstruktur in eine Tiefe Struktur umzuwandeln. Im aktuellen Projekt im Retailbereich hat das Rechnungsformular eine siebenfach geschachtelte Tabellenhierarchie und ist damit sehr komplex.
  • Bei 2 bis 3 Tabellenebebenen ist es noch relativ einfach zu überblicken und wenn man sorgfältig arbeitet und testet, ist es durchaus zu vertreten diese flache Tabellenhierarchie in eine Tiefe Struktur zu überführen. Bei Adobe Forms hat man die Versionierung des Formulars zur Verfügung, um so auch zu jeder alten Version zurückspringen zu können. Bei Smart Forms und bei SAPscript gibt es keine Versionierung. Hier sollte man bewußt zur Sicherheit die eine oder andere manuelle Kopie des Formulars speichern.
  • Bei einer sehr komplexen Tabellenhierarchie sollte man nicht versuchen gleichzeitig eine neue Tiefe Struktur zu füllen und die alten internen Tabellen zu löschen. Es passieren Fehler und da man nicht ständig intensiv testet, werden Fehler oft erst spät auffallen und dann ist es sehr schwierig die Fehler zu identifizieren und wieder in eine fehlerlose Version zu überführen.
  • Praktikabel ist es jedoch die alte flache Tabellenhierarchie im Druckprogramm beibezahlen und diese Daten dann im Druckprogramm einer Form-Routine (oder Methode) zu übergeben, in der dann die neue Tiefe Struktur gebildet wird. Man kann dann das Formular (und die Schnittstelle) kopieren und das alte Formular/Schnittstelle mit den alten Datenstruktur weiterlaufen lassen. Das neue Formular baut auf der Tiefen Struktur auf und so hat man einen direkten Vergleich zweier Formulare, mit denen man intensiv testen kann. Beide Versionen müssen die gleichen Ergebnisse bringen. Anhand der sichtbaren Unterschiede der Daten kann man die Fehler schnell finden und bereinigen. Man sollte darauf achten einige unterschiedlichen Datenkonstellationen zu testen, damit alle relevanten Datenkonstellationen erfasst werden. Bei dieser Umstellung kann man mit einigen Tagen Aufwand rechnen. Aber hinterher ist eine tiefe Struktur wesentlich transparenter und besser pflegbar als eine flache Tabellenhierarchie. In der Praxis wird ein Kunde jedoch selten das Budget zur Verfügung stellen um diese Umstellung durchzuführen - zudem noch verbunden mit der Gefahr, dass Fehler passieren, die erst im Produktivbetrieb auffallen und in dieser Zeit müssen andere Tickets liegenbleiben. Daher sollte man am besten schon bei einem neuen Formular mit einer Tiefen Struktur beginnen.

Beispiel geschachtelter Loop (1)

Im einem Projekt war für ein Formular ein fünfach geschachtelter Loop notwendig, dessen betriebswirtschaftliche Strukturen dann in einer einzigen tiefen Struktur abgebildet werden konnten und in dieser Form dem Formular übergeben wurden.

  • Verlag
    • Warenempfänger
      • Objekt (Zeitschrift)
        • Ausgabeart (mit Beilage/ohne)
          • Positionen (Mengen, Preise etc. Zeitschrift)

Beispiel geschachtelter Loop (2)

In einem anderen Projekt in einer Modefirma gibt es einen noch komplexeren siebenfach geschachtelten Loop

  • Rechnung
    • Lieferung
      • Kundenauftrag
        • Sammelartikel
          • Lot (gruppiert nach Produktmerkmalen)
            • Lot
              • Lot Verteilung (Mengen in Kleidergrößen)
          • Einzelartikel (gruppiert nach Produktmerkmalen)
            • Einzelartikel

Beispiel tiefe Struktur LEDLV_DELNOTE

  • Die tiefe Struktur LEDLV_DELNOTE wird von SAP für die Füllung des Formulars für den Lieferschein verwendet.

TiefeStrukturen1.jpg

Hierarchiedarstellung Tiefe Struktur und Suche

Sehr nützlich ist es hier, wenn man über alle Hierarchieebenen der tiefen Struktur suchen kann. Standardmäßig durchsucht er nur die sichtbaren Felder/Strukturen.

Klickt man jedoch auf TiefeStrukturen2.jpg, dann ändert sich die Ansicht der tiefen Struktur.

TiefeStrukturen3.jpg

Nun kann über alle Ebenen der tiefen Struktur gesucht werden. Hier soll z. B. die Versandbedingung gefunden werden.

TiefeStrukturen4.jpg

Er findet sofort das gesuchte Ergebnis und markiert es.

TiefeStrukturen5.jpg

Manchmal findet man ein Datenbankfeld in der (tiefen) Struktur nicht, obwohl der gesuchte Inhalt vorhanden ist. Das liegt dann daran, weil das Feld anders heißt als in der Datenbanktabelle, in der der Inhalt physisch gespeichert ist. Es hilft hier oft nach dem Datenelement zu suchne, mit dem das Feld typisiert ist. In Strukturen werden oft andere Feldnamen verwendet, aber auf gleiche Datenelemente typisiert.

Web-Links