`
Jack Wu
  • 浏览: 887199 次
  • 来自: ...
社区版块
存档分类
最新评论

ABAP--如何在ALV_Grid的函数中定义下拉列表

UP 
阅读更多

最近经常听到网友和用户需求希望你在ALV Grid的函数中加入下来列表,其实SAP已经考虑了大家的需求,用户的需求是可以实现的。我特地将代码奉献给大家,供大家参考和学习。

代码如下:

REPORT.
************************************************************************
*                     DATEN DEFINITION                                 *
************************************************************************
TYPE-POOLS: slis.

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,
         matnr     TYPE makt-matnr,
         maktx     TYPE makt-maktx,
         spras     TYPE makt-spras,
         dd_handle TYPE int4,
       END   OF t_alv.
DATA:
      gt_fieldcatalog      TYPE lvc_t_fcat,
      gw_fieldcatalog      TYPE lvc_s_fcat,
*定义存储下拉列表的数据     
      gt_ddval             TYPE lvc_t_drop,
      gw_ddval             TYPE lvc_s_drop,
     
      gt_events            TYPE slis_t_event,
      gw_events            TYPE slis_alv_event,
      gt_data              TYPE TABLE OF t_data,
      gw_data              TYPE          t_data,
      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 gw_data-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 = 'EN'.

  LOOP AT gt_data INTO gw_data.
    MOVE-CORRESPONDING gw_data TO gw_alv.
    APPEND gw_alv TO gt_alv.
  ENDLOOP.

  PERFORM creat_fieldcat.
  PERFORM creat_dropdown_values.
  PERFORM creat_event_exits.
  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-OUTPUTLEN = '7'.
  gw_fieldcatalog-dd_outlen = '7'.
  gw_fieldcatalog-intlen    = '2'.
  gw_fieldcatalog-inttype   = 'C'.
  gw_fieldcatalog-coltext   = 'Language'.
  gw_fieldcatalog-tooltip   = 'Language'.
  gw_fieldcatalog-seltext   = 'Language'.
  gw_fieldcatalog-drdn_field = 'DD_HANDLE'.
  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.
  LOOP AT gt_alv INTO gw_alv.
    ADD 1 TO l_count.
    SELECT spras
       INTO l_spras
    FROM makt
    WHERE matnr = gw_alv-matnr.
      CLEAR gw_ddval.
      gw_ddval-handle = l_count.
      gw_ddval-value  = l_spras.
      APPEND gw_ddval TO gt_ddval.
    ENDSELECT.

    CLEAR gw_ddval.
    gw_ddval-handle = l_count.
    gw_ddval-value  = '                 '.
    APPEND gw_ddval TO gt_ddval.
*设置对应
    gw_alv-dd_handle = l_count.
    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

分享到:
评论

相关推荐

    abap-ALV.rar_ABAP系统ALV_abap_abap开发alv

    描述中提到“ABAP ALV总结,ALV格式,REUSE_ALV_GRID_DISPLAY_LVC函数使用”,这表明我们将重点关注ALV的基本概念、数据格式以及如何通过REUSE_ALV_GRID_DISPLAY_LVC函数来实现ALV的显示。 ALV格式通常涉及如何组织...

    REUSE_ALV_GRID_DISPLAY超详细讲解

    REUSE_ALV_GRID_DISPLAY是一个功能强大的ABAP函数模块,主要用于在ABAP程序中显示ALV网格控件。该函数模块提供了大量的参数和事件,使得开发者可以根据需要自定义ALV网格控件的外观和行为。 功能模块的调用: CALL...

    ALV_Grid的函数中定义下拉列表

    在本文中,我们将深入探讨如何在ALV_Grid的函数中定义下拉列表,这是一个常见但复杂的任务,特别是在处理动态数据时。我们将根据提供的部分代码示例,解析两种主要方法来实现这一功能,并探讨其适用场景。 ### 方法...

    ABAP中的ALV操作

    在ABAP中,ALV(Accelerated List Viewer)是一种用于显示和编辑表格数据的图形用户界面组件。在给定的代码示例中,展示了如何创建一个ALV网格,并处理用户对数据的更改,如删除行。以下是关键知识点的详细解释: 1...

    ABAP_ALV_知识整理

    ALV(SAP List Viewer)是一种在SAP系统中广泛使用的报表展示方式,也被称为ABAP表单浏览器。它的主要功能是提供一个标准化且简单的表格展示方式,使R/3系统中的表格更具统一性与易用性。ALV支持诸如汇总、排序、...

    ALV EDIT_MASK字段的使用.rar_ABAP EDIT_MASK_ALV EDIT_MASK字段的使用_ALVEDIT

    在定义好EDIT_MASK后,我们需要在生成ALV的代码中将其与相应的字段关联。这通常通过在`CALL REPORT`或`CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'`等语句中使用`SET_EDIT_MASK`方法来实现。例如: ``` DATA: ls_...

    ABAP开发ALV中自定义按钮实现

    在ABAP开发中,ALV(Accelerated List Viewer)是一种常用的数据展示工具,它提供了灵活的表格布局和交互性。用户通常需要对ALV进行定制,以满足特定的需求,例如添加自定义按钮来实现数据的打印或导出到Excel。本篇...

    SAP ABAP ALV分页显示

    在SAP ABAP中,ALV通常用来展示大量数据,并且能够提供用户友好的交互式体验。当数据量较大时,直接将所有数据加载到界面可能会导致性能问题或用户体验下降。因此,实现分页功能是非常必要的。 #### 技术实现原理 ...

    SAP ALV Grid资料整理 (很全面)

    SAP ALV Grid 是一种灵活的工具,用于显示列表,并提供了常见的列表操作通用函数,可以通过自定义选项来增强其功能。ALV Grid 控件可以创建非层次的友好交互式报表,是一个基于客户端的控件。 ALV Grid 控件的功能...

    绝版的从实例到精通abap 学习--ALV控件的使用

    在ABAP(Advanced Business Application Programming)编程中,ALV(ABAP List Viewer)控件是一个强大的工具,用于显示和操作数据库查询的结果。本教程“绝版的从实例到精通ABAP学习--ALV控件的使用”深入浅出地...

    abap_alv去掉标准按钮

    ABAP ALV是一种在SAP系统中显示数据列表的方法。它支持多种布局方式,并提供了一系列预定义的功能,如排序、过滤、打印等。这些功能通常通过界面上的按钮来实现。然而,在实际应用中,有时我们希望根据具体业务需求...

    【SAP ABAP开发】 ALV报表开发教程

    在SAP ABAP开发中,ALV(Application List Viewer)是一种用于展示数据列表的强大工具,它提供了丰富的功能来满足各种业务需求,例如排序、筛选、分组等。本教程旨在详细介绍如何在ABAP环境中使用ALV开发高质量的...

    SAP-ABAP-OO-实现-CL-SALV-TABLE

    在 SAP 的 ABAP 环境中,ALV (Application List Viewer) 是一种非常常用的技术,用于在屏幕上以表格的形式展示数据。传统的 ALV 显示通常采用的是面向过程的方式,即通过函数模块 `REUSE_ALV_GRID_DISPLAY` 来实现。...

    SAP ABAP ALV 详解

    SAP ABAP 中的 ALV(ABAP List Viewer)是一种列表输出方式,在 R/3 4.6C 之前称为 ABAP List Viewer,后来更名为 SAP List Viewer。ALV 是以表格控件的形式出现在用户屏幕中实现的,具体有两种情况:① 作为整个...

    [ABAP]Function实现ALV Table 二:ALV的弹出窗口形式

    在ABAP(Advanced Business Application Programming)中,ALV(ABAP List Viewer)是SAP提供的一种用于显示数据表的标准化接口。本篇我们将深入探讨如何使用Function来实现ALV Table的弹出窗口形式,这对于创建用户...

    ABAP向在线用户发送系统消息(自动刷新ALV)

    - 在ABAP程序中,通过定义字段目录、布局、事件等来配置ALV,以满足不同的业务需求。 - 自动刷新功能允许在数据发生变化时即时更新ALV,无需用户手动刷新页面。 2. **发送系统消息** - 在ABAP中,可以使用`...

    abap_alv工具栏修改

    ABAP_ALV(Application Builder)是一种在SAP系统中用于快速开发列表和报告的应用程序。它为开发者提供了高度定制化的能力,其中包括对工具栏的修改。本文将详细介绍如何在ABAP_ALV工具栏上添加或移除按钮,以及如何...

    ABAP OOALV

    - **构造器**:实例化ALV时使用的构造器,通常是指`CL_GUI_ALV_GRID`的构造函数,用于创建ALV对象。 - **容器实例化**:首先实例化容器`CL_GUI_CUSTOM_CONTAINER`,用于容纳ALV组件。 - ```abap CREATE OBJECT ...

Global site tag (gtag.js) - Google Analytics