Problem mit MODIFY

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

Problem mit MODIFY

Beitrag von SkyHobbit (Specialist / 170 / 0 / 1 ) »
Hallo,

ich habe ein seltsames Problem mit einem MODIFY einer internen Tabelle.

Code: Alles auswählen.

METHOD put_kunde.
* Erstmal prüfen, ob der Kunde überhaupt in der Datenbank ist.
  LOOP AT it_kunde INTO wa_kunde
                   WHERE nummer = kunde-nummer.
  ENDLOOP.
  IF sy-subrc = 0.
*   ja: Kunde vorhanden: Datensatz überschreiben
    MODIFY TABLE it_kunde FROM kunde.
  ELSE.
*    nein: kunde nicht vorhanden
    RAISE kunde_nicht_vorhanden.
  ENDIF.
ENDMETHOD.
Als Ergebnis bekomme ich vom MODIFY immer einen sy-subrc von 4, was nach der Doku folgendes heißt:
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.
Aber da defintiv eine passende Zeile vorhanden ist, sonst wäre der vorgelagerte Loop ja nicht mit sy-subrc = 0 beendet wurden, kann ich mir darauf einfach keinen Reim machen.

Hier noch die Struktur aus dem Dictionary:

Code: Alles auswählen.

NUMMER		Z_KUNDENNUMMER		CHAR	4
NAME		Z_KUNDENNAME		CHAR	40
VORNAME		Z_KUNDENVORNAME		CHAR	40
STRASSE		Z_KUNDENSTRASSE		CHAR	40
PLZ		Z_KUNDENPLZ		NUMC	5
ORT		Z_KUNDENWOHNORT		CHAR	40
TELEFON		Z_KUNDENTELEFON		CHAR	15
EMAIL		Z_KUNDENEMAIL		CHAR	40
SONST		Z_KUNDENSONSTIGES	CHAR	40
Bitte erlöst mich von meinem wahrscheinlich simplen Problem, denn ich habe nach langer Suche und Rumprobierens einfach keine Idee mehr. Vielleicht eins noch, was aber bestimmt nicht relevant ist: ich habe die 'Textfelder' im Dictionary so definiert, dass Klein-/Großschreibung unterschieden wird.

Gruß
Ulf.

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


Beitrag von SkyHobbit (Specialist / 170 / 0 / 1 ) »
Hallo,

manchmal muß man nur über das Problem reden (in diesem Falle schreiben) und man findet selbst die Lösung:

Code: Alles auswählen.

METHOD put_kunde.
* Erstmal prüfen, ob der Kunde überhaupt in der Datenbank ist.
  LOOP AT it_kunde INTO wa_kunde
                   WHERE nummer = kunde-nummer.
*   ja: Kunde vorhanden: Datensatz überschreiben
    MODIFY it_kunde FROM kunde.
  ENDLOOP.
  IF sy-subrc <> 0.
*    nein: kunde nicht vorhanden
    RAISE kunde_nicht_vorhanden.
  ENDIF.
ENDMETHOD.
Gruß
Ulf.

Beitrag von zzcpak (Expert / 673 / 5 / 67 ) »
ähh das dürfte doch aber immer noch zu falschen Ergebnissen führen, wenn ich mich nicht irre.

Du liest in den Arbeitsbereich "wa_kunde", den MODIFY machst du aber weiterhin mit "kunde", wobei aus deinem Coding nicht ersichtlich ist, wie und wo "kunde" definiert ist.
Dein MODIFY sollte doch korrekterweise lauten:

Code: Alles auswählen.

MODIFY it_kunde FROM wa_kunde.

Beitrag von SkyHobbit (Specialist / 170 / 0 / 1 ) »
Hallo zzcpak,

nö... eigentlich läuft es...
Mit dem Loop positioniere ich doch nur die Tabelle auf den zu ändernden Eintrag. 'kunde' ('tschuldigung hatte ich nicht erwähnt) ist der IMPORT-Paramter der Methode und enhält die geänderte Tabellenzeile die ich ja schreiben will.

Gruß
Ulf.

Beitrag von zzcpak (Expert / 673 / 5 / 67 ) »
ahhh, ne dann is klar.

Seite 1 von 1

Vergleichbare Themen

8
Antw.
17857
Views
MODIFY TABLE itab Problem
von siggi76 » 14.06.2011 15:22 • Verfasst in ABAP® für Anfänger
5
Antw.
2368
Views
MODIFY
von swonny » 26.01.2007 16:20 • Verfasst in ABAP® für Anfänger
2
Antw.
11430
Views
Modify itab from wa
von KleinerEisbaer » 30.07.2008 15:43 • Verfasst in ABAP® für Anfänger
3
Antw.
425
Views
MODIFY nachvollziehen
von gs3rr4 » 26.01.2024 12:22 • Verfasst in ABAP® für Anfänger
1
Antw.
1573
Views
modify line mit icon
von manuk » 09.11.2005 08:35 • Verfasst in Dialogprogrammierung

Ü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.