Select/Endselect in dynamisch erzeugte itab

Getting started ... Alles für einen gelungenen Start.
9 Beiträge • Seite 1 von 1
9 Beiträge Seite 1 von 1

Select/Endselect in dynamisch erzeugte itab

Beitrag von nickname8 (Specialist / 134 / 17 / 19 ) »
Hallo,
ich nochmal mit einer Frage:
Ich habe eine dynamische Tabelle erzeugt und möchte diese mit einem Select ... Endselect befüllen. Dazwischen will ich halt noch paar Sachen prüfen, z.B. nur bestimmte Zeilen/Zeilenanzahl.
Leider geht es nicht, weil ich die Fehlermeldung You cannot use an internal table as a work area/Als Arbeitsbereich ist eine interne Tabelle nicht erlaubt. bekomme.

Etwas von meinem Coding zur Verdeutlichung:

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>.
Ich versuche folgendes:

Code: Alles auswählen.

SELECT felder INTO  <f_tab> FROM tabelle .
machwas
ENDSELECT.
Das mag der aber nicht, stattdessen darf ich die itab nur sofort komplett füllen mit

Code: Alles auswählen.


SELECT felder INTO TABLE  <f_tab> FROM tabelle .
ENDSELECT.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Select/Endselect in dynamisch erzeugte itab

Beitrag von Niels (ForumUser / 77 / 18 / 9 ) »
Hallo nickname8,

du hast dein Feldsymbol als Standard Tabele definiert und bekommst deshalb die Fehlermeldung.
Definiere es als WA.

Code: Alles auswählen.

FIELD-SYMBOLS: <fs_tab> TYPE tabelle
Gruß

Niels

Re: Select/Endselect in dynamisch erzeugte itab

Beitrag von nickname8 (Specialist / 134 / 17 / 19 ) »
Hi,
danke für die Antwort.

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.

Ich hoffe ich konnte mein Problem schildern.

Re: Select/Endselect in dynamisch erzeugte itab

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
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.
Ist <f_line> zum Zeitpunkt des Selects einer Zeile/Workarea/Struktur zugewiesen?

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. 

Folgende Benutzer bedankten sich beim Autor JHM für den Beitrag:
nickname8

Gruß Hendrik

Re: Select/Endselect in dynamisch erzeugte itab

Beitrag von nickname8 (Specialist / 134 / 17 / 19 ) »
Wir kommen der Sache näher.... ^^
Die erste Zeile wird in die itab geschrieben, anschließen aber nur leere Zeilen angefügt.

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.
Wie man evtl. merkt bin ich noch ABAP-Anfänger. Vielleicht übersehe ich ja auch eine total simple Sache...

Re: Select/Endselect in dynamisch erzeugte itab

Beitrag von PeterPaletti (Specialist / 348 / 32 / 97 ) »
Ja, du solltest das APPEND INITIAL LINE blabla aus der SELECT_ENDSELECT Schleife herausnehmen.
Das APPEND INITIAL LINE brauchst du nur einmal um dir eine Workarea zu schaffen.
Deine Workarea <F_Line> brauchst dann nur, um innehralb der SELECT-ENDSELECT-Schleife etwas mit den Daten zu machen.

Folgende Benutzer bedankten sich beim Autor PeterPaletti für den Beitrag:
nickname8


Re: Select/Endselect in dynamisch erzeugte itab

Beitrag von nickname8 (Specialist / 134 / 17 / 19 ) »
ok, danke! Das hat geholfen.
Muss jetzt nur noch verstehen, warum das so ist. Aber das mache ich morgen ^^

Re: Select/Endselect in dynamisch erzeugte itab

Beitrag von nickname8 (Specialist / 134 / 17 / 19 ) »
Ich habe noch eine kleine frage, die auch etwas hier reinpasst. Will nicht extra einen neuen Thread erstellen.
Ich hoffe es ist ok.

Mein problem ist, dass ich eine dynamisch erzeugte itab nicht füllen kann:
Bild
So sieht der Header der itab aus, die ich dynamisch erzeugt habe.

jetzt versuche ich mit folgendem befehl die Tabelle zu füllen:

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.
hier bekomme ich nur über 6000 leere Zeilen.
Sieht die dynamisch erzeugte Tabelle jedoch so aus:
Bild
geht es wunderbar und alle Zeilen sind so gefüllt wie ich es haben möchte...
hat jemand eine idee? Das einzige was ich verändere sind die Namen der Spalten der itab.
Danke schonmal!
LG

Re: Select/Endselect in dynamisch erzeugte itab

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
nickname8 hat geschrieben:hat jemand eine idee? Das einzige was ich verändere sind die Namen der Spalten der itab.
INTO CORRESPONDING = Zuweisung per Namensgleichheit

Also Namen im Select per AS anpassen:

Code: Alles auswählen.

DATA: FIELDS(30) TYPE c VALUE 'MARA~MATNR AS MARA-MATNR MARC~WERKS AS MARC-WERKS'
Gruß Hendrik

Seite 1 von 1

Vergleichbare Themen

2
Antw.
6780
Views
describe_by_name für dynamisch erzeugte ITAB
von Der Formulator » 12.11.2021 15:07 • Verfasst in ABAP® Core
6
Antw.
3956
Views
Zugriff auf dynamisch erzeugte Spaltennamen einer ITAB
von Akatash » 15.09.2017 12:09 • Verfasst in ABAP® für Anfänger
2
Antw.
3212
Views
Dynamisch erzeugte ITAB, ASSIGN, wie kriege ich die Struktur
von enneos » 12.07.2007 16:10 • Verfasst in ABAP® Core
1
Antw.
1415
Views
Select...Endselect...letzter Datensatz in der itab doppelt
von Kali » 27.03.2013 14:32 • Verfasst in ABAP® für Anfänger
2
Antw.
4166
Views
Dynamisch erzeugte Tabelle erweitern
von ewx » 18.01.2007 14:57 • Verfasst in ABAP Objects®

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Dialog-Container mit Toolbar/Status
vor 5 Stunden von DeathAndPain gelöst 22 / 2800
Daten an Tabelle binden
vor 10 Stunden von Lukas Sanders 2 / 876
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 430

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Dialog-Container mit Toolbar/Status
vor 5 Stunden von DeathAndPain gelöst 22 / 2800
Daten an Tabelle binden
vor 10 Stunden von Lukas Sanders 2 / 876
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 430

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2467
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9050