最近经常听到网友和用户需求希望你在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总结,ALV格式,REUSE_ALV_GRID_DISPLAY_LVC函数使用”,这表明我们将重点关注ALV的基本概念、数据格式以及如何通过REUSE_ALV_GRID_DISPLAY_LVC函数来实现ALV的显示。 ALV格式通常涉及如何组织...
REUSE_ALV_GRID_DISPLAY是一个功能强大的ABAP函数模块,主要用于在ABAP程序中显示ALV网格控件。该函数模块提供了大量的参数和事件,使得开发者可以根据需要自定义ALV网格控件的外观和行为。 功能模块的调用: CALL...
在本文中,我们将深入探讨如何在ALV_Grid的函数中定义下拉列表,这是一个常见但复杂的任务,特别是在处理动态数据时。我们将根据提供的部分代码示例,解析两种主要方法来实现这一功能,并探讨其适用场景。 ### 方法...
在ABAP中,ALV(Accelerated List Viewer)是一种用于显示和编辑表格数据的图形用户界面组件。在给定的代码示例中,展示了如何创建一个ALV网格,并处理用户对数据的更改,如删除行。以下是关键知识点的详细解释: 1...
ALV(SAP List Viewer)是一种在SAP系统中广泛使用的报表展示方式,也被称为ABAP表单浏览器。它的主要功能是提供一个标准化且简单的表格展示方式,使R/3系统中的表格更具统一性与易用性。ALV支持诸如汇总、排序、...
在定义好EDIT_MASK后,我们需要在生成ALV的代码中将其与相应的字段关联。这通常通过在`CALL REPORT`或`CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'`等语句中使用`SET_EDIT_MASK`方法来实现。例如: ``` DATA: ls_...
在ABAP开发中,ALV(Accelerated List Viewer)是一种常用的数据展示工具,它提供了灵活的表格布局和交互性。用户通常需要对ALV进行定制,以满足特定的需求,例如添加自定义按钮来实现数据的打印或导出到Excel。本篇...
在SAP ABAP中,ALV通常用来展示大量数据,并且能够提供用户友好的交互式体验。当数据量较大时,直接将所有数据加载到界面可能会导致性能问题或用户体验下降。因此,实现分页功能是非常必要的。 #### 技术实现原理 ...
SAP ALV Grid 是一种灵活的工具,用于显示列表,并提供了常见的列表操作通用函数,可以通过自定义选项来增强其功能。ALV Grid 控件可以创建非层次的友好交互式报表,是一个基于客户端的控件。 ALV Grid 控件的功能...
在ABAP(Advanced Business Application Programming)编程中,ALV(ABAP List Viewer)控件是一个强大的工具,用于显示和操作数据库查询的结果。本教程“绝版的从实例到精通ABAP学习--ALV控件的使用”深入浅出地...
ABAP ALV是一种在SAP系统中显示数据列表的方法。它支持多种布局方式,并提供了一系列预定义的功能,如排序、过滤、打印等。这些功能通常通过界面上的按钮来实现。然而,在实际应用中,有时我们希望根据具体业务需求...
在SAP ABAP开发中,ALV(Application List Viewer)是一种用于展示数据列表的强大工具,它提供了丰富的功能来满足各种业务需求,例如排序、筛选、分组等。本教程旨在详细介绍如何在ABAP环境中使用ALV开发高质量的...
在 SAP 的 ABAP 环境中,ALV (Application List Viewer) 是一种非常常用的技术,用于在屏幕上以表格的形式展示数据。传统的 ALV 显示通常采用的是面向过程的方式,即通过函数模块 `REUSE_ALV_GRID_DISPLAY` 来实现。...
SAP ABAP 中的 ALV(ABAP List Viewer)是一种列表输出方式,在 R/3 4.6C 之前称为 ABAP List Viewer,后来更名为 SAP List Viewer。ALV 是以表格控件的形式出现在用户屏幕中实现的,具体有两种情况:① 作为整个...
在ABAP(Advanced Business Application Programming)中,ALV(ABAP List Viewer)是SAP提供的一种用于显示数据表的标准化接口。本篇我们将深入探讨如何使用Function来实现ALV Table的弹出窗口形式,这对于创建用户...
- 在ABAP程序中,通过定义字段目录、布局、事件等来配置ALV,以满足不同的业务需求。 - 自动刷新功能允许在数据发生变化时即时更新ALV,无需用户手动刷新页面。 2. **发送系统消息** - 在ABAP中,可以使用`...
ABAP_ALV(Application Builder)是一种在SAP系统中用于快速开发列表和报告的应用程序。它为开发者提供了高度定制化的能力,其中包括对工具栏的修改。本文将详细介绍如何在ABAP_ALV工具栏上添加或移除按钮,以及如何...
- **构造器**:实例化ALV时使用的构造器,通常是指`CL_GUI_ALV_GRID`的构造函数,用于创建ALV对象。 - **容器实例化**:首先实例化容器`CL_GUI_CUSTOM_CONTAINER`,用于容纳ALV组件。 - ```abap CREATE OBJECT ...