首页 > 代码库 > 屏幕对象的F1/F4输入帮助功能

屏幕对象的F1/F4输入帮助功能

1.HELP-REQUST[FOR{LOW|HIGH}]字段的F1帮助

当选择SAP屏幕功能的制定字段按F1键时可以调关注用自定义的程序或者系统帮助文件,该功能通常称为F1帮助。

TYPES:syst.
SELECT-OPTIONS:s_date FOR syst-datum.

AT SELECTION-SCREEN ON HELP-REQUEST FOR s_date-low.
  PERFORM show_f1.
*&---------------------------------------------------------------------*
*&      Form  SHOW_F1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM show_f1 .
  DATA t_link LIKE TABLE OF tline WITH HEADER LINE .

  CALL FUNCTION HELP_OBJECT_SHOW
    EXPORTING
      dokclass                            = DE
*   DOKLANGU                            = SY-LANGU
      dokname                             = SYDATUM
*   DOKTITLE                            = ‘ ‘
*   CALLED_BY_PROGRAM                   = ‘ ‘
*   CALLED_BY_DYNP                      = ‘ ‘
*   CALLED_FOR_TAB                      = ‘ ‘
*   CALLED_FOR_FIELD                    = ‘ ‘
*   CALLED_FOR_TAB_FLD_BTCH_INPUT       = ‘ ‘
*   MSG_VAR_1                           = ‘ ‘
*   MSG_VAR_2                           = ‘ ‘
*   MSG_VAR_3                           = ‘ ‘
*   MSG_VAR_4                           = ‘ ‘
*   CALLED_BY_CUAPROG                   = ‘ ‘
*   CALLED_BY_CUASTAT                   =
*   SHORT_TEXT                          = ‘ ‘
*   CLASSIC_SAPSCRIPT                   = ‘ ‘
    TABLES
      links                               = t_link
* EXCEPTIONS
*   OBJECT_NOT_FOUND                    = 1
*   SAPSCRIPT_ERROR                     = 2
*   OTHERS                              = 3
            .
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

ENDFORM.          

2.VALUE-REQUEST[FOR {LOW|HIGH}]字段的F4键帮助
当指定字段按F4时,可以调用自定义的程序或者系统帮助数据。该过程是通过单击F4事件来触发,所以也可以通过abap事件控制语法AT SELECTION-SCREEN来调用

当该参数主要是在定义帮助数据时使用,在参照数据表建立的屏幕对象一般会取用默认帮助对象,与F1不同的是,F1是进行信息提示,而F4是显示填充值得列表,所以选取的值将返回给所操作的屏幕对象,可以调用系统函数F4IF_FIELD_VALUE_REQUEST参照某一个具体表字段来维护F4帮助,如下示例

TYPES:syst.
SELECT-OPTIONS:s_date FOR syst-datum.

AT SELECTION-SCREEN ON value-request  FOR s_date-low.
  PERFORM show_f1.
*&---------------------------------------------------------------------*
*&      Form  SHOW_F1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM show_f1 .
*  DATA t_link LIKE TABLE OF tline WITH HEADER LINE .

  CALL FUNCTION F4IF_FIELD_VALUE_REQUEST
    EXPORTING
      tabname                   = SYST    "参照表
      fieldname                 = DATUM   "参照字段
*     SEARCHHELP                = ‘ ‘
*     SHLPPARAM                 = ‘ ‘
     DYNPPROG                  = sy-repid   "指定执行程序
     DYNPNR                    = sy-dynnr   "指定执行程序屏幕编码
     DYNPROFIELD               = S_DATE   "触发事件的屏幕对象名称
*     STEPL                     = 0
*     VALUE                     = http://www.mamicode.com/‘ ‘
*     MULTIPLE_CHOICE           = ‘ ‘
*     DISPLAY                   = ‘ ‘
*     SUPPRESS_RECORDLIST       = ‘ ‘
*     CALLBACK_PROGRAM          = ‘ ‘
*     CALLBACK_FORM             = ‘ ‘
*     SELECTION_SCREEN          = ‘ ‘
*   IMPORTING
*     USER_RESET                =
*   TABLES
*     RETURN_TAB                =
*   EXCEPTIONS
*     FIELD_NOT_FOUND           = 1
*     NO_HELP_FOR_FIELD         = 2
*     INCONSISTENT_HELP         = 3
*     NO_VALUES_FOUND           = 4
*     OTHERS                    = 5
            .
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.




ENDFORM.       

3.NO DATABASE SELECTION不选取逻辑数据库约束

在调用逻辑数据库的程序中,往往对用户输入的数据按权限来进行筛选。倘若在定义的对象后面加上NO DATABASE SELECTION参数,该对象所输入的对象则不会受到逻辑数据库的约束。

目前ABAP中需要运用NO DATABASE SELECTION定义的逻辑数据库很少,例如HR模块管理的PNP逻辑数据库中,其中所有的帮助条件采用Search Help的方式进行定义。而在

引用逻辑数据库F1S开发的程序中,通过F4只能看到用户权限所限制的数据,以连接编号CONNID字段为例子,在引用逻辑数据库的程序中,通过NO DATABASE SELECTION参数可以读取非限制条件的数据,逻辑数据库可以在abap编辑器的属性页面中进行定义。

执行逻辑数据库需要引用定义NODES或TABLES,使用NO DATABASE SELECTION定义的参数如下。

NODES spfli.
SELECT-OPTIONS:s_connid FOR spfli-connid NO DATABASE SELECTION.