habe einen möchte den Firmennamen einer Organisation ändern. Leider funktioniert dies nicht. Woran könnte es nur liegen?
Vielen Dank schon mal.
Lieben Gruß Anna
"move ls_CENTRALDATAORGANIZATION_X-name1 to ls_account-firmenname.
ls_account-firmenname = ls_CENTRALDATAORGANIZATION_X-name1.
endif.
" Prüfung Datenänderung erfolgreich
IF sy-subrc = 0 .
" Externen Commit bei der Verwendung von BAPIs durchführen
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.
vielen Dank für deine Antwort. Ich soll es mit einem Funktionsbaustein machen. Was meinst du mit dem Return-Code? kannst du mir das bitte etwas genauer verraten.
Die meisten Funktionsbausteine liefern entweder eine Exception oder eine Fehlermeldung (BAPIRET) im Fehlerfall zurück. Exceptions werden beim Aufruf einem Return-Code zugewiesen der dann in SY-SUBRC abgefragt werden kann. Fehlermeldung selbst haben einen Typ (W,E,A,S,X,I). Je nachdem wie "schlimm" der Fehler ist kann man dann im Anschluss weiterarbeiten oder muss abbrechen.
In AnnaNRW's Fall ist aber der Aufruf von BUPA_CENTRAL_CHANGE falsch:
In der X-Struktur gibt man an welche Felder GEÄNDERT WERDEN SOLLEN und kann nicht abfragen welche durch den Aufruf GEÄNDERT WURDEN.
Richtig wäre:
Die zu ändernden Daten in "ls_CENTRALDATAORGANIZATION" eintragen.
Die zu ändernden Felder in "ls_CENTRALDATAORGANIZATION_X" markieren.
Funktionsbaustein BUPA_CENTRAL_CHANGE aufrufen.
Rückgabe prüfen (ET_RETURN)
Wenn alles OK, dann BAPI_TRANSACTION_COMMIT ansonsten BAPI_TRANSACTION_ROLLBACK.
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.
vielen Dank für die hilfreiche Antwort. Bin nun schon einen Schritt weiter gekommen. Der Firmenname wird mir angezeigt, sobald dieser geändert wird. Ich Sprache wird jedoch nicht berücksichtigt. Wenn ich beispielsweise als Sprache "EN" eintippe, erscheint dies später in der READ-Operation nicht. Dieses Feld ist dann einfach leer. Woran könnte das liegen? Hab es genau so gemacht, wie beim Firmennamen.
Grüße
Anna
" Prüfung Datenänderung erfolgreich
IF sy-subrc = 0 .
" Externen Commit bei der Verwendung von BAPIs durchführen
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.
es gibt einige OSS Hinweise zur Sprache, bin mir aber nicht sicher ob das hier passt:
Summary
Symptom
While creating a partner of type '2'(Organization) or when changing the central data of a type '2' partner using business partner APIs (like BUPA_CREATE_FROM_DATA or BUPA_CENTRAL_CHANGE): Error R1 401 "Enter a value for field Language according to ISO 639" is thrown by the system.
This happens when in the field grouping: The field Language (0019) is set required in the customizing.
Other terms
BP_API, BUPA_CREATE_FROM_DATA, BUPA_CENTRAL_CHANGE, 0019, BU_LANGU, GET_FMOD_STATUS
Reason and Prerequisites
The field partner language (BUT000-BU_LANGU) is only to be filled for business partners of type 'Person' and 'Group'. Hence in BAPIs (BAPI_BUPA_CREATE_FROM_DATA) while checking the FMOD setting this field should not be considered when the partner type is Organization. In the BP dialog this is already taken care.
Solution
Apply this note