如何在ALV_Grid的函数中定义下拉列表
2015-06-04 11:41
459 查看
转自 http://www.cnblogs.com/VerySky/articles/2392262.html ABAP--如何在ALV_Grid的函数中定义下拉列表
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
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
相关文章推荐
- c语言-.h头文件的引用顺序
- vim编辑远程文件
- OpenCL内核函数支持double和结构体
- 作业6---总结、评价、评分、用户调研
- drupal常用api
- HighCharts开发说明
- kettle clob大量文本输出
- 使用JDK开发WebService
- vim快捷键(简洁版)
- GRE作文——教育类题目
- ios编码规范(by raywenderlich团队,靠谱)
- [Selenium] 如何绕过 IE 的安全模式
- 判断点P是否在三角形ABC内部
- 用Markdown写博客
- 题目1372:最大子向量和(连续子数组的最大和)
- 为什么编程时间从1970年1月1日开始?
- 几种开源分词工具的比較
- ftk学习记(消息框篇)
- Python内置UserDict类、实现子类调用父类的方法
- 打印控件Lodop的使用