ABAP开发中常用的两个F4搜索帮助函数的区别

本文详细介绍了ABAP中F4IF_FIELD_VALUE_REQUEST和F4IF_INT_TABLE_VALUE_REQUEST两个功能模块的区别及应用场景。前者主要用于引入searchhelp并显示在屏幕上,后者则用于自定义内表但不支持通过searchhelp打开对话框。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

F4IF_FIELD_VALUE_REQUEST 和 F4IF_INT_TABLE_VALUE_REQUEST的区别:
  • F4IF_FIELD_VALUE_REQUEST
    主要功能是将表里的字段对应的search help引入到屏幕上来,从而打开对话框,当然也可以任意指定某个search help。
  • F4IF_INT_TABLE_VALUE_REQUEST
    支持字定义内表,但是不能通过指定search help的方式打开对话框。

1.F4IF_FIELD_VALUE_REQUEST的应用实例

TYPES: BEGIN OF type_carrid,
         carrid TYPE spfli-carrid,
         connid TYPE spfli-connid,
         carrname TYPE scarr-carrname,
       END OF type_carrid.

DATA itab_carrid TYPE STANDARD TABLE OF type_carrid.

PARAMETERS airline(2) TYPE c.
*&---------------------------------------------------------------------*
*& Processing Blocks called by the Runtime Environment                 *
*&---------------------------------------------------------------------*
* Event Block AT SELECTION-SCREEN ON VALUE-REQUEST FOR
AT SELECTION-SCREEN ON VALUE-REQUEST FOR airline.
  PERFORM frm_f4_help.

* Form for generating F4 HELP for parameter AIRLINE
FORM frm_f4_help .
  SELECT carrid carrname
                FROM scarr
                INTO CORRESPONDING FIELDS OF TABLE itab_carrid.

  CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
    EXPORTING
      tabname     = 'SPFLI'    "指定stucture,必须的
      fieldname   = 'CARRID' "指定structure中的field
      dynpprog    = sy-repid          "指定屏幕参数所在的程序名称
      dynpnr      = sy-dynnr          "指定参数所在的屏幕编号
      dynprofield = 'AIRLINE'.        "指定屏幕参数的名称

*  IF sy-subrc <> 0.
*    ...
*  ENDIF.
ENDFORM.                    " FRM_F4_HELP

2.F4IF_INT_TABLE_VALUE_REQUEST的应用实例

TYPES: BEGIN OF type_carrid,
         carrid TYPE spfli-carrid,
         connid TYPE spfli-connid,
         carrname TYPE scarr-carrname,
       END OF type_carrid.

DATA itab_carrid TYPE STANDARD TABLE OF type_carrid.
* Selection Screen
PARAMETERS airline(2) TYPE c.

* Event Block AT SELECTION-SCREEN ON VALUE-REQUEST FOR
AT SELECTION-SCREEN ON VALUE-REQUEST FOR airline.
  PERFORM frm_f4_help.

* Form for generating F4 HELP for parameter AIRLINE
FORM frm_f4_help .
  SELECT carrid carrname
                FROM scarr
                INTO CORRESPONDING FIELDS OF TABLE itab_carrid.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield        = 'CARRID'  "指定要返回屏幕参数的在内表中的field
      value_org       = 'S'       "S代表structure
      dynpprog        = sy-repid  "指定屏幕参数所在的程序名称
      dynpnr          = sy-dynnr  "指定参数所在的屏幕编号
      dynprofield     = 'AIRLINE' "指定屏幕参数的名称
    TABLES
      value_tab       = itab_carrid "内表
    EXCEPTIONS
      parameter_error = 1
      no_values_found = 2
      OTHERS          = 3.
*  IF sy-subrc <> 0.
*    ...
*  ENDIF.
ENDFORM.                    " FRM_F4_HELP

总结:总上所述,在se11已经存在建立好的search help的情况下我们通常使用第一个function module,在需要给某个字段限定一些特殊值的时候,我们通常使用第2种function module.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SAP剑客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值