SAP 价值流程和帮助请求流程

⚡ 智能摘要

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

  • POH 目的: 帮助请求处理响应 F1 并显示存储在 ABAP 字典中的字段文档。
  • 🔎 POV 目的: PROCESS ON VALUE-REQUEST 对 F4 做出反应,并显示由值定义的可能条目、检查表或搜索帮助。
  • 🧾 备用规则: 当 POH 事件缺失时,系统会回退到数据元素文档,如果该文档也缺失,则不会显示任何内容。
  • 🚫 运输限制: POH 中的 FIELD 语句不会将屏幕字段传输到程序,因为它只显示帮助信息。
  • 📚 帮助模块: HELP_OBJECT_SHOW_FOR_FIELD 显示数据元素文档,而 HELP_OBJECT_SHOW 显示任何 SAP脚本文档。
  • 📋 价值模块: F4IF_FIELD_VALUE_REQUEST 启动字典输入帮助,F4IF_INT_TABLE_VALUE_REQUEST 显示程序内部构建的列表。
  • ↩️ 返回路径: DYNPPROG、DYNPNR 和 DYNPROFIELD 将所选值返回到屏幕字段,而 RETURN_TAB 将其返回到表中。

SAP 价值流程和帮助请求流程

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 帮助信息。

  1. 声明值表: 创建一个内部表,其第一列存储要写回屏幕的值。在 PBO 模块或值请求模块本身中填充该表。
  2. 在流程逻辑中注册该字段: 在屏幕上添加 PROCESS ON VALUE-REQUEST,并将该字段与 FIELD … MODULE … 连接,以便在按下 F4 时运行该模块。
  3. 调用函数模块: 将 RETFIELD 设置为列名,将 DYNPROFIELD 设置为屏幕字段名,并将 VALUE_ORG 设置为 'S',因为该列表将作为结构化表传递。
  4. 返回值: DYNPPROG 和 DYNPNR 分别标识程序和屏幕,因此选定的行可以直接写入屏幕字段,而无需编写其他代码。
  5. 测试一下: 激活屏幕,在字段中按 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 帮助信息,例如已输入的航空公司的转机信息。

常见问题

都不是。F1 和 F4 会中断屏幕并执行它们自己的事件,然后返回到同一屏幕。常规的 PAI 处理仅在用户触发普通功能代码时才会启动。

附加到数据元素或检查表的搜索帮助已经生成了 F4 列表。只有当值在运行时计算或依赖于屏幕上的其他字段时,才需要 POV 编码。

传递 DYNPROFIELD 参数并指定列名,然后使用 GET CURSOR 函数。 LINE 找到该行。然后,函数模块将该值写入下一个 PBO 中控件的正确行。

是的。ABAP 开发工具中的 AI 助手会编写 POV 流程逻辑、填充值表的 SELECT 语句,以及使用正确的 RETFIELD 和 DYNPROFIELD 参数调用 F4IF_INT_TABLE_VALUE_REQUEST 函数。

不,F1 仍然会读取存储在 ABAP 字典中的文档。人工智能助手,例如 SAP Joule 会在屏幕旁边用简单的语言回答问题,这是对现场文档的补充,而不是取代它。

总结一下这篇文章: