背景:
应用开发过程中,数据存储必不可少,常见的存储方式为创建对应数据格式的数据库表并将数据对应存表。
在跨应用传递数据时,可以使用 IMPORY/EXPORT MEMORY 直接将数据存入内存,此时不用定义额外的内容。
如果我们需要像存入内存一样将待使用数据存入数据库中,而不必根据数据创建大量的数据库表,那么可以使用数据簇。
简介:
SAP 中使用数据簇形式存储数据的表有表INDX和表PCL2(薪资结果)。
以INDX表为例,如下图
RELID IMPORT/EXPORT 数据表中的区域
SRTFD 键值,和RELID一起用来标识数据的唯一
SRTF2 存储数据过大时分行的计数器
CLUSTR 数据长度字段
CLUSTD 数据(长字节字符串)
以上字段为数据簇存储必须字段,另外也可以定义一些自定义字段方便数据的查看读取。
使用:
数据簇的存储:
data:
自定义名称,读取和存储的要保持一致,可以同时EXPORT多个数据对象
gt_data:
需要存储的数据
indx:
存储数据簇的表
me:
数据表中的区域 ,对应字段SRTFD
ls_indx_line:
数据表中其它需要存储数据的字段
lv_srtfd_data:
数据唯一ID (SRTFD),用来唯一标识一份存入的数据
数据簇的读取:
data:
自定义名称,和存储时的一致
gt_data:
存放读取数据的abap数据对象,和IMPORT的数据对象结构一致
indx:
要读取数据簇的表
me:
数据表中的区域 (SRTFD)
ls_indx_line
数据表中数据
lv_srtfd_data:
读取数据时的唯一键值
注意:在使用时数据键值(SRTFD)和区域(RELID)用作标识一条数据,EXPORT 后跟的参数及数据 可以被覆盖,同一键值和区域只会保留最新一次EXPORT的参数及数据.
PS:可以使用USING 附加form调用处理一些特殊情况下的取值。
建议场景:
1. 一些动态数据的存储(如HR薪资数据)
2. 许多不同类型且需要存表的数据(如平台接口数据)
3. 一些绑定关键字的纵深结构数据
4. 其它......
缺点:
1.无法直接从数据库中查看数据
2.数据操作相对OPENSQL不太方便
3. 其它......