SAP 价值流程和帮助请求流程
⚡ 智能摘要
Process On Value-Request 和 Process On Help-Request 分别是 F4 和 F1 背后的屏幕事件。 SAP ABAP。本页解释了这两个事件、触发它们的 FIELD 语句以及显示文档或可能条目的函数模块。

POH和POV分别是什么?
首先,如果您对屏幕流逻辑及其用途一无所知,那么首先需要了解以下内容: SAP我们建议您查看我们的教程。 对话程序.
POH 和 POV 是两个用于响应用户帮助请求的屏幕事件。POH 响应 F1 键,解释字段的含义;POV 响应 F4 键,列出字段可接受的值。这两个事件都在屏幕的流程逻辑中声明,与 PBO 和 PAI 并列。
| 标准 | POH(处理帮助请求) | POV(基于价值请求的处理) |
|---|---|---|
| 触发者 | F1键 | F4 键,或“可能输入项”按钮 |
| 目的 | 解释了该字段的含义。 | 提供该字段接受的值。 |
| 默认来源 | ABAP字典中的数据元素文档 | 固定值、检查表格或搜索帮助 |
| 数据传输 | 无,该字段仅显示 | 选定的值将写回屏幕字段。 |
| 典型功能模块 | 帮助对象显示字段 | F4IF_INT_TABLE_值_请求 |
现在让我们详细了解一下 POH 和 POV
帮助请求 (POH) 流程:F1 帮助
- 每当按下 F1 键时,都会执行指定数据元素的 POH 事件。
- 如果屏幕的处理逻辑中不存在 PROCESS ON HELP-REQUEST 事件,则会以 ABAP 字典中该字段的文档为基础进行显示。即使该文档中也不存在,也不会显示任何帮助信息。
- 要显示字段帮助文档,您必须在 POH 事件中编写以下屏幕流逻辑:
PROCESS ON HELP-REQUEST FIELD <f> [MODULE <mod>] WITH <num>
- 如果该字段有特定于屏幕的数据元素文档,您可以通过指定其编号来显示它。
- 号码可以是文字或变量。变量必须在相应的ABAP程序中声明并填写。
- 注意,FIELD语句不会传输屏幕字段的内容到 ABAP 程序中的 PROCESS ON HELP-REQUEST 事件。它只显示帮助文档。就是这样。
该模块该模块在 ABAP 程序中定义,就像普通的 PAI 模块一样。模块的处理逻辑必须确保为相关字段显示充分的帮助信息。您应该使用以下函数模块之一来显示合适的帮助信息,而不是调用包含文本字段的额外屏幕。 SAP脚本文件
帮助对象显示字段
- 此功能模块显示来自 ABAP 词典的任何结构或数据库表的组件的数据元素文档。
- 将组件和结构或表的名称传递给导入参数 FIELD 和 TABLE。
帮助对象显示
- 使用此功能模块显示任何 SAP脚本文档。
- 您必须将文档类别(例如,TX 表示一般文本,DE 表示数据元素文档)和文档名称传递给导入参数 DOKCLASS 和 DOKNAME。
- 出于技术原因,您还必须传递一个行类型为 T 的空内表。LINE 到函数模块的 tables 参数。
F1 对此进行了解释。下一项列出了可以参加的项目。
价值流程(POV):F4
- 当用户选择功能“可能的条目”(F4)时,系统将显示字段的可能输入值(值、检查表、匹配代码),前提是它们由开发人员存储。
- 如果用户调用了“可能的条目”,则始终会处理事件 PROCESS ON VALUE-REQUEST。
- 要定义屏幕上字段的可能值,您需要在屏幕流逻辑的 POV 事件中定义以下内容:
PROCESS ON VALUE-REQUEST FIELD field name MODULE module name
- 对于可能的值,在上面定义的模块中,您应该使用通用函数模块 帮助值获取表 从 ABAP 字典中获取可能的值。
还有一些其他函数也可用于输入帮助:
F4IF_FIELD_VALUE_请求
- 动态调用 ABAP 词典的输入帮助。
- 您可以将 ABAP 字典的结构或数据库表的组件名称传递给导入参数 TABNAME 和 FIELDNAME 中的函数模块。
- 功能模块启动 ABAP字典 此组件的输入帮助。所有相关的屏幕字段均已读取。
- 如果指定导入参数DYNPPROG、DYNPNR和DYNPROFIELD,则用户的选择将返回到屏幕上的相应字段。
- 如果指定表参数 RETURN_TAB,则选择内容将返回到表中。
MODULE VALUE_CARRIER INPUT. CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST' EXPORTING TABNAME = 'DEMOF4HELP' FIELDNAME = 'CARRIER1' DYNPPROG = PROGNAME DYNPNR = DYNNUM DYNPROFIELD= 'CARRIER'. ENDMODULE.
F4IF_INT_TABLE_值_请求
- 此函数模块显示您在 ABAP 程序.
- 该值列表作为表参数 VALUE_TAB 传递给功能模块。
- 如果指定导入参数DYNPPROG、DYNPNR和DYNPROFIELD,则用户的选择将返回到屏幕上的相应字段。
- 如果指定表参数 RETURN_TAB,则选择内容将返回到表中。
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING RETFIELD = 'CONNID' DYNPPROG = PROGNAME DYNPNR = DYNNUM DYNPROFIELD = 'CONNECTION' VALUE_ORG = 'S' TABLES VALUE_TAB = VALUES_TAB.
这就是 POH 和 POV 的全部内容。如有任何疑问,请留下您的评论。
如何从内部表构建 F4 帮助
程序内部会构建一个 ABAP 字典中不存在的值列表,并将其传递给 F4IF_INT_TABLE_VALUE_REQUEST 函数。以下步骤会为屏幕字段生成有效的 F4 帮助信息。
- 声明值表: 创建一个内部表,其第一列存储要写回屏幕的值。在 PBO 模块或值请求模块本身中填充该表。
- 在流程逻辑中注册该字段: 在屏幕上添加 PROCESS ON VALUE-REQUEST,并将该字段与 FIELD … MODULE … 连接,以便在按下 F4 时运行该模块。
- 调用函数模块: 将 RETFIELD 设置为列名,将 DYNPROFIELD 设置为屏幕字段名,并将 VALUE_ORG 设置为 'S',因为该列表将作为结构化表传递。
- 返回值: DYNPPROG 和 DYNPNR 分别标识程序和屏幕,因此选定的行可以直接写入屏幕字段,而无需编写其他代码。
- 测试一下: 激活屏幕,在字段中按 F4,检查列表是否出现以及选择是否到达字段。
* Flow logic of the screen PROCESS ON VALUE-REQUEST. FIELD spfli-connid MODULE f4_connid. * Module in the ABAP program MODULE f4_connid INPUT. DATA: lt_values TYPE STANDARD TABLE OF spfli. SELECT * FROM spfli INTO TABLE lt_values WHERE carrid = spfli-carrid. CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING retfield = 'CONNID' dynpprog = sy-repid dynpnr = sy-dynnr dynprofield = 'SPFLI-CONNID' value_org = 'S' TABLES value_tab = lt_values. ENDMODULE.
💡提示: 在填充列表之前,使用函数模块 DYNP_VALUES_READ 读取另一个屏幕字段的值。这样就能构建相关的 F4 帮助信息,例如已输入的航空公司的转机信息。
