MODIFY TABLE itab Problem

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

MODIFY TABLE itab Problem

Beitrag von siggi76 (ForumUser / 19 / 5 / 0 ) »
Hallo zusammen,

ich hätte hier mal ein kleines Problem. Im folgenden könnt ihr meinen Quellcode einsehen.

Infos vorab:
Ich schreibe nun ein Programm welches eine Excel-Tabelle hochladen soll und dann eine bestehende Variantentabelle aktualisieren soll.
Das Hochladen der Excel-Datei funktioniert wunderbar. Der Inhalt der Excel-Datei ist in die interne Tabelle lt_vtzeile gespeichert worden.

Nun möchte ich die lt_vtzeile auf Änderungen überprüfen.
Kümmert euch nicht um die Feldsymbole etc, da ist alles in bester Ordnung.
Mein Problem ist, dass ich bei der MODIFY TABLE- Anweisung den sy-subrc auf 4 gesetzt bekomme, obwohl er mir den Datensatz ändern sollte und somit sy-subrc auf 0 stehen sollte!!!

Leider weiß ich mir nicht zu helfen, wie ich diese Fehlermeldung beheben kann.

Code: Alles auswählen.

  IF NOT upload IS INITIAL.
    CLEAR ls_cuvtab_field.
    READ TABLE lt_vtzeile INTO ls_vtzeile INDEX 1.


    lv_zn = 1.

    DO 20 TIMES.

      CONCATENATE 'ls_vtzeile-feld' lv_zn INTO lv_feld.
      ASSIGN (lv_feld) TO <fs>.

      IF <fs> IS INITIAL.
        EXIT.
      ENDIF.
      READ TABLE lt_cabn INTO ls_cabn
        WITH KEY atnam = <fs>.
      IF sy-subrc <> 0.
        "Fehler: MM existiert nicht!
        EXIT.
      ENDIF.
      READ TABLE lt_cuvtab_field INTO ls_cuvtab_field
        WITH KEY atinn = ls_cabn-atinn.
      IF sy-subrc = 0.
        ls_cuvtab_field-DBFLD = 'x'.

        MODIFY TABLE lt_cuvtab_field FROM ls_cuvtab_field.
      ELSE.
        "FEHLERMELDUNG: Merkmal ist nicht in VT enthalten
      ENDIF.

      lv_zn = lv_zn + 1.
    ENDDO.

    READ TABLE lt_cuvtab_field WITH KEY dbfld = space TRANSPORTING NO FIELDS.

    IF sy-subrc = 0.
      "Fehlermeldung
    ENDIF.




  ENDIF.
Danke und Grüße
siggi76

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


Re: MODIFY TABLE itab Problem

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
F1 Hilfe zu MODIFY:
Diese Anweisung ändert den Inhalt entweder einer oder mehrerer Zeilen itab_line bzw. itab_lines, die über den Tabellenschlüssel oder den Tabellenindex spezifiziert werden können.

Systemfelder

sy-subrc Bedeutung
0 Es wurde mindestens eine Zeile geändert.
4 Es wurde keine Zeile geändert, da beim Einfügen über Tabellenschlüssel bzw. bei logischer Bedingung keine passende Zeile gefunden wurde oder beim Einfügen über den Tabellenindex der angegebene Index größer als die aktuelle Anzahl von Zeilen war.
Wenn das Feld ls_cabn-atinn z.B. den gleichen Eintrag hat, kommst es zum SY-SUBRC 4.

Debuggen würde alles aufklären.

Re: MODIFY TABLE itab Problem

Beitrag von Tron (Top Expert / 1327 / 35 / 332 ) »
Moin,
versuch doch bitte mal den MODIFY mit Indexangabe. Scheint mir ein Schlüsselfeld-Problem zu sein (kenne die Struktur lt_cuvtab nicht) .

Code: Alles auswählen.

      READ TABLE lt_cuvtab_field INTO ls_cuvtab_field
        WITH KEY atinn = ls_cabn-atinn.
      IF sy-subrc = 0.
        ls_cuvtab_field-DBFLD = 'x'.

        MODIFY TABLE lt_cuvtab_field FROM ls_cuvtab_field index sy-tabix.
      ELSE.
        "FEHLERMELDUNG: Merkmal ist nicht in VT enthalten
      ENDIF.

gruß Jens
<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: MODIFY TABLE itab Problem

Beitrag von siggi76 (ForumUser / 19 / 5 / 0 ) »
Unit605 hat geschrieben:F1 Hilfe zu MODIFY:
Diese Anweisung ändert den Inhalt entweder einer oder mehrerer Zeilen itab_line bzw. itab_lines, die über den Tabellenschlüssel oder den Tabellenindex spezifiziert werden können.

Systemfelder

sy-subrc Bedeutung
0 Es wurde mindestens eine Zeile geändert.
4 Es wurde keine Zeile geändert, da beim Einfügen über Tabellenschlüssel bzw. bei logischer Bedingung keine passende Zeile gefunden wurde oder beim Einfügen über den Tabellenindex der angegebene Index größer als die aktuelle Anzahl von Zeilen war.
Wenn das Feld ls_cabn-atinn z.B. den gleichen Eintrag hat, kommst es zum SY-SUBRC 4.

Debuggen würde alles aufklären.
Das Feld ls_cabn-atinn soll ja den gleichen Eintrag haben. Wenn dies der Fall ist, weise ich dem Feld dbfld den Wert x zu, welchen ich ja per modify-Anweisung in die interne Tabelle schreiben möchte.
Das Feld dbfld war vorher ja leer und somit dürfte hier doch eigentlich kein Fehler auftreten !?

Moin,
versuch doch bitte mal den MODIFY mit Indexangabe. Scheint mir ein Schlüsselfeld-Problem zu sein (kenne die Struktur lt_cuvtab nicht) .

Code: Alles auswählen
READ TABLE lt_cuvtab_field INTO ls_cuvtab_field
WITH KEY atinn = ls_cabn-atinn.
IF sy-subrc = 0.
ls_cuvtab_field-DBFLD = 'x'.

MODIFY TABLE lt_cuvtab_field FROM ls_cuvtab_field index sy-tabix.
ELSE.
"FEHLERMELDUNG: Merkmal ist nicht in VT enthalten
ENDIF.


gruß Jens
Die Struktur der lt_cuvtab_field ist die gleiche wie die Struktur der Tabelle cuvtab_fld.

Code: Alles auswählen.

DATA: lt_cuvtab_field TYPE STANDARD TABLE OF cuvtab_fld,
      ls_cuvtab_field TYPE cuvtab_fld.
Wenn ich es mit einer Indexangabe versuche, bekomme ich eine Fehlermeldung (siehe Bild).
Bild

Danke für die Antworten.
siggi76

Re: MODIFY TABLE itab Problem

Beitrag von Tron (Top Expert / 1327 / 35 / 332 ) »
Moin,
Upps, das Argument TABLE in der Modify-Zeile muss weg.
Beispiel

Code: Alles auswählen.

REPORT  ztest98.
DATA lt_sflight TYPE TABLE OF sflight.
DATA ls_sflight TYPE sflight.

SELECT * FROM sflight INTO TABLE lt_sflight.


LOOP AT lt_sflight INTO ls_sflight.

  IF ls_sflight-carrid = 'DL'.

    ls_sflight-connid = '777'.

    MODIFY lt_sflight FROM ls_sflight INDEX sy-tabix .

  ENDIF.

ENDLOOP.
Übrigens: Wenn Du ein Feldsysmbol einsetzt, wird der MODIFY Befehl überflüssig !

Code: Alles auswählen.

FIELD-SYMBOLS <ls> TYPE sflight.

SELECT * FROM sflight INTO TABLE lt_sflight.

LOOP AT lt_sflight ASSIGNING <ls>.

  IF <ls>-carrid = 'DL'.
    <ls>-connid = '777'.

* wird nicht mehr gebraucht !
*    MODIFY lt_sflight FROM ls_sflight INDEX sy-tabix .

  ENDIF.


ENDLOOP.
gruß Jens
Zuletzt geändert von Tron am 15.06.2011 09:44, insgesamt 1-mal geändert.

Folgende Benutzer bedankten sich beim Autor Tron für den Beitrag:
siggi76

<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: MODIFY TABLE itab Problem

Beitrag von siggi76 (ForumUser / 19 / 5 / 0 ) »
Vielen Dank!!!

Jetzt funktioniert es. Könntest du mir noch erklären warum das 'TABLE' jetzt entfernt werden musste? Verstehe die Unterschiede noch nicht so ganz, wann ich mit 'TABLE' arbeite und wann nicht.

grüße
siggi76

Re: MODIFY TABLE itab Problem

Beitrag von Tron (Top Expert / 1327 / 35 / 332 ) »
Moin,
Hmm.. das ist ein rein Syntaktisches Problem und müsstest Du wohl mit der SAP klären *grins*.
(meistens ist es "was Historisches")
gruß Jens
<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: MODIFY TABLE itab Problem

Beitrag von siggi76 (ForumUser / 19 / 5 / 0 ) »
Ok, als Einsteiger wundert man sich natürlich gerade am Anfang, warum plötzlich dieser Befehl und dann ein anderer obwohl es auf andere Weise ja auch funktionieren sollte...

Muss mich dann einfach dran gewöhnen.

Vielen Dank!

Re: MODIFY TABLE itab Problem

Beitrag von ratsnus (Specialist / 357 / 2 / 56 ) »
siggi76 hat geschrieben:Ok, als Einsteiger wundert man sich natürlich gerade am Anfang, warum plötzlich dieser Befehl und dann ein anderer obwohl es auf andere Weise ja auch funktionieren sollte...

Muss mich dann einfach dran gewöhnen.

Vielen Dank!
mach dir da nicht so viele Gedanken, halte dich einfach an den einfachen Grundsatz:

"Der Weg ist nicht das Ziel" :D manche Sachen sind im ABAP einfach so wie sie sind.
<:: XING-Gruppe Tricktresor::>

Seite 1 von 1

Vergleichbare Themen

2
Antw.
11739
Views
Modify itab from wa
von KleinerEisbaer » 30.07.2008 15:43 • Verfasst in ABAP® für Anfänger
0
Antw.
985
Views
Modify auf Z Tabelle von itab
von AndreFIAE2014 » 13.12.2016 14:40 • Verfasst in ABAP® für Anfänger
5
Antw.
3397
Views
Modify itab from wa geht nciht, Schlüsselfeld
von Sascha_a » 19.06.2008 09:29 • Verfasst in ABAP® für Anfänger
3
Antw.
896
Views
modify itab from wa transporting field - Warnung wegkriegen
von ralf.wenzel » 02.03.2022 17:45 • Verfasst in ABAP® Core
4
Antw.
2370
Views
Problem mit MODIFY
von SkyHobbit » 31.03.2007 12:24 • 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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 12 Stunden von Bright4.5 1 / 249
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 1886
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8492