首页 > 代码库 > 屏幕对象的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.