Daten aus interner Tabelle weiter verarbeiten

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

Daten aus interner Tabelle weiter verarbeiten

Beitrag von RickJames87 (ForumUser / 7 / 0 / 0 ) »
Hallo!

Ich bin noch recht unerfahren mit ABAP und habe mich jetzt mal so langsam rangetastet. Jetzt habe ich ein paar Daten in eine interne Tabelle eingelesen und möchte diese Daten in einem anderen SELECT-Statement weiter verarbeiten. Einfach den Namen der Tabelle hinter das FROM-Statement zu setzen ging nicht. Wie schaffe ich es, diese Daten weiter zu verwenden? Geht das nur per JOIN?

Gruß,

Rick

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


Re: Daten aus interner Tabelle weiter verarbeiten

Beitrag von eddi89 (ForumUser / 22 / 0 / 0 ) »
das da unten habich heut geschrieben.
select kennste anscheind. das sternchen ist ein platzhalter und heißt hier erstmal, das er alle felder nimmt. alternativ kann man auch alle gewünschten anstatt des sternchens reinschrieben. vbak ist meine urpsrungstabelle, nun soll er die daten in die tabelle tbl_vbak (intern) schreiben.
zuvor musst du diese deklarieren. also:
data: tbl_vbak type table of str-vbak. str steht für struktur.
die struktur erstellen:
types: beginn of str_vbak.
xxx type vbak-xxx,
yyy type vbak-yyy.
...
end of str_vbak.

dann halt der select-krams:

Code: Alles auswählen.

*---------------------------------------------------------------------*
*  FORM Selektion
*---------------------------------------------------------------------*
FORM selektion.
*  Datenselektion
  SELECT * FROM vbak INTO CORRESPONDING FIELDS OF TABLE tbl_vbak
             WHERE vbeln IN p_vbeln AND
                   erdat IN p_erdat AND
                   ernam IN p_ernam AND
                   vbtyp IN p_vbtyp AND
                   vkorg IN p_vkorg AND
                   vtweg IN p_vtweg AND
                   spart IN p_spart.
ENDFORM.                                          "selektion
und nu musste die interne tabelle in einen arbeitsbereich loopen zB wa_vbak (wa = workarea).
und schon kannste mit der tabelle tun und lasen was du willst.
in eine workarea darum, weil du sonst ärger mit den kopfzeilen bekommst, die hat eine interne nämlich nit...

ich hoff mal, dass ich dir das auf salopp-deutsch verständlichen machen konnte, da ich auch grad erst angefangen habe damit^^

Re: Daten aus interner Tabelle weiter verarbeiten

Beitrag von RickJames87 (ForumUser / 7 / 0 / 0 ) »
Danke schonmal. Das hilft mir. :up:

Aber wie kann ich danach mit diesem Arbeitsbereich weiterarbeiten? Ich möchte dann die Daten in der internen Tabelle per SELECT-Statement wieder in eine andere interne Tabelle schreiben. Wie mach ich das dann?

Re: Daten aus interner Tabelle weiter verarbeiten

Beitrag von eddi89 (ForumUser / 22 / 0 / 0 ) »
versteh ich nicht so ganz... sie sind doch in einer internen.
nur weil man sie in eine wa loopt, sind sie doch nicht weg (denk ich mal)
und dann arbeitest du wieder mit der alten internen tabelle weiter.

kann aber auch gut sein, dass du sie aus dem wa wieder in eine tab loopen kannst.
könte dann vllt so aussehen:
LOOP AT wa_sbook INTO tab_sbook.

sinn und zweck versteh ich aber nicht, da die tab_sbook ja bereits vorher bestanden haben muss, da
1. selektieren in interne tabelle
2. loopen in wa
3. ausgeben oder was weiß ich
4.? wa wieder in interne tabelle loopen??

Re: Daten aus interner Tabelle weiter verarbeiten

Beitrag von UserBC (ForumUser / 61 / 0 / 1 ) »
Hallo RickJames87,

wie du das machst mit dem SELECT machst ? Überhaupt nicht.

Das SELECT-Statement ist nur für das Lesen von Daten aus deiner DB-Tabelle bzw. aus mehreren DB-Tabellen.

Warum sollst loopst du den Inhalt in eine wa ?

Ganz einfach, in ABAP kannst du nicht direkt mit den Daten der internen Tabelle arbeiten, sondern nur mit den Daten die du in eine wa geloopt hast.
Also:

Code: Alles auswählen.

Loop at tbl_vbak into wa_vbak.
         if...
               Prüfung: Relevant?
               Aktion.
         endif.
endloop.
Für Fortgeschrittene geht aus ein Field-Symbol anstelle einer Workarea,
dies ist wesentlich performanter und auch nicht wesentlich komplizierter.
Allerdings steckt der Teufel hier im Detail.

Evtl. kannst du aber auch ein READ-STATEMENT einsetzen,
dies wäre die entsprechung des SELECTS für interne Tabellen.
Allerdings wird es etwas andern eingesetzt.

Abgesehen davon, welchen Grund solltest du haben, alle Einträge aus der internen Tabelle 1 in die interne Tabelle 2 kopieren !?

Gruss UserBC

Re: Daten aus interner Tabelle weiter verarbeiten

Beitrag von RickJames87 (ForumUser / 7 / 0 / 0 ) »
Ok, so langsam fange ich an zu verstehen. ;) Danke schonmal für die großzügige Hilfe. Nur bei einer Sache bin ich noch nicht wirklich weitergekommen.

Ich habe jetzt per LOOP AT-Befehl die Daten in der Tabelle bearbeitet. Wie krieg ich die Daten jetzt wieder in eine interne Tabelle? Der Vorschlag von eddi89 hat nicht funktioniert, da sagt er mir, dass der Arbeitsbereich nicht in den Typ der internen Tabelle konvertierbar ist. Auch move-corresponding funktioniert nicht.

Da ich aber nach der Bearbeitung im Arbeitsbereich einen Funktionsbaustein aufrufe, der die interne Tabelle verwendet, frage ich mich, wie ich die Änderungen wieder in de internen Tabelle sichtbar mache.

Ich hoffe, ich habe nichts übersehen, was mir bereits helfen könnte...

Re: Daten aus interner Tabelle weiter verarbeiten

Beitrag von Ratazong (Specialist / 144 / 1 / 14 ) »
RickJames87 hat geschrieben:Ok, so langsam fange ich an zu verstehen. ;) Danke schonmal für die großzügige Hilfe. Nur bei einer Sache bin ich noch nicht wirklich weitergekommen.

Ich habe jetzt per LOOP AT-Befehl die Daten in der Tabelle bearbeitet. Wie krieg ich die Daten jetzt wieder in eine interne Tabelle? Der Vorschlag von eddi89 hat nicht funktioniert, da sagt er mir, dass der Arbeitsbereich nicht in den Typ der internen Tabelle konvertierbar ist. Auch move-corresponding funktioniert nicht.

Da ich aber nach der Bearbeitung im Arbeitsbereich einen Funktionsbaustein aufrufe, der die interne Tabelle verwendet, frage ich mich, wie ich die Änderungen wieder in de internen Tabelle sichtbar mache.

Ich hoffe, ich habe nichts übersehen, was mir bereits helfen könnte...
am Ende des Loops

Code: Alles auswählen.

MODIFY tbl_vbak FROM wa_vbak.

Re: Daten aus interner Tabelle weiter verarbeiten

Beitrag von UserBC (ForumUser / 61 / 0 / 1 ) »
RickJames87 hat geschrieben: Ich habe jetzt per LOOP AT-Befehl die Daten in der Tabelle bearbeitet. Wie krieg ich die Daten jetzt wieder in eine interne Tabelle? Der Vorschlag von eddi89 hat nicht funktioniert, da sagt er mir, dass der Arbeitsbereich nicht in den Typ der internen Tabelle konvertierbar ist. Auch move-corresponding funktioniert nicht.
Der Arbeitsbereich (WA) ist eine flachte Struktur,
die Tabelle(LT) ist die interne Tabelle dazu, jede Zeile der Tabelle muss die gleiche flache Struktur wie der WA haben.

Am einfachsten:

Code: Alles auswählen.

data: tbl_vbak like standard table of vbak...,
         wa_vbak like line of tbl_vbak.

loop at tbl_vbak into wa_vbak.
...
MODIFY tbl_vbak FROM wa_vbak.
endloop.
Du die Definition des Arbeitsbereichs mit "like line of..." stellt du sicher,
dass die Strukturen immer identisch sind (auch wenn du die Struktur von tbl_vbak plötzlich auf eine andere Struktur beziehst).

Nur als Tip am Rande, hast du hier schon mal nachgesehen?

http://help.sap.com/saphelp_nw70ehp1/he ... ameset.htm
http://help.sap.com/abapdocu/de/ABENABAP.htm

Gruss
UserBC

Re: Daten aus interner Tabelle weiter verarbeiten

Beitrag von RickJames87 (ForumUser / 7 / 0 / 0 ) »
Danke für die Tipps. :up:

Haben mir sehr geholfen.

EDIT: Ich muss doch nochmal nachhaken. Wollte jetzt aber keinen neuen Thread eröffnen.

Ich will ein .csv-File in eine Tabelle in SAP uploaden. Jetzt habe ich zwei Möglichkeiten gefunden:

Einmal mit 'GUI_UPLOAD' uploaden und dann an jedem ';' splitten. Da hab ich aber das Problem, dass der Befehl ja für Zeichenketten gilt, ich müsste in dem Moment aber praktisch eine interne Tabelle splitten. Das geht natürlich nicht. Hier der Quelltext.

Code: Alles auswählen.

REPORT  z_transform_sod_rules_upload.

*&---------------------------------------------------------------------*
*&-Deklarationen für Upload--------------------------------------------*
*&---------------------------------------------------------------------*

PARAMETERS: fname TYPE rlgrap-filename DEFAULT 'c:\download.csv',
            ftype TYPE rlgrap-filetype DEFAULT 'ASC'.

DATA: upload_tab LIKE TABLE OF /PSYNG/FAOBJ,
      upload_tab_conv LIKE TABLE OF /PSYNG/FAOBJ,
      wa_upload_tab LIKE /PSYNG/FAOBJ.


*&---------------------------------------------------------------------*
*&-Verarbeitungsblöcke-------------------------------------------------*
*&---------------------------------------------------------------------*

CALL FUNCTION 'GUI_UPLOAD'
  EXPORTING
    filename = 'c:\download.csv'
  TABLES
    data_tab = upload_tab
  EXCEPTIONS
    file_open_error         = 1
    file_read_error         = 2
    no_batch                = 3
    gui_refuse_filetransfer = 4
    invalid_type            = 5
    no_authority            = 6
    unknown_error           = 7
    bad_data_format         = 8
    header_not_allowed      = 9
    separator_not_allowed   = 10
    header_too_long         = 11
    unknown_dp_error        = 12
    access_denied           = 13
    dp_out_of_memory        = 14
    disk_full               = 15
    dp_timeout              = 16
    OTHERS                  = 17.


LOOP AT upload_tab INTO wa_upload_tab.
SPLIT upload_tab AT ',' INTO TABLE upload_tab_conv.
ENDLOOP.
Die zweite Möglichkeit wäre ein extra Funktionsbaustein namens 'TEXT_CONVERT_CSV_TO_SAP'. Da blick ich allerdings gar nicht durch, weil er mir ständig irgendwelche Typkonvertierungsprobleme gibt.

Was kann ich da machen?

Seite 1 von 1

Vergleichbare Themen

1
Antw.
2830
Views
daten aus interner tabelle lòschen
von slim » 12.06.2007 14:54 • Verfasst in ABAP® Core
9
Antw.
5384
Views
CSV Datei mit Daten aus interner Tabelle generieren
von naratcis » 25.03.2008 17:18 • Verfasst in ABAP® Core
3
Antw.
3721
Views
Daten in interner Tabelle mit gleichen Werten zählen?
von Basler84 » 08.10.2012 12:13 • Verfasst in ABAP® für Anfänger
7
Antw.
4919
Views
Concatenate in interner Tabelle
von wenigerABAP » 16.09.2016 12:47 • Verfasst in ABAP® für Anfänger
1
Antw.
5499
Views
Move-Corresponding mit interner Tabelle
von Dele » 13.10.2015 13:53 • Verfasst in Tips + Tricks & FAQs

Über diesen Beitrag


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

Aktuelle Forenbeiträge

IF mit AND und OR
vor einer Woche von GastX 6 / 8813
Meine Inbox
vor einer Woche von Rabea1103 1 / 6599
PCL2 Cluster auslesen
vor einer Woche von DeathAndPain 2 / 7749
FUBA 'HR_INFOTYPES_OPERATION'
vor einer Woche von Bright4.5 3 / 13244

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

IF mit AND und OR
vor einer Woche von GastX 6 / 8813
Meine Inbox
vor einer Woche von Rabea1103 1 / 6599
PCL2 Cluster auslesen
vor einer Woche von DeathAndPain 2 / 7749
FUBA 'HR_INFOTYPES_OPERATION'
vor einer Woche von Bright4.5 3 / 13244