admin 管理员组

文章数量: 887172


2024年1月17日发(作者:java教程全套视频教程)

工作流开发流程

2012年02月14日

修改记录

制定日期

生效日期

制定 /修订内容摘要

页数

版本

拟稿

审查

批准

目录

1

文档结构 ............................................................................................................................................................ 1

1.1

2

SAP工作流术语 ................................................................................................................................................. 1

BUSINESS OBJECT的创建 ................................................................................................................................... 1

2.1

2.2

2.3

什么是BUSINESS

OBJECT ....................................................................................................................................... 1

BUSINESS

OBJECT的组成 ........................................................................................................................................ 1

创建BUSINESS

OBJECT的步骤 ............................................................................................................................... 2

TCode:SWO1,输入BO的名字,点击创建 ............................................................................................. 2

2.3.1

2.3.2

2.3.3

2.3.4

2.3.5

2.3.6

2.3.7

2.3.8

3

输入BO的属性,其中Application为S ................................................................................................... 2

创建BO的Key,光标放到Key fields上,点击Create,选择NO. ....................................................... 2

光标放在Methods上,点击创建,选择NO .......................................................................................... 3

光标放到Events上,点击Create,先创建一个触发工作流的Event ................................................... 4

在Interfaces中,添加一个接口IFAPPROVE ........................................................................................... 5

修改新建的 Method,Event状态 ............................................................................................................ 5

Business Object已经创建完毕,整体截图............................................................................................... 6

工作流模板的开发 ............................................................................................................................................. 6

3.1

3.2

工作流模板的创建 ............................................................................................................................................ 6

CE新开发工作流步骤介绍(WS99900049为例) ......................................................................................... 7

3.2.1

3.2.2

3.2.3

3.2.4

3.2.5

3.2.6

3.2.7

3.2.8

3.2.9

3.2.10

3.2.11

3.2.12

3.2.13

3.2.14

3.2.15

3.2.16

4

排除工作流触发者(类型:Container Operation) ................................................................................ 7

检查Department字段(类型:Condition) ............................................................................................ 7

Wait for release object to be changed

(类型:Fork) ........................................................................... 8

逻辑删除工作流(类型: Wait) ............................................................................................................... 8

check if steps = 0

(类型:Loop) ........................................................................................................... 9

根据TransType来执行Rule(类型:Multiple Condition) .................................................................... 9

审批任务(类型:Activity) ..................................................................................................................... 9

同意 -

排除当前用户(类型:Container Operation) ........................................................................ 10

同意 -

审批通过Steps减1(类型:Container Operation) ............................................................... 11

同意 - Current_Step加1(类型:Container Operation) .................................................................... 11

同意 -

是否是最后的审批(类型:Condition) .................................................................................. 12

同意 -

判断拒绝原因是否为空(类型:Condition) .......................................................................... 12

同意 -

拒绝原因为空 –

发送成功邮件(类型:Send Mail) ........................................................... 12

同意 -

拒绝原因不为空 –

发送审批失败邮件(类型:Send Mail)................................................ 13

拒绝 -

审批被拒绝Steps赋值为0(类型:Container Operation) ................................................... 13

拒绝 -

发送审批被拒绝邮件(类型:Send Mail) ............................................................................. 13

审批屏幕的接口定义及调用 .............................................................................................................................14

4.1

接口定义 .......................................................................................................................................................... 14

4.2

5

调用方式 .......................................................................................................................................................... 14

触发工作FUNCTION MODULE编写 ..................................................................................................................16

5.1

5.2

接口的定义 ...................................................................................................................................................... 16

查询EVENT触发需要的参数 ............................................................................................................................ 16

5.2.1

5.2.2

5.2.3

5.2.4

5.3

5.4

查询录入合同的详细信息 ....................................................................................................................... 16

查询录入人的姓名及交易类型 ............................................................................................................... 16

查询录入人的所在机构号 ....................................................................................................................... 17

拼接BO的KEY ......................................................................................................................................... 17

给EVENT

CONTAINER里面的变量赋值 ............................................................................................................... 17

调用触发工作流的FM .................................................................................................................................... 18

文档结构

SAP工作流术语

SAP 工作流术语 简写 描述

SAP工作流模板是用基于SAP平台的工作流而开发出来运行于SAP 系统中的业务工作流,用户可以自定义各种类型的工作流模板。

工作流Agent Determination规则,根据规则里面定义的数据和变量,可以排列组合出很多种职责,不同的职责可以分配给不同的岗位,从而达到动态决定当前这个工作流任务的处理人是谁。

组织结构

任务在SAP工作流模板中一个非常重要的组件,它一般定义成链接到某个BOR的方法。

业务对象资源库,可以理解Business Object

Repository为一个定义了工作流模板所需要的功能和触发事件的一个业务对象类

贷款管理系统

抵押品管理系统

LM和CMS已经提供了一些标准的审批对象,这些对象对应到系统里面的一些业务流程,和一些审批记录表,和一些支持的Function Module,详细的信息请参考组织结构设计和命名规则文件。

触发工作流所定义的事件,定在BOR对象中,可以附带的参数,在工作流模板中可以使用这个事件,并且可以将Event带的参数传到工作流模板里面

在SAP系统里面定义的功能函数

Workflow Template WF

Rule Rule

Organization Structure

Task

TS

BOR

Loan Management

Collateral Management

BOR

LM

CMS

Release Objects R.O

Event

Function Module

Event

FM

Business Object的创建

什么是Business Object

Business Object是将一个具体的业务进行了抽象,业务中包含的数据库表被封装。通过发布接口,来让外部程序调用,修改业务对象。其实,BO和JAVA中的类概念是一样的,是R/3系统中面向对象过程中的体现。

Business Object的组成

Element Name Description

Interfaces

Key fields

Attributes

Methods

Events

BO的接口,可以通过继承接口,来实现相应的功能

BO生成实例后唯一标识

BO的属性

BO的方法,通常被工作流模板中的Task调用

与工作流模板绑定后可以触发工作流

创建Business Object的步骤

TCode:SWO1,输入BO的名字,点击创建

输入BO的属性,其中Application为S

创建BO的Key,光标放到Key fields上,点击Create,选择NO.

输入KEY的名字,和数据字典中对应的字段

光标放在Methods上,点击创建,选择NO

输入Result Type的结果类型

光标放到Events上,点击Create,先创建一个触发工作流的Event

再创建一个终止工作流的Event

在Interfaces中,添加一个接口IFAPPROVE

修改新建的 Method,Event状态

把Method状态变成Implement,以Method为例,

光标放在Method – Approval上,选择菜单(BO状态修改同理)

Business Object已经创建完毕,整体截图

工作流模板的开发

工作流模板的创建

输入TCode:SWDD,进入工作流模板创建界面,其中开始和结束是已经创建好的,你要做的是在他们中间,创建Steps。

点击空白的Step,右键点击Create,你可以在菜单中选择你要创建的Step类型,如下图:

CE新开发工作流步骤介绍(WS99900049为例)

排除工作流触发者(类型:Container Operation)

作用:把触发工作流的人员添加到表ExcludedAgents中,使他不会再去审批本次工作流。

使用原因:同一个工作流实例录入触发工作流的人和审批人不能为同一个人。

检查Department字段(类型:Condition)

作用:检查Department(录入人所在的分支行号)是否为空,不为空的话将值赋给Business_Area(合同所属结构的分支行号)

使用原因:审批会录入人的分支行号为第一优先级查找审批人,其次是合同所在的分支行号

Wait for release object to be changed (类型:Fork)

作用:把整个流程分为两个分支

使用原因:一个分支走正常的审批流程,一个分支等待Delete Event触发,如批量结束程序。

逻辑删除工作流(类型: Wait)

作用:这个Step可以与一个BO的Event绑定,等待Event触发后,结束这个分支。

使用原因:为了批量结束工作流而设置的Step,等批量工作流结束程序被后台JOB程序调用后,就会触发Wait的Event,结束工作流实例,实例状态变为Logic Delete。

check if steps = 0 (类型:Loop)

作用:循环,当变量steps等于0的时候,循环结束。

使用原因:动态的多级审批,方便以后的调整。

根据TransType来执行Rule(类型:Multiple Condition)

作用:可以根据条件判断,来走不同的分支,类似编程中的Case语句

使用原因:当不同的场景公用同一个工作流模板时,场景对应的Rule不同,可以用TransType(交易类型缩写)来归类,走不同的分支,方便日后工作流模板的维护。

审批任务(类型:Activity)

作用:根据不同的参数,找到对应的审批人

使用原因:可以让审批人在ECC系统中的邮箱中收到审批任务

Task的属性,必须是General Task,因为审批是由人来操作的,Task不能选Back Process

同意 - 排除当前用户(类型:Container Operation)

作用:把当前审批人添加排除用户列表中

使用原因:更新排除用户列表,防止复核人再去审批。

同意 - 审批通过Steps减1(类型:Container Operation)

作用:变量Steps减一

使用原因:控制审批级次,Steps等于0的时候,循环结束

同意 - Current_Step加1(类型:Container Operation)

作用:变量Current_Step加1

使用原因:当场景为两级审批时,后台屏幕程序会判断Current_Step的值,当Current_Step等于2的时候,才会调用后台程序

同意 - 是否是最后的审批(类型:Condition)

作用:判断Steps是否等于0

使用原因:当最后一级审批完成后,发送邮件给录入人,通知审批已经通过;如果不是最后一级的审批,则直接跳过,继续循环。

同意 - 判断拒绝原因是否为空(类型:Condition)

作用:拒绝原因(Reject_reason)初始为空,审批过后判断是否为空

使用原因:审批出错后,工作流程序会将后台BAPI返回的错误信息返回到Reject_reason中,通过判断它是否为空,就可以确定审批是否失败。

同意 - 拒绝原因为空 – 发送成功邮件(类型:Send Mail)

作用:直接发送邮件给录入人,通知审批成功

同意 - 拒绝原因不为空 – 发送审批失败邮件(类型:Send Mail)

作用:发送审批失败邮件给录入人

发送邮件之前,用一个类型为Container Operation的Step,把拒绝原因(Reject_reason)赋给表变量REJECT_REASON_TAB,可以防止因为字符过多出现截断的现象。

拒绝 - 审批被拒绝Steps赋值为0(类型:Container Operation)

作用:Steps赋值为0

使用原因:拒绝后审批流程结束,循环终止

拒绝 - 发送审批被拒绝邮件(类型:Send Mail)

作用:通知录入人审批被拒绝

审批屏幕的接口定义及调用

接口定义

Import参数;

Export参数:

调用方式

审批屏幕通过ABAP语言中的Dialog方式实现,它们会在BO的Method中被调用,来显示审批信息。

BO – Method的结果返回

触发工作Function Module编写

接口的定义

Import参数

Export参数

Flag = 1 数据错误,Flag = 2 程序执行错误,Flag = 0 触发成功

查询Event触发需要的参数

查询录入合同的详细信息

注:FM名字随场景不同,详细信息要咨询LM组

查询录入人的姓名及交易类型

查询录入人的所在机构号

拼接BO的KEY

为了让Business Object生成的实例在系统中有唯一的标示,我们用前台生成的23位流水号来做BO的Key

给Event Container里面的变量赋值

Event Container里的变量类似Java中Map语句,是成对出现的,每对有一个名字和Value对应的

调用触发工作流的FM


本文标签: 工作 审批 触发 类型