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

在此,如果 字段 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 事件。

**** 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.
FIELD:f1,f2,…
MODULE mod1 ON CHAIN-INPUT | CHAIN-QEQUEST.
FIELD:g1,g2,…

MODULE mod2 ON CHAIN-INPUT | CHAIN-QEQUEST.

ENDCHAIN.

当 fi之一满足条件时,mod1被调用,
当gi或fi满足条件时Mod2被调用
CHAIN.
FIELD:f1,f2.

FIELD: f3 MODULE mod1 ON INPUT.
ENDCHAIN.
只有f3包含非初始值时才调用mod1
CHAIN.
FIELD:f1,f2.
FIELD:f3 MODULE mod1 ON CHAIN-INPUT.
ENDCHAIN.
f1,f2,f3中任一字段包含非初始值時都調用mod1.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值