分享

SAP ABAP F4的检索帮助(包括自定义检索帮助)

 一骑当千_30 2018-09-25

abap开发中,检索帮助的方法大概有4种,下面进行简单描述下。

1.  参照数据库字段,用数据字典自带的检索帮助,或者参照字段的定义域实现F4检索帮助。也是最简单的方法,参照字段定义即可。

 

2.  SE11里面创建一个检索帮助ID(search_help),然后再定义的时候,使用MATCHCODE OBJECT search_help 绑定即可。

 

3.  使用函数'F4IF_INT_TABLE_VALUE_REQUEST'实现。

      具体方法如下:

      3-1.添加VALUE-REQUEST事件               

             AT SELECTION-SCREEN ON VALUE-REQUEST FOR s1-low.
             * 检索帮助(年/月)
                PERFORM frm_s1_low_f4.

       3-2.在子程序中实现检索帮助

             FORM frm_s1_low_f4.    

               DATA lt TYPE STANDARD TABLE OF dd07v.
             **************************************************

              * 如果要获取某字段的定义域的值作为检索帮助的话,可以使用以下函数。

                CALL FUNCTION 'DD_DOMVALUES_GET'
                   EXPORTING
                        domname              'ZZLZT'           '有定义域的字段
                        text                        'X'                    '要获取该定义域对应的文本
                  TABLES
                        dd07v_tab             lt
                  EXCEPTIONS
                        WRONG_TEXTFLAG       1
                        OTHERS                           2
            .
                  IF sy-subrc <> 0.
                          *   Implement suitable error handling here
                  ENDIF.


              * 把上面获取到的值,绑定到S1-LOW字段上

                CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
                    EXPORTING
                        retfield                               'DOMVALUE_L'       'lt内表里面的字段
                        dynpprog                           =  sy-repid
                       dynpnr                                 sy-dynnr
                       dynprofield                          'S1-LOW'                 '画面上绑定字段
                       value_org                            'S'
                       callback_program                sy-repid
                   TABLES
                        value_tab                             lt                            '需要显示帮助的值内表
                   EXCEPTIONS
                        PARAMETER_ERROR        1
                        NO_VALUES_FOUND         2
                        OTHERS                               3.
                 

                   IF sy-subrc <> 0.
                       * Implement suitable error handling here
                   ENDIF

4.  使用函数'F4IF_FIELD_VALUE_REQUEST'实现。

      F4 help for fields that are only known at runtime这是这个函数的描述,即运行时使用。

      在日常的工作中,其实都是在运行时使用,所以就当正常的函数使用就可以了。

      实现方法如下:    

        CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
            EXPORTING
                 tabname     = gs_selfields-tabname         “数据字典中的表明
                 fieldname  = gt_Selfields-fieldname         ”数据字典中的字段名
                * value        = selval
            TABLES
                return_tab                       = return_tab
             EXCEPTIONS
                 FIELD_NOT_FOUND     = 1
                 NO_HELP_FOR_FIELD  =2
                 INCONSISTENT_HELP  =3
                 NO_VALUES_FOUND   = 4
                 OTHERS                         = 5.

     运行这个函数就会弹出F4帮助界面的值选择窗口,

     窗口中的值就是tabname中字段fieldname的所有可选值,当选择某个值后,

     那么这个值和其相关的属性就会存放到表return_tab中。这里不详细列举,请developer们自行测试。

     深入研究发现,这个函数隶属于函数组SDHI(外部应用程序 F4 界面模块),

     在这个函数组中有很多可用的允许开发者自定义帮助的函数。

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多