修改检验批状态 出于一些原因需要取消检验批即将检验批状态修改为LTCA状态。可使用STATUS_CHANGE_INTERN函数和BAPI_TRANSACTION_COMMIT函数来解决此问题。此方法适用于不使用代码方式完成检验批状态更新。修改前详细操作步骤如下执行事务码SE37完成之后再返回最终检验批状态变更为取消状态使用报表功能方式实现REPORT z_cancel_lot. DATA: lv_objnr TYPE jsto-objnr, ls_qals TYPE qals, lv_success TYPE char1, ls_msg TYPE bapiret2. DATA: it_jstat TYPE jstat OCCURS 0 WITH HEADER LINE. CLEAR it_jstat. it_jstat-stat I0224. it_jstat-inact . APPEND it_jstat. PARAMETERS p_los TYPE qals-prueflos OBLIGATORY. *取检验批 SELECT SINGLE objnr INTO lv_objnr FROM qals WHERE prueflos p_los. IF sy-subrc 0. WRITE: / 错误检验批不存在. EXIT. ENDIF. * -------------- 取消检验批 LTCA I0224 -------------- CALL FUNCTION STATUS_CHANGE_INTERN EXPORTING * CHECK_ONLY * CLIENT SY-MANDT objnr lv_objnr * ZEILE * SET_CHGKZ * IMPORTING * ERROR_OCCURRED * OBJECT_NOT_FOUND * STATUS_INCONSISTENT * STATUS_NOT_ALLOWED TABLES status it_jstat * EXCEPTIONS * OBJECT_NOT_FOUND 1 * STATUS_INCONSISTENT 2 * STATUS_NOT_ALLOWED 3 * OTHERS 4 . IF sy-subrc 0. * Implement suitable error handling here ENDIF. IF sy-subrc 0. CALL FUNCTION BAPI_TRANSACTION_COMMIT EXPORTING wait X. WRITE:/ 【成功】检验批已取消状态变更为 LTCA. ELSEIF sy-subrc 1. WRITE:/ 【提示】检验批已是取消状态无需重复操作. ELSE. CALL FUNCTION BAPI_TRANSACTION_ROLLBACK. WRITE:/ 【失败】检验批取消异常. ENDIF.