ABAP——系统状态&用户状态修改、查询
2024-08-23 22:21:57
前言:在ABAP开发中有时候会涉及到状态的变更,比如销售订单的系统状态变更未审批->已审批、设备的在运->报废等,在这里就需要用到标准函数I_CHANGE_STATUS、STATUS_CHANGE_EXTERN针对这些对象的状态进行变更。
1.状态更改
使用案例:I_CHANGE_STATUS
参数说明:
OBJNR——对象号;
ESTAT_INACTIVE——当前用户状态;
ESTAT_ACTIVE——要修改的用户状态;
STSMA——用户状态参数文件;
注意:修改状态之前要判断当前状态是否与要修改的状态相同,不相同则能修改,否则会出现系统异常。
以上参数可从SAP前台界面获取,举例销售订单:路径va03->菜单栏转到->抬头->状态
如果从前台找不到,也可以从以下表中知道对应的参数:
TJ02——系统状态表:CRTD.REL等系统状态对象值;
TJ02T——系统状态文本表:CRTD.REL等系统状态对象值;
TJ03——对象类型表:
TJ03T——对象类型文本表:
TJ20——状态参数文件:状态参数文件ZNPCON等值;
TJ30——用户状态表:根据参数文件找对应的用户状态:appr已批准用户状态等值;可根据状态参数文件在此表中查询对象号。
JEST——单独对象状态:输入OR+000000+工单号可查询该工单的所有状态Number;
JSTO——状态对象信息:
2.状态查询
使用系统标准函数:STATUS_TEXT_EDIT
FORM frm_get_order_status.
DATA:l_stsma TYPE jsto-stsma,
l_line TYPE bsvx-sttxt,
l_user_line TYPE bsvx-sttxt,
l_stonr TYPE tj30-stonr.
DATA:lv_objnr TYPE jest-objnr.
"取对象号"
SELECT SINGLE objnr INTO lv_objnr FROM vbak WHERE vbeln = <fs_opt>-vbeln.
CALL FUNCTION 'STATUS_TEXT_EDIT'
EXPORTING
* CLIENT = SY-MANDT
flg_user_stat = 'X'
objnr = lv_objnr "对象号"
only_active = 'X'
spras = sy-langu
IMPORTING
e_stsma = l_stsma "对象状态参数文件"
line = l_line "状态文本:对象的状态拼接而成"
user_line = l_user_line "用户状态文本"
stonr = l_stonr
EXCEPTIONS
object_not_found = 1
OTHERS = 2.
SEARCH l_user_line FOR 'B'. "如果存在B字符,则对象已审批"
IF sy-subrc = 0.
ENDIF.
ENDFORM.
最新文章
- 利用Generator解决异步回调原理
- TodoMVC中的Backbone+MarionetteJS+RequireJS例子源码分析之一
- 1、JS的数据类型
- SQL Server 维护计划实现数据库备份(Step by Step)
- DP/最短路 URAL 1741 Communication Fiend
- 深入研究java.lang.Runtime类【转】
- Project Euler 101 :Optimum polynomial 最优多项式
- 【图片处理】cocos2dx png图片压缩处理
- 武汉科技大学ACM:1005: 单位转换
- 32G sd卡格式化成fat
- 彻底明白Java的IO系统
- ACL in 和 out 区别 (重要)
- 由浅入深学习springboot中使用redis
- Python进阶8---面向对象基础1
- 安装Java8以后,Eclipse运行异常解决方案
- linux 软/硬链接详解
- cf-Global Round2-D. Frets On Fire(二分)
- 如何在HTML中播放flash
- jQuery之修改li下样式和图片
- 第196天:js---调用函数的五种方式