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.


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部