SAP 生产订单状态与业务事务应用

生产订单状态

生产订单状态分为系统状态和用户状态,系统状态指系统的标准状态无法手工修改,用户状态是每家企业根据需要配置的状态,该状态可由用户手工直接修改或者通过业务事务确定。当用户手工指定用户状态时,可以通过“权限码”设置权限,检查该用户是否有修改该用户状态的权限。用户状态由两种形式:带有状态编号和不带状态标号。使用带状态编号时,对于通一个对象来说,同时只能有一个用户专题为有效状态,使用不带状态标号可以同时有多个用户状态为有效状态。

常见的生产订单状态种类如下:

生产执行进展

对应系统状态

状态描述

创建生产订单

CRTD

订单建立

可用性检查OK

MACM

已承诺的物理

下达生产订单

REL

已释放

对订单投料

GMPS

已过账的货物移动

生产订单报工

CNF

生产订单确认

生产订单收货

DLV

交货

生产订单

TECO

技术实现

生产订单的业务事务

业务事务代表对对象的特定业务操作或者事务,对生产订单而已最常见的业务事务如下:

  •  单击生产订单中“释放”按钮,释放生产订单;
  • 设置“删除标记”,逻辑删除生产订单;
  •  对生产订单进行收货,产生相应的物料凭证。

在系统中,上述的业务操作都使用相应的业务事务代码来代表,下表列举了常见业务事务。

业务事务码

对应操作

BFRE

释放生产订单

RMWF

生产订单收货

RMWA

物料移动(生产订单发料等)

BTAB

技术实现

RMNS

重读主数据(BOM、工艺路线)

RMOD

打印生产订单

业务事务与系统状态的关系

1、  生产订单的状态时生产订单进行业务事务的前提

    通过事务代码BS22可以定义不同的系统状态以及对不同事务处理的控制,比如:

  • 生产订单新建时,其系统状态为CRTD,此时不允许生产订单发料和收货。
  • 对生产订单释放后,系统状态为REL,此时就允许对生产订单发料和收货。

在具体的控制界面中,点击使用处清单按钮 可以查看关于系统状态REL的更多信息。比如:

  • 什么业务事务将生产订单的状态设置为“REL/释放”,具体而言如执行业务事务“释放、撤销技术完成(TECO);
  • 什么业务事务删除状态“REL/释放”,具体如执行业务事务“技术完成”;
  • 此状态下允许操作合作业务事务:如允许对生产订单发料;
  • 此状态下禁止操作何种业务事务。


业务事务对状态的影响

对生产订单执行业务事务将导致生产订单中新的系统状态的产生和已有状态的消失。

事务代码BS22定义业务事务影响何系统状态。

比如:在生产订单中,单击“释放”按钮,生产订单的专题“CRTD/新建”将被删除,新增状态“REL/释放”,也就是生产订单将被释放。

业务事务与系统状态的关系包含如下信息:

  • 允许处理的对象类型:如生产订单、WBS、内部订单等;
  • 由处理(本操作)设置的系统状态:System Statuses set by the process;
  • 由处理(本操作)删除的系统状态:System Statuses deleted by the process;

例如:当点击生产订单的释放按钮时,系统状态将发生如下变化:

  • 系统状态将被设置:REL(释放);
  • 如下系统状态将被删除:CRTD、PREL、TECO、CLSD、TELR;
  •  生产订单为冻结、删除、技术完成等状态时,不能点击“释放”按钮;
  • 生产状态为新建状态时,允许点击“释放”按钮。


系统配置的修改

通过事务代码BS22、BS32可以修改系统状态、业务事务的控制参数,实现特定功能。不过SAP不建议直接通过事务代码BS22、BS32修改,主要基于如下考虑:

  • 升级考虑:当升级SAP系统时,事务代码BS22、BS32中的设置可能会被覆盖。
  • 应用层面的考虑:一方面由于系统状态、用户状态功能应用广泛,通过事务代码BS13可以查看到该功能可应用的对象多达200多个,不同的对象有不同的对象代码,事务代码的修改可能会影响到所有的对象,影响面太大容易造成错综复杂的问题。另一方面BS22,BS32为集团级别的控制,是不区分工厂、订单类型的,无法控制不同的订单有不同的操作。除此之外,系统状态不能够根据企业需要进行增加,并且也很难针对系统状态设置相应的权限,使特定的人不能做特定的业务操作;

    考虑到上述原因,系统增加了用户状态功能,通过增加各种自定义的状态同时为用户状态设置权限检查以及设置用户状态与业务事务的关系,从而来实现企业的一些自定义的需求。同样,用户状态功能也是广泛用于各个模块中。

业务事务与系统状态、用户状态的应用案例

        应用1:技术完成后,不允许生产订单的收发货

        系统标准设置中,对生产订单执行及时完成后,仍然可以对生产订单进行收发货,现希望设置技术完成后,不允许对生产订单进行收货,可以有如下两种方案,但是推荐使用方案2。

         方案1:修改系统状态的控制参数

         技术完成的系统状态TECO,生产订单发料的业务事务为RMWA、生产订单收货的业务事务为RMWF。 因此事务代码BS22修改系统状态TECO,针对业务事务代码RMWA和RMWF从系统默认的允许设置为禁止。


            方案2:增加用户状态,通过用户状态控制

         事务代码BS02创建用户状态参数文件(StatusProfiles)ZP0001,设置该参数文件的对象类型(Object Types)为(PP/PM:Order Header)即生成订单。

         事务代码OPJH将该用户状态参数ZP000001分配该相应的生产订单类型。在状态参数文件ZP000001中可设置一个或者多个用户状态,本例中包含一个用户状态Z1,设置状态Z1的相关参数如下:

  1.         业务事务“技术实现”将设置用户状态Z1;
  2.          业务事务“撤销技术实现”将删除用户状态Z1;
  3.          状态被设置为Z1后,则不允许货物移动、生产订单收货这两个业务代码。

最终的效果是创建生产订单时,系统确定出用户状态参数ZP000001,对该生产订单执行技术实现后,用户状态Z1自动设置为激活,而当用户状态设置为Z1,不能进行货物移动,当撤销技术完成,Z1状态取消激活。


            应用2:生产订单发料后,才允许进行收货

         系统默认的设置中,生产订单只要释放,就允许进行收货,现希望通过修改设置,使得生产订单发料后,才允许进行生产订单收货。

         方案1:通过用户状态控制

         定义用户状态Z2,并设置业务事务RMWA触发状态Z2。在配置的时候会发现用户状态Z2,无法由业务事务RMWA触发,也就是生产订单发料无法触发用户状态Z2。

         事实上,生产订单发料无法触发任何状态的激活,原因是业务事务设置用户状态具备一定的前提条件,SAP note 406537中说明了业务事务触发用户状态具备的两个前提条件:

        1、在系统标准程序中,设置了该业务事务运行时,执行了函数STATUS_CHANGE_FOR_ACTIVITY。

        2、事务代码BS02中,设置业务事务可以修改用户状态,只有再次设置了,维护用户参数文件时,就会出现该业务事务。

本例中,对生产订单执行业务事务RMWA,不会执行函数STATUS_CHANGE_FOR_ACTIVITY,故无法修改用户状态。

        方案2:通过修改系统状态

        在系统状态REL下,删除允许业务事务RMWF,这样生产订单释放后,尚未发料时,不允许生产订单收货。

       

    系统状态GMPS(已过账的货物移动)下,增加允许的业务事务RMWF,这样生产订单发料后,系统状态变成了GMPS,则允 许生产订单收货。

    
状态选择参数文件

         随着生产订单的不断执行,生产订单状态(系统状态、用户状态)在不断发生在变化,每一个状态都代表着生产订单的特定的执行情况,而状态与状态的组合更能说明当前生产订单的执行情况。

         状态选择参数文件,是用于屏幕选择的,在系统标准报表如COOIS和CO27可以用来作为搜索条件(报表界面有状态的直接筛选输入框,但只有两个限定输入框,超出两个无法进行筛选)。

         事务代码BS42定义状态选择参数文件,可以定义多个状态选择文件,然后在状态选择文件定义其包括的系统状态和用户状态的各种组合。

         例如:对于仓库人员来说,可能需要查询生产订单已经释放且可用性检查OK的生产订单,以便发料,因此定义参数文件Z001,后续执行事务COOIS就可以输入该参数文件查询特定的生产订单。


而对于计划员来说,可能需要查询生产订单已经释放但是可用性检查不OK的生产,以便进行缺料检查,因此定义Z002。




猜你喜欢

转载自blog.csdn.net/agelee/article/details/80264558