网站首页 > 技术教程 正文
持久化的意思是将对象进行数据磁盘存储。
持久化对象在任何语言中都有对应的方法和理论。ABAP的持久化主要还是通过持久化服务进行对象的数据存储。如下图:
简单来说 持久化服务就是用于管理初始化对象,保存对象,管理对象。
下面我通过一个简单的实例来说明:系统的一个对象在业务处理中如何在属性的存储到SAP自定义表中,并支持增删改查操作。
- 创建一个自定义表ZTNB_TEST,用于存储持久化后的对象。
- 维护持久性可通过以下两种方式:
- 1. 使用业务key作为主键
- 2. 使用GUID,即SAP提供的全局标识符(类型OS_GUID)
- 创建一个持久化类(全局)
生成的类是Protected类
3.通过菜单“转到”→“持久性代表”,维护与持久类相关的数据库表。输入自定义表名,然后分配需要持久化的列。
分配好属性后点击“生成器设置”按钮设定创建持久类的设定。
一般需要将最后一个复选框(方法CREATE PERSISTENT和CREATE TRANSIENT使用最小接口)勾选去掉,如果勾选了,生成的持久类会仅仅针对自定义表的主键进行记录创建,而忽略其他属性。
最后激活该类,会提示是否创建类行动者,点击“是”系统将为这个持久类创建对应的操作用的虚拟类和操作类。
4.创建测试程序,将实例化的持久化类存入数据库并进行查询和删除操作。
创建:
读取:
删除:
5.测试源代码
REPORT znb_persist_test.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS : p_get RADIOBUTTON GROUP g1,
p_cre RADIOBUTTON GROUP g1,
p_del RADIOBUTTON GROUP g1.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE TEXT-002.
PARAMETERS :
p_guid LIKE ztnb_test-guid,
p_text LIKE ztnb_test-text.
SELECTION-SCREEN END OF BLOCK b2.
CLASS lcl_application DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
run.
ENDCLASS.
CLASS lcl_application IMPLEMENTATION.
METHOD run.
DATA : go_ztnb_test_agent TYPE REF TO zca_persist_ztnb_test,
go_ztnb_test TYPE REF TO zcl_persist_ztnb_test.
"创建操作类对象
go_ztnb_test_agent = zca_persist_ztnb_test=>agent.
IF p_get = abap_true.
TRY.
"调用操作类,读取持久化记录,初始化持久类并对属性赋值
go_ztnb_test ?= go_ztnb_test_agent->get_persistent( i_guid = p_guid ).
WRITE : / 'GUID:',go_ztnb_test->get_guid( ).
WRITE : / 'TEXT:',go_ztnb_test->get_text( ).
CATCH cx_os_object_not_found.
MESSAGE 'Oject does not exist.' TYPE 'E'.
ENDTRY.
ELSEIF p_cre = abap_true.
TRY.
"调用操作类,查询数据库中是否存在持久化记录
go_ztnb_test ?= go_ztnb_test_agent->get_persistent( i_guid = p_guid ).
CATCH cx_os_object_not_found.
ENDTRY.
IF go_ztnb_test IS BOUND.
MESSAGE 'Oject already exist.' TYPE 'E'.
ENDIF.
TRY.
"调用操作类,创建持久化类的属性和主键记录到数据库表
go_ztnb_test = go_ztnb_test_agent->create_persistent(
i_guid = p_guid
i_text = p_text
) .
COMMIT WORK.
WRITE : / 'Object Created.'.
CATCH cx_os_object_existing .
MESSAGE 'Oject already exist.' TYPE 'E'.
ENDTRY.
ELSEIF p_del = abap_true.
TRY.
"调用操作类,查询数据库中是否存在持久化记录
go_ztnb_test ?= go_ztnb_test_agent->get_persistent( i_guid = p_guid ).
"调用操作类,按主键删除持久化记录
go_ztnb_test_agent->delete_persistent( i_guid = p_guid ).
COMMIT WORK.
WRITE : / 'Object Deleted.'.
CATCH cx_os_object_not_found.
MESSAGE 'Oject does not exist.' TYPE 'E'.
CATCH cx_os_object_not_existing .
MESSAGE 'Oject does not exist.' TYPE 'E'.
ENDTRY.
ENDIF.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
lcl_application=>run( ).
猜你喜欢
- 2024-11-04 SAP ABAP干货 | 基础篇:三、ABAP对象和语句控制(3)
- 2024-11-04 科莱特SAP ABAP干货 | 基础篇:二、数据字典(2)
- 2024-11-04 赛锐信息:SAP ABAP 搜索帮助(赛锐案件最终结果)
- 2024-11-04 SAP ABAP编程基础(sap abap开发)
- 2024-11-04 SAP ABAP编程基础-语法结构(sap abaon)
- 2024-11-04 SAP ABAP干货 | 基础篇:三、ABAP对象和语句控制(2)
- 2024-11-04 科莱特 | SAP ABAP模块内容之屏幕设计(一)
- 2024-11-04 赛锐信息:SAP ABAP 锁定对象(sap锁表scope)
- 2024-11-04 科莱特 | SAP ABAP模块内容之屏幕设计(六)
- 2024-11-04 SAP中找表-几种经典的方法(sap常用表)
你 发表评论:
欢迎- 最近发表
-
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
- linux移植(Linux移植freemodbus)
- 独家解读:Win10预览版9879为何无法识别硬盘
- 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)
- Docker镜像瘦身(docker 减小镜像大小)
- 在linux上安装ollama(linux安装locale)
- 渗透测试系统Kali推出Docker镜像(kali linux渗透测试技术详解pdf)
- Linux环境中部署Harbor私有镜像仓库
- linux之间传文件命令之Rsync傻瓜式教程
- 解决ollama在linux中安装或升级时,通过国内镜像缩短安装时长
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)