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 tabelleIst <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'