天天看点

关于ABAP指针

1.      什么是ABAP指针:

在ABAP里面,field symbol就相当于c语言的指针。如果你定义并且分配了相应的结构或者变量给它,其实它就指

向这个结构或者变量的地址,如果修改了field symbol的值,则相应结构或者变量的值也随之更改。

2.      如何定义指针:

基本形式:FIELD-SYMBOLS .

附加信息:

  1. ... TYPE :定义一个数据类型,然后定义指针

  2. ... TYPE REF TO :指针指向类或者接口

  3. ... TYPE REF TO :指针指向数据结构

  4. ... TYPE LINE OF :指针内表的行项目

  5. ... LIKE :指针为数据库表类型

  6. ... LIKE LINE OF :指针类型为数据库表的行项目

3.      如何分配指针:

(1). ASSIGN f TO .:分配一个指针,包括以下几种类型

1. ... CASTING ... :主要对unicode系统地操作

  1a. ... CASTING

  1b. ... CASTING TYPE type

  1c. ... CASTING ... DECIMALS dec

  1d. ... CASTING LIKE f1

2. ... TYPE type :直接指定类型

3. ... DECIMALS dec :指定小数点位数

4. ... RANGE range:指定范围

(2). 分配结构中的某个字段给指针

ASSIGN COMPONENT idx  OF STRUCTURE struc TO .

ASSIGN COMPONENT name OF STRUCTURE struc TO .

(3). 分配类的方法给指针

ASSIGN dref->* TO .

(4). 从f开始,是f的n倍长之后的内容分配给指针

ASSIGN f INCREMENT n TO .

(5). 分配局部变量给指针

ASSIGN LOCAL COPY

    3a. ASSIGN LOCAL COPY OF f TO .

    3b. ASSIGN LOCAL COPY OF INITIAL f TO .

    3c. ASSIGN LOCAL COPY OF INITIAL LINE OF itab TO .

    4c. ASSIGN LOCAL COPY OF MAIN TABLE FIELD (f) TO .

(6). ASSIGN dynamicJ:动态分配指针

    4a. ASSIGN (f) TO .

    4b. ASSIGN oref->(f) TO .

    4c. ASSIGN (f1)=>(f2) TO .

    4d. ASSIGN TABLE FIELD (f) TO .

    4e. ASSIGN LOCAL COPY OF MAIN TABLE FIELD (f) TO .

    4f. ASSIGN LOCAL COPY OF ... (f) TO .

4.      如何取消分配:

    UNASSIGN .