Code: Alles auswählen.
DATA:
lo_new_tab TYPE REF TO cl_abap_tabledescr,
lo_data TYPE REF TO data.
FIELD-SYMBOLS: <f_tab> TYPE STANDARD TABLE ,
<f_line> TYPE ANY .
CREATE DATA lo_data TYPE HANDLE lo_new_tab.
ASSIGN lo_data->* TO <f_tab>.
Code: Alles auswählen.
SELECT felder INTO <f_tab> FROM tabelle .
machwas
ENDSELECT.
Code: Alles auswählen.
SELECT felder INTO TABLE <f_tab> FROM tabelle .
ENDSELECT.
Code: Alles auswählen.
FIELD-SYMBOLS: <fs_tab> TYPE tabelle
Ist <f_line> zum Zeitpunkt des Selects einer Zeile/Workarea/Struktur zugewiesen?nickname8 hat geschrieben:DeinVorschlag geht leider nicht. Der FROM-Teil ist bei mir eine Variable, in denen eine einzelne Tabelle oder Joins stehen dürfen.
Wenn ich versuche ein feld-symbol vom typ meiner dynamisch erstellten tabelle zu erstellen, sagt der "der typ blablupp ist unbekannt.
Code: Alles auswählen.
APPEND INITAL LINE TO <f_tab> ASSIGIN TO <f_line>. "Neue leere Zeile in ITAB erzeugen
SELECT * INTO CORRESPONDING FIELDS OF <ls_line> FROM Tabelle.
* Prüfungen ok
APPEND INITAL LINE TO <f_tab> ASSIGIN TO <f_line>. "Neue leere Zeile in ITAB erzeugen
* Prüfung nicht ok
CLEAR <f_line>. "Daten zurücksetzten
ENDSELECT.
* wenn kein Datensatz übernommen wurde, muss noch die leere Zeile gelöscht werden
IF <l_line> IS INITIAL.
DELETE ....
ENDIF.
Code: Alles auswählen.
APPEND INITIAL LINE TO <f_tab> ASSIGNING <f_line>.
SELECT (FIELDS) INTO CORRESPONDING FIELDS OF <f_line> FROM (TABLES_AND_JOINS) WHERE marc~werks = '1000'.
APPEND INITIAL LINE TO <f_tab> ASSIGNING <f_line>.
* Datenzeile doch nicht in Tabelle schreiben -> row löschen
* CLEAR <f_line>.
ENDSELECT.
Folgende Benutzer bedankten sich beim Autor PeterPaletti für den Beitrag:
nickname8
Code: Alles auswählen.
DATA: FIELDS(30) TYPE c VALUE 'MARA~MATNR MARC~WERKS' ,
TABLES_AND_JOINS(50) TYPE c VALUE 'MARA INNER JOIN MARC ON MARA~MATNR = MARC~MATNR' ,
WHERECONDITION(50) TYPE c VALUE 'WERKS = 1000' .
APPEND INITIAL LINE TO <f_tab> ASSIGNING <f_line>.
SELECT (FIELDS) INTO CORRESPONDING FIELDS OF <f_line> FROM (TABLES_AND_JOINS) WHERE (WHERECONDITION) .
IF SY-DBCNT GT ROWSKIPS.
APPEND <f_line> to datas.
IF ROWCOUNT > 0 AND SY-DBCNT GE ROWCOUNT.
EXIT.
ENDIF.
ENDIF.
ENDSELECT.
INTO CORRESPONDING = Zuweisung per Namensgleichheitnickname8 hat geschrieben:hat jemand eine idee? Das einzige was ich verändere sind die Namen der Spalten der itab.
Code: Alles auswählen.
DATA: FIELDS(30) TYPE c VALUE 'MARA~MATNR AS MARA-MATNR MARC~WERKS AS MARC-WERKS'