Hallo Jürgen,
zu Deinen Fragen:
- hashed- und sorted-Tabellen werden LANGSAMER gefüllt, egal ob aus einer DB-Tabelle oder aus einer Work Area. Am schnellsten ist in jedem Fall ein SELECT ... FROM ... INTO TABLE (standard table).
Abhänigig von den Quelldaten können die Performance-Unterschiede dabei erheblich sein. Ist die Quell-Tabelle schon nach Schlüsseln vorsortiert, so sind die Unterschiede gering, wenn nicht, dann können locker mal 1000% zusammenkommen. In der Regel ist dabei der hashed table noch mal um einiges langsamer als der sorted. Dafür sind dann aber die Abfragen mit "READ TABLE ... WITH KEY ..." oder "LOOP AT ... WHERE ..." um Lichtjahre schneller als bei einer Standardtabelle. Bei kleinen Tabellen sieht man das fast nicht, aber die Unterschiede wachsen exponentiell mit der Tabellengröße, bei 1 Mio. Datensätze hat das auf jeden Fall riesige Auswirkungen.
Bedeutet: hashed table lohnt sich nur bei großen Tabellen, die selten modifiziert werden und sehr oft über Schlüssel-Zugriff (!) gelesen werden.
- Unter bestimmten Umständen kann es schneller sein, das Abfrageergebnis zuerst in einer Standardtabelle zu speichern und dann die Hashed Tabelle in einer LOOP einzelsatzweise zu füllen.
- Versuche mal Dein Modify so:
FIELD-SYMBOLS: <fs_vorgang> TYPE (wie wa_vorgang)
LOOP AT IT_VORGANG ASSIGNING <fs_vorgang>
WHERE AUFPL = ...
<fs_vorgang>-objnr = ...
ENDLOOP.
Aber Achtung: Du darfst auf diese Weise KEINE Schlüsselfelder modifizieren !!!
Hope that helps ...
Frank