网站自动生成,百度快速优化排名软件,中国人做暧暧视频网站,建工网官网校由于大家对语法及其含义似乎有些混淆#xff0c;让我们用一个非常简单的例子来逐步处理内部表的分组问题#xff0c;你会发现其实并不复杂。我还附上了一个程序的全文#xff0c;该程序会执行以下步骤并产生一些输出结果。
是的#xff0c;您有一个内部表 spfli_tab TYPE …由于大家对语法及其含义似乎有些混淆让我们用一个非常简单的例子来逐步处理内部表的分组问题你会发现其实并不复杂。我还附上了一个程序的全文该程序会执行以下步骤并产生一些输出结果。
是的您有一个内部表 spfli_tab TYPE TABLE OF spfli其中填充了来自数据库表 SPFLI 的数据还有什么…。
第 1步按一列分组
最简单的方法就是按一列分组
LOOP AT spfli_tab INTO waGROUP BY wa–carrid.… wa–carrid ...ENDLOOP.在循环内部我们可以访问 wa 尤其是 wa-carrid 字段。wa 包含 GROUP BY 创建的每个组的第一行。这就是所谓 representative binding。在循环中wa 代表一个分组。
要访问每个组的成员需要添加一个成员循环
LOOP AT spfli_tab INTO waGROUP BY wa-carrid.…LOOP AT GROUP wa INTO DATA(member).… member-… …ENDLOOP.…ENDLOOP.member 是行类型为 spfli_tab 的结构体包含每个组的成员。
第 2 步按多列分组
如果要根据不止一个分组标准最简单的情况是列进行分组可以这样写
LOOP AT spfli_tab INTO waGROUP BY ( key1 wa-carrid key2 wa-airpfrom ).… wa-carrid … wa-airpfrom …ENDLOOP.在这种情况下你需要构建一个结构化 group key。在此处所示的代表绑定中wa 被重复用于访问循环中的组密钥。
为了访问组中的成员可以添加与上述步骤 1 完全相同的成员循环。
第 3 步按一列分组的组键绑定
除了重复使用 LOOP AT 的 INTO 子句来访问组的代表绑定外还可以定 group key binding:
LOOP AT spfli_tab INTO waGROUP BY wa-carridINTO DATA(key).… key …ENDLOOP.和上面的步骤 1 没有太大区别吧为了方便起见这里使用了一个基本数据对象键而不是重复使用 wa。与代表绑定additions WITHOUT MEMBERS、GROUP SIZE、GROUP INDEX相比组键绑定提供了更多的功能。如果不需要这些功能可以继续使用代表绑定。不过我自己更喜欢组键绑定因为它能使组键更明确。但这只是个人喜好的问题。
插入成员循环与之前一样
LOOP AT spfli_tab INTO waGROUP BY WA-CARRIDINTO DATA(key).…LOOP AT GROUP key INTO member.… members …ENDLOOP.…ENDLOOP.请注意您现在可以使用变量名 key 访问组。
第 4 步按一列以上分组的分组键绑定
最后重要的是针对结构化组主键的 group key 绑定
LOOP AT spfli_tab INTO waGROUP BY ( key1 wa-carrid key2 wa-airpfrom )INTO DATA(key).… key-key1 … key-key2 …ENDLOOP.现在key 是一个由 key1 和 key2 组成的结构。成员循环可以完全按第 3 步添加。
如果 members 不感兴趣可以使用 “NO MEMBERS ”添加以节省运行时间和内存。例如
LOOP AT spfli_tab INTO waGROUP BY ( key1 wa-carrid key2 wa-airpfromindex GROUP INDEX size GROUP SIZE )WITHOUT MEMBERSINTO DATA(key).… key-key1 … key-key2 … key-index … key-size … ENDLOOP.这里不可能有成员循环。但键值中加入了一些预定义的可选组件以获取更多信息。
总结
不会太复杂吧
了解了这些简单的事实后你可以继续阅读文档做一些更复杂的事情例如利用组键定义的 RHS 可以使用表达式这一事实或者使用 FOR 表达式代替 LOOP AT。