weiß jemand von euch, ob es eine Möglichkeit gibt herauszufinden auf welche Tabellen eine Applikationslayer Struktur zugreift?
Hintergrund: Ich habe einen Funktionsbaustein, welcher bei der Definition im DATA Bereich eine Struktur definiert. Habe durch herum probieren nun herausgefunden das die Struktur
ihre felder zum größten Teil aus der Tabelle sepa_mandate bekommt. Das Coding im FB sieht aber nur so aus:
DATA: ls_mandate TYPE sepa_str_data_mandate_data
gibt es eine Möglichkeit (evtl Verwendungsnachweis) herauszufinden woher die Struktur "sepa_str_data_mandate_data" ihre Felder herbekommt bzw. welche Tabellen von dieser Struktur benutzt werden.
Im Prinzip kann ich meine Struktur ja nennen, wie ich will. Es ist ja durchaus möglich, meine DB-Tabelle ZZ_MEINE_DATEN zu nennen und die Struktur ZZ_HORST.
Sinniger Weise gibt es natürlich die ungeschriebenen Regeln, dass man sie Struktur, die zu einer DB-Tabelle gehört, auch entsprechend zu benennen. Also ZZ_MEINE_DATEN und ZZ_STR_MEINE_DATEN.
Mit dem Verwendungsnachweis ist das schwierig. Wenn man Glück hat, wird die Struktur in der DB-Tabelle als Include verwendet. Eine andere Möglichkeit wäre, Verwendungsnachweise für die Datenelemente zu erstellen und dann zu gucken, in welcher DB-Tabelle zumindest die meisten benutzt werden.
ja da gebe ich dir schon recht und meistens ist es ja auch so. Ich frage mich nur woher die Struktur weiß aus welcher Tabelle sie ihre Felder zu entnehmen hat bzw.
wie die Struktur mit der Tabelle verlinkt ist.
Habe früher viel C programmiert und bin im ABAP eher noch ein greenhorn, deswegen leuchten mir manche Sachen noch nicht so richtig ein.
Yes i know. Aber irgendwie kann ich es nicht ganz nachvollziehen. Vorallem wenn ich die Struktur nicht selber definiert habe.
Wenn ich fremdes coding debuggen will und den Prozess verstehen möchte, dann würde ich gerne wissen welche Tabellen mit
Werten gefüllt werden/mit welchen tabellen gearbeitet wird. Anders gesagt muss ich ja wissen wo ich nachschauen muss um
festzustellen, ob das Programm rcihtig arbeitet.
Doppelklick...Doppelklick... Doppelklick... Doppelklick...
Und im Debugger sieht man ja auch einiges...
Aber ehrlich gesagt, verstehe ich Deine letzte Frage nicht. Das klingt fuer mich eher wie Entwickler-Alltag.
Man muss ich die Programme eben anschauen, und dort wo man mehr wissen will, eben ein bisschen naeher anschauen.
Die Struktur hat i.A. keine Information darüber wo die Daten herkommen. Es ist in der Verantwortlichkeit des Programms das diese Struktur verwendet die wesentlichen Daten in die Struktur zu verfrachten. Häufig ist es auch so, dass ein Feld in der Struktur mit gar keinem DB-Feld korrespondiert - z.B. bei Feldern, die zur Laufzeit errechnet werden.
Hallo,
danke für eure unterstützung. Habe jetzt glaub ich meinen Denkfehler beseitigt. Die Struktur wird bevor sie in Programmen genutzt werden kann, global als Struktur im System definiert. Somit kann das Programm mit der Struktur arbeiten ohne das im Programm der genaue Ort z.b. für die Ablage der Dtaen definiert werden muss.
Hoffe ich liege nicht ganz falsch.
Eine Struktur ist de facto lediglich eine Typdefinition, welche aus mehreren Komponenten (Feldern) besteht. Diese Felder selber können durchaus auch wieder komplexe Datentypen wie Strukturen oder Tabellen oder auch ganz normale Felder sein.
Was Strukturen und Tabellen inheränt verbindet, dass der Zeilentyp einer Tabelle eben gerade die im DDIC definierte Struktur ist. D.h. du hast im SAP für Tabellen immer einen Dualismus.
Einerseits existiert die Tabelle auf der DB und verschwendet dort Speicherplatz. Andererseits ist im DDIC die gleichnamige Typdefinition angelegt die der Zeilenstruktur eben dieser Tabelle entspricht. Im DDIC steht dann für diese Struktur aber auch die Bezeichnung "Tabelle", da das hier eng gekoppelt ist. Änderungen an der Zeilenstruktur führen beim Aktivieren auch zum Ändern der gleichnamigen Datenbanktabelle.
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag: darmon