ABAP程序的移植性注意问题

来源:互联网 发布:软件设计师教程 pdf 编辑:程序博客网 时间:2024/05/23 11:58
 
 SAP BASIS保证了ABAP程序在不同系统之间的可移植性。不过在不同系统之间传送ABAP程序时还是要注意一些问题。
首先是NATIVE SQL
使用EXEC SQL ENDEXEC运行的数据库本身的SQL语句是导致程序移植问题的首要因素。所以不到万不得已的情况下应当使用OPEN SQL
文件的操作
语句OPEN,CLOSE,TRANSFER,READ DATASET和DELETE DATASET的参数都是文件名,这些文件名都指向SAP所在的服务器的操作系统。然而文件的格式以及文件名称的格式都是与操作系统相关的。通过FUNCTION MODULE:FILE_GET_NAME可以把逻辑的文件名(与平台无关)转换为实际的文件名(与平台相关)。
数字格式
对于整型数和浮点型数可能是有不同的二进制码组成的。尤其是浮点型数。可以使用语句TRANSLATE…NUMBER FORMAT来读它。
数字
对于支持SAP的平台即便整型和浮点型的表示方式相同,对于浮点型来说也有所不同。即便是数值范围以及精度都相同,但他们的舍位方法也有所不同。这种不同可能在实际当中不会带来什么严重的后果,但是仍然不建议直接判断两个浮点数是否相等。除零之外。应当比较两个数的接近程度。
       DATA: f         TYPE f,
          G         TYPE f,
          REL_DEF TYPE f,
          EPSION    TYPE f VALUE ‘1E-6’.
REL_DEF = ABS( ( F – G ) / EPSION. ).
IF REL_DEF < EPSION.
   ………
ENDIF.
ALIGNMENT
不同平台下字段字符串字段的对齐方式可能不同。有些平台下的字段字符串可能有前导符即便是第一个字段。并且ABAP/4的类型在不同平台下有所不同。因此在指明字段字符串的某个字段时应当使用名称而非偏移量,如t000-ort01而非T000+28。
字符集
字符集不仅取决于平台,还取决于你在平台上所安装的语言。语句TRANSLATE…CODE PAGE可以用来实现不同字符集之间的转换。
排序
对于字符的排序你很难预测到顺序,因为下列情况依然存在:
Ø         小写字母可能排在大写字母的前面,反之亦然
Ø         数字可能排在字母的前面,反之亦然
Ø         数字0和9之间没有任何间隙而对于字母来说就很难保证了。
这些问题对于语句SORT,READ TABLE…BINARY SEARCH和SELELCT…ORDER BY都有影响并且对于比较符<,<=,>,>=以及BT和NB等都有影响。目前仍没有通用的解决方案。对于SORT语句可以使用AS TEXT来解决。
 
原创粉丝点击