FUNTION ALV 实现F4 自定义搜索帮助--“保姆级“笔记


前言

练习本实例所需要具备的ABAP知识:

  • FUNCTION ALV (FM_ALV) 程序的熟练编写:字段目录、布局样式、事件处理

  • ABAP 面向对象编程的基本知识,了解类的定义,实施方式,事件的处理。

  • OOALV 除事件处理外,可自己独立实现OOALV的展示……

    在此知识基础上,练习本实例才有可能比较容易的顺利理解……否则,建议先打好基础知识的底子,以提高学习的效率……

参考网址

一、效果图

在这里插入图片描述
实例用表:SPFLI 航班计划 SAPLANE 飞机 . 以SPFLI 部分字段为基础,字段PLANETYPE (飞机类型) 去除参照数据元素,直接TYPE 基本数据类型。作飞机类型的自定义搜索帮助(数据源:SAPLANE)。

二、程序思路:

在ALV中实现指定字段的搜索帮助:

  • 一种方法是:在ABAP字典定义搜索帮助。然后在FIELDCATALGO 中设置三个参数:

​ REF_TABLE (参照表) REF_FIELD (参照字段) F4AVAILABL = ‘X’ (字段有搜索帮助)。

  • 第二种方法:自定义代码来实现ALV的搜索帮助。

​ 对于FM_ALV 来说,要走这种“自定义搜索帮助”的思路, 其实就是给自己“套”个 OOALV的“壳”后,利用类:CL_GUI_ALV_GRIDR 一些特性, 主要是 ONF4 事件来实现自定义搜索帮助。 F4AVAILABL = ‘X’ (字段有搜索帮助) 也是要有的。

三、程序文件

如下为全部代码,为方便大家一步复制到自己的系统上,直接执行,查看运行效果,我去除了 INCLUDE 文件。但是建议希望大家,验证效果后,自己再归整为如图下方式,便于调试与理解。
在这里插入图片描述
如下代码,直接复制后,粘贴到自己系统直接就好……

*&---------------------------------------------------------------------*
*& Report ZRAY_FM_ALV_F4
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZRAY_FM_ALV_F4C.
***声明变量部
TYPE-POOLS: slis.
TABLES: spfli.

TYPES: BEGIN OF ty_spfli,
         carrid    TYPE  char3 , "航线代码
         connid    TYPE  numc4 , "航班连接编号
         countryfr TYPE  char3 , "国家/地区代码
         cityfrom  TYPE  char20  , "起飞城市
         airpfrom  TYPE  char3 , "始发机场
         countryto TYPE  char3 , "国家/地区代码
         cityto    TYPE  char20  , "到达城市
         airpto    TYPE  char3 , "目标机场
         plane TYPE  char10  ,    "飞机类型
         seatsmax  TYPE  int4     , "经济舱的最大容量
       END OF ty_spfli.
TYPES:BEGIN OF ty_help,                 "自定义搜索帮助表类型
        planetype  TYPE  s_planetye  , "飞机类型
        seatsmax   TYPE  s_seatsmax  , "经济舱的最大容量
        seatsmax_b TYPE  s_smax_b  , "商务舱的最大容量
        seatsmax_f TYPE  s_smax_f  , "头等舱的最大容量
      END OF ty_help.

DATA:
  gt_alv TYPE STANDARD TABLE OF ty_spfli,   "定义内表 及工作区
  gs_alv TYPE ty_spfli.
DATA: gt_f4_help TYPE STANDARD TABLE OF ty_help.


DATA: gs_layout   TYPE lvc_s_layo,     " 设置布局样式 参数结构
      gt_fieldcat TYPE lvc_t_fcat,    "设置字段目录参数表
      gs_fieldcat TYPE lvc_s_fcat,      "设置字段目录参数表的工作区
      gT_events   TYPE slis_t_event.     " 设置ALV 的事件参数表
DATA:
      go_grid TYPE REF TO cl_gui_alv_grid.
***---------------------------------------------------
*&---------------------------------------------------------------------*
*& 包含               ZRAY_FM_ALV_F4_CLASS
*&---------------------------------------------------------------------*

***"类自定义部分及类方法相关子例
CLASS lcl_event_receiver DEFINITION.
  PUBLIC SECTION.
    METHODS: handle_f4
      FOR EVENT ONF4 OF cl_gui_alv_grid
      IMPORTING e_fieldname      "字段名称
                es_row_no        "行号,注意这是个结构
                er_event_data .    "事件数据
ENDCLASS.

CLASS: lcl_event_receiver IMPLEMENTATION.
  METHOD HANDLE_F4.
    DATA: LS_STABLE TYPE LVC_S_STBL.   "定义基于稳定的刷新 所需要参数。
    LS_STABLE-ROW = 'X'.    "行固定
    LS_STABLE-COL = 'X'.   "列固定

    IF e_fieldname = 'PLANE'.   "又是小写的问题,一定要注意
      PERFORM f4_help_plane USING e_fieldname    "字段名称
                                   es_row_no       "行号,注意这是个结构
                                   er_event_data .    "事件数据
    ENDIF.
    CALL METHOD go_grid->refresh_table_display    " 使用类:CL_GUI_ALV_GRID的实例的方法,稳定刷新
      EXPORTING
        is_stable      = LS_STABLE.
  ENDMETHOD.
ENDCLASS.
**------------------------------------------
*&--------------------------------------------
SAP ALV实现自定义排序功能,首先需要在ALV的输出函数模块中定义排序变量和字段。通常情况下,这可以通过在调用REUSE_ALV_GRID_DISPLAY_LVC函数时设置'IT_SRTS'参数来实现,其中包含排序字段和排序方式(升序或降序)。例如,你可以定义一个内表IT_SRTS,为每个需要排序的字段设置相应的字段名和排序类型。当ALV显示时,用户可以通过点击列标题来激活定义好的排序规则。 参考资源链接:[SAP ALV编程详解:自定义显示与功能实现](https://wenku.csdn.net/doc/590s85ivtp?spm=1055.2569.3001.10343) 为了提供F1和F4上下文帮助,需要在ALV显示前和显示时进行相应的设置。F1帮助通常通过设置字段的属性来实现,你可以将字段的属性设置为'1',这表示该字段具有F1帮助。而F4帮助则需要为字段指定值帮助,这通常涉及到设置字段的属性为'2',并且在字段值帮助表中定义相应的值帮助程序。这样,当用户在ALV界面中点击F4键时,就会弹出一个包含预设值的弹窗,用户可以从中选择输入值。 此外,自定义排序和上下文帮助实现还需要在ALV的个性化设置中进行配置,可以通过ALV事件来捕捉用户的排序和帮助请求,然后通过编写相应的逻辑代码来响应这些事件。整体来看,虽然实现这些功能需要深入了解SAP ALV的相关技术细节和事件处理机制,但是一旦掌握,便能够极大提升SAP应用的用户交互体验。如果希望获得更加深入的了解和实践经验,不妨参考这本《SAP ALV编程详解:自定义显示与功能实现》。这本书全面介绍了SAP ALV的基本概念、高功能以及实现这些功能的最佳实践,非常适合希望通过自定义和优化SAP ALV来提升工作效率的专业人士。 参考资源链接:[SAP ALV编程详解:自定义显示与功能实现](https://wenku.csdn.net/doc/590s85ivtp?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值