ABAP 获取 DB12中数据库备份日志

作者:ABAP三叔 约 4 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Data Engineering, 开发, 数据工程

前言

社区一朋友求助,想在自己程序中获取DB12中的数据库备份日志,这个问题困扰了他一个礼拜有余。

这个问题我以前也没接触过,也很想知道具体是如何取值的,于是经过一番研究,最终搞清楚了,现将方法分享给大家,希望能帮助到有需要的同学。

跟踪DB12取数逻辑

经过一番DEBUG,最终定位到类CL_DBA_RDI_QUERY中的IF_DBA_RDI_QUERY~GET_SNAPSHOT方法,这个方法中最终调用

execute方法直接执行HANA SQL语句,取HANA系统表获取数据库日志备份记录,返回结果赋值给参数DATA。

编写代码获取备份日志

我们只需要调用 类 C L_DBA_RDI_QUERY 中的

IF_DBA_RDI_QUERY~GET_SNAPSHOT方法就可以了,该方法是一个实例方法,所以我们先需要调用 C

L_DBA_RDI_QUERY的构造方法。

C L_DBA_RDI_QUERY的构造方法需要传参RDI_META,它是CL_DBA_RDI_META的实例,所以我们又需要获取

CL_DBA_RDI_META的实例, 它的静态方法GET_INSTANCE返回 CL_DBA_RDI_MET A 的实例

CL_DBA_RDI_META 的 GET_INSTANCE 方法又需要 传 参SYS_REF,它是 CL_DB6_SYS

的实例,这个类没有定义构造方法,不过它的静态方法GET_SYS_REF返回 CL_DB6_SYS 的实例

至此整个过程清晰了,实现代码如下:

TRY. DATA(system) = cl_db6_sys=>get_sys_ref( system_id = sy-sysid synchronize = abap_false ). DATA(meta) = cl_dba_rdi_meta=>get_instance( sys_ref = system use_new_query_processor = abap_false ). DATA(query) = NEW cl_hdb_rdi_query( rdi_meta = meta ). DATA itab TYPE hdb_backup_catalogue_tab. query->if_dba_rdi_query~set_top_n( 1000 ). query->if_dba_rdi_query~get_snapshot( EXPORTING ddic_src = cl_hdb_rdi_meta=>co_ddic_hdb_backup_catalogue IMPORTING data = itab ). CATCH cx_root.ENDTRY.

总结

作为一个合格的ABAP程序员,要熟练掌握DUBUG的各种方法,要向SAP官方程序学习,那是最好的学习资料。

佛曰:渡人亦渡己。

帮助了别人也提升了自己,何乐而不为呢?

ABAP三叔

关于作者:ABAP三叔

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「ABAP获取DB12中数据库备份日志.md」整理生成,仅用于内部技术分享与学习交流。