abap 基本类型的操作

来源:互联网 发布:矩阵lu分解步骤 编辑:程序博客网 时间:2024/05/20 18:54

1  赋值
  有许多ABAP/4语句可以用来给字段赋值,两个最为重要的是MOVECOMPUTE语句,关键字COMPUTE是可选的,如果字段的类型与长度不匹配所赋的值,那么系统就会自动执行类型转换。另外,可以使用ADDSUBSTRACTMULTIPLYDIVIDE语句进行简单的算术计算。类型转换的规则是这样的,如果类型C的字段值赋给类型P的字段,那么类型C的字段值仅允许+/-以及小数点。如果类型P的字段值赋给类型C的字段,那么就要格式化该数字值并且先导的零被转换为空格,当然如果你不要这种格式化的类型,那么你可以使用UNPACK语句;
2  算术表达式
  一般来说关键字COMPUTE是可选的,且不限制括号内表达式的嵌套层次,运算符与括号被认为是单词,因此,你必须把它们用空格隔开;然而,对于函数来说,其括号中间必须跟有字段名,如a=(B+EXP(C)*E/SIN(3-G)是错误的算术表达式,而a=( B + EXP( C) * E / SIN( 3 - G )才是正确的算术表达式。在算术运算之前非数字值需要转换成数字值,运算符DIVMOD是整数除法函数,STRLEN函数是返回字符串的长度。一般算术表达式只能使用于COMPUTE语句中。
系统字段
  ABAP/4提供了一系列系统字段,编辑器命令SHOW SY允许你显示所有这些字段名及其定义的列表清单。你可以在程序中通过使用SY-<字段名>来引用系统字段;另外,你可以通过规定偏移量与长度来存取字段中的特定部分。注意,只有一些语句(ASSIGNWRITE...TO语句等)支持偏移量与长度以存取字段的特定部分。
计算日期
  如果类型D的字段值赋给类型P的字段,那么ABAP/4就计算类型P字段的值为自1900年以来的天数。相反,如果类型P的字段值赋给类型D字段,那么ABAP/4就计算类型D的字段值为自1900年以来的年份。
PARAMETERS语句
  PARAMETERS语句主要用来声明内部字段,与用DATA语句声明的字段相反,你可以在调用Report时在选择屏幕上为这些字段指定值,DATA语句的某些参数也可以使用PARAMETERS语句(TYPELIKEDECIMALS)。尽管DATA允许你把初始值赋给带有VALUE的字段,PARAMETERS语句也允许你使用DEFAULT参数来设置缺省值。
字段符号
  字段符号是一个非常重要的概念,相当于C语言中的指针。你可以使用FIELD-SYMBOLS语句来声明字段符号,在运行时,你可以使用ASSIGN语句来把某一个字段赋给字段符号,字段符号可以引用通过使用TABLES语句来声明的字段、字段串以及结构。在这里,尖括号是语法的一部分,通过这种方法,你可以清楚地区分字段符号与ABAP/4中的普通字段。
  从中不难看出,字段符号就是起到了指针的作用。一般来说你不可以使用偏移量与长度来存取字段的特定部分,然而,在ASSIGN语句中,你可以使用它们,当然你也可以在WRITE...TO语句与实际参数(PERFORM)中使用可变的偏移量与长度。
字段的动态分配
  使用ASSIGN语句,你也可以把一个仅在运行时才能知道的字段赋给字段符号,如果所要分配的字段是R/3对象库中的字段(TABLES语句声明),那么你可以使用TABLE FIELD参数。这将会减少执行语句的所要化费的时间,因为系统不会查找整个内部表清单。另外,你可以通过检查系统字段SY-SUBRC的值来确认是否有一字段分配给了字段符号。如果括号内有一字段,则SY-SUBRC=0,反之,则为大于0的值。一般来说,动态ASSIGN语句需要化费更多的时间,因此,仅在某些需要的情况下使用。