Hi tamas, Yes I did call bapi_transaction_commit. FUNCTION ZBAPI_ISUSMNOTIF_USERSTATUSSET. *"---------------------------------------------------------------------- *"*"Local Interface: *" IMPORTING *" VALUE(NUMBER) LIKE VIQMEL-QMNUM *" VALUE(STATUS) LIKE BAPI_STATUS STRUCTURE BAPI_STATUS OPTIONAL *" VALUE(INACTIVE) LIKE BAPIFLAG-BAPIFLAG DEFAULT ' ' *" VALUE(VALUE) LIKE BAPI_STATUS-INTERN *" EXPORTING *" VALUE(RETURN) LIKE BAPIRET2 STRUCTURE BAPIRET2 *"---------------------------------------------------------------------- DATA: l_msg LIKE sy-msgv1, l_viqmel LIKE viqmel, l_language TYPE spras, co_msg_service LIKE sy-msgid , co_msg_error TYPE emsg_gen-msgty , co_msg_not_existent LIKE sy-msgno , l_language_found TYPE spras. CLEAR return. * --Lock the notification object CALL FUNCTION 'ENQUEUE_EIQMEL' EXPORTING qmnum = number EXCEPTIONS foreign_lock = 1 system_failure = 2. IF sy-subrc <> 0. CALL FUNCTION 'BALW_BAPIRETURN_GET2' EXPORTING type = sy-msgty cl = sy-msgid number = sy-msgno par1 = sy-msgv1 par2 = sy-msgv2 par3 = sy-msgv3 par4 = sy-msgv4 IMPORTING return = return. EXIT. ENDIF. * --Set the language or convert the ISO-representation IF NOT status-langu IS INITIAL. l_language = status-langu. ELSEIF status-langu_iso IS INITIAL. l_language = sy-langu. ELSE. CALL FUNCTION 'LANGUAGE_CODE_ISO_TO_SAP' EXPORTING iso_code = status-langu_iso IMPORTING sap_code = l_language EXCEPTIONS not_found = 1 OTHERS = 2. IF sy-subrc <> 0. CALL FUNCTION 'BALW_BAPIRETURN_GET2' EXPORTING type = sy-msgty cl = sy-msgid number = sy-msgno par1 = sy-msgv1 par2 = sy-msgv2 par3 = sy-msgv3 par4 = sy-msgv4 IMPORTING return = return. CALL FUNCTION 'DEQUEUE_EIQMEL' EXPORTING qmnum = number. EXIT. ENDIF. ENDIF. * --Read the notications header line CALL FUNCTION 'READ_NOTIFICATION' EXPORTING qmnum = number IMPORTING iviqmel = l_viqmel EXCEPTIONS invalid_number = 1 OTHERS = 2. IF sy-subrc <> 0. l_msg = number. CALL FUNCTION 'BALW_BAPIRETURN_GET2' EXPORTING type = co_msg_error cl = co_msg_service number = co_msg_not_existent par1 = l_msg IMPORTING return = return. CALL FUNCTION 'DEQUEUE_EIQMEL' EXPORTING qmnum = number. EXIT. ENDIF. * --Authority check for the change of the notification object CALL FUNCTION 'ISU_NOTIF_AUTHORITY_CHECK' EXPORTING mode = '02' x_qmart = l_viqmel-qmart EXCEPTIONS no_permission_s_tcode = 1 no_permission_i_tcode = 2 no_permission_iqmel = 3 userdata_error = 4 no_profile = 5 no_object = 6 system_error = 7 OTHERS = 8. IF sy-subrc <> 0. CALL FUNCTION 'BALW_BAPIRETURN_GET2' EXPORTING type = sy-msgty cl = sy-msgid number = sy-msgno par1 = sy-msgv1 par2 = sy-msgv2 par3 = sy-msgv3 par4 = sy-msgv4 IMPORTING return = return. CALL FUNCTION 'DEQUEUE_EIQMEL' EXPORTING qmnum = number. EXIT. ENDIF. * --Prepare the status buffer CALL FUNCTION 'STATUS_BUFFER_REFRESH'. * --Convert the external status to an internal represenation IF NOT status-extern IS INITIAL. CALL FUNCTION 'STATUS_TEXT_CONVERSION' EXPORTING language = l_language mode = 'E' objnr = l_viqmel-objnr txt04 = status-intern IMPORTING language_found = l_language_found status_number = VALUE EXCEPTIONS insufficient_input = 1 not_found = 2 object_not_found = 3 wrong_mode = 4 OTHERS = 5. IF sy-subrc <> 0 OR l_language_found <> l_language. l_msg = status-extern. CALL FUNCTION 'BALW_BAPIRETURN_GET2' EXPORTING type = 'E' cl = 'BS' number = '057' par1 = l_msg IMPORTING return = return. CALL FUNCTION 'DEQUEUE_EIQMEL' EXPORTING qmnum = number. EXIT. ENDIF. ENDIF. * --Set the user status CALL FUNCTION 'STATUS_CHANGE_EXTERN' EXPORTING client = l_viqmel-mandt objnr = l_viqmel-objnr user_status = VALUE set_inact = inactive EXCEPTIONS object_not_found = 1 status_inconsistent = 2 status_not_allowed = 3 OTHERS = 4. IF sy-subrc <> 0. CALL FUNCTION 'BALW_BAPIRETURN_GET2' EXPORTING type = sy-msgty cl = sy-msgid number = sy-msgno par1 = sy-msgv1 par2 = sy-msgv2 par3 = sy-msgv3 par4 = sy-msgv4 IMPORTING return = return. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' . CALL FUNCTION 'DEQUEUE_EIQMEL' EXPORTING qmnum = number. EXIT. ENDIF. CALL FUNCTION 'STATUS_UPDATE_DIALOG'. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' . CALL FUNCTION 'DEQUEUE_EIQMEL' EXPORTING qmnum = number. ENDFUNCTION. Best regards, pradeep.
↧