Spalten unterschiedlicher Tabellen vergleichen und dann ändern

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

Spalten unterschiedlicher Tabellen vergleichen und dann ändern

Beitrag von yefpie (ForumUser / 2 / 0 / 0 ) »
Hallo zusammen,

ich bin neu hier und schreibe gerade mein erstes ABAP Programm :). Seht mir meine Unwissenheit nach.

Ich habe Folgendes vor:
1. Einlesen einer Textdatei in eine Tabelle (zmigdocid). Textdatei enthält eine Liste mit DOCID´s
2. Nimm eine DOCID aus zmigdocid > durchsuche Tabelle TOA01-ARC_DOC_ID nach dieser DOCID > Wenn gefunden ändere in der Zeile die Spalte 'RESERVE' auf PDF.

Bevor ich nun Tabellen vergleiche, möchte ich erst mal dafür sorgen, dass die Datei sauber eingelesen wird.

Zu unten stehendem Code habe ich also folgende Punkte bzw. Fragen:
- Wenn ich eine Datei mit gleichen Inhalten mehrfach hochlade oder Inhalte einfach doppelt sind erhalte ich den Fehler, welche im Screenshot zu sehen ist. Muss ich da eine Spalte ID irgendwie als 'auto-increment' konfigurieren?
- Da ich verschiedene Text Dateien habe, wäre es gut, dass neu eingelesene Dateien in der Tabelle einfach unten als neue Einträge hinzugefügt werden. Ich hatte nun schon ein Szenario, da wurden die Inhalte von zmigdocid einfach überschrieben

Hier mal mein Code, welchen ich für das Einlesen der Textdatei geschrieben habe:

Code: Alles auswählen.

*Anlegen der Workarea und Variablen
DATA: 
itab_zmigdocid TYPE STANDARD TABLE OF zmigdocid,
      
wa_toa01       TYPE toa01,
      
l_file         TYPE string,
      
l_table_count  TYPE i.



*Eingabefeld als String

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS file LIKE l_file.

SELECTION-SCREEN SKIP.

SELECTION-SCREEN END OF BLOCK b1.



*Aufruf von GUI_UPLOAD und Übergabe der Variable 'file'


CALL FUNCTION 'GUI_UPLOAD'
  
EXPORTING
    filename                = file
    
has_field_separator     = 'X'
  TABLES
    
data_tab                = itab_zmigdocid
  

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.



IF sy-subrc <> 0.
  
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
          
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.



DELETE FROM zmigdocid.



INSERT zmigdocid FROM TABLE itab_zmigdocid.



DESCRIBE TABLE itab_zmigdocid LINES l_table_count.



COMMIT WORK AND WAIT.



WRITE l_table_count.

WRITE 'entries imported!'.

Naja danach eben die Frage, wie ich diesen Vergleich mit Veränderung der Spalte sinnvoll angehen kann. Ich will nicht direkt eine Lösung haben. Aber ein Ansatz wäre schon mal gut.

Ich danke euch vielmals vorab.

Beste Grüße

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


Re: Spalten unterschiedlicher Tabellen vergleichen und dann ändern

Beitrag von a-dead-trousers (Top Expert / 4383 / 222 / 1176 ) »
hi.

Erstmal ist GUI_UPLOAD deprecated. Verwende stattdessen CL_GUI_FRONTENT_SERVICES=>GUI_UPLOAD.

Zweitens würde ich nicht empfehlen die Daten direkt in eine strukturierte Tabelle einzulesen und diese dann ungeprüft in eine Datenbanktabelle zu schreiben. Besser ist es dafür eine unstrukturierte Texttabelle (z.b. CHAR mit Länge 1024) zu verwenden und dann zeilenweise die eingelesenen Daten (nach eingehender Prüfung auf Validität versteht sich) in die Datenbank zu schreiben.

Der Datenbankfehler kommt übrigens daher, dass du offensichtlich mehrere gleiche Zeilen in deiner Textdatei hast. Ein deutlicher Hinweis, dass du den Daten aus "fremden Quellen" NIE ungeprüft vertrauen solltest.

Wenn du deine Daten z.B. im CSV-Format vorliegen hast, bietet die SAP da bereits einige vorgefertigte Funktionsbausteine an, die beim Import helfen sollten. Im Netz sollte es dafür genug Beispiele geben. Wenn du damit dann ein wenig herumgespielt hast wirst du sicher feststellen, dass sie die eine oder andere Einschränkung haben (Spaltenbeschränkung, Zeilenlänge) usw.
Dann wirst du sicher versuchen selber was ähnliches/besseres zu programmieren ... Peng, du kannst jetzt ABAP 😉
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Spalten unterschiedlicher Tabellen vergleichen und dann ändern

Beitrag von yefpie (ForumUser / 2 / 0 / 0 ) »
Danke dir. Ich versuche es mal :9.

Seite 1 von 1

Vergleichbare Themen

8
Antw.
4869
Views
2 Tabellen unterschiedlicher Struktur vergleichen?
von Gast » 30.11.2004 15:29 • Verfasst in ABAP® Core
3
Antw.
2393
Views
Zwei Spalten aus unterschidlichen Tabellen vergleichen
von robin1at » 27.01.2006 12:05 • Verfasst in ABAP® für Anfänger
6
Antw.
2171
Views
2 interne Tabellen mit unterschiedlicher Struktur vergleiche
von Chriz » 24.11.2005 14:45 • Verfasst in ABAP® für Anfänger
3
Antw.
1243
Views
4
Antw.
800
Views
Tabellen vergleichen
von Frank Schmitt » 11.05.2020 14:51 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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

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.