SAP小技巧 使用EXPORT/IMPORT保存特殊数据

点击蓝字 关注我们

01

前言

特定的程序中,可能需要存储多个变量,结构,内表. 后续需要再次读取出之前存储的数据. 

对于存储的数据无需数据检索,只要能读出即可.

 此时可以考虑使用EXPORT/IMPRT TO/FROM DATABASE 语句实现.

使用EXPORT TO DATABASE IMPORT FROM DATABASE 解决特殊场景下的数据记录

语法规则

截图是ABAP语法帮助中的部分内容

数据存储表.

固定字段部分

  • RELID      IMPORT/EXPORT 数据表中的区域.根据需使用固定2位的字符串

  • ID               写入/读取的关键ID

  • SRTF2      EXPORT/IMPORT 数据表中的下个记录计数器 (新版无需该字段)

  • CLUSTR    EXPORT/IMPORT 表格中的用户数据长度字段 (新版无需该字段)

  • CLUSTD   IMPORT/EXPORT数据库表的数据字段

自定义字段部分,记录一些通用字段:日期,时间,用户等. 可以根据需要增加新的字段,用于快速检索查询保存的数据.

  • USERID          用户名

  • TIMESTAMP简短格式的 UTC 时戳 (YYYYMMDDhhmmss)

  • ......

根据CLUSTD字段定义的类型,可以分为两种版本.

  • LRAW 限制了长度2886 需要字段SRTF2,CLUSTER 辅助保存超出2886长度的内容.早期ECC版本中使用,如图旧版本

  • RAWSTRING 无长度限制 无需字段SRTF2,CLUSTER辅助. 新的ECC版本中使用.如图新版本

旧版本

新版本

使用业务场景

可以在如下场景是使用这种数据记录方式

  • 接口内容日志

  • 程序临时保存的数据(单据的暂存功能)

  • 程序中动态内表保存的数据

  • ......

下图是我在一些程序中使用了这种存储方式.

以接口RFC函数为例

在RFC接口中,可以需要记录所有接口调用时传递的内容,以便监控接口的调用是否正确

详见链接

无峰,公众号:ABAP 技巧与实战SAP工具箱之 接口调用集中监控

接口框架

无峰,公众号:ABAP 技巧与实战SAP开发框架系列之 接口框架

01

界面定义

所有的RFC函数使用相同的界面. 比如传入变量,结构都使用IS_STR 不同的函数参考不同的类型.

02

内容保存

RFC函数传递内容的保存

03

内容呈现

统一监控程序中, 使用IMPORT 读取需要查看的传输内容,呈现的时候,根据不同的接口定义通过动态内表呈现内容.

致命的缺点

保存的数据结构一旦发现变化,历史存储的记录将无法读出. 

如果一次保存了多个结构/内表. 其中有一个内表中增强了字段或者修改了字段长度. 则改变的内表将无法读出. 但是未改变的其它结构/内表的读取不受影响. 

具体表现为IMPORT 语句返回值SY-SUBRC <> 0. 读取的内表为空

解决方案

在数据结构发现变化后,使用程序升级保存的数据内容.

示例代码中 gt_alv_12_old 是按照改变前的结构定义的内表,

GT_ALV_12按照改变后的结构定义的内表. IMPORT读取数据后,赋值到新结构内表中(系统会执行类型转换或长度变更),写回数据,完成数据内容的升级.

总结

EXPORT/IMPORT TO/FROM DATABASE便于存储大量/动态结构的数据内容.

因为存储的数据是非结构化数据,所以不能对数据中的字段进行检索,只能全部读取内容呈现时再检索内容.

在一些特殊的场景中使用,可以简化数据存储,读取过程.

THE

END

约定

如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.       

    (如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程. 越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.)

公众号 : syjf1976_abap

          ABAP开发技巧

微信号 : 392077

公众号主群加入受限, 请扫码加入副群后,向管理员申请加入主群

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值