SAP abap 字段符号

SAP abap 字段符号

1.什么是字段符号(field symbol)

  • field symbol 由一般字段的占位符或者符号名定义
  • 在程序运行之前还不确定数据名和类型时使用的此种数据类型.通过动态分配法还可以简化重复d代码

2.field symbol 的特性

  • 在程序中field symbol 允许动态访问变量
  • field symbol不占用自己他有的内存空间
  • field symbol 的数据名与属性到执行时刻才确定
  • field symbol 可以指定所有数据对象
  • field symbol一旦被分配到,则与一般数据对象没有太大区别.同样可以使用类似于move之类的语句
  • field symbol可以明确指定数据类型,也可以不指定数据类型.诺不指定,则会继承被分配的字段(对象)的数据类型

声明

1.基本语句

field-symbol [type ty]

2.参照类型

  • generic type
    • 定义field symbol时不指定类型,当分配时,根据数据对象类型继承其技术属性
    • TYPE ANY TABLE - 结构表
    • TYPE ANY - 行结构
  • full type
    • 当定义field symbol时就固定形式定义数据对象,field symbol的技术属性与分配的数据对象相同
    • type | like type

3.assign分配

语法 :ASSIGN [mem_area] TO [casting_spec][range_spec].

语义:将mem_area分配给 casting_spec range_spec。

  • assign 语句的基本结构
    • 静态分配-字段名已知
      • assign dobj to .
      • 可以使用+(n)对字符串进行截取,分配给field symbol,注意长度
    • 动态分配-字段名未知
      • assign (dobj) to
  • 将结构体字段分配到field symbol中
    • assign component comp of structure struc to
    • comp可以为行编号或者字段名
  • 类型更改,可以通过casting把一个不同类型的变量分配给一个
    • 隐式型变化:ASSIGN TO CASTING
    • 显示型变化:`ASSIGN TO CASTING TYPE .
  • 检查
    • sy-subrc: 成功为零 不成功非零
    • IS ASSIGND

4.分配-内表

  • 基本语句定义
    • 如果指定为generic type,必须使用TYPE ANY TABLE
  • 分配语句
    • ASSIGN itab TO .
    • 注意
      • 类型可匹配
      • 如果有表头行,应使用itab[] , 否则分配表头行
  • 在读取时,需要使用动态指定方式读取字段
    • READ TABLE INTO structre WITH KEY (dobj) = val1
    • 明确指定字段全名会产生错误.
  • 内表循环修改
    • LOOP使用ASSIGNING语句,不需要使用MODIF语句.
    • 直接修改存储在内存中的值,所以可以省略内表值复制到结构体在执行MODIF的过程,提高性能.

5.动态内表

  • 目的
    • 创建列数不确定的内表
  • 步骤
    • 动态内表的创建,首先要定义动态结构,然后在根据定义的动态结构利用系统一个标准的method:cl_alv_table_create=>create_dynamic_table生成动态内表.
      • 可以使用循环DO,与CONCATENATE语句配合,动态指定字段.
  • 动态内表的赋值.遍历动态结构,获取指定的字段,然后给指定的字段赋值
    • 可以使用LOOP循环中的AT时间,将基本表汇总的数据分块赋值到动态表中
  • 动态内表读取显示.与赋值相似,遍历动态结构,获取指定的字段,然后读取对应的字段值.或使用输出工具直接输出.

你可能感兴趣的:(SAP,ABAP(总结),后端)