ich möchte ein Programm schreiben, das aus einer externen Datenbank Tabellen einliest und zur Bearbeitung darstellt. Im Selektionsbildschirm soll die Tabelle gewählt werden, die dann in einem TableControl angezeigt wird und bearbeitet werden kann. Die Tabellen haben unterschiedliche Strukturen.
Muß ich jetzt für jede der Tabellen ein eigenes Dynpro mit einem jeweils spezifischen TableControl schreiben, oder kann ich auch irgendwie ein TC nehmen, dessen Struktur dann der jeweiligen Tabelle angepaßt wird?
Ich hoffe, ich habe mich verständlich ausdrücken können.
soweit ich weiß, muss man bei einem TC immer alle Felder vorher bekannt geben, d.h. die angezeigte Struktur muss jedes Feld, dass du anzeigen möchtest enthalten.
Du kannst aber zur Laufzeit alle nicht benötigten Felder ausblenden:
Loop at screen.
if screen-name = 'FELD1'.
screen-invisible = 1.
modify screen.
endif.
endloop.
ggf. musst du diesen loop in den step-loop des tc aufnehmen.
Obige Möglichkeit würde ich persönlich aber nur empfehlen, falls die Tabellen einige übereinstimmende Felder.
Wenn es komplett unterschiedlich ist, würde ich eigene Dynpros empfehlen um die Übersichtlichkeit zu wahren.
Eine weitere Alternative ist auch die Verwendung eines ALV_GRID.
Hier gibt man immer dynamisch die Struktur mit, sodass wechselnde Tabellen kein Problem darstellen.
Sowas hatte ich vermutet. Wie kriege ich es den mit ALV hin. Ich hatte das als Liste [b]Viewer[/b] verstanden, aber eben nicht als Instrument, um Daten zu ändern.
Hallo, siehe die Doku zu FuBa STC1_FULLSCREEN_TABLE_CONTROL
und die Gruppe STC1 (allgemeines Table Control).
Eingeschränkt aber vielleicht hilft was. und sind schon einige Dinge vorprogrammiert.
Das wird auch in der Tr. KB21N verwendent.
Oder versuche eventuell die Tabellenpflegegenerator in der Laufzeit aufrufen.
Hallo,
Wenn auf dem Dynpro ausser dem TC noch weitere Felder zu verarbeiten sind, dann wurde ich mit SUBSCREENS arbeiten. Die verschiedenen Subscreens enthaten die verschiedenen TCs mit der zugehörigen Ablauflogik. Im Hauptdynpro erfolgt der Aufruf des Subscreens variabel zum Zeitpunkt PBO:
"CALL SUBSCREEN SUB INCLUDING SY-REPID Z_SUBSCREEN." Im der Variablen Z_subscreen steht die entsprechende Dynpro-nr. , die auf Grund der Anwender-Eingaben im Programm gefüllt wurde.
Die Ablauflogik des Hauptdynpros ist für alle TCs gleich.
Die Ablauflogik für die einzelnen SUBSCREENs und TCs müsste ja sehr ähnlich sein d.h. es gibt die gleichen Module und mit "PERFORM USING" innerhalb der einzelnen Module ergibt sich vieleicht ein übersichtliches Coding.
es gibt auch die Möglichkeit, die Daten als einfache Liste auszugeben und die Felder mittels WRITE ... INPUT ON eingabebereit zu machen.
Die Werte können dann mit READ LINE wieder eingelesen werden. Ist relativ simpel. Technisch nicht so "schön" wie ALV oder TableControl aber für deine Zwecke ja vielleicht sehr praktikabel?!