双
来源:互联网 发布:mysql 5.5安装图解 编辑:程序博客网 时间:2024/06/10 00:11
原帖:
http://www.hopewei.com/alv-with-two-header.html(如侵犯版权,会自行删除)
真正和图中完全一样的,没想到办法解决,不过,实现和图中类似的,倒是有办法。
原理其实也很简单:ABAP OO实现ALV是基于CONTAINER,所以,上面的多出来的表头,可以相当于一个无内容的ALV报表
注意:
1.需要分别实例化两个ALV Container,分别定义两个ALV的Layout/Fieldcat;
2.画屏幕的时候,注意两个CONTAINER的布局,最终效果需要自己慢慢调;
3.上面ALV 需要隐藏标准按钮,所以需要自定义ALV STATUS;
4.对其效果在于 Fieldcat的outputlen属性;
5.其他效果,自行Coding,此例仅供参照.
附图:
1.屏幕CONTAINER设置
2.最终效果:
关键代码:
container TYPE scrfname VALUE 'SCR1', "在屏幕中创建的容器名称container1 TYPE scrfname VALUE 'SCR2', "在屏幕中创建的容器名称
*&---------------------------------------------------------------------**& Report ZALV_2HEADER*&*&---------------------------------------------------------------------**&*&版权归:Hopesap工作室所有|Http://hopewei.com*&---------------------------------------------------------------------*REPORT zalv_2header.TABLES: sflight.DATA: ok_code LIKE sy-ucomm, save_ok LIKE sy-ucomm, gt_fcat TYPE lvc_t_fcat, "字段目录是用来控制ALV显示的网格中每个字段的属性的,比如字段的顺序,对齐方式,可编辑状态,颜色,等等 gt_fcat1 TYPE lvc_t_fcat, "字段目录是用来控制ALV显示的网格中每个字段的属性的,比如字段的顺序,对齐方式,可编辑状态,颜色,等等 gs_layout TYPE lvc_s_layo, "ALV的一个布局,比如ALV的标题,是否可编辑,行颜色,列颜色. gt_exclude TYPE ui_functions, "排除不需要的标准按钮 此处到后面文章会讲到。 gt_exclude1 TYPE ui_functions, "排除不需要的标准按钮 此处到后面文章会讲到。 container TYPE scrfname VALUE 'SCR1', "在屏幕中创建的容器名称 container1 TYPE scrfname VALUE 'SCR2', "在屏幕中创建的容器名称 alv_grid1 TYPE REF TO cl_gui_alv_grid, alv_grid TYPE REF TO cl_gui_alv_grid, custom_container TYPE REF TO cl_gui_custom_container, "实例化一个容器 custom_container1 TYPE REF TO cl_gui_custom_container. "实例化一个容器*DATA: gt_list TYPE TABLE OF sflight WITH HEADER LINE.DATA:BEGIN OF gt_list OCCURS 0.DATA selk TYPE c. INCLUDE TYPE sflight.DATA:END OF gt_list.DATA: gt_list1 TYPE TABLE OF sflight WITH HEADER LINE.data: outls type i, outl1 type i, outl2 type i.INITIALIZATION.outlS = 25.outl1 = 12.outl2 = 12.AT SELECTION-SCREEN.START-OF-SELECTION. PERFORM frm_get_data. PERFORM div_tools TABLES gt_exclude. PERFORM div_tools TABLES gt_exclude1. CALL SCREEN 100.*---------------------------------------------------------------------** MODULE status_0100 OUTPUT*---------------------------------------------------------------------** PBO 流程处理*---------------------------------------------------------------------*MODULE status_0100 OUTPUT. PERFORM set_status. IF custom_container1 IS INITIAL. CREATE OBJECT custom_container1 EXPORTING container_name = container1. IF alv_grid1 IS INITIAL. CREATE OBJECT alv_grid1 EXPORTING i_parent = custom_container1. PERFORM frm_build_fcat1.* PERFORM frm_set_layout1. CALL METHOD alv_grid1->set_table_for_first_display EXPORTING* i_structure_name = 'SFLIGHT' “此处说明一下一般程序中要处理的显示数据,都不是在同一个结构表中,所以显示的字段需要手工建立。这就用到了PERFORM frm_build_fcat.* is_layout = gs_layout it_toolbar_excluding = gt_exclude1 CHANGING it_outtab = gt_list1[] it_fieldcatalog = gt_fcat1[]. "要显示的字段列表 ENDIF. ENDIF. IF custom_container IS INITIAL. CREATE OBJECT custom_container EXPORTING container_name = container. IF alv_grid IS INITIAL. CREATE OBJECT alv_grid EXPORTING i_parent = custom_container. PERFORM frm_build_fcat. PERFORM frm_set_layout.* PERFORM frm_set_layout. CALL METHOD alv_grid->set_table_for_first_display EXPORTING* i_structure_name = 'SFLIGHT' “此处说明一下一般程序中要处理的显示数据,都不是在同一个结构表中,所以显示的字段需要手工建立。这就用到了PERFORM frm_build_fcat. is_layout = gs_layout it_toolbar_excluding = gt_exclude* i_callback_pf_status_set = 'SET_STATUS' CHANGING it_outtab = gt_list[] it_fieldcatalog = gt_fcat[]. "要显示的字段列表 ENDIF. ENDIF.ENDMODULE. "status_0100 OUTPUT*&---------------------------------------------------------------------**& Form SET_STATUS*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM set_status . SET PF-STATUS 'GS100'.ENDFORM. "SET_STATUS*&---------------------------------------------------------------------**& Form frm_set_layout*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM frm_set_layout.* gs_layout gs_layout-sel_mode = 'D'. gs_layout-box_fname = 'SELK'.* APPEND gs_layout .ENDFORM. "frm_set_layout*&---------------------------------------------------------------------**& Form frm_build_fcat*&---------------------------------------------------------------------** 建立显示字段*----------------------------------------------------------------------*FORM frm_build_fcat . DATA: lt_fcat TYPE lvc_t_fcat WITH HEADER LINE, ls_fcat TYPE lvc_s_fcat, l_col_pos LIKE lvc_s_fcat-col_pos, l_tabix LIKE sy-tabix. CLEAR: gt_fcat[]. CLEAR ls_fcat. ls_fcat-fieldname = 'CARRID'. ls_fcat-coltext = '测试1'. ls_fcat-outputlen = OUTLs. APPEND ls_fcat TO gt_fcat. CLEAR ls_fcat. ls_fcat-fieldname = 'FLDATE'. ls_fcat-coltext = '测试3'. ls_fcat-outputlen = 10. APPEND ls_fcat TO gt_fcat. CLEAR ls_fcat. ls_fcat-fieldname = 'PRICE'. ls_fcat-coltext = '航空运费'. ls_fcat-outputlen = 8. APPEND ls_fcat TO gt_fcat. CLEAR ls_fcat. ls_fcat-fieldname = 'CURRENCY'. ls_fcat-coltext = '测试5'. ls_fcat-outputlen = 12. APPEND ls_fcat TO gt_fcat. CLEAR ls_fcat. ls_fcat-fieldname = 'PLANETYPE'. ls_fcat-coltext = '飞机类型'. ls_fcat-outputlen = 8. APPEND ls_fcat TO gt_fcat. CLEAR ls_fcat. ls_fcat-fieldname = 'SEATSMAX'. ls_fcat-coltext = '最大容量'. ls_fcat-outputlen = 8. APPEND ls_fcat TO gt_fcat. CLEAR ls_fcat. ls_fcat-fieldname = 'SEATSOCC'. ls_fcat-coltext = '占据的座位'. ls_fcat-outputlen = 10. APPEND ls_fcat TO gt_fcat. CLEAR ls_fcat. ls_fcat-fieldname = 'PAYMENTSUM'. ls_fcat-coltext = '当前预定总数'. ls_fcat-outputlen = 12. APPEND ls_fcat TO gt_fcat.ENDFORM. " frm_build_fcat*&---------------------------------------------------------------------**& Form frm_get_data*&---------------------------------------------------------------------** 取出显示数据*----------------------------------------------------------------------*FORM frm_get_data . SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_list FROM sflight.ENDFORM. " frm_get_data*&---------------------------------------------------------------------**& Module USER_COMMAND_0100 INPUT*&---------------------------------------------------------------------** PAI 流程处理*----------------------------------------------------------------------*MODULE user_command_0100 INPUT. save_ok = ok_code. CLEAR ok_code. CASE save_ok. WHEN '&BACK' OR '&UP' OR '&CANCEL'. LEAVE PROGRAM. ENDCASE.ENDMODULE. " USER_COMMAND_0100 INPUT*&---------------------------------------------------------------------**& Form FRM_BUILD_FCAT1*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM frm_build_fcat1 . DATA: lt_fcat1 TYPE lvc_t_fcat WITH HEADER LINE, ls_fcat1 TYPE lvc_s_fcat, l_col_pos LIKE lvc_s_fcat-col_pos, l_tabix LIKE sy-tabix. CLEAR: gt_fcat1[]. CLEAR ls_fcat1. ls_fcat1-fieldname = 'SELK'.* ls_fcat-coltext = '测试1'. ls_fcat1-outputlen = 2. APPEND ls_fcat1 TO gt_fcat1. ls_fcat1-fieldname = 'CARRID'. ls_fcat1-coltext = '航线承运人ID'. ls_fcat1-outputlen = OUTL1. APPEND ls_fcat1 TO gt_fcat1. CLEAR ls_fcat1. ls_fcat1-fieldname = 'CONNID'. ls_fcat1-coltext = '航班连接Id'. ls_fcat1-outputlen = OUTL2. APPEND ls_fcat1 TO gt_fcat1. CLEAR ls_fcat1. ls_fcat1-fieldname = 'FLDATE'. ls_fcat1-coltext = '航班日期'. ls_fcat1-outputlen = 10. APPEND ls_fcat1 TO gt_fcat1. CLEAR ls_fcat1. ls_fcat1-fieldname = 'PRICE'. ls_fcat1-coltext = '航空运费'. ls_fcat1-outputlen = 8. APPEND ls_fcat1 TO gt_fcat1. CLEAR ls_fcat1. ls_fcat1-fieldname = 'CURRENCY'. ls_fcat1-coltext = '航班的本地货币'. ls_fcat1-outputlen = 12. APPEND ls_fcat1 TO gt_fcat1. CLEAR ls_fcat1. ls_fcat1-fieldname = 'PLANETYPE'. ls_fcat1-coltext = '飞机类型'. ls_fcat1-outputlen = 8. APPEND ls_fcat1 TO gt_fcat1. CLEAR ls_fcat1. ls_fcat1-fieldname = 'SEATSMAX'. ls_fcat1-coltext = '最大容量'. ls_fcat1-outputlen = 8. APPEND ls_fcat1 TO gt_fcat1. CLEAR ls_fcat1. ls_fcat1-fieldname = 'SEATSOCC'. ls_fcat1-coltext = '占据的座位'. ls_fcat1-outputlen = 10. APPEND ls_fcat1 TO gt_fcat1. CLEAR ls_fcat1. ls_fcat1-fieldname = 'PAYMENTSUM'. ls_fcat1-coltext = '当前预定总数'. ls_fcat1-outputlen = 12. APPEND ls_fcat1 TO gt_fcat1.ENDFORM. " FRM_BUILD_FCAT1*&---------------------------------------------------------------------**& Form DIV_TOOLS*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM div_tools TABLES pt_exclude TYPE ui_functions . DATA: ls_exclude TYPE ui_func. ls_exclude = cl_gui_alv_grid=>mc_fc_maximum . APPEND ls_exclude TO pt_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_minimum . APPEND ls_exclude TO pt_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_subtot . APPEND ls_exclude TO pt_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_sum . APPEND ls_exclude TO pt_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_average . APPEND ls_exclude TO pt_exclude. ls_exclude = cl_gui_alv_grid=>mc_mb_sum . APPEND ls_exclude TO pt_exclude. ls_exclude = cl_gui_alv_grid=>mc_mb_subtot . APPEND ls_exclude TO pt_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_sort_asc. APPEND ls_exclude TO pt_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_sort_dsc . APPEND ls_exclude TO pt_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_find . APPEND ls_exclude TO pt_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_filter . APPEND ls_exclude TO pt_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_print . APPEND ls_exclude TO pt_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_print_prev . APPEND ls_exclude TO pt_exclude. ls_exclude = cl_gui_alv_grid=>mc_mb_export . APPEND ls_exclude TO pt_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_graph . APPEND ls_exclude TO pt_exclude. ls_exclude = cl_gui_alv_grid=>mc_mb_view . APPEND ls_exclude TO pt_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_detail . APPEND ls_exclude TO pt_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_help . APPEND ls_exclude TO pt_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_info . APPEND ls_exclude TO pt_exclude. ls_exclude = cl_gui_alv_grid=>mc_mb_variant. APPEND ls_exclude TO pt_exclude.ENDFORM. "DIV_TOOLS
0 0
- 双
- 双网卡双路由
- Linux双网卡双IP双网关
- 双缓冲区
- 双核技术
- 双缓冲
- 双鼠标
- 双缓冲
- 双缓冲
- 双指针
- 双指针
- 双字节
- 双缓存
- 双提交
- 双M
- 双缓冲
- 双队列
- 双缓存
- 深刻理解Linux进程间通信(IPC)
- [anyObject] 类型推断 Type Casting
- iOS集成支付宝支付功能(最详细易懂)
- end_request: I/O error, dev mtdblock2, sector 0 Buffer I
- 网站用户体验的5个分类和76个要素
- 双
- redhat7.0下mongodb主从搭配
- 告别新人的标签
- nginx django uwsgi搭建网站
- [Codeforces 535B]Tavas and Karafs
- 百度API学习
- 如何获取程序编译时间
- NYOJ230 彩色棒(欧拉道路+字典树+并查集)
- php 44 jquery选择器 widget