Chinaunix首页 | 论坛 | 博客
  • 博客访问: 721444
  • 博文数量: 158
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 1643
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-11 14:37
个人简介

人法地,地法天,天法道,道法自然

文章分类

全部博文(158)

文章存档

2022年(1)

2020年(3)

2016年(1)

2014年(7)

2013年(4)

2010年(5)

2009年(86)

2008年(25)

2007年(26)

我的朋友

分类:

2009-06-09 15:37:29

在执海关合同表,当一张或多张合同在系统处理完毕后,要生成excel文件。最近在处理生成excel时,引发了一此格式问题。当出出口成品数据量小时,基本可行,但多达10个以上出口成品时,在格式上就出现问题了。

 

 

在格式上,成品8之前的成品7,成品6,……均能按每四个单元格合并成一个单元格并居中,AM所对应的列号为:39;程序处理的方法如下:

 

if y < 27 .
   
perform changeAscii using y  changing xs.
   
concatenate xs xc into a.
else.
   sh = y / 
26.
   yu = y  
mod 26 .
   
perform changeAscii using sh  changing xs.
   
perform changeAscii using yu  changing xe.
   
concatenate xs xe xc into a.

endif.
*

m = y + 3 .
if m < 27 .
   
perform changeAscii using m  changing xs.
   
concatenate xs xc into b.
 
else.
   sh = 
m / 26.
   yu = 
m mod 26 .
   
perform changeAscii using sh  changing xs.
   
perform changeAscii using yu  changing xe.
   
concatenate xs xe xc into b.
 
endif.

 

Y,m表示当前的列号,当y=39时,sh = 2,yu=13所对应的列号栏位BM,这里问题就出现了:

Sh = 39 / 26,应当等于1才对,因为sh定义是整数类型。当询问同事后,发现sh是做除法的结果,进行了四舍五入。做整除必须写成sh = y div 26,这样sh=1,yu=13,所对应的列栏位就是AM

 

别外测试发现,当y=78时,sh=3,yu=0,按规则对应的栏位是CZ,但是实际上78列号所对应的栏位是BZ,处理时,对于这样的特殊情况必需减1,才能正确。由于每张合同中出口成品品种不能确定有多少种,那么也就不能确定栏位有多少,各种情况都有可能发生。但依目前的规则操作,知道行号是多少,就能算出对应的栏位。

 

更改后的结果如下:

阅读(1824) | 评论(0) | 转发(0) |
0

上一篇:ABAP折叠屏幕设计

下一篇:ABAP-内表[转载]

给主人留下些什么吧!~~