Code: Alles auswählen.
PARAMETERS:
pa_Struc TYPE C LENGTH 30.
DATA:
oError TYPE REF TO cx_root,
txtError TYPE STRING,
ptrInternalTable TYPE REF TO DATA.
FIELD-SYMBOLS:
<fsTable> TYPE ANY TABLE,
<fsWa> TYPE DATA,
<fsField> TYPE DATA.
TRY.
CREATE DATA ptrInternalTable TYPE TABLE OF (pa_Struc).
ASSIGN ptrInternalTable->* TO <fsTable>.
SELECT *
FROM (pa_Struc)
INTO TABLE <fsTable>.
LOOP AT <fsTable> ASSIGNING <fsWa>.
DO.
ASSIGN COMPONENT sy-index OF STRUCTURE <fsWa> TO <fsField>.
IF sy-subrc <> 0.
EXIT.
ENDIF.
WRITE: <fsField>.
ENDDO. "Felder abarbeiten
SKIP.
ENDLOOP. "Zeilen abarbeiten
CATCH cx_sy_create_data_error INTO oError.
txtError = oError->get_text( ).
WRITE: / 'Ausnahme: ', txtError.
CATCH cx_sy_dynamic_osql_semantics INTO oError.
txtError = oError->get_text( ).
WRITE: / 'Ausnahme: ', txtError.
ENDTRY.
Code: Alles auswählen.
TRY.
CREATE DATA ptrInternalTable TYPE TABLE OF (pa_Struc).
ASSIGN ptrInternalTable->* TO <fsTable>.
CATCH cx_sy_create_data_error INTO oError.
txtError = oError->get_text( ).
WRITE: / 'Ausnahme: ', txtError.
CATCH cx_sy_dynamic_osql_semantics INTO oError.
txtError = oError->get_text( ).
WRITE: / 'Ausnahme: ', txtError.
ENDTRY.
Guter Tip.DeathGuardian hat geschrieben:Tya, Dynamische Tabellen geht halt erst ab 4.7.
Aber in deinem Fall könnte man noch einen Workaround machen:
Mach einfach aus deinem "Select ... into Table + loop" einen "select ... into wa ... endselect".
Ist zwar nicht das schönste so, aber wie schon gesagt gehen dynamische Tabelen erst ab 4.7 und 4.6 kann leider nur dynamische Strukturen.
Code: Alles auswählen.
CREATE DATA ptrInternalStruc TYPE (pa_Struc).
ASSIGN ptrInternalStruc->* TO <fs_Struct>.
Select *
From (pa_Struc)
into <fs_Struct>.
endselect.