怎么用ABAP 实现通用的类方法调用记录保存到数据库表,并可以用ALV查询,双击可以重调用类方法,提供一下示例代码

时间: 2024-03-01 18:56:18 浏览: 16
以下是一个示例代码,用于演示如何使用ABAP实现通用的类方法调用记录保存到数据库表,并可以用ALV查询,双击可以重调用类方法: ```abap CLASS lcl_method_logger DEFINITION. PUBLIC SECTION. CLASS-METHODS: save_method_call IMPORTING iv_classname TYPE string iv_methodname TYPE string, display_method_calls. PRIVATE SECTION. TYPES: BEGIN OF ty_method_call, id TYPE i, classname TYPE string, methodname TYPE string, calltime TYPE timestampl, END OF ty_method_call. DATA: mt_method_calls TYPE STANDARD TABLE OF ty_method_call. ENDCLASS. CLASS lcl_method_logger IMPLEMENTATION. METHOD save_method_call. DATA(ls_method_call) = VALUE ty_method_call( id = lines( mt_method_calls ) + 1 classname = iv_classname methodname = iv_methodname calltime = sy-uzeit ). INSERT ls_method_call INTO TABLE mt_method_calls. COMMIT WORK. ENDMETHOD. METHOD display_method_calls. DATA(lo_alv) = NEW cl_salv_table( ). DATA(lo_model) = lo_alv->get_model( ). lo_model->set_data( mt_method_calls ). " set double click handler SET HANDLER double_click FOR lo_alv. lo_alv->display( ). ENDMETHOD. METHOD double_click. DATA(lo_table) = CAST cl_salv_table( sender ). DATA(ls_method_call) = lo_table->get_selected_line( )->get_cells( )->get_value( ). DATA(lo_class) = cl_abap_classdescr=>get( ls_method_call-classname ). DATA(lo_method) = lo_class->get_method_by_name( ls_method_call-methodname ). lo_method->call( ). ENDMETHOD. ENDCLASS. CLASS lcl_demo DEFINITION. PUBLIC SECTION. CLASS-METHODS: sample_method. ENDCLASS. CLASS lcl_demo IMPLEMENTATION. METHOD sample_method. lcl_method_logger=>save_method_call( cl_abap_classdescr=>get_caller( )->get_name( ) me->method_name ). ENDMETHOD. ENDCLASS. START-OF-SELECTION. lcl_demo=>sample_method( ). lcl_method_logger=>display_method_calls( ). ``` 在这个示例代码中,我们定义了两个本地类:`lcl_method_logger`和`lcl_demo`。`lcl_method_logger`类有两个公共类方法:`save_method_call`和`display_method_calls`。`save_method_call`方法将调用记录添加到内部数据库表`mt_method_calls`中。`display_method_calls`方法使用ALV网格控件显示数据库表中存储的所有调用记录,并为双击事件注册了一个处理程序。 在`lcl_demo`类中,我们定义了一个名为`sample_method`的公共类方法。当`sample_method`被调用时,它会记录所调用的类名和方法名,并将该记录保存到`mt_method_calls`中。 在主程序的`START-OF-SELECTION`块中,我们调用`lcl_demo=>sample_method( )`方法,触发`save_method_call`记录日志。然后,我们调用`lcl_method_logger=>display_method_calls( )`方法,使用ALV网格控件显示所有调用记录。如果用户双击任何一行,则会调用`double_click`方法,该方法将类和方法名提取出来,并使用`call`语句调用相应的方法。

相关推荐

最新推荐

recommend-type

ABAP 调用 DLL文件

就是SAP 的ABAP语言调用 DLL文件中的函数实现一些功能, 例如可以用DLL文件连接外部数据库读取数据. 我在网上找了好久,都没有一个完整的答案, 也没有一个完整的实例, 根据网上的各种说法, 我整合到一起, 终于成功, ...
recommend-type

在alv输出屏幕上增加按钮实现方法

在alv输出屏幕上增加按钮实现方法,自己首次编写的教材,希望对大家有帮助
recommend-type

ABAP开发ALV中自定义按钮实现

ALV是ABAP报表开发中经常用到的表单工具,用户经常需要将ALV中的数据进行打印或Excel导出,这样就需要对ALV的工具条进行扩展,添加自定义按钮,本文详细介绍了,如何在AVL中实现自定义按钮的方法,有具体的实例步骤...
recommend-type

JAVA 调用SAP SOAP webservice.docx

JAVA 调用SAP SOAP webservice需要注意的一些坑,请务必按步骤一步步来。
recommend-type

ZSE16N ZDATA任意表指定条件的查询、记录修改及删除.docx

工作量太大,使用自定义程序是更灵活的选择,程序代码可根据需要进行限制(权限,或代码及控制)且该工具仅开发或业务顾问使用,使用者知道操作数据表带来的影响,正常仅用于修改自定义数据库表,标准表不允许修改,...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

如何用python编写api接口

在Python中编写API接口可以使用多种框架,其中比较流行的有Flask和Django。这里以Flask框架为例,简单介绍如何编写API接口。 1. 安装Flask框架 使用pip命令安装Flask框架: ``` pip install flask ``` 2. 编写API接口 创建一个Python文件,例如app.py,编写以下代码: ```python from flask import Flask, jsonify app = Flask(__name__) @app.route('/api/hello', methods=['GET']) def hello():
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。