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 / 4481 / 231 / 1205 ) »
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

3
Antw.
5052
Views
4
Antw.
1535
Views
Tabellen vergleichen
von Frank Schmitt » 11.05.2020 14:51 • Verfasst in ABAP® für Anfänger
10
Antw.
19040
Views
interne tabellen vergleichen
von TobiB » 23.11.2007 13:12 • Verfasst in ABAP® Core
7
Antw.
6116
Views
2 interne Tabellen vergleichen
von Frank Schmitt » 24.06.2020 09:40 • Verfasst in ABAP® für Anfänger
5
Antw.
2892
Views
Interne Tabellen vergleichen
von Micha_ela » 20.06.2024 16:19 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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

Aktuelle Forenbeiträge

SFP/SEGW - Fehler beim Rendering
vor einer Woche von Manfred K. 1 / 43654
Pflegeview zeigt nicht alle Daten an
vor einer Woche von sapdepp gelöst 7 / 45375
ALV Grid und Dynprofeld
vor einer Woche von PeterPaletti 5 / 43470

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

SFP/SEGW - Fehler beim Rendering
vor einer Woche von Manfred K. 1 / 43654
Pflegeview zeigt nicht alle Daten an
vor einer Woche von sapdepp gelöst 7 / 45375
ALV Grid und Dynprofeld
vor einer Woche von PeterPaletti 5 / 43470

Unbeantwortete Forenbeiträge

SFP/SEGW - Fehler beim Rendering
vor einer Woche von Manfred K. 1 / 43654
Benutzerdefinierte Felder PSP
letzen Monat von Rabea1103 1 / 94429
Spool vereinen OTF und PDF
January 2026 von anna2205 1 / 109553
XSLT und Loipro05 Transformation
December 2025 von Torsten1965 1 / 117712