matinal:SAP ABAP ALV下拉框或者F4搜索帮助

公众号:matinal

先上结果图:

 代码:

REPORT ZDCH_09_TEST2.
************************************************************************
*                     DATEN DEFINITION                                 *
************************************************************************
TYPE-POOLS: SLIS.
TABLES:MAKT.
TYPES:
  BEGIN OF T_DATA, "查询出来的数据
    MATNR TYPE MAKT-MATNR,
    MAKTX TYPE MAKT-MAKTX,
    SPRAS TYPE MAKT-SPRAS,
  END   OF T_DATA,
  BEGIN OF T_ALV, "alv显示的数据
    MATNR     TYPE MAKT-MATNR,
    MAKTX     TYPE MAKT-MAKTX,
    SPRAS     TYPE MAKT-SPRAS,
    DD_HANDLE TYPE INT4,  "绑定下拉框对应的组
  END   OF T_ALV.
DATA:
"fieldcat
  GT_FIELDCATALOG TYPE LVC_T_FCAT,
  GW_FIELDCATALOG TYPE LVC_S_FCAT,
*定义存储下拉列表的数据
  GT_DDVAL        TYPE LVC_T_DROP,
  GW_DDVAL        TYPE LVC_S_DROP,
"alv事件
  GT_EVENTS       TYPE SLIS_T_EVENT,
  GW_EVENTS       TYPE SLIS_ALV_EVENT,
"数据库数据
  GT_DATA         TYPE TABLE OF T_DATA,
  GW_DATA         TYPE          T_DATA,
"alv数据
  GT_ALV          TYPE TABLE OF T_ALV,
  GW_ALV          TYPE          T_ALV,

  G_REPID         TYPE SY-REPID VALUE SY-REPID.
************************************************************************
*                     SELECTION SCREEN                                 *
************************************************************************
SELECT-OPTIONS: S_MATNR FOR MAKT-MATNR .

************************************************************************
*                     START-OF-SELECTION                               *
************************************************************************
START-OF-SELECTION.
"获取数据
  SELECT MATNR MAKTX SPRAS
  INTO TABLE GT_DATA
  UP TO 50 ROWS
  FROM MAKT
  WHERE MATNR IN S_MATNR
    AND SPRAS = '1'.
"alv填充数据
  LOOP AT GT_DATA INTO GW_DATA.
    MOVE-CORRESPONDING GW_DATA TO GW_ALV.
    APPEND GW_ALV TO GT_ALV.
  ENDLOOP.
"设置fieldcat
  PERFORM CREAT_FIELDCAT.
"设置下拉框值
  PERFORM CREAT_DROPDOWN_VALUES.
"设置下拉框事件
  PERFORM CREAT_EVENT_EXITS.
"显示alv
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      I_CALLBACK_PROGRAM = G_REPID
      IT_FIELDCAT_LVC    = GT_FIELDCATALOG
      IT_EVENTS          = GT_EVENTS "这一步一定要记得添加上
    TABLES
      T_OUTTAB           = GT_ALV.


*---------------------------------------------------------------------*
* 设置输出字段的格式
*---------------------------------------------------------------------*
FORM CREAT_FIELDCAT.
  CLEAR GW_FIELDCATALOG.
  GW_FIELDCATALOG-FIELDNAME = 'MATNR'.
  GW_FIELDCATALOG-REF_FIELD = 'MATNR'.
  GW_FIELDCATALOG-REF_TABLE = 'MAKT'.
  APPEND GW_FIELDCATALOG TO GT_FIELDCATALOG.
  CLEAR GW_FIELDCATALOG.
  GW_FIELDCATALOG-FIELDNAME = 'MAKTX'.
  GW_FIELDCATALOG-REF_FIELD = 'MAKTX'.
  GW_FIELDCATALOG-REF_TABLE = 'MAKT'.
  APPEND GW_FIELDCATALOG TO GT_FIELDCATALOG.
  CLEAR GW_FIELDCATALOG.
  GW_FIELDCATALOG-FIELDNAME  = 'SPRAS'.
  GW_FIELDCATALOG-DRDN_FIELD = 'DD_HANDLE'. "设置下拉框
*  GW_FIELDCATALOG-DRDN_HNDL = '1'. "分组标识
  GW_FIELDCATALOG-EDIT       = 'X'.  "可编辑
  APPEND GW_FIELDCATALOG TO GT_FIELDCATALOG.
ENDFORM.                    " creat_fieldcat


*---------------------------------------------------------------------*
*根据物料的所有的语言生成不同的生成下拉列表
*---------------------------------------------------------------------*
FORM CREAT_DROPDOWN_VALUES.
  DATA: L_SPRAS TYPE MAKT-SPRAS,
        L_COUNT TYPE I.

  "为了演示简单,这里只设置了一组
  "句柄HANDLE 为I类型,相同数字为同一组下拉框"
  GW_DDVAL-HANDLE = 1. "对应分组标识第一组
  GW_DDVAL-VALUE  = 1. "组值
  APPEND GW_DDVAL TO GT_DDVAL.
  CLEAR GW_DDVAL.
  GW_DDVAL-HANDLE = 1. "第一组
  GW_DDVAL-VALUE  = 2.
  APPEND GW_DDVAL TO GT_DDVAL.
  CLEAR GW_DDVAL.
  GW_DDVAL-HANDLE = 1. "第一组
  GW_DDVAL-VALUE  = 3.
  APPEND GW_DDVAL TO GT_DDVAL.
  CLEAR GW_DDVAL.

  LOOP AT GT_ALV INTO GW_ALV.
    GW_ALV-DD_HANDLE = 1. "ALV绑定组
    MODIFY GT_ALV FROM GW_ALV.
  ENDLOOP.
ENDFORM.                    " creat_dropdown_values


*---------------------------------------------------------------------*
*      Form  creat_event_exits
*---------------------------------------------------------------------*
FORM CREAT_EVENT_EXITS .
  GW_EVENTS-NAME = 'CALLER_EXIT'.
  GW_EVENTS-FORM = 'CALLER_EXIT'.
  APPEND GW_EVENTS TO GT_EVENTS.
ENDFORM.                    " creat_event_exits


*---------------------------------------------------------------------*
*设置下拉列表,使Grid和内表能链接上
*---------------------------------------------------------------------*
FORM CALLER_EXIT USING LS_DATA TYPE SLIS_DATA_CALLER_EXIT.
  DATA: L_REF_ALV TYPE REF TO CL_GUI_ALV_GRID.
  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      E_GRID = L_REF_ALV.
  CALL METHOD L_REF_ALV->SET_DROP_DOWN_TABLE
    EXPORTING
      IT_DROP_DOWN = GT_DDVAL.
ENDFORM.                    "CALLER_EXIT

设置F4搜索帮助

在这里插入图片描述

 只需要把之前设置的DRDN_FIELD修改成F4AVAILABL,然后设置上参考表和参考字段,去表里给这个字段设置上它的搜索帮助,那么ALV也就可以用了!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值