ABAP 数据簇(IMPORT&EXPORT)

发布时间 2023-09-07 17:15:44作者: 雨水果冻

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. 其它......

 

参考来源:ABAP 数据簇(IMPORT&EXPORT)_abap import export内存传递_Fireworks_me的博客-CSDN博客

测试数据:

 1 DATA : E_XML   TYPE STRING,
 2        WA      TYPE DEMO_INDX_BLOB,
 3        ITAB    TYPE  TABLE OF ZFI_T_002,
 4        ITABX   TYPE  TABLE OF ZFI_T_002,
 5        LS_ITAB TYPE   ZFI_T_002. "WITH EMPTY KEY
 6 
 7 
 8 
 9 DATA: LW_ZHRS0333 TYPE ZHRS0333, "入参 - 日志
10       LW_ZHRS0334 TYPE ZHRS0334. "出参
11 DATA: L_JSON    TYPE STRING,
12       L_JSRE    TYPE STRING,
13       LW_HEADER TYPE ZTPI_HEADER_01.
14 
15 DATA: IV_JSON    TYPE STRING .  "出json
16 DATA: IV_JSON2    TYPE STRING .  "出json
17 DATA: ZIFNO    TYPE CHAR20 .
18 DATA(OUT) = CL_DEMO_OUTPUT=>NEW( MODE = 'TEXT' ).
19 
20 DATA GUID TYPE GUID_32 .
21 
22 
23 *&---------------传入参数转换格式
24 CLEAR LW_ZHRS0333.
25 LW_ZHRS0333-CONTROL-SYSID      = 'BOOGOO'.
26 LW_ZHRS0333-CONTROL-IFNO       = 'ZHRS0333'.
27 LW_ZHRS0333-CONTROL-IFID       = 'ZHRFM_JHXX_QUERY'.
28 LW_ZHRS0333-CONTROL-SUSER      = SY-UNAME.
29 LW_ZHRS0333-CONTROL-SDATE      = SY-DATUM.
30 LW_ZHRS0333-CONTROL-STIME      = SY-UZEIT.
31 LW_ZHRS0333-CONTROL-SDATATYPE  = 'JSON'.
32 LW_ZHRS0333-DATUM = SY-DATUM.   " 未知正确与否
33 
34 "传入参数转换
35 L_JSON = /UI2/CL_JSON=>SERIALIZE( EXPORTING DATA = LW_ZHRS0333 ).
36 
37 * NEW GUID
38 IF GUID  IS NOT INITIAL  .
39   CALL FUNCTION 'GUID_CREATE'
40     IMPORTING
41       EV_GUID_32 = GUID.
42 ENDIF.
43 
44 
45 
46 ZIFNO =  'S0000000000000057367' .
47 *IMPORT data = e_xml FROM DATABASE ztpi_data_01(js) ID 'S0000000000000057367'.
48 
49 
50 * IMPORT DATA = L_JSON  FROM DATABASE  DEMO_INDX_BLOB(JS)  ID ZIFNO .
51 BREAK-POINT.
52 EXPORT DATA =  L_JSON   TO DATABASE ZTPI_DATA_01(JS) ID  ZIFNO .
53 IMPORT DATA = IV_JSON   FROM DATABASE ZTPI_DATA_01(JS) ID ZIFNO.
54 *---------调用展示--------------------------
55 *OUT->WRITE_JSON( IV_JSON ).
56 *OUT->DISPLAY( ).
57 
58 LS_ITAB-WERKS  =  '2000' .
59 LS_ITAB-YGDM   =  '2000' .
60 LS_ITAB-FYEAR  =  '2000' .
61 LS_ITAB-FMONTH =  '2000' .
62 LS_ITAB-GZRQ   =  '20220101' .
63 LS_ITAB-BMNAME =  3 .
64 LS_ITAB-YGNAME =  2.
65 LS_ITAB-GZJE  =  1 .
66 APPEND  LS_ITAB TO  ITAB .
67 EXPORT SCATT_TAB =  ITAB      TO DATABASE      DEMO_INDX_BLOB(JS)  ID  'aa' .
68 IMPORT SCATT_TAB =  ITABX     FROM DATABASE    DEMO_INDX_BLOB(JS)   ID  'aa'.
69 * TO WA     ID 'ZFI_T_002'.
70 *CL_DEMO_OUTPUT=>NEW( )->DISPLAY( ITAB ).
71 CL_DEMO_OUTPUT=>NEW( )->DISPLAY( ITABX ).
72 *->WRITE_DATA( WA-TIMESTAMP )->WRITE_DATA( WA-USERID )
View Code