PeopleSoft-如何实现AE报表程序

如何实现 AE 报表流程

1.定义运行控制表 TBL表

  • 运行控制ID:区分用户的第几次操作
  • 用户ID:区分用户
  • ORDERID:区分操作的表。

2.定义进程参数传递表 AET表

3.定义报表请求页面(页面、组件、组件注册)

4.创建进程程序(AE)

5.创建进程定义(进程组:HRALL、GPALL)

步骤

定义运行控制表,以_TBL结尾。

建sql表,插入field,设计里面每一个field的属性。保存,然后做好注释。

  • OPRID :用户ID,设置为key ,非必填。

  • RUN_CNTL_ID:运行控制,设置为key,search key 和 list Box Item

  • LANGUAGE:语言控制,用于多语言环境。

  • ZL_ORDERID:订单编号,设置为必填,Edit Type设置为Table Edit,Type 选择 Prompt Table Edit ,Prompt Table 选择对应的头表。

定义进程参数传递表,以_ AET结尾。

建Derived/Word表,插入field,设计里面每一个field的属性。保存,然后做好注释。

  • LANGUAGE_CD:语言代码,多语言环境使用

  • PROCESS_INSTANCE:进程实例。

  • ZL_ORDERID:需要查询的订单。

定义报表请求页面(页面、组件、组件注册)

​ 1、新建page,放置一个subpage,选择如图。

​ 2、然后拖入运行控制表中的订单编号。

​ 3、新建组件,修改Item Label 为订单报表申请·ZL。

​ 4、注册组件。过程不再详述,注意修改名字,标签和描述,级的勾选修改的三个选项。

创建进程程序(AE)。

​ 1、新建SQL。

​ 2、新建AE。如图,编写SQL Action 和 PeopleCode。

SQL ACtion:

  • %Slelect (ZL_ORDERID) 等于 %Select (State Record .ZL_ORDERID)。注意:此处用的是指定的 State Record 表。
  • %OperatorId :操作用户ID
  • %RunControl: 运行控制ID

PeopleCode Action :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
/**================================================
任务:ZL_ORGER_2019
描述:订单编号
--------------------------------------------------------
作者: 操作时间: 操作:
赵龙 2019-03-25 创建
=================================================*/


/* 导入公共函数包 */
import C_HRS_FUNC:*;
import C_COMMON_FUNC:UTILITY:*;

/* 声明变量 */
Local array of array of any &arrRptPar; /*定义报表参数列表*/
Local array of any &arrRptHead; /*定义报表标题*/

Local number &seqNo; /*序号*/
Local array of any &tmpArr;
Local string &orderId;

/* 变量初始化 */
&arrRptPar = CreateArrayRept(CreateArrayAny(), 0).Clone();
&arrRptHead = CreateArrayAny();
&arrData = CreateArrayAny();
&tmpArr = CreateArrayAny();

&oReport = create C_HRS_FUNC:REPORT();
&oUtility = create C_HRS_FUNC:UTILITY();
&oUtility2 = create C_COMMON_FUNC:UTILITY();

/* 取得查询页面输入的查询参数 */

&orderId = ZL_RUN_CTL_AET.ZL_ORDERID.Value; /*初始化变量*/
&seqNo = 0; /*序号*/



/*定义输出文件*/
Local File &rptFile = GetTempFile(%FilePath | &strTmplateId | "_" | %Date | ".xls", "w", "u", %FilePath_Absolute);
/*打印log*/
Local File &log = GetTempFile(%FilePath | "log" | %Date | ".txt", "w", "u", %FilePath_Absolute);


/**
================================================================
生成报表头信息
================================================================
*/
Rem 求出报表描述名称;
&arrRptPar.Push(CreateArrayAny("报表名称", "订单明细表"));

Rem 取报表的制表人(OPRID+空格+OPRID对应员工的NAME_FORMAL);
SQLExec("SELECT NAME_DISPLAY FROM PS_PERSONAL_DATA WHERE EMPLID = :1", %EmployeeId, &strRptPersonNm);
&strRptPersonNm = %OperatorId | " " | &strRptPersonNm;

&arrRptPar.Push(CreateArrayAny("制表人", &strRptPersonNm));
&arrRptPar.Push(CreateArrayAny("制表日期", String(%Date)));

&arrRptPar.Push(CreateArrayAny("订单ID", &orderId));


/**
================================================================
生成报表数据列头信息
================================================================
*/

Rem 设置报表格式信息;
&oReport.AddXlsHeader(&rptFile);
Rem 打印报表头信息;
&oReport.WritePara(&rptFile, &arrRptPar);

Rem 初始化报表标题信息;
&arrRptHead.Push("序号");
&arrRptHead.Push("订单编号");
&arrRptHead.Push("订单描述");
&arrRptHead.Push("订单子编号");
&arrRptHead.Push("订单类型");
&arrRptHead.Push("订单说明");
&arrRptHead.Push("订单数量");
&arrRptHead.Push("订单单价");
&arrRptHead.Push("订单金额");

&oReport.WriteColName(&rptFile, &arrRptHead);


/**
===============================================
============生成报表主题
================================================================
*/
Local array of any &tArr;

Local SQL &rowSql = CreateSQL(SQL.ZL_QUERY_SQL, &orderId);

/** 讲&rowSql中的每一个row赋值给 &tmpArr 直到没有值*/
While &rowSql.Fetch(&tmpArr)
&seqNo = &seqNo + 1;

&rptFile.WriteLine("<tr>");

&oReport.WriteCellData(&rptFile, &seqNo, "30"); /* 序号*/
&oReport.WriteCellData(&rptFile, &tmpArr [1], "30"); /* 订单编号*/
&oReport.WriteCellData(&rptFile, &tmpArr [2], "30"); /* 订单描述*/
&oReport.WriteCellData(&rptFile, &tmpArr [3], "30"); /* 订单子序号*/
&tArr = &oUtility2.GetXlatValue("ZL_ORDER_SUBTYPE", String(&tmpArr [4]), %Date);
&oReport.WriteCellData(&rptFile, &tArr [1], "30"); /* 订单类型*/
&oReport.WriteCellData(&rptFile, &tmpArr [5], "30"); /* 订单描述*/
&oReport.WriteCellData(&rptFile, &tmpArr [6], "30"); /* 订单数量*/
&oReport.WriteCellData(&rptFile, &tmpArr [7], "30"); /* 订单单价*/
&oReport.WriteCellData(&rptFile, &tmpArr [8], "30"); /* 订单金额*/


&rptFile.WriteLine("</tr>");

End-While;


/*打印结尾信息*/
&oReport.WriteEnding(&rptFile);

rem &log.Delete();
&log.Close();
&rptFile.Close();

3、AE参数设置。

  • 配置State Records 表。选中对中的State Record 表,勾选Default State Record ,表示启用简写模式。
  • 配置Temp Tables 表:抽取大数据中一小部分,暂存数据。设置实例个数,一般系统有冗余的。
  • 配置Advanced 。

创建进程定义。

​ 1、进入如下图,新建进程,选择类型:Application Engine。名称:和前面定义的程序一样。

​ 2、进程定义中描述一下进程作用。在自定义中选择刚刚创建的AE程序。

测试

​ 1、进入订单报表申请页面。按下步骤操作。

​ 2、查看是否成功申请报表。