ich habe eine Simple Aufgabe, dachte ich. Vorgang XY mit status "offen" soll auf status "geschlossen" gesetzt werden.
ich benutzte zuerst den CRM_ORDER_MAINTAIN und die guten input_fields struktur, sy-subrc war 0 jedoch passierte nichts, commit wurde abgesetzt.
dann kam ich auf den CRM_STATUS_CHANGE_EXTERN, jedoch hier das selbe, ich gebe ihm eine guid + status, bekomme jedoch die meldung status darf nicht gesetzt werden.
Ich setze den Orginalstatus auf inaktiv, und dann einen neuen:
Hier mein code snippet, ich wäre für jede hilfe dankbar:
CALL FUNCTION 'CRM_STATUS_CHANGE_EXTERN'
EXPORTING
objnr = ls_orderadm_h
user_status = 'E001'
set_inact = 'X'
EXCEPTIONS
object_not_found = 1
status_inconsistent = 2
status_not_allowed = 3
OTHERS = 4.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
COMMIT WORK.
schau dir mal 'BAPI_ACTIVITYCRM_CREATEMULTI' an, dort kannst du den Status setzen. Nach Ausführung des genannten BAPIs musst du noch 'BAPI_TRANSACTION_COMMIT' ausführen. Dann sollte das funzen!
ich kenn mich mit den Funktionen zwar nicht aus, koennte es aber sein, dass es damit etwas zu tun hat, dass du beim setzen des Status auf inaktiv als user_status E001 nimmst und beim setzen auf aktiv den user_status E003 ?