要在报表中创建并填充摘录数据集,需要执行三步骤:
1、将要在摘录数据集中使用的记录类型定义为字段组
FIELD-GROUPS
该语句定义了字段组,字段组可以将几个字段组合到一个名称下,字段组不为字段保留存储空间,而是包含现有
字段的指针,特殊字段组为HEADER.
FIELD-GROUPS HEADER.
填充摘录数据集时,系统将自动用该字段组给所有其它字段组加上前缀。这意味着在摘录数据集中,字段组 的记录总是
首先包含HEADER字段组的字段。在给摘录数据集排序时,系统将使用这些字段作为缺省的排序关键字.
示例:FIELD-GROUPS: HEADER, FLIGHT_INFO, FLIGHT_DATE.
2、为字段组分配字段
语法
INSERT … INTO .
字段..必须为全局数据对象,不可以将子程序或者功能模块中的局部对象分配给字段组。
insert语句同field-group,不保留存储空间,也不转换值,NSERT 语句创建指向字段组 中的字段 的指针,因而定义了摘录记录的结构。
执行报表时 ,可给字段组分配字段,直到首次使用该字段组填充摘录记录。从这时起,记录的结构就已固定,不再改变。简而言之,如果还没有使用
字段组,就可以动态地给它分配任意值。
由于特殊字段组 HEADER 是每个摘录记录的一部分,所以在填充了第一个摘录记录后,就不能再更改该字段组
示例:
TABLES: SPFLI, SFLIGHT.
FIELD-GROUPS: HEADER, FLIGHT_INFO, FLIGHT_DATE.
INSERT: SPFLI-CARRID SPFLI-CONNID SFLIGHT-FLDATE
INTO HEADER,
SPFLI-CITYFROM SPFLI-CITYTO
INTO FLIGHT_INFO.
该示例创建 了三个字段 组。INSERT 语句用字段 填充了两个 字段组
3、将所需的数据摘录到数据集中
要创建实际的摘录数据集,要使用extract语句。
示例:
下列程序被 连接到逻辑 数据库 F1S。
REPORT SAPMZTST.
TABLES: SPFLI, SFLIGHT.
FIELD-GROUPS: HEADER, FLIGHT_INFO, FLIGHT_DATE.
INSERT: SPFLI-CARRID SPFLI-CONNID SFLIGHT-FLDATE
INTO HEADER,
SPFLI-CITYFROM SPFLI-CITYTO
INTO FLIGHT_INFO.
START-OF-SELECTION.
GET SPFLI.
EXTRACT FLIGHT_INFO.
GET SFLIGHT.
EXTRACT FLIGHT_DATE.
该示例创建三个字段组。INSERT语句给其中的两个字段组分配字段。在 GET 事件中,系统用两个不同的记录类型填充摘录数据集。字段组
FLIGHT_INFO 的记录由五个字段组成:SPFLI-CARRID、 SPFLI-CONNID、 SFLIGHT-FLDATE、 SPFLI-CITYFROM 和 SPFLI-CITYTO。
前三个字段属于加前缀的字段组 HEADER。 字段组 FLIGHT_DATE 的记录只由字段组 HEADER 的三个字段组成。
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/19682.html