要在条件 CHAIN 中调用模块 ,有两个选 项:
ON CHAIN-INPUT
类似于 ON INPUT。 如果链中的 任一字段包 含初始值( 空值或零) 以外的值, 则调用 ABAP/4 模块。
ON CHAIN-REQUEST
该条件功能 类似于 ON REQUEST, 但是如果链 中的任一字 段的值发生 更改,则调 用 ABAP/4模 块。
例如:
CHAIN.
FIELD: A, B, C.
FIELD: D, E, F.
MODULE X ON CHAIN-INPUT.
MODULE Y.
ENDCHAIN.
在此,如果 字段 A、B、C、 D、E 和 F 中任何一个 具有不同于 初始值的值 ,则调用模 块 X。而始终 调用模块 Y。 如果 Y 发现错误, 则在错误对 话期间,重 新打开这六 个字段并等 待输入。
要将条件限 制到特定字 段,请将 MODULE 语句连接到 相关FIELD 语句。
CHAIN.
FIELD: A, B, C MODULE X ON INPUT.
ENDCHAIN.
在该示例子 中,只有当 列表(C) 中的最后字 段包含非初 始值的值时 ,才调用模 块X。但是 ,如果 X 发现错误, 则在错误对话框中重新 打这开三个 字段(A, B,C)并 等待输入。
有时想要的 调用只取决 于几个字段 ,而不是其 它字段。为 明确起见, 将正在使用 的链断开并 为独立字段 组合创建独 立链是最简 单的。在每 种情况下, 都使用 ON CHAIN-INPUT 或 ON CHAIN-REQUEST。 例如:
CHAIN.
FIELD: A, B, C MODULE X ON CHAIN-REQUEST.
ENDCHAIN.
CHAIN.
FIELD: A, B, D, E MODULE Y ON CHAIN-REQUEST.
ENDCHAIN.
避免自动字 段检查
在进行自动 字段检查之 前,有时希 望系统执行 某种处理逻 辑。例如, 如果用户想 从屏幕退出 ,则无须在 需要输入的 字段中输入 数据。
流逻辑关键 字 AT EXIT-COMMAND 在流逻辑中 是 MODULE 语句的特殊 附加部分。 AT EXIT-COMMAND 允许在系统 执行自动字 段检查之前 调用模块:
**** Screen flow logic: ****
PROCESS AFTER INPUT.
MODULE EXIT AT EXIT-COMMAND.
要使用 AT EXIT-COMMAND, 则必须将功 能类型 E 赋给菜单制 作器或屏幕 制作器中的 相关功能。 在屏幕制作 器中,调用 用于所需按 钮的属性, 并将属性“ FctType” 设置为“E” 。在菜单制 作器中,选 择“转向 -> 功能列表” ,然后在“ 类型”列中 为每个应作 为退出命令 的功能代码 输入 E。
一旦已经将 功能定义为 类型 E, 则在执行任 何字段检查 之前,可以 用 AT EXIT-COMMAND 选项告诉系 统处理所有 与该功能相 关的 ABAP/4 模块。只有 当用户激活 定义为类型 E 的功能时, 才触发 AT EXIT-COMMAND 事件。
ΔΔΔ如果用了SET SCREEN 0100(不是0)时,会继续执行当前屏幕PAI,在FIELD 必填的字段<field>时,还是会提示。
**** ABAP/4 module: ****
MODULE EXIT INPUT.
CASE OK_CODE.
WHEN 'NEW'.
CLEAR: SPFLI, OK_CODE.
LEAVE SCREEN.
WHEN 'CANC'.
CLEAR OK_CODE.
SET SCREEN 0. LEAVE SCREEN.
ENDCASE.
ENDMODULE.
正常情况下 ,MODULE...AT EXIT-COMMAND 语句倾向于 处理退出命 令 BACK、 EXIT 和 CANCEL。 为处理这些 命令而编码 的 ABAP/4模块应包含 从屏幕或事 务退出的语 句(例如, LEAVE TO SCREEN 0)。
如果未在 AT EXIT-COMMAND 模块中终止 屏幕或事务 ,则系统象 平常一样继 续流逻辑处 理:首先执 行自动字段 检查,然后 按顺序处理 PAI 语句。