博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
转 用EXCEL导出ALV上展示数据
阅读量:5352 次
发布时间:2019-06-15

本文共 7527 字,大约阅读时间需要 25 分钟。

abap 用excel将alv上展示的数据导出(基本知识)

转自:http://blog.sina.com.cn/s/blog_98dd7e1101013crl.html

form user_command using r_ucomm like sy-ucomm

                        rs_selfield type  slis_selfield .
  
case  r_ucomm.
    
when 'EX'.alv菜单栏上的按钮)
      
perform excel_data.
  
endcase.
endform.  

*&-------------------------------------------------------------------

form excel_data .

  perform def_excel.
  
perform sho_excel.
endform.                    " EXECL_DATA
*--------------------------------------------------------------------
form def_excel .

(以下的代码是必须写的,比较固定,用的时候直接写就行)

  define fill_cell.
    
call method of v_excel  'CELLS' v_cell "单元格位置
       
exporting
         #1 
&1
         #2 
&2.
    
set property of v_cell 'value' &3.
    
call method of v_cell 'FONT'  v_font.
    
set property of v_font 'Bold' &4.
    
set property of v_font 'size' &5.
  
end-of-definition.
  
create object v_excel 'Excel.Application'.
  
call method of
      v_excel
      
'Workbooks' v_book.
  
call method of
      v_book
      
'ADD'.
*给第一行填充要写的东西,一下的第一个‘1’表示第一行,第二个‘1’表示第一列。
  fill_cell 
1  1  '生产情况形象进度统计表1 20.
  
set property of v_cell 'HorizontalAlignment' -4108.这句是居中)
  
set property of v_font 'UNDERLINE' 2.(下划线)

 

以下代码主要作用是定义第二行各列和第三行各列、第四行各列:

  fill_cell 2 1   ''   1 10.

  fill_cell 2 2   ''   1 10.
  fill_cell 
2 3   ''   1 10.
  fill_cell 
2 4   ''   1 10.
  fill_cell 
2 5   ''   1 10.
  fill_cell 
2 6   ''   1 10.
  fill_cell 
2 7   '统计时间'   1 10.
  fill_cell 
2 8   ''   1 10.
  fill_cell 
2 9   ''   1 10.
  fill_cell 
2 10  ''  1 10.
*  fill_cell 3 10  ''   1 10.
  fill_cell 
2 11 ''   1 10.
  fill_cell 
2 12  ''   1 10.
  fill_cell 
2 13  ''   1 10.
  fill_cell 
2 14  ''   1 10.
  fill_cell 
3 1   ''   1 10.
  fill_cell 
3 2   ''   1 10.
  fill_cell 
3 3   ''   1 10.
  fill_cell 
3 4   ''   1 10.
  fill_cell 
3 5   ''   1 10.
  fill_cell 
3 6   ''   1 10.
  fill_cell 
3 7   ''   1 10.
  fill_cell 
3 8   ''   1 10.
  fill_cell 
3 9   ''   1 10.
  fill_cell 
3 10  '编号'  1 10.
*  fill_cell 3 10  ''   1 10.
  fill_cell 
3 11 ex_itab-num1   1 10.
  fill_cell 
3 12  ''   1 10.
  fill_cell 
3 13  ''   1 10.
  fill_cell 
3 14  ''   1 10.
*
  fill_cell 
4 1   '序号'          1 10.
  
set property of v_cell 'HorizontalAlignment' -4108.
  fill_cell 
4 2   '工厂'          1 10.
  
set property of v_cell 'HorizontalAlignment' -4108.
  fill_cell 
4 3   '生产订单'      1 10.
  
set property of v_cell 'HorizontalAlignment' -4108.
  fill_cell 
4 4   '订单描述'      1 10.
  
set property of v_cell 'HorizontalAlignment' -4108.
  fill_cell 
4 5   '计划下达时间'      1 10.
  
set property of v_cell 'HorizontalAlignment' -4108.
  fill_cell 
4 6   '实际下达时间'      1 10.
  
set property of v_cell 'HorizontalAlignment' -4108.
  fill_cell 
4 7   '计划完工时间'          1 10.
  
set property of v_cell 'HorizontalAlignment' -4108.
  fill_cell 
4 8   '实际完工时间'          1 10.
  
set property of v_cell 'HorizontalAlignment' -4108.
  fill_cell 
4 9   '完工工时'        1 10.
  
set property of v_cell 'HorizontalAlignment' -4108.
  fill_cell 
4 10   '总工时'          1 10.
  
set property of v_cell 'HorizontalAlignment' -4108.
  fill_cell 
4 11  '完成进度'          1 10.
  
set property of v_cell 'HorizontalAlignment' -4108.
  fill_cell 
4 12  '计划资金'          1 10.
  
set property of v_cell 'HorizontalAlignment' -4108.
  fill_cell 
4 13  '进度资金'          1 10.
  
set property of v_cell 'HorizontalAlignment' -4108.
  fill_cell 
4 14  '备注'              1 10.
  
set property of v_cell 'HorizontalAlignment' -4108.
*************先把第一行的所有列都合并****************************
  
call method of
      v_excel
      
'Range' v_range
    
exporting
      #1      
'A1'这里的意思是从A1N1这个范围合并
      #2      
'N1'.
  
call method of
      v_range
      
'Select'.
  
set property of v_range 'MergeCells' 1.
**************************一行一列合并
  
call method of
      v_excel
      
'COLUMNS' v_column
    
exporting
      #1        
'E'."列编号
  
set property of v_column 'ColumnWidth' 10.
  
set property of v_column 'NumberFormat' '@'.
endform.                    " DEF_EXCEL
*&-------------------------------------------------------------------*--------------------------------------------------------------------
form sho_excel .
  
field-symbols :  type any ,
                  
type any.
  
data: lv_txt(50type c.
  
data: row_i type i,     定义行和列
        col_i type i.
*** 从内表循环数据,按顺序填到单元表中
  
loop at  alv_itab.(将alv的数据传到为excel定义的内表中)
    
move alv_itab-num     to ex_itab-num.
    
move alv_itab-werks   to ex_itab-werks.
    
move alv_itab-aufnr   to ex_itab-aufnr.
    
move alv_itab-maktx   to ex_itab-maktx.
    
move alv_itab-ftrms   to ex_itab-ftrms.
    
move alv_itab-ftrmi   to ex_itab-ftrmi.
    
move alv_itab-gltrs   to ex_itab-gltrs.
    
move alv_itab-idat2   to ex_itab-idat2.
    
move alv_itab-ism01   to ex_itab-ism01.
    
move alv_itab-vgw01   to ex_itab-vgw01.
    
move alv_itab-rate    to ex_itab-rate.
    
move alv_itab-jhzj    to ex_itab-jhzj.
    
move alv_itab-jdzj    to ex_itab-jdzj.
    
move alv_itab-beizhu  to ex_itab-beizhu.
    
move alv_itab-zijin1  to ex_itab-zijin1.
    
move alv_itab-zijin2  to ex_itab-zijin2.
    
move alv_itab-num1    to ex_itab-num1.
    
append ex_itab.
  
endloop.

*  loop at ex_itab assigning .表示是分配一个工作区>
    row_i 
sy-tabix + 4.(意思是从第五行开始添加循环传进去的数据)
    
do 13 times.(循环13列,切记,不是行,是列)
      col_i 
sy-index .
      
assign component sy-index of structure   to .
      lv_txt 
.
      fill_cell row_i col_i lv_txt 
0 10.
    
enddo.

》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

这段代码的意思大致就是保持格式的意思吧~~~~我也不是特别理解,但是对它的重要性深有体会啊啊啊啊啊!!!!!!!

   call method of
            v_excel
            'COLUMNS' = v_column
          exporting
            #1        = 12.(12指的是12列,意思就是第12列的数据按char型导出,长短什么的都不发生变化,若是想要输出的字段是资金型的,那这段代码就必不可少了,O(∩_∩)O~)
        set property of v_column 'ColumnWidth' = 10.
        set property of v_column 'NumberFormat' = .
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
    ENDDO. 
  
endloop.

  fill_cell  3 11 ex_itab-num1 1 10.(这里的ex_itab-num1excel内表字段
  fill_cell  2 8  sy-datum  1 8.
 

 row_i row_i + 1.

  fill_cell row_i 11 '合计:' 1 10 .

  fill_cell row_i 12  ex_itab-zijin1 1 10.
  fill_cell row_i 
13  ex_itab-zijin2 1 10.
  row_i 
row_i + 1.
  fill_cell row_i  
'审核:' 1 10.
  fill_cell row_i 
11 '制编人:' 1 10.
  
data: post  type string,
         col  
type c value 'N',(‘N’表示excel上最后一列的号)
         row  
type string.
  row_i 
row_i 2.(减去二的意思是:最后两行不用划线)
  move row_i   to row.
  
concatenate 'N' row into post.
  
call method of
      v_excel
      
'Range' v_range
    
exporting
      #1      
'A4'"A4表示从A4开始画表格线
      #2      post.
  
call method of
      v_range
      
'BORDERS' v_border.
  
set property of v_border 'LineStyle' '1'.
  
set property of v_border 'WEIGHT' '2 '.
  
set property of v_border 'ColorIndex' '1'.
  
free object v_border.
  
free object v_cell.
  
call method of
      v_excel
      
'Columns' v_column.
  
call method of
      v_column
      
'Autofit'.
*** 设置excel为可见
  
set property of  v_excel 'Visible' 1.
endform.                    "sho_excel

 

展示结果如下:

若是在表头部分有合并单元格的,那么代码如下。

****一行一列和二行一列合并

  call method of
      v_excel
      
'Range' v_range
    
exporting
      #1      
'A1'(意思是A1A2合并了)
      #2      
'A2'.
  
call method of
      v_range
      
'Select'.
  
set property of v_range 'MergeCells' 1.
*****
  
call method of
      v_excel
      
'Range' v_range
    
exporting
      #1      
'B1'
      #2      
'B2'.
  
call method of
      v_range
      
'Select'.
  
set property of v_range 'MergeCells' 1.
****
  
call method of
      v_excel
      
'Range' v_range
    
exporting
      #1      
'C1'
      #2      
'C2'.
  
call method of
      v_range
      
'Select'.
  
set property of v_range 'MergeCells' 1.
***
  
call method of
      v_excel
      
'Range' v_range
    
exporting
      #1      
'D1'
      #2      
'D2'.
  
call method of
      v_range
      
'Select'.
  
set property of v_range 'MergeCells' 1.
****
  
call method of
      v_excel
      
'Range' v_range
    
exporting
      #1      
'E1'
      #2      
'E2'.
  
call method of
      v_range
      
'Select'.
  
set property of v_range 'MergeCells' 1.
***
  
call method of
      v_excel
      
'Range' v_range
    
exporting
      #1      
'H1'
      #2      
'H2'.
  
call method of
      v_range
      
'Select'.
  
set property of v_range 'MergeCells' 1.
***
  
call method of
      v_excel
      
'Range' v_range
    
exporting
      #1      
'I1'
      #2      
'I2'.
  
call method of
      v_range
      
'Select'.
  
set property of v_range 'MergeCells' 1.
***
  
call method of
      v_excel
      
'Range' v_range
    
exporting
      #1      
'F1'(意思是F1G1合并了)
      #2      
'G1'.
  
set property of v_cell 'HorizontalAlignment' -4108.
  
call method of
      v_range
      
'Select'.
  
set property of v_range 'MergeCells' 1.
  
call method of
      v_excel
      
'Range' v_range
    
exporting
      #1      
'J1'(意思是J1K1合并了)
      #2      
'K1'.
  
set property of v_cell 'HorizontalAlignment' -4108.
  
call method of
      v_range
      
'Select'.
  
set property of v_range 'MergeCells' 1.
结果展示如下:

 

转载于:https://www.cnblogs.com/xjm123/p/3565573.html

你可能感兴趣的文章
webstorm修改文件,webpack-dev-server不会自动编译刷新
查看>>
Scikit-learn 库的使用
查看>>
CSS: caption-side 属性
查看>>
python 用数组实现队列
查看>>
认证和授权(Authentication和Authorization)
查看>>
Mac上安装Tomcat
查看>>
CSS3中box-sizing的理解
查看>>
传统企业-全渠道营销解决方案-1
查看>>
Lucene全文检索
查看>>
awk工具-解析1
查看>>
推荐一款可以直接下载浏览器sources资源的Chrome插件
查看>>
CRM product UI里assignment block的显示隐藏逻辑
查看>>
AMH V4.5 – 基于AMH4.2的第三方开发版
查看>>
Web.Config文件配置之配置Session变量的生命周期
查看>>
mysql导入source注意点
查看>>
linux下编译安装nginx
查看>>
ArcScene 高程不同的表面无法叠加
查看>>
[ONTAK2010] Peaks
查看>>
DLL 导出函数
查看>>
windows超过最大连接数解决命令
查看>>