字段符号和读取

2020-09-07 11:08发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 1)我可以知道字段符...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

1)我可以知道字段符号的用途是什么? 对我来说,它就像工作区。 那么为什么要使用字段符号?

2)这2条read语句有什么区别?

使用表键k1 = v1读取表itab

使用键k1 = v1读取表itab

字段符号:类型t_mseg,

类型t_mkpf。

SELECT mblnr mjahr zeile matnr werks lgort charg lgnum lgtyp

来自的lgpla menge dmbtr shkzg

mseg进入表it_mseg的对应字段

......

........

如果不是it_mseg []是初始的。

SELECT mblnr mjahr budat FROM

mkpf插入表it_mkpf

........

.........

ENDIF。

在it_mseg上分配

读取表it_​​mkpf分配

使用表键mblnr = -mblnr

mjahr = -mjahr。

IF sy-subrc EQ 0。

-budat = -budat。

修改表it_mseg。

ENDIF。

ENDLOOP。

谢谢

3条回答
骆驼绵羊
2020-09-07 11:40

嗨,

字段符号

字段符号是其他字段的占位符或符号名。 他们并没有为一个字段物理保留空间,而是指向其内容。 字段符号凸轮指向任何数据对象。 在程序中声明字段符号后指向的数据对象。

无论何时在程序中寻址字段符号,都将寻址分配给该字段符号的字段。 成功分配后,无论引用字段符号还是字段本身,ABAP都没有区别。 您必须为每个字段符号分配一个字段,然后才能在程序中解决后者。

字段符号类似于C中取消引用的指针(即,内容运算符*所应用的指针)。 但是,ABAP对象中的唯一真正等效的指针(即包含内存地址(引用)并且可以在没有内容运算符的情况下使用的变量)是ABAP对象中的引用变量。 (有关更多信息,请参见数据参考)。

所有使用字段符号编程的操作都将应用于分配给它的字段。 例如,两个字段符号之间的MOVE语句将分配给第一个字段符号的字段内容移动到分配给第二个字段符号的字段。 字段符号本身指向MOVE语句之后的字段,与以前一样。

您可以创建不带或带有类型说明的字段符号。 如果未指定类型,则字段符号将继承分配给它的字段的所有技术属性。 如果确实指定类型,则系统将在ASSIGN语句期间检查字段符号和您为其分配的字段的兼容性。

在寻址数据对象时,字段符号提供了更大的灵活性:

如果要处理字段的各个部分,可以动态指定字段的偏移量和长度。

您可以将一个字段符号分配给另一个,从而可以寻址部分字段。

对字段符号的分配可能会超出字段边界。 这使您可以有效地解决内存中规则的字段序列。

您还可以强制字段符号采用与为其分配的字段不同的技术属性。

字段符号的灵活性为某些问题提供了优雅的解决方案。 另一方面,这确实意味着错误很容易发生。 由于直到运行时才将字段分配给字段符号,因此对于涉及字段符号的操作,语法和安全检查的有效性非常有限。 这可能导致运行时错误或错误的数据分配。

尽管运行时错误指示明显的问题,但错误的数据分配非常危险,因为它们可能很难检测到。 因此,仅当使用其他ABAP语句无法获得相同的结果时,才应使用字段符号。

例如,您可能要处理字符串的一部分,其中偏移量和长度取决于字段的内容。 在这种情况下,您可以使用字段符号。 但是,由于MOVE语句还支持可变的偏移量和长度规范,因此应改用它。 MOVE语句(如果需要,可使用您自己的辅助变量)比使用字段符号更安全,因为它无法寻址超出字段边界的内存。 但是,在某些情况下,字段符号可能会提高性能。

定义字段符号

将数据对象分配给字段符号

http://help.sap.com/saphelp_nw04/ helpdata/zh-CN/fc/eb387a358411d1829f0000e829fbfe/content.htm

http://help.sap.com/saphelp_nw04/ helpdata/zh-CN/fc/eb38c8358411d1829f0000e829fbfe/content.htm

其有用的奖励积分

一周热门 更多>