在SAP中各个模块的管理对象中SAP通过标准的系统状态来进行业务上的一些管控。比如在创建(CRTD)的状态下是无法发生成本的等等。
除了标准的系统状态外,也可以根据客户的实际业务去设计自定义的状态,自定义的状态在SAP中称为用户状态。
用户状态在SAP中能应用于多个对象,如:销售订单、生产订单、内部订单等等,本文主要是通过项目来讲解用户状态的配置:
状态管理在SAP系统中主要起到两个作用:(1)作为对象的基础信息展现(2)对SAP系统内操作的限制。
首先状态的核心作用肯定是作为对象基础信息的一个展现,通过状态方便我们判断目前对象处于一个什么阶段。
这里结合一下现实的业务给大家一个更直观的感受,因为在PS模块中CRTD往往代表着项目的立项,REL往往代表项目的开工。而项目实施往往是个漫长而复杂的过程,立项和开工的过程之间对企业而言有些更为详细的用户状态是客户希望看见的:比如项目立项的时候初始对应用户状态为“项目申请批复”,在REL对应的“项目开工”之间还存在“项目建议书通过”,“项目施工准备阶段”两个状态。所以在这种案例中用户状态可以作为一个额外信息的展示。
其次状态管理背后更深层次的意义是对SAP系统内一些特定的操作进行管理,这种管理主要以允许或者禁止对应SAP操作体现。
比如项目的WBS在CRTD的情况下是无法过账的,(之所以用WBS元素来列举是因为项目定义不是一个成本对象,是无法过账的,项目中的成本对象主要有实际型WBS、网络或者活动,其中网络和活动谁是真正的成本需要在网络参数文件中进行配置才能决定)只有等到项目下达(REL)后WBS才能过账。这种案例中CRTD中就禁止了直接过账到WBS,而REL则是允许财务可以过账相关项目成本或费用到WBS。
SAP的系统状态虽然说系统自带的,但如果需要强行修改的话可以通过BS22进行修改,但不建议修改SAP标准系统状态的设定。因为系统状态更改是集团级别的控制,并不会区分相关对象(如不同的订单类型等)
进入BS22界面后,双击需要修改的系统状态进入详细状态事务控制界面,在这个界面里面我们就可以修改SAP标准系统状态的设定。
系统状态讲解完毕后,下面正式讲解用户状态的配置。用户状态的配置事务代码是OK02,用户状态的配置主要分为(1)带编号的用户状态(2)不带编号的用户状态。
不带编号的用户状态在前台中可以存在多个进行同时展现,而带编号的用户状态一次只能拥有一个状态作为当前信息的展示,并且带编号的状态会规定每一个状态下一个能到达的状态及往上能返回的状态值。
创建状态参数文件首先需要创建一个用户状态参数文件编码、对应描述及状态语言。
创建完毕后双击进入状态参数文件详细配置界面:
首先讲解一下不带编号的用户状态,用户状态主要需要指定状态对应的对象。究竟是项目定义/WBS抑或是SAP其他模块的一些对象(如:内部订单/销售订单抬头等等)
单击“对象类型“可以进入指定用户状态对象的界面,在这个界面中可以指定创建的此用户状态能在哪些对象中使用,比如选择了“项目定义”,那就在销售订单、生产工单等处是无法使用的。
不带编号的用户状态配置不需要去配置“状态编号”/“最低状态号”/“最高状态号”
“状态“中主要配置状态的描述,这个在前台会直接体现,效果如下图:
“短文本“就是对刚刚设置的”状态“更进一步的展示,在项目构造器选中对应对象,点击”系统/用户状态“按钮可以进入修改用户状态的界面,在界面中就可以看到对应用户状态的短文本。
“位置”和“优先级”会影响前台用户状态显示的优先顺序(虽然用户状态的对象可以在同时拥有多个不带编号的用户状态,但在前台显示的用户状态是有数量限制的,所以可以通过优先级和位置的配置决定前台哪些状态优先展示,这里就不展开细讲)
“授权代码”是在BS52中进行配置的,只有有对应授权代码的用户才能进行此用户状态的变更,实现权限地深层次管控。“授权代码”的后台配置路径如下图:
权限码配置非常简单,创建对应的编码及描述则可完成。完成后在用户状态参数文件中进行一个分配,权限码就是对特定的用户状态进行一个权限的管理。只有用户对应的权限参数文件中包含对应的权限码,才有权限去修改对应的用户状态。
很多文章讲解的过于简单,没有提到后续权限码在权限参数文件中分配的操作,所以下面我们讲解一下权限码在权限参数文件中分配的操作。
在PFCG中选择好需要加入权限码对应的角色,点击“更改权限数据”按钮进入权限详细配置界面:
在权限详细配置的界面中我们需要手工加入权限对象,点击“手动”图标
输入需要添加的权限对象:B_USERSTAT然后点击确认,然后在菜单栏中找到对应的权限按照实际业务权限设定维护对应角色的权限值。
现在回到用户状态的配置,之前说过状态管理的核心是限制SAP系统内相关业务交易的操作,所以在用户状态配置界面中,我们双击某个特定的用户状态进入状态对应的“事务控制”界面:
点击“创建”按钮后可以按照业务实际需要设定相关的业务事务。
需要注意的是:如果后面三列有值的话证明前面的业务事务是对应着SAP标准的系统状态,讲一个例子:如果“决算”这个用户状态其实对应着系统状态的“CLSD”,那么我们可以将两个状态进行关联,在下图“完成”系统状态一行中勾选“设置”那么未来当项目关闭的时候,用户状态自动更新为“决算”
可以看见当项目关闭后,用户状态自动更新“决算”。
虽然项目关闭更新了用户状态为“决算”,但在某些特殊业务情形下系统状态会进行撤销,比较取消关闭/取消技术性完成,当系统状态发生逆转的时候,用户状态也需要相应的进行调整,在本例中项目取消关闭的情况下用户状态“决算“应当删除,所以用户状态参数中的”决算“需要配置系统状态取消关闭时删除:
可以看见撤销关闭的时候,用户状态“决算“自动删除掉。
下面讲解一下带编号的用户状态,带编号的用户状态需要额外设定“状态编码“/”最低状态号“/”最高状态号“
前台展示效果如下图:可以看见带编号的用户状态每次只能有一个值
状态编码相当于每个状态的一个编码,主要用于“最低状态号“以及”最高状态号“,最低状态号代表了当前状态能够返回之前的状态最小值,而”最高状态号“代表了很多当前状态能够到达的最大的项目状态。
比如对于“发货“状态,能够到达的最小状态是”计划“,最大状态为”验收“,如果超过了这个范围系统则会给出错误提示
下面我们直接将“发货“状态更新为”立项“
用户状态大致逻辑就讲到这,希望大家可以通过此文熟练掌握用户状态的配置逻辑以及运用场景。