字段符号是数据对象的占位符,它指向数据对象内存地址处的值。当我们声明它们时,它不会保留任何物理内存空间。它只在运行时指向数据对象。字段符号有两种类型:
类型字段符号通用字段符号
类型字段符号–类型字段符号可以声明为:
输出为2和4。
注意:
类型字段符号只能指向指定类型的数据对象。将数据对象分配给字段符号后,如果我们对字段符号值进行任何更改,则相应数据对象的值也会更新。
字段符号作为工作区的替换:
修改内部表记录–我们可以声明任何结构类型的字段符号,数据大屏,大数据下载,我们可以在循环通过内部表时使用它。
注意:
如果我们更改字段符号中的任何结构字段,在云上,内部中相应的字段将得到更新。我们不需要编写MODIFY语句,如果使用workarea,我们就可以编写MODIFY语句。这是因为工作区存储内部表行的副本,而字段符号直接引用内部表行。因此,带字段符号的内部表的处理比带工作区的内部表的处理要快。
追加到内部表–现在假设我们想在一个内部表中追加一些值,那么我们可以使用如下字段符号:
执行此操作后,内部表将容纳两行。
注意:
始终执行对字段符号的一种检查,免费企业管理软件,它是在进行任何操作之前分配的,以避免短转储。同样在完成操作后,取消分配字段符号。
读取内部表–我们可以使用以下字段符号读取内部表的记录:
通用字段符号:
动态规划实际上是使用通用字段符号实现的。最常用的泛型类型是类型ANY和类型ANY TABLE.
这里我们可以将任何数据对象分配给类型ANY field symbol,而类型ANY TABLE field symbol用于分配任何内部表。
类型ANY:
让我们将类型MARA的工作区分配给类型ANY field symbol,然后使用field填充工作区symbol.
注:
将lw\u mara赋给后,不能直接使用字段符号上的"-"运算符访问mara结构的字段,tnrt新零售企业应用中心,即-matnr会产生语法错误。这是因为字段符号类型仅在运行时声明,而不是在编译时声明。因此,要使用字段符号访问matnr字段,首先需要将该字段组件分配给不同的字段符号,然后使用新的字段符号来更新matnr字段,如上面的代码片段所示。执行上述代码段后,lw_mara-matnr的值将为MAT001.
键入任何表格:
我们可以将任何内部表格分配给此字段符号。让我们分析下面的代码片段,了解如何使用这样的字段符号。
使用泛型字段符号读取内部表:
注意:
由于是泛型字段符号,它的类型只有在运行时才知道,因此我们不能在WITH KEY之后直接写入MARA结构的字段,而只能写入字段括号内的名称如上所示。在ABAP中,这个圆括号表示编译器将在运行时决定操作数的值,因此我们不会得到任何编译错误。
在我的下一个博客中,我已经解释了数据引用及其在动态编程中的意义。以下是相同的链接
https://blogs.sap.com/2017/09/11/dynamic-programming-in-abap-part-2-introduction-to-data-reference/