ST22 hat geschrieben:...und ich finde, damit öffnet man wieder Tor und Tür, da man ja auch wieder einen globalen Datenbereich definiert...
Ich versuche konsequent drauf zu verzichten und nehme etwas Mehrarbeit in Kauf. Ist ja auch wieder so ne Glaubensfrage ;-).
Ja, aber nicht immer ist das möglich, auch mit Blick auf den einen oder anderen alten Zopf, den es in SAP halt noch gibt.
adt hat geschrieben:Ich möchte meine Aussage doch noch etwas "aufweichen":
... zur Kommunikation (PAI/PBO) mit Dynpros (und auch nur dafür) ...
Ich möchte die Aussage noch weiter aufweichen. Wenn man im HCM beispielsweise eine sog. Dynamische Maßnahme programmiert und dort eine Formroutine hinterlegt, dann muss man in dem Subroutinenpool dieser Formroutine bestimmte TABLES-Befehle angeben, um benötigte Werte von und zur aufrufenden Dynamischen Maßnahme transportieren zu können. Das mag einem gefallen oder nicht, aber die SAP hat das so designt.
Auch wenn man in einem Report oder bestimmten User-Exits (z.B. ZXPADU02) die Struktur SSCRFIELDS nutzen möchte, etwa zur Prüfung des UCOMM, muss man diese per TABLES-Befehl zugänglich machen.
Also es gibt schon noch den einen oder anderen Anwendungsfall für den TABLES-Befehl. Man sollte ihn halt nur nicht mehr nutzen, um routinemäßige Workareas für Datenbanktabellen zu deklarieren.
black_adept hat geschrieben:P.S. Meine Vorgehensweise recht häufig: Für alle Felder eines Dynpros im DDIC eine Struktur mit Namen "<progname>_<dynnr>" anlegen und diese als TABLES im Programm zu definieren.
Das finde ich eine ganz schreckliche Herangehensweise. Programmspezifische Felder haben nach meiner Überzeugung im DDIC nichts verloren und müllen dieses nur voll. Dynprofelder kann man problemlos als globale Felder im Dynproprogramm deklarieren. Wenn man sich auf ein Feld einer DDIC-Tabelle bezieht, dann erbt das Feld meines Wissens auch alle Attribute. Man muss nur darauf achten, dass man über ein Feld einer DDIC-Tabelle (oder DDIC-Struktur) typisiert und nicht über ein Datenelement, denn die Fremdschlüssel usw. sind nur in der Tabelle definiert.
Also
DATA g_matnr TYPE mara-matnr.
und nicht
DATA g_matnr TYPE matnr.