SAP存放状态的几个常用表
在sap中,包括订单、项目、计划、设备主数据等,存在审批流程的业务单据,这些业务对象都会有状态的属性,用来控制和约束该业务当前的操作。
主要的表
JEST:存放了该对象编号的当前状态
JCDS:存在对象状态修改的历史记录
【系统状态】
以I开头,主数据表是TJ02,描述表TJ02T
表TJ04可以据业务对象号(如WBS是PRN),可以查出所有相关的状态
这个在SAP和点检集成时取通知单的系统状态传值时用到了。
【用户状态】
以E开头,每个用户状态都关联一个用户参数文件,相同的状态编码在不用的参数文件下意义不用, 主数据表为TJ30, 文本表是TJ30T
对于每笔业务,都有一个唯一的对象编号,字段名一般为 OBJNR ,存在在业务表中。
WCAAP 表:存放工作清理管理:应用程序的对象号的表,根据工作票、操作票编号可以查到对应的对象号。
AUFK 表:存放订单对象号的表,根据订单编号可以查找到对应订单的对象号。
PROJ 表:存放项目定义对象号的表,根据项目定义号可以查找到对应项目定义的对象号。
业务单据用户状态的变化存储在JEST表中,每一个业务单据都有唯一的对象号,业务单据用户状态的变化由对象号作为标识记录在JEST表中,通过修改JEST表的数据可以达到改变业务单据用户状态的效果。SAP也提供了三个函数满足开发者用以读取、批量修改、更新业务单据用户状态的需求。
函数读取示例:
FORM frm_get_status USING plan TYPE vimpla-warpl CHANGING status.
DATA lt_status TYPE TABLE OF jstat.
SELECT SINGLE objnr
FROM mpla
INTO @DATA(lv_objnr)
WHERE warpl = @plan.
CALL FUNCTION 'STATUS_READ' "获取订单状态
EXPORTING
client = sy-mandt
objnr = lv_objnr
only_active = abap_true
* IMPORTING
* OBTYP =
* STSMA =
* STONR =
TABLES
status = lt_status
* EXCEPTIONS
* OBJECT_NOT_FOUND = 1
* OTHERS = 2
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
IF lt_status IS NOT INITIAL.
SELECT txt04
INTO TABLE @DATA(lt_txt04)
FROM tj02t
FOR ALL ENTRIES IN @lt_status
WHERE istat = @lt_status-stat
AND spras = @sy-langu.
ENDIF.
CONCATENATE LINES OF lt_txt04 INTO status SEPARATED BY space.
ENDFORM.