生产订单状态相关

1: 获取生产订单的对象标识

 

 SELECT SINGLE objnr INTO l_objnr FROM aufk WHERE aufnr = "[订单号]"

2:获取系统状态

   DATA BEGIN OF i_status OCCURS 0.
        INCLUDE TYPE jstat.
   DATA END OF i_status.

  CALL FUNCTION 'STATUS_READ'                              

      EXPORTING
        client           = sy-mandt
        objnr            = l_objnr
        only_active      = 'X'
      TABLES
        status           = i_status
      EXCEPTIONS
        object_not_found = 1
        OTHERS           = 2.

     SELECT txt04 INTO TABLE l_txt
                 FROM tj02t
                 FOR ALL ENTRIES IN i_status
                 WHERE istat = i_status-stat
                   AND spras = '1'.

3:获取用户最终状态

  SELECT MAX( estat ) INTO l_maxestat FROM tj30 WHERE stsma = l_stsma.
  SELECT SINGLE stat FROM jest INTO l_stat
         WHERE objnr = l_objnr AND stat LIKE 'E%' AND inact NE 'X'.

4: 同时获取系统状态用户状态

    DATA BEGIN OF i_status OCCURS 0.
         INCLUDE TYPE jstat.
    DATA stsma LIKE jsto-stsma.
    DATA sttxt LIKE bsvx-sttxt.
    DATA stonr LIKE tj30-stonr.
    DATA END OF i_status.

    CALL FUNCTION 'STATUS_TEXT_EDIT'
      EXPORTING
        client        = sy-mandt
        flg_user_stat = ' '
        objnr         = l_objnr
        only_active   = 'X'
        spras         = '1'
        bypass_buffer = 'X'
      IMPORTING
        line          = i_status-sttxt
        e_stsma       = i_status-stsma
        stonr         = i_status-stonr.
    APPEND i_status.
    DELETE ADJACENT DUPLICATES FROM i_status COMPARING ALL FIELDS.

5:系统用户状态相关表

   JSTO-STSMA = TJ30-STSMA = TJ30T-STSMA

   TJ30-ESTAT = JEST-ESTAT = TJ30T-ESTAT = TJ02-ISTAT = TJ02T-ISTAT  "I开头的状态 

SAP系统中配置生产订单状态主要涉及用户状态(User Status)和系统状态(System Status)的设置。用户状态是供用户自定义的状态,用于满足企业的特定业务需求;而系统状态则是由SAP预定义的状态,通常不建议修改。以下为配置SAP生产订单状态的具体方法和步骤: ### 用户状态配置 1. **定义用户状态参数文件的授权码** 使用事务代码 `BS53`,路径为: `IMG > 流程行业的生产计划编制 > 流程订单 > 主数据 > 定义用户参数文件的控制码`。 在此步骤中,可以设置用户状态参数文件的访问权限和控制逻辑。 2. **定义用户状态参数文件** 使用事务代码 `BS02`,路径为: `IMG > 生产 > 商品底价控制 > 主数据 > 订单 > 定义状态参数文件`。 在此步骤中,选择允许的对象类型,并为每个用户状态配置允许的业务操作,例如是否允许修改订单、重新读取主数据等。 3. **分配用户状态参数文件给生产订单类型** 使用事务代码 `OPJH`,路径为: `IMG > 生产 > 商品底价控制 > 主数据 > 定义生产订单类型 > 状态参数文件抬头`。 将定义好的用户状态参数文件分配给特定的生产订单类型,以便在创建订单时自动应用相应的状态控制逻辑。 4. **测试权限的分配** 在权限对象 `B_USERSTAT` 中配置相应的权限,确保用户具有操作用户状态的权限[^1]。 ### 系统状态配置 系统状态是SAP标准定义的状态,通常包括以下常见状态: - **CRTD**:创建状态 - **REL**:已下达 - **CNF**:已报工 - **DLV**:已入库 - **TECO**:技术性完成 这些状态用于控制生产订单在不同业务阶段的行为,例如是否允许进行库存移动、订单修改等操作。系统状态的配置通常不需要用户干预,但可以通过状态配置控制订单在不同状态下的行为[^2]。 ### 状态控制的应用场景 - **订单审批流程**:通过自定义用户状态,可以实现订单的审批流程控制,例如“待审批”、“已批准”等状态。 - **防止订单修改**:当生产订单处于“TECO”状态时,系统会限制对订单的进一步修改,防止在订单结案后进行不合规的操作[^3]。 - **财务调整**:在某些行业,如石油化工或电子制造,财务部门可能需要在订单结案后调整发料或入库数据。此时可以通过特殊配置允许在特定状态下进行库存移动。 ### 示例:查看订单状态 可以通过以下ABAP代码查看生产订单的状态信息: ```abap DATA: lt_order TYPE TABLE OF aufk, ls_order TYPE aufk. SELECT * INTO TABLE lt_order FROM aufk WHERE aufnr = '1000001'. " 替换为实际的订单编号 LOOP AT lt_order INTO ls_order. WRITE: / '订单编号:', ls_order-aufnr, '系统状态:', ls_order-stat, '用户状态:', ls_order-usstt. ENDLOOP. ``` ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值