谁能告诉我如何在ABAP OO中定义指针?在Java中,我对它没有问题。this.name
或this.SomeMethod()
你可能在问所谓的自我引用。
在ABAP中可以使用关键字me
。
Java示例:this.someMethod();
ABAP示例:me->someMethod( ).
ABAP使用字段符号。它们的定义如下:FIELD-SYMBOLS:输入any。file_table类型。如果你想取消引用,你需要使用另一个字段符号,像这样:
ASSIGN str_mfrnr TO <str1>.
This将str_mfrnr的值存储到字段符号中。如果将其格式化为像'wa_itab-my_column'这样的工作区域,则现在将包含此字符串。接下来,将该位置分配给另一个FS:
ASSIGN (<str1>) TO <tmfrnr>.
现在指向wa_itab-my_column。如果执行:
<tmfrnr> = some_value.
现在指向的位置包含some_value中的值。ABAP指针更像C指针,你必须知道你引用的是值还是位置。
这是我前段时间写的一篇小报告。我想这就是它的工作原理:
REPORT zpointers.
* Similar to C:
***************
* int *pointer;
* int value = 1.
* pointer = &value
* int deref = *pointer
*this is the variable
DATA int TYPE i VALUE 10.
*this is the pointer, or the reference to a memory address
DATA pointer_i TYPE REF TO i.
*this is the dereferenced value, or the var that points to the
*value stored in a particular memory address
FIELD-SYMBOLS <int> TYPE i.
*the memory address of variable 'int' is now assigned to
*variable 'pointer_i'.
GET REFERENCE OF int INTO pointer_i.
*you can access the pointer by dereferencing it to a field symbol.
ASSIGN pointer_i->* TO <int>.