Modify sy-subrc = 4:ein Modify habe ich schon probiert. liefert einen sy-subrc 4 zurück
ist die Nummer nicht vorhanden und kann auch nicht modifiziert werden.dort wird dann eine Nummer aus einem Nummernkreis gezogen
Was bei einer NEUEN Nr. ja auch gewollt ist... oder?mit append würde ich doch nur eine neue zeile anhängen oder?
Nö, wie das Wort "insert" schon sagt, wird etwas "insert/eingefügt" was noch nicht vorhanden ist....und nicht überschrieben, DAS wäre dann Dein MODIFY.und mit insert überschreiben?
Code: Alles auswählen.
MODIFY gt_adresse FROM g_wa_adresse INDEX 1.
Code: Alles auswählen.
INSERT g_wa_adresse INTO TABLE gt_adresse.
Code: Alles auswählen.
LOOP AT lt_itab ASSIGNING <lw_itab>.
WHERE number IS INITIAL.
* hole nächste Nummer
<lw_itab>-number = lv_number. "schreibt direkt in die Tabellenzeile
ENDLOOP.
Deshalb kann ich auch immer nur auf gewisse "Ereignisse", so z.B. Sy-Subrc = 4 beim Modify "reagieren".ich bau gerade an einem ALV Rum.
Code: Alles auswählen.
WHEN 'SAVE'.
LOOP AT gt_adresse into g_wa_adresse
WHERE id IS initial.
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
nr_range_nr = '01'
object = 'ZMBE_ADRES'
* QUANTITY = '1'
* SUBOBJECT = ' '
* TOYEAR = '0000'
* IGNORE_BUFFER = ' '
IMPORTING
number = g_wa_adresse-id
* QUANTITY =
* RETURNCODE =
EXCEPTIONS
interval_not_found = 1
number_range_not_intern = 2
object_not_found = 3
quantity_is_0 = 4
quantity_is_not_1 = 5
interval_overflow = 6
buffer_overflow = 7
OTHERS = 8.
ENDLOOP.
* INSERT g_wa_adresse INTO TABLE gt_adresse.
* MODIFY gt_adresse FROM g_wa_adresse INDEX 1.
IF sy-subrc = 0.
MODIFY zmbe_adressdaten FROM g_wa_adresse.
COMMIT WORK.
ELSE.
ROLLBACK WORK.
ENDIF.
SORT gt_adresse BY id.
WHEN 'SAVE'.
DATA: LV_SYTABIX type sytabix.
LOOP AT gt_adresse into g_wa_adresse
WHERE id IS initial.
lv_sytabix = sytabix. CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
nr_range_nr = '01'
object = 'ZMBE_ADRES'
* QUANTITY = '1'
* SUBOBJECT = ' '
* TOYEAR = '0000'
* IGNORE_BUFFER = ' '
IMPORTING
number = g_wa_adresse-id
* QUANTITY =
* RETURNCODE =
EXCEPTIONS
interval_not_found = 1
number_range_not_intern = 2
object_not_found = 3
quantity_is_0 = 4
quantity_is_not_1 = 5
interval_overflow = 6
buffer_overflow = 7
OTHERS = 8.
ENDLOOP.
* INSERT g_wa_adresse INTO TABLE gt_adresse.
MODIFY gt_adresse FROM g_wa_adresse INDEX lv_sytabix.
IF sy-subrc = 0.
MODIFY zmbe_adressdaten FROM g_wa_adresse.
COMMIT WORK.
ELSE.
ROLLBACK WORK.
ENDIF.
SORT gt_adresse BY id.
Code: Alles auswählen.
DATA:
lw_itab LIKE LINE OF lt_itab.
LOOP AT lt_itab INTO lw_itab.
WHERE number IS INITIAL.
lv_tabix = sy-tabix.
* hole nächste Nummer
lw_itab-number = lv_number. "schreibt direkt in die Tabellenzeile
* beschränke Werterücktransport auf die relevanten Felder
MODIFY lt_itab FROM lw_itab
TRANSPORTING nummber
INDEX lv_tabix.
ENDLOOP.
Code: Alles auswählen.
FIELD-SYMBOLS:
<lw_itab> LIKE LINE OF lt_itab.
LOOP AT lt_itab ASSIGNING <lw_itab>.
WHERE number IS INITIAL.
* hole nächste Nummer
<lw_itab>-number = lv_number. "schreibt direkt in die Tabellenzeile
ENDLOOP.
könnte z.b. an einem Schreibfehler liegen => SY-TABIXMavrix hat geschrieben:Hallo,
habe nun beide Varianten probiert.
Variante mit sytabix - sagt mir die Syntax prüfung sytabix unbekannt.
klingt eher nach einem Problem beim Speichern...Mavrix hat geschrieben:Variante mit feldymbolen.
Funktioniert, bis zu Anzeigen, nach dem Speichern ablauf - aber wenn ich die Transaktion neu starte ist die Zeile wieder weg.
gut, ich komm mit...Mavrix hat geschrieben: Also entweder heute ist nicht mein Tag. Ich glaub ich dann heim... ...