二维码

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

Twilight发表于 2014-08-11 15:13zhongguomao 最后回复于 2017-11-17 15:04 [复制链接] 6242 1

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的应用实例
  1. TYPES: BEGIN OF type_carrid,
  2.          carrid TYPE spfli-carrid,
  3.          connid TYPE spfli-connid,
  4.          carrname TYPE scarr-carrname,
  5.        END OF type_carrid.

  6. DATA itab_carrid TYPE STANDARD TABLE OF type_carrid.

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

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

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

  26. *  IF sy-subrc <> 0.
  27. *    ...
  28. *  ENDIF.
  29. ENDFORM.                    " FRM_F4_HELP
复制代码

2.F4IF_INT_TABLE_VALUE_REQUEST的应用实例
  1. TYPES: BEGIN OF type_carrid,
  2.          carrid TYPE spfli-carrid,
  3.          connid TYPE spfli-connid,
  4.          carrname TYPE scarr-carrname,
  5.        END OF type_carrid.

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

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

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

  17.   CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
  18.     EXPORTING
  19.       retfield        = 'CARRID'  "指定要返回屏幕参数的在内表中的field
  20.       value_org       = 'S'       "S代表structure
  21.       dynpprog        = sy-repid  "指定屏幕参数所在的程序名称
  22.       dynpnr          = sy-dynnr  "指定参数所在的屏幕编号
  23.       dynprofield     = 'AIRLINE' "指定屏幕参数的名称
  24.     TABLES
  25.       value_tab       = itab_carrid "内表
  26.     EXCEPTIONS
  27.       parameter_error = 1
  28.       no_values_found = 2
  29.       OTHERS          = 3.
  30. *  IF sy-subrc <> 0.
  31. *    ...
  32. *  ENDIF.
  33. ENDFORM.                    " FRM_F4_HELP
复制代码

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

使用道具 举报

zhongguomao
好样的,不错。
回复 支持 反对

使用道具 举报

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表