Skip to content

模块池程序中的输入帮助

一、介绍

  在检索帮助概要中说明了构成输入帮助的方法有三种。在创建检索帮助~集合检索帮助主要介绍了利用检索帮助对象构成输入帮助的方法。在本节中介绍在模块池程序中利用函数构成输入帮助的方法。

模块池程序中的输入帮助
用户在画面字段上按(F4)键时,会在POV(PROCESS ONVALUE-REOUEST)事件中调用对话框模块在画面上显示的输入帮助。

  利用输入帮助函数可以修改查询条件及查询结果数据。其中有使用ABAP数据字典表与使用内表这两种方法。

二、利用ABAP数据字典表构成输人帮助

  这是指利用F4IFFIELDVALUE REOUEST 函数构成输入帮助的方法。创建程序后在100画面上追加 PROCESS ON VALUE-REQUEST 事件即可追加输入帮助。画面相关内容将 在“模块池程序”中介绍。 alt text

三、利用内表构成输入帮助

  利用F4IF INT TABLE VALUE REQUEST函数,把内表的内容追加到Possible Entry上。[例9-1]的gt_dataPossible Entry中显示的内表,GT RTNTAB 是存储在检索帮助中选择的行内表。如[例 9-1]所示,创建程序后进行测试。

abap
REPORT z09_002.
DATA: BEGIN OF gt_data OCCURs 0,
    emp_name    TYPE zemp-emp_name,
END OF gt_data.
DATA : gt_rtntab LIKE ddshretval OCCURS 0 WITHHEADER LINE.
DATA : gt_dynpread LIKE dynpread OCCURS 0 WITHHEADER LINE.
PARAMETERS: p_emp_no LKE zemp-emp_no,
    p_name LIKE zemp-emp_name.
INITIALIZATION.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_name.
    CALL FUNCTION'DYNP_VALUES_READ'
        EXPORTING
            dyname = sy-cprog
            dynumb = sy-dynnr
            request ='A'
            translate_to_upper ='X'
        TABLES
            dynpfields = gt_dynpread.

READ TABLE gt dynpread WTH KEY fieldname ='P EMP NO'.

SELECT DISTINCT emp_name INTO TABLE gt_data
FROM zemp
WHERE emp no = gt_dynpread-fieldvaluc.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST"
    EXPORTING
        retfield = 'P_NAME’
        dynpprog=sy-cprog
        dynpnr = sy-dynnr
        window_title ='EMP_NAME'
        value_org ='S'
    TABLES
        value_tab= gt_data
        return_tab=gt_rtntab.
READ TABLE gt rtntab INDEX 1.
p_name=gt_rtntab-fieldval.

  如[结果 9-1]所示,从表中只读取用户输入的值相对应的数据,以Possible Entry 的形式显示在PEMPNO值中。用户在画面上输入00001值后,即使不按(Enter)键(不调用PAI事件)也可以使用DYNP_VALUES_READ数识别被修改的值。单击PAME字段的Possible Entry按钮时,在用户没有按(Enter)键的情况下,P_EMP_NO参数中尚未分配修改值 00001的状态。此时为了读取画面变更的值,需要利用DYNP_VALUES_READ函数。如例题所示,可以利用用户输入的值作为限制条件创建输入帮助。与此函数有相似功能的还有DYNP_VALUES_UPDATE函数,可以动态的改变画面的功能。 alt text