条件 CHAIN 语句

要在条件 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.

在此,如果 字段 ABC DE F 中任何一个 具有不同于 初始值的值 ,则调用模 X。而始终 调用模块 Y。 如果 Y 发现错误, 则在错误对 话期间,重 新打开这六 个字段并等 待输入。

要将条件限 制到特定字 段,请将 MODULE 语句连接到 相关FIELD 语句。

    CHAIN.
      FIELD: A, B, C  MODULE X ON INPUT.
    ENDCHAIN.

在该示例子 中,只有当 列表(C 中的最后字 段包含非初 始值的值时 ,才调用模 X。但是 ,如果 X 发现错误, 则在错误对 话框中重新 打这开三个 字段(A BC)并 等待输入。

有时想要的 调用只取决 于几个字段 ,而不是其 它字段。为 明确起见, 将正在使用 的链断开并 为独立字段 组合创建独 立链是最简 单的。在每 种情况下, 都使用 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 事件。

**** 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 语句。

你可能感兴趣的:(条件 CHAIN 语句)