资源描述:
《sapabap动态语句详解》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、将数据对象分配给字段符号在使用字段符号之前必须先分配数据对象给它。对于结构化字段符号,必须在定义中包括这个分配(参见定义结构化字段符号)。对于非结构化字段符号,可以自由决定何时何地首次分配数据对象。在程序中,不管字段符号是否结构化,都可以将不同的数据对象分配给同样的字段符号。要给字段符号分配数据对象,可以使用ASSIGN语句。ASSIGN语句有几个变量和参数。下列主题说明:ASSIGN语句的基本格式将字段符号分配给其它字段符号分配字段串组件定义字段符号的数据类型更改小数位分配全局字段的局部副本ASSIGN语句的基本格式ASSIGN语句的基本格式包含两个静态变量和两个动态变量。静态
2、ASSIGN具有偏移量说明的静态ASSIGN动态ASSIGN表工作区的动态分配静态ASSIGN如果运行之前知道想要分配给字段符号的数据对象的名称,则如下使用ASSIGN语句:语法ASSIGNTO.分配之后,字段符号具有数据对象的属性,并指向相同的内存区。FIELD-SYMBOLS:,TYPEI.DATA:TEXT(20)TYPECVALUE'Hello,howareyou?',NUMTYPEIVALUE5,BEGINOFLINE1,COL1TYPEFVALUE'1.1e+10',COL2TYPEIVALUE'1234',ENDOFLIN
3、E1,LINE2LIKELINE1.ASSIGNTEXTTO.ASSIGNNUMTO.DESCRIBEFIELDLENGTH.WRITE:/,'haslength',NUM.ASSIGNLINE1TO.ASSIGNLINE2-COL2TO.MOVETOLINE2.ASSIGN'LINE2-COL2='TO.WRITE:/,.输出如下:Hello,howareyou?haslength20LINE-COL2=1,234示例定义两个字段符号和。因为的类型指定为I,它只能指向
4、I类型字段。在示例教程中和指向几个不同的数据对象。具有偏移量说明的静态ASSIGN通过使用下列ASSIGN语句,可以指定要分配给字段符号的字段的偏移值:语法:ASSIGN[+][()]TO.正如在指定数据对象的偏移量中所描述的,具有偏移量和长度的部分被分配给字段符号。在ASSIGN语句中,偏移量的说明有下列特殊特征: 和可以是变量 系统不检查所选部分是否位于字段内部。偏移量和长度都可以比的长度大。写地址时,可以超出的限制,但不能超出所定义内存区(参见运行检查)。 如果没有
5、指定长度,系统自动输入字段的长度。如果大于零,总是指向超出限制的区域。 如果小于的长度,可以为指定一个星号(*)来阻止参照限制之外的区域。FIELD-SYMBOLS.DATA:BEGINOFLINE,STRING1(10)VALUE'0123456789',STRING2(10)VALUE'abcdefghij',ENDOFLINE.WRITE/LINE-STRING1+5.ASSIGNLINE-STRING1+5TO.WRITE/.ASSIGNLINE-STRING1+5(*)TO.
6、WRITE/.输出如下:5678956789abcde56789该示例中,可以看到WRITE语句和ASSIGN语句中的偏移量说明的区别。对于WRITE,在LINE-STRING1端部截短了输出。如果指定偏移量大于9,将导致语法检查时出错。在第一个ASSIGN语句中,将LINE-STRING1中以偏移量5开头长度为10的内存区域分配给字段符号。因为程序中明确定义了LINE-STRING1后面的内存区,所以这将导致很有意义的输出结果。在第二个ASSIGN语句中,避免了LINE-STRING1边界后面的内存分配。FIELD-SYMBOLS.DATA:BEGINO
7、FLINE,AVALUE'1',BVALUE'2',CVALUE'3',DVALUE'4',EVALUE'5',FVALUE'6',GVALUE'7',HVALUE'8',ENDOFLINE,OFFTYPEI,LENTYPEIVALUE2.DO2TIMES.OFF=SY-INDEX*3.ASSIGNLINE-A+OFF(LEN)TO.='XX'.ENDDO.DO8TIMES.OFF=SY-INDEX-1.ASSIGNLINE-A+OFF(1)TO.WRIT