ABAP DATABASE储存数据到系统

导语:最近在写一个通用接口生成器,在翻阅资料得时候偶然发现了一个语法,就是将内表数据保存在database上(可能这里描述的不太准确),而不是数据库表里,这样可以在不储存到数据库表的情况下,形成一个版本的概念,在这里分享一下。

其实这个语法是一套的,一个储存,一个读取,都是在DATABASE上完成的。

储存语法

EXPRORT 储存名称 = 内表名称  TO DATABASE indx(st) ID 储存ID.
"示例
DATA :g_indxid    TYPE indx_srtfd.
g_indxid = 'XFZ001'.
FREE MEMORY ID g_indxid.
EXPORT table1 = gt_yh001h1 table2 = gt_yh001h2 TO DATABASE indx(st) ID g_indxid.

这样就将GT_YH001H1、GT_YH001H2,两个内表的数据储存到ID为’XFZ001’中相应的TABLE1、TABLE2储存模块中了,据我目前掌握的资料是无法在数据库中看见这些值的,只可以在程序中调用出来。

读取语法

IMPORT 储存名称 = 内表名称 FROM DATABASE indx(st) ID 储存ID.
"示例
DATA :g_indxid    TYPE indx_srtfd.
g_indxid = 'XFZ001'.
IMPORT  table1 = gt_yh001h1 table2 = gt_yh001h2 FROM DATABASE indx(st) ID g_indxid.

这样就把刚刚存放的在储存ID ‘XFZ001’ 中四个模块的数据分别放到两个内表中了。

实际应用

  DATA :g_indxid    TYPE indx_srtfd.
  g_indxid = 'ZYH001_' && p_prog.
  ok_code = sy-ucomm.
  CLEAR sy-ucomm.
CASE ok_code.
    WHEN 'GEN'.
      "储存到DATABASE中
      FREE MEMORY ID g_indxid.
      EXPORT table1 = gt_yh001h1 table2 = gt_yh001h2 TO DATABASE indx(st) ID g_indxid.
      "以防万一储存到数据库表中一份
      PERFORM frm_save_yh001.
    WHEN 'UPLOAD'.
      "从DATABASE中上载配置,暂时不从数据库中上载
      IMPORT table1 = gt_yh001h1 table2 = gt_yh001h2  FROM DATABASE indx(st) ID g_indxid.
      PERFORM alv_refresh_display.
ENDCASE.

提示:如果在ALV中使用,记得刷新ALV才会把内表数据展示出来

举个简单例子吧,感觉上面写的有点复杂


"清空缓存变量
  FREE MEMORY ID 'U916'.
"储存变量
  EXPORT tcode = 'F.05' TO DATABASE indx(st) ID 'U916'.

"读取变量
  DATA : LV_TCODE TYPE SY-TCODE.
  IMPORT tcode = LV_TCODE FROM DATABASE indx(st) ID 'U916'.
"清空缓存变量  
  FREE MEMORY ID 'U916'.

作者:小飞猪猪猪猪猪猪猪–CSDN
注意:转发请注明作者

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小飞猪猪猪猪猪猪猪

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值