博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
程序间数据共享与传递(1):EXPORT/IMPORT、SAP/ABAP Memory
阅读量:2035 次
发布时间:2019-04-28

本文共 3091 字,大约阅读时间需要 10 分钟。

EXPORT 语句

{

dobj1 p2 dobj2 ...} |FROM dobj1 p2 FROM dobj2 ...} | )
 TO | {  id 
  | { 
dbtab(FROM wa] CLIENT cl] ID  
  | { 
 dbtab(ar[FROM wa] [CLIENT cl] ID id 

  | { 
SHARED dbtab(ar[FROM wa] [CLIENT cl] ID id 
}

 

1.       {p1 = p2 = dobj2 ...} {p1 FROM dobj1 p2 FROM dobj2 ...}的意义一样,只是写法不一样,dobj2…变量将会以p2…名称存储到内存或数据库中。p2…名称随便取,如果p1p2…与将要存储的变量名相同时,只需写变量名即可,即等号与 FROM 后面可以省略。p1p2…这些名称必须与IMPORT语句中相一致,否则读取不出

2.       (ptab):为动态指定需要存储的变量,ptab内表结构要求是这样的:只需要两列,列名任意,但类型需要是字符型;第一列存储如上面的p1p2…名称,第二列为上面的dobj1dobj2…变量,如果变量与名称相同,则也可以像上面一样,省略第二列的值。两列的值都必需要大写,实例如下:

TYPES:BEGIN OF tab_type,
    para 
TYPE string,"列的名称任意,类型为字符型
    dobj 
TYPE string,
  
END OF tab_type.
DATA:text1 TYPE string VALUE `TXT1`,
  text2 
TYPE string VALUE `TXT2`,
  
line  TYPE tab_type,
  itab  
TYPE STANDARD TABLE OF tab_type.
line-para 'P1'."值都需要大写
line-dobj 'TEXT1'."值都需要大写
APPEND line TO itab.
line-para 'P2'.
line-dobj 'TEXT2'.
APPEND line TO itab.
EXPORT (itabTO MEMORY ID 'TEXTS'.
IMPORT p1 text2 p2 text1 FROM MEMORY ID 'TEXTS'.
WRITE/ text1,text2."TXT2 TXT1
CLEARtext1,text2.
IMPORT (itabFROM MEMORY ID 'TEXTS'.
WRITE/ text1,text2."TXT1 TXT2

3.       :将变量存储到ABAP Memory内存中

4.       :将变量存储到数据库中;为簇数据库表的名称(如系统提供的标准表INDX);ar的值为区域ID,它将数据库表的行分成若干,它必须被直接指定,且值是两位字符,被存储到簇数据库表中的字段中;id 的值会存储到簇数据表中的RELID字段的下一用户自定义字段中:

TYPES:BEGIN OF tab_type,
    col1 
TYPE i,
    col2 
TYPE i,
  
END OF tab_type.
DATA:wa_indx TYPE demo_indx_table,
  wa_itab 
TYPE tab_type,
  itab  
TYPE STANDARD TABLE OF tab_type.
WHILE sy-index 100.
  wa_itab
-col1 sy-index.
  wa_itab
-col2 sy-index ** 2.
  
APPEND wa_itab TO itab.
ENDWHILE.
wa_indx
-timestamp sy-datum && sy-uzeit.
wa_indx
-userid    sy-uname.
EXPORT tab itab TO DATABASE demo_indx_table
(sqFROM wa_indx ID 'TABLE'.

 

实例二:

TABLESindx.
DATABEGIN OF i_tab OCCURS 100,
  col1 
TYPE i,
  col2 
TYPE i,
END OF i_tab.
DO 3000 TIMES.
  i_tab
-col1 sy-index.
  i_tab
-col2 sy-index ** 2.
  
APPEND i_tab.
ENDDO.
indx
-aedat sy-datum.
indx
-usera sy-uname.
indx
-pgmid sy-repid.
"省略了FROM选项,因为已经使用TABLES indx语句定义了名为indx的结构变量了
"Export时会自动将表工作区indx变量中的用户字段存储到簇数据库表中
EXPORT i_tab TO DATABASE indx(HKID 'Key'.

WRITE' SRTF2',AT 20 'AEDAT',AT 35 'USERA',AT 50 'PGMID'.
ULINE.
"注:下面完全可以使用 IMPORT FROM DATABASE TO wa 语句来读取用户区字段
SELECT FROM indx WHERE relid 'HK'AND srtfd 'Key'.
  
WRITE/ indx-srtf2 UNDER 'SRTF2',
  indx
-aedat UNDER 'AEDAT',
  indx
-usera UNDER 'USERA',
  indx
-pgmid UNDER 'PGMID'.
ENDSELECT.

SRTF2             AEDAT          USERA          PGMID

        0          2011.10.12     ZHENGJUN       YJZJ_TEST2

        1          2011.10.12     ZHENGJUN       YJZJ_TEST2

        2          2011.10.12     ZHENGJUN       YJZJ_TEST2

        3          2011.10.12     ZHENGJUN       YJZJ_TEST2

        4          2011.10.12     ZHENGJUN       YJZJ_TEST2

5.        :将数据存储到SAP应用服务器上的SAP Memory中,可共同一服务上的所有程序访问。两种的作用是一样的,最大不同是在数据达到最大内存限制时的处理方式不同:最大内存限制值分别是通过rsdb/esm/buffersize_kb )rsdb/obj/buffersize (SHARED )来设置的,当内存占用快满时,SHARED MEMORY必须通过来手动清理,而SHARED BUFFER会自动删除很少被使用到的数据(当然也可以通过DELETE FROM SHARED BUFFER手动及时的删除不用的数据)

wa工作区类型可以参照簇数据库类型,也可定义成只含有用户数据字段的结构,它是用来设置簇数据库表中SRTF2  CLUSTR两个字段之间的的值,然后在Export时将相应的字段存储到SRTF2字段与CLUSTR字段间的相应字段中去。如果使用TABLES dbtab.”定义语句,可以省略[FROM wa],也会默认将其存储到数据库表中,但如果没有“TABLES dbtab.”这样的定义语句,也没有“[FROM wa]”选项时,将不会有数据存储到簇数据库表中的用户字段中去

7.       CLIENT cl:默认为当前客户端,存储到簇数据库表中的MANDT字段中

你可能感兴趣的文章
宏的高级应用
查看>>
Ubuntu密码正确,无法进入图形界面
查看>>
键盘keycode值大全
查看>>
LINUX下安装JLINK
查看>>
关于485总线 A、B端上拉下拉电阻选择
查看>>
@echo 与 echo的区别
查看>>
Linux UART无法接受‘\r’即0X0D
查看>>
va_start 与 va_end用法
查看>>
Linux 编写测试demo的Make
查看>>
WI-FI联盟认证
查看>>
Linux 不同用户环境变量
查看>>
后台进程与守护进程区别
查看>>
syslog日志记录
查看>>
source insight 配色方案&设置相对路径&快捷键&导入有效linux kernel
查看>>
Linux GCC与GDB调试
查看>>
AM437X TAS2552驱动移植
查看>>
Linux安装cmake&doxygen
查看>>
Linux AM437X timer产生PWM
查看>>
爱情-现实-钱
查看>>
使用svnsync实现已有版本库的镜像
查看>>