abap OOALV案例
文章目录
- 1.定义数据
- 2.查询数据并生成字段目录
- 3.创建 ALV 对象
- 4.添加自定义行颜色
- 5.添加工具栏按钮和用户命令
该案例代码演示了如何通过 OOALV 创造一个可定制的,带有自定义行颜色、工具栏按钮和用户命令的表格。
1.定义数据
TYPES: BEGIN OF ty_sales,sales_order TYPE vbeln_va, " 销售订单号customer_id TYPE kunnr, " 客户 IDorder_date TYPE erdat, " 订单日期net_amount TYPE bapivbapko-netwr, " 净金额 END OF ty_sales.DATA: lt_sales TYPE TABLE OF ty_sales WITH HEADER LINE.
2.查询数据并生成字段目录
* 获取销售订单数据
SELECT a~vbeln a~kunnr a~erdat b~netwrINTO TABLE lt_salesFROM vbak AS aJOIN vbap AS b ON a~vbeln = b~vbelnWHERE a~auart EQ 'OR'* 创建字段目录
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'EXPORTINGi_structure_name = 'TY_SALES'CHANGINGct_fieldcat = gt_fcat[].
3.创建 ALV 对象
* 创建 ALV 对象
DATA(lo_alv) = NEW cl_gui_alv_grid( ).
lo_alv->set_table_for_first_display(EXPORTINGi_structure_name = 'TY_SALES'is_layout = gs_layoutit_toolbar_excluding = it_toolbar_excl[]CHANGINGit_outtab = lt_salesit_fieldcatalog = gt_fcat[]it_sort = gt_sort[]it_alv_edit = gt_edited_cells[]
).
4.添加自定义行颜色
* 定义回调函数
METHODS:row_colorFOR EVENT row_color_of_table OF cl_gui_alv_gridIMPORTINGe_row_ide_row_settings.* 在 ALV 对象上注册回调函数
SET HANDLER me->row_color FOR lo_alv.* 添加回调函数的实现
METHOD row_color.DATA: lv_index TYPE i." 每隔两行一换色 IF odd(e_row_id) = abap_false.READ TABLE me->mt_sales INDEX e_row_id / 2 ASSIGNING FIELD-SYMBOL(<item>).lv_index = sy-tabix - ( e_row_id / 2 * 2 ) + 1. CASE lv_index.WHEN 1.e_row_settings-row_style = cl_gui_alv_grid=>mc_style_hotspot_light.WHEN 2.e_row_settings-row_style = cl_gui_alv_grid=>mc_style_hotspot_dark.ENDCASE.ENDIF.
ENDMETHOD.
5.添加工具栏按钮和用户命令
* 定义回调函数
METHODS:process_user_commandFOR EVENT user_command OF cl_gui_alv_gridIMPORTINGe_ucomm, e_extab,e_repid, e_selfield.* 在 ALV 对象上注册回调函数
SET HANDLER me->process_user_command FOR lo_alv.* 添加工具栏按钮
DATA(lo_toolbar) = lo_alv->get_toolbar( ).
lo_toolbar->add_function(text = 'Export to Excel'tooltip = 'Export the sales data to Excel file.'aicon = cl_gui_alv_grid=>mc_button_exportfunction = 'EXPORT_TO_EXCEL').* 添加用户命令的实现
METHOD process_user_command.TYPES: BEGIN OF ty_cell,row TYPE i,col TYPE i,END OF ty_cell.DATA: lt_data TYPE TABLE OF ty_cell,lv_row TYPE sytabix,lv_column TYPE lvc_s_col.CASE e_ucomm.WHEN '&XL'.*--- 导出数据到 ExcelEXPORT_DATA_TO_EXCEL( ).WHEN '&FILTER'.*--- 设置过滤条件 CALL SCREEN 1000.WHEN OTHERS.ENDCASE.
ENDMETHOD.
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
