在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[] ).
测试结果: