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
公众号主群加入受限, 请扫码加入副群后,向管理员申请加入主群
文章来自于网络,如果侵犯了您的权益,请联系站长删除!