类似 MDTC INDX 等压缩表(compressed tables)存储与取数方法

在SAP中类似MDTC INDX这种压缩表,在前台数据库无法直观的看到他的存储内容,因为他的数据是经过压缩的,先转化为十六进制的字符串,然后再写入数据库

这类压缩表格式是这样的,有点类似长文本,但是处理不太一样

要把数据存入这种数据库表,或者获取这种内表的数据是通过 IMPORT/EXPORT 数据表中的区域,比如在INDX表中IMPORT/EXPORT是根据SRTFD来的,把SRTFD作为database ID 来唯一确定某一条数据。而可以压缩的数据可以是任何数据类型的变量,或者是把一整个内表都压缩进去,他会自己在后台做一定的转换,看完代码测试就都懂了。

 测试CODE:


DATA: DATABASE_ID LIKE INDX-SRTFD VALUE 'ZGXTESTINDX'. " export/import to database ID
DATA GV_STRING TYPE STRING VALUE 'TEST FOR THIS' .
EXPORT STRING = GV_STRING TO DATABASE INDX(ST) ID DATABASE_ID .

CLEAR GV_STRING .
IMPORT STRING = GV_STRING FROM DATABASE INDX(ST) ID DATABASE_ID .

cl_demo_output=>display( GV_STRING ).

测试结果:

压缩一整个内表

TYPES: BEGIN OF TY_INDX,
         FIELD1  TYPE C LENGTH 5,
         FIELD2  TYPE C LENGTH 5,
         FIELD3  TYPE C LENGTH 5,
         FIELD4  TYPE C LENGTH 5,
       END OF TY_INDX.
DATA: GT_INDX TYPE TABLE OF TY_INDX WITH HEADER LINE,
      DATABASE_ID LIKE INDX-SRTFD VALUE 'ZGXTESTINDX'. " export/import to database ID

GT_INDX-FIELD1 = 'TEST1'. "构建测试内表
GT_INDX-FIELD2 = '220'.
APPEND GT_INDX .
CLEAR GT_INDX.

GT_INDX-FIELD1 = 'TEST2'.
GT_INDX-FIELD2 = '230'.
APPEND GT_INDX .
CLEAR GT_INDX.

GT_INDX-FIELD1 = 'TEST3'.
GT_INDX-FIELD3 = '240'.
APPEND GT_INDX .
CLEAR GT_INDX.

GT_INDX-FIELD1 = 'TEST4'.
GT_INDX-FIELD4 = '250'.
APPEND GT_INDX .
CLEAR GT_INDX.

EXPORT LINES = GT_INDX[] TO DATABASE INDX(ST) ID DATABASE_ID .

CLEAR GT_INDX[] .
IMPORT LINES = GT_INDX[] FROM DATABASE INDX(ST) ID DATABASE_ID.

cl_demo_output=>display( GT_INDX[] ).

测试结果:

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gong JX

多谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值