IT干货网

【ABAP系列】SAP ABAP 动态指针

sanshao 2022年03月17日 SAP 188 0

以下为正文

有收有放,转在说明,后面举例,给初学者(因为有很多人问到我这个)

    关于abap指针的一些资料。
    1.什么是abap指针:
    在abap里面,fieldsymbol就相当于c语言的指针。如果你定义并且分配了相应的结构或者变量给它,其实它就指向这个结构或者变量的地址,如果修改了fieldsymbol的值,则相应结构或者变量的值也随之更改。
    2.如何定义指针:
    基本形式:field-symbols.
    附加信息:
    1....type:定义一个数据类型,然后定义指针
    2....typerefto:指针指向类或者接口
    3....typerefto:指针指向数据结构
    4....typelineof:指针内表的行项目
    5....like:指针为数据库表类型
    6....likelineof:指针类型为数据库表的行项目
    7....type<>:指针为内表
    3.如何分配指针:
    (1).assignfto.:分配一个指针,包括以下几种类型
    1....casting...:主要对unicode系统地操作
    1a....casting
    1b....castingtypetype
    1c....casting...decimalsdec
    1d....castinglikef1
    2....typetype:直接指定类型
    3....decimalsdec:指定小数点位数
    4....rangerange:指定范围
    (2).分配结构中的某个字段给指针
    assigncomponentidxofstructurestructo.
    assigncomponentnameofstructurestructo.
    (3).分配类的方法给指针
    assigndref->*to.
    (4).从f开始,是f的n倍长之后的内容分配给指针
    assignfincrementnto.
    (5).分配局部变量给指针
    assignlocalcopy
    3a.assignlocalcopyoffto.
    3b.assignlocalcopyofinitialfto.
    3c.assignlocalcopyofinitiallineofitabto.
    4c.assignlocalcopyofmaintablefield(f)to.
    (6).assigndynamicj:动态分配指针
    4a.assign(f)to.
    4b.assignoref->(f)to.
    4c.assign(f1)=>(f2)to.
    4d.assigntablefield(f)to.
    4e.assignlocalcopyofmaintablefield(f)to.
    4f.assignlocalcopyof...(f)to.
    4.如何取消分配:
    unassign.

例1:

field-SYMBOLS: <wa> TYPE any, 
               <wa2> TYPE any. 
ASSIGN WA_MARA to <wa>. 
select single * 
  from MARA into WA_MARA. 
WHILE sy-subrc = 0. 
  ASSIGN COMPONENT sy-index of STRUCTURE <wa> to <wa2>. 
  IF sy-index = 5. 
    itab-ZXXX1 = <wa2>. 
  ENDIF. 
  IF sy-index > 9 and sy-index < 25. 
    itab-ZXXX2 = <wa2>. 
  ENDIF. 
  APPEND itab. 
ENDWHILE.


例2:

LOOP AT ITAB. 
  CONCATENATE T_A ITAB-A INTO T_B. 
  ASSIGN (XXX) TO <A>. 
  ITAB2-A1 = <A>. 
  APPEND ITAB2. 
ENDLOOP.

评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!