ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:29.14KB ,
资源ID:9175125      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9175125.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(在屏幕中使用表格.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

在屏幕中使用表格.docx

1、在屏幕中使用表格在屏幕中使 用表格概览ABAP/4 提供了两种 机理以便在 屏幕中显示 和使用表格 数据。这两 种机理分别 为“表格控 制”和“步 循环”。表 格控制和步 循环均为屏 幕表格,您 可以在屏幕 制作器中将 此类屏幕表 格添加到屏 幕里。例如 ,下面的屏 幕在底部就 含有表格控 制。内容简介 使用 LOOP 语句 在屏幕表格 中直接循环 在内表中循 环 使用表格控 制 在 ABAP/4 中声明表格 控制 设 置表格控制 属性 示例事务: 表格控制 使用步循环 本章讲述如 何编制允许 您使用屏幕 表格的屏幕 流逻辑和 ABAP/4 代码。有关 使用屏幕表 格的信息, 参见:简介 (页

2、 62) 使用 LOOP 语句 (页 64) 使用表格控 制 (页 69) 使用步循环 (页 618) 示例事务: 表格控制 (页 615) 简介本节讲述如 何在屏幕中 使用表格显 示,以便用 户很快就能 大略了解其 概况。要想获取此 处所概列的 原理示例, 请参阅事务 TZ60 和 TZ61, 它们分别描 述了表格控 制和步循环 的使用。( TZ60 和 TZ61 是同系统一 起发布的开 发级别 SDWA 中的样本事 务。)表格控制和 步循环表格控制和 步循环是用 于屏幕表格 显示的对象 ,在屏幕制 作器中用户 可将其添加 到屏幕。从 编程的角度 来看,表格 控制和步循 环几乎完全 一样。表

3、格 控制只是增 强了的步循 环,此步循 环可以使用 桌面应用程 序中表格工 具的“Look” 和“Feel” 来显示数据 。使用表格 控制,用户 可以:_ 沿着表格 水平和竖直 地滚动_ 重新调整 某一栏的宽 度_ 在字段内 滚动(当字 段内容比该 字段宽时)_ 选择表格 的行数或列 数_ 重新规定 栏的顺序_ 保存当前 的显示设置 以备后用表格控制还 提供使表格 易于查看和 使用的专用 格式化功能 (有些是自 动的,有些 是可选的) 。例如:_ 当用户调 整窗口时, 自动进行表 格调整(水 平或竖直)_ 行与行之 间和列与列 之间的分隔 线(水平和 竖直)_ 所有列的 列表头字段 。步循环的

4、一 个特点是它 们的表行能 够在屏幕上 跨越多行。 相反,表格 控制中的行 总是单行, 但可以很长 。(表格控 制的行能够 滚动。)通常,表格 控制所提供 的许多特征 由系统的 SAPGUI 前端操纵, 因此,不必 在 ABAP/4 事务中编制 任何特征( 除了竖直滚 动)。屏幕表格处 理屏幕表格是 屏幕中重复 的系列表格 行。每一条 目都包含一 个或多个字 段,并且所 有的行都具 有相同的字 段结构。屏 幕表格要么 是表格控制 要么是步循 环。显示飞 行数据的表 格控制如下 所示:屏幕表格和 LOOP 动态语句如同在内表 中循环来处 理内表,用 户也可以在 屏幕表格中 循环以处理 屏幕表格。

5、 。为此,就 必须在屏幕 流逻辑中加 入一条 LOOP.ENDLOOP 动态语句。 该循环通常 要调用一次 ABAP/4 模块,但也 允许使用其 它流逻辑命 令。系统每 次通过循环 时就运行此 模块。LOOP 动态语句有 多种格式。 两个最重要 的格式的功 能如下: 只在屏幕 表格中循环_ 同时在屏 幕表格和内 表中循环屏幕表格和 程序字段可以将屏幕 表格字段声 明为数据库 字段、内表 字段、结构 字段或其它 程序字段。 屏幕表格字 段有时出现 在屏幕字段 列表中,有 时出现在程 序中。因此 ,屏幕表格 中所有的行 在程序中共 用同一个字 段集(类似 “表头区域 ”)。在流 逻辑的 LOOP

6、过程中,系 统将屏幕表 格行的所有 字段复制到 相关的程序 字段中或从 中复制回来 。LOOP 语句的任务LOOP 语句负责读 取往返传递 于屏幕和 ABAP/4 程序之间的 屏幕表格值 。因此必须 同时在 PBO 和 PAI 事件中为屏 幕中的每一 个表格编制 LOOP 语句。至少 在此应有一 个空 LOOP.ENDLOOP 语句。LOOP 语句还用于 驱动滚动。 在 PBO 事件中,LOOP 使用一个参 数告诉从表 格的何处开 始循环。该 参数因此导 致下一个屏 幕表格显示 的更新(对 于表格控制 ,该参数是 表格控制结 构中的 TOP_LINE 字段;对于 步循环,该 参数为用于 LOO

7、P 语句的 CURSOR 参数。)。 ABAP/4 程序和系统 都可以设置 该参数。注意,屏幕 表格中所显 示的行数可 以改变。当 屏幕表格可 调整并且用 户更改窗口 的高度时就 会出现这种 情况。在这 种情况下, PAI 中的下一个 LOOP 就更改 PAI 中传到 ABAP/4 程序的表格 行数。使用 LOOP 语句LOOP.ENDLOOP 动态命令可 在流逻辑中 执行循环操 作。可以使 用该语句在 表格控制和 步循环中进 行循环。在 LOOP 和 ENDLOOP 之间,可以 使用 FIELD、 MODULE、 SELECT、 VALUES 和 CHAIN 动态关键字 。最为常见 的是使用

8、 MODULE 语句来调用 ABAP/4 模块。必须同时在 PBO 和 PAI 事件中为屏 幕的每个表 格编制 LOOP 语句。由于 LOOP 语句导致在 ABAP/4 程序和屏幕 字段之间来 回复制屏幕 字段。因此 ,此处至少 必须有一个 空 LOOP.ENDLOOP 语句。LOOP 语句有两种 重要的格式 :_ LOOP。该语句在屏 幕表格行中 循环,同时 在每个块和 程序的对应 ABAP/4 字段之间往 复传送数据 。可以在 ABAP/4 中将屏幕表 格字段声明 为任何类型 (数据库表 格、结构或 单个字段) ,内表字段 除外。对于步循环 ,如果正在 执行本身的 滚动(例如 ,使用 F2

9、1F24) ,则必须使 用该语句。_ LOOP AT .该语句可同 时在内表和 屏幕表格行 中循环。常 常将此屏幕 表格字段声 明为内表字 段,但不是 非得如此。对于该 LOOP, 步循环显示 都带有滚动 条。该滚动 由系统自动 操纵。有关不同 LOOP 语句的详细 信息,参见 :在屏幕表格 中直接循环 (页 65) 在内表中循 环 (页 66) 在屏幕表格 中直接循环使用 LOOP 语句的简单 格式 LOOP. . ENDLOOP.在当前所显 示的屏幕表 格行中循环 。如果正在 使用表格控 制,就必须 包括附加的 WITH CONTROL 参数: LOOP WITH CONTROL . .

10、ENDLOOP.该简单的 LOOP 是 LOOP 语句最一般 的格式。如 果使用该 LOOP, 就能够将屏 幕表格字段 声明为任何 类型(内表 、数据库表 格、结构或 单个字段) 。此简单的 LOOP 将屏幕表格 字段往复地 复制到相关 的 ABAP/4 字段。如果 要在不同的 结构中使用 屏幕值,就 必须直接将 它们移到所 要的地方。每经过一次 循环,都将 下一表格行 置于 ABAP/4 字段中,并 为其执行 LOOP ( 通常为 ABAP/4 模块调用) 。在 PBO 事件中,LOOP 语句可将程 序中的循环 字段逐行复 制到屏幕。 在 PAI 事件中,字 段被逐行复 制到相关的 程序字段

11、上 。在 ABAP/4 模块中,使 用系统变量 SY-STEPL 以查找当前 正在处理的 屏幕表格行 的索引。每 循环一次, 系统就设置 一次该变量 。SY-STEPL 的值总是介 于 1 与当前所显 示的行数之 间。当在屏 幕表格和内 表之间来回 地传送字段 值时,这很 有用。您可 以在程序中 声明表格偏 移量(常称 为 BASE, 并通常用 SY-LOOPC 初始化)并 用它同 SY-STEPL 一起获得与 当前屏幕表 格行相对应 的内表行。(下例中, 将屏幕字段 声明为内表 。程序读取 或修改内表 以读取往返 传送到屏幕 的表格字段 。)*SCREEN FLOW LOGIC*PROCES

12、S BEFORE OUTPUT. LOOP. MODULE READ_INTTAB. ENDLOOP.PROCESS AFTER INPUT. LOOP. MODULE MODIFY_INTTAB. ENDLOOP.*ABAP/4 MODULES*MODULE READ_INTTAB. IND = BASE + SY-STEPL - 1. READ TABLE INTTAB INDEX IND.ENDMODULE.MODULE MODIFY_INTTAB. IND = BASE + SY-STEPL - 1. MODIFY INTTAB INDEX IND.ENDMODULE.请记住,系 统变

13、量 SY-STEPL 只在 LOOP.ENDLOOP 处理的范围 之内才有意 义。循环之 外,它没有 合法值。在内表中循 环语句 LOOP AT .表示同时在 内表和屏幕 表格中循环 。特别地, LOOP AT 在屏幕中当 前可见的内 表部分中循 环。对于表 格控制和步 循环都可使 用此 LOOP 语句格式。该 LOOP 语句的完整 语法格式为 : LOOP AT CURSOR WITH CONTROL FROM TO . . ENDLOOP.该形式的 LOOP语 句在内表中 循环,对每 行都执行 。 对于每个内 表行,系统 将相应程序 字段传送到 对应的屏幕 表格行,或 将相应的屏 幕表格行

14、传 送回对应的 程序字段。使用步循环 时,在 PAI 事件中省略 CURSOR 参数。FROM 和 TO 参数只能用 于步循环( 参见 使用步循环 (页 618) 。)。WITH CONTROL 参数只能用 于表格控制 。下列标题提 供详细信息 :系统如何传 送数据值 (页 67) 滚动和滚动 变量 (页 68) 系统如何传 送数据值对于 LOOP AT 语句,不必 将屏幕表格 声明为内表 。屏幕表格 也可以是数 据库表格、 结构或其它 程序字段。 如果没有将 屏幕表格定 义为内表, 则必须确认 在循环中移 到内部表头 中或从内表 头中移出的 字段是正确 的,还要注意, 在屏幕表格 中所使用的

15、 字段可能只 是相应词典 或内表字段 的一个子集 。系统在屏 幕表格中传 送需要的字 段。详细处 理过程如下 :_ PBO 处理1. 内表 的一行被放 入表头区。2. 为该 行执行所有 的循环语句循环语句最 通常是调用 ABAP/4 模块。只要 需要,这些 模块就将内 表字段移到 相关的程序 字段中(字 典表格或其 它字段)。示例事务 TZ60 在例程 DISPLAY_FLIGHTS 中执行下列 命令:MODULE DISPLAY_FLIGHTS OUTPUT. SFLIGHT-FLDATE = INT_FLIGHTS-FLDATE. SFLIGHT-PRICE = INT_FLIGHTS-P

16、RICE. SFLIGHT-CURRENCY = INT_FLIGHTS-CURRENCY. SFLIGHT-PLANETYPE = INT_FLIGHTS-PLANETYPE. SFLIGHT-SEATSMAX = INT_FLIGHTS-SEATSMAX. SFLIGHT-SEATSOCC = INT_FLIGHTS-SEATSOCC.ENDMODULE.3. 系统 将值从程序 字段传送到 具有相同名 称的屏幕字 段中。_ PAI 处理1. 内表 的行被放入 内表表头区 中。2. 所有 的屏幕表格 字段被传送 到具有相同 名称的 ABAP/4 程序字段中 。3. 为当 前内表行执 行所有的

17、循 环 。同样 也通常是对 ABAP/4 模块的调用 。只要需要 ,该模块应 当首先将程 序字段值移 到该内表的 表头区。本 步骤用屏幕 数据值覆盖 了内表数据 值。步骤 1 对于屏幕表 格字段只是 为内表所定 义的字段的 子集的情况 是必须的。 如果想使用 新的屏幕值 更新内表, 那么,在表 头区必须有 作为基础的 原表格行。记住:如果 要使用表头 区中的内容 来更新内表 ,就请使用 ABAP/4 模块中的 MODIFY 语句。系统 不会自动进 行这种更新 。注意,现有 动态语言 MODIFY 语句和 ABAP/4 MODIFY 语句。请不 要使用动态 语言 MODIFY 语句来更新 内表。

18、滚动和滚动 变量使用 LOOP AT 语句可以自 动进行滚动 ,也可由编 程人员的操 作来执行滚 动。用滚动 条的滚动是 自动的,并 由系统来管 理。使用功 能键或其它 按钮的滚动 必须由编程 人员来进行 操作。(示 例事务 TZ60 给出了两种 方式的例子 。)对于表格控 制和步循环 ,竖直滚动 都由 参数控制。 本节说明如 何使用该变 量。水平滚 动(只用于 表格控制) 由 SAPGUI 前端局部执 行。ABAP/4 代码不需要 支持任何水 平滚动。第一次处理 PBO 事件时,程 序应当设置 以告诉系统 从何处开始 显示。对于 表格控制, 是 TABLEVIEW 结构中的 TOP_LINE

19、 字段。对于 步循环,请 声明局部程 序变量以用 作 CURSOR 参数。之后,系统 在两种情形 下设置 :_ 只要用户 使用滚动条 滚动就更新 。_ 每次进入 LOOP AT 块时增加 。这是因为每 当用户使用 滚动条滚动 时,系统执 行如下动作 :1. 为当 前屏幕显示 触发 PAI。滚动触发 PAI 事件就象用 户已经执行 了一个传送 功能代码的 动作。在使 用滚动条滚 动的 PAI 事件中,OK_CODE 字段没有值 。(如果用 功能键来进 行滚动,则 OK_CODE 的值就是该 功能键的功 能代码。)a. 将当 前显示的屏 幕值传送到 ABAP/4 程序中。b. 使用 的当前值, 为

20、当前屏幕 值执行 PAI 处理。每经 过一次 LOOP, 系统就将 加一,因此 程序能够自 动访问相应 的内表条目 。(和平常一 样,只要程 序在此检测 出任何错误 ,都将发送 一条警告或 错误信息。 PAI 过程将重复 执行直到不 再发生错误 为止。)2. 为新 屏幕显示触 发 PBO (由用户滚 动请求)。对于该 PBO,系 统将 更新为新值 (由用户滚 动设置)并 反复对屏幕 进行 LOOP AT 处理。结果 ,内表的新 程序段被传 送到屏幕上 。*SCREEN FLOW LOGIC*PROCESS BEFORE OUTPUT: LOOP AT INTTAB CURSOR TABCNTL

21、-TOP_LINE. ENDLOOP.PROCESS AFTER INPUT. LOOP AT INTTAB. MODULE MODIFY_INTTAB. ENDLOOP.*ABAP/4 MODULE*MODULE MODIFY_INTTAB. MODIFY INTTAB INDEX COUNT.ENDMODULE.如果想提供 除滚动条之 外的其它滚 动选项(例 如,标准工 具栏中的 F21 F24 滚动按钮) ,就必须自 己编程。为 此,可以在 必要的地方 自己设置 。 于是 PBO 中的 LOOP 语句相应地 在下一个屏 幕显示中更 新屏幕表格 。使用表格控 制表格控制的 结构不同于 步循

22、环。作 为屏幕对象 的步循环只 是一系列字 段行,它们 表现为一个 重复的块。 而作为屏幕 对象的表格 控制却由以 下几部分组 成:_ 表格字段 (在屏幕中 显示)_ 控制结构 ,支配着表 格显示以及 用户可以用 它来做什么 。屏幕 200 的字段列表 (在事务 TZ60 中)显示这 两项:这里可看到 控制结构( 带有 Ftyp = Table 的 FLIGHTS 字段)和实 际表字段( 带有 Ftyp = Text 或 I/O 的 SFLIGHT 字段)。FLIGHTS 字段的属性 (当您按 Attribs.for 1 Field 时可用)显 示可以静态 设置的控制 结构字段。 其它控制结

23、构字段可以 从 ABAP/4 程序中动态 地设置。下列标题提 供详细信息 :在 ABAP/4 中声明表格 控制 (页 610) 设 置表格控制 属性 (页 612) 在 ABAP/4 中声明表格 控制在屏幕中使 用表格控制 时,必须在 ABAP/4 程序中同时 声明表格控 制结构和表 格控制字段 。例如,事 务 TZ60 有:TABLES: SFLIGHT.CONTROLS: FLIGHTS TYPE TABLEVIEW USING SCREEN 200.CONTROLS 语句定义 TABLEVIEW 类型的控制 结构。系统 从给定屏幕 的屏幕制作 器属性中获 得结构的初 始值。TABLEVI

24、EW 结构包含如 下字段:字段名类型用途FIXED_COLSinteger表 格左端不可 移动列数。 固定列后面 的所有列都 可以移动, 并能在表格 中重新排序 。 LINESinteger表 格中的可显 示的行数。 如果使用表 格控制来显 示内表,那 么,LINES 将给出能在 屏幕上显示 的总行数。 (如果内表 不包含行, 则屏幕表格 将在结尾包 含空行)。 系统还使用 LINES 来设置滚动 条的显示以 示意用户在 表格中向下 滚动了多远 。TOP_LINEinteger屏 幕开始显示 的表格行。 CURRENT_LINEinteger循 环内当前正 被处理的行 。该字段是 绝对(非相

25、对)指标, 其值为TOP_LINE + SY_STEPL.-1LEFT_COLinteger最 左边非固定 的列。因为 用户可以滚 动显示的非 固定部分, 所以该字段 控制着出现 在固定列后 面的列号。 LEFT_COL 给出列的绝 对(非相对 )值,不管 用户是否重 新排列了列 的顺序。LINE_SEL_MODEinteger允 许使用行选 择。取值: 0不选, 1只选一 行,2允 许选多行。 COL_SEL_MODEinteger允 许使用列选 择。取值: 0不选, 1只选一 列,2允 许选多列。 LINE_SELECTORchar 1指示器: 显示行选择 栏,这是一 个能在 ABAP/4

26、 程序中进行 检查的一般 复选框。用 户单击某复 选框时,系 统就将它设 置为 X。H_GRIDchar 1指示器: 显示水平网 格线V_GRIDchar 1指示器: 显示垂直网 格线COLS (OCCURS 10)TAB_COLUMN嵌 入内表:表 格中每个列 的一个表格 条目。TAB_COLUMN 结构中的字 段说明了屏 幕表格中的 单个字段及 其列:字段名类型 用途SCREENSCREEN嵌 入 SCREEN 结构:所有 的字段出自 SCREEN 系统表格的 单个行。INDEXinteger显 示中列的当 前位置(用 于用户重新 排列了列顺 序的情况) 。SELECTEDchar 1用户

27、单击 该列时,( 系统)将它 设为 X。VISLENGTHint1字 段的可见长 度(字符数 )。最大的 允许长度为 255 个字符。“ 屏幕”类型 指的是 SCREEN 表格,系统 表格说明了 屏幕中的所 有字段。关 于使用 SCREEN 表格的完整 信息,参见 : 修改屏幕 (页 51) .设 置表格控制 属性使用 TABLEVIEW 控制结构中 的字段在运 行时设置屏 幕表格属性 。例如,设 置滚动变量 TOP_LINE, 事务 TZ60 使用语句:FLIGHTS-TOP_LINE = 1。起初,表格 控制字段从 屏幕制作器 中为控制所 指定的属性 中获得它们 的值。其后 ,大部分控 制

28、字段可用 多种方法来 指定:由系 统指定、由 ABAP/4 程序指定或 由用户定制 显示。下表 确切地指定 每个字段的 设置方式:字段名初始 化方式后来 设置值的方 式FIXED_COLS在 ABAP/4 中或默认 0。在 ABAP/4 中。LINES在 ABAP/4 中或默认 0。在 ABAP/4 中。如果使 用 LOOP AT , 也可由系统 自动设置。 TOP_LINE在 ABAP/4 中或默认 1。在 ABAP/4.中 ,如果用户 移动垂直滚 动条上的滑 块时,也可 由系统设置 。CURRENT_LINE默 认0。在 ABAP/4 中不允许修 改。在循环 时由系统设 置。(CURREN

29、T_LINE=TOP_LINE + SY_STEPL-1)LEFT_COL在 ABAP/4 中或默认 0。在 ABAP/4 中,当用户 在水平滚动 条上移动滑 块时,还可 由系统设置 。LINE_SEL_MODE屏 幕制作器或 ABAP/4 程序。在 ABAP/4 中。COL_SEL_MODE屏 幕制作器或 ABAP/4 程序。在 ABAP/4 中。LINE_SELECTOR屏 幕制作器或 ABAP/4 程序。在 ABAP/4 中。H_GRID屏 幕制作器或 ABAP/4 程序。在 ABAP/4 中。V_GRID屏 幕制作器或 ABAP/4 程序。在 ABAP/4 中。COLS_SCREEN 屏幕制作器 、ABAP/4 程序或用户 定制。在 ABAP/4 中。COLS_INDEX屏 幕制作器、 ABAP/4 程序或用户 定制。在 ABAP/4 中。COL_SELECTED在 ABAP/4 中。在 ABAP/4 中。如果必要, 可以始终将 表格控制重 置为屏幕制 作器中所指 定的初始值 。为此,请 使用语句 REFRESH CONTROL FROM SCREEN 。 详细信息参 见 ABAP/4 联机关键字 帮助。示例事务: 表格控制诸如对表格 控制的编程 示例,参见 事务

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1