怎么用ABAP 实现通用类方法保存到数据库表,并用ALV查看,双击重调用类方法,请提供一下示例代码
时间: 2024-03-01 14:56:15 浏览: 20
以下是一个简单的示例代码,用于演示如何使用ABAP实现通用类方法保存到数据库表,并用ALV查看和双击重调用类方法:
```abap
CLASS lcl_demo DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
save_to_database_table
IMPORTING
iv_data TYPE string
RETURNING VALUE(rv_success) TYPE abap_bool,
display_alv_table.
PRIVATE SECTION.
TYPES:
BEGIN OF ty_database_table,
id TYPE i,
data TYPE string,
END OF ty_database_table.
DATA:
mt_data TYPE STANDARD TABLE OF ty_database_table.
ENDCLASS.
CLASS lcl_demo IMPLEMENTATION.
METHOD save_to_database_table.
DATA(lv_success) = abap_false.
DATA(ls_data) = VALUE ty_database_table(
id = lines( mt_data ) + 1
data = iv_data ).
INSERT ls_data INTO TABLE mt_data.
COMMIT WORK.
lv_success = abap_true.
rv_success = lv_success.
ENDMETHOD.
METHOD display_alv_table.
DATA(lo_alv) = NEW cl_salv_table( ).
DATA(lo_model) = lo_alv->get_model( ).
lo_model->set_data( mt_data ).
lo_alv->display( ).
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
DATA(lo_demo) = NEW lcl_demo( ).
lo_demo->save_to_database_table( 'Hello, world!' ).
lo_demo->display_alv_table( ).
```
在这个示例代码中,我们定义了一个名为`lcl_demo`的本地类。该类有两个公共类方法:`save_to_database_table`和`display_alv_table`。`save_to_database_table`方法将输入的数据存储到一个内部数据库表`mt_data`中,并返回一个布尔类型的值,表示操作是否成功。`display_alv_table`方法使用ALV网格控件显示`mt_data`中存储的数据。
在主程序的`START-OF-SELECTION`块中,我们创建了一个`lcl_demo`的实例,并调用`save_to_database_table`方法将字符串`'Hello, world!'`保存到数据库表中。然后,我们调用`display_alv_table`方法,使用ALV网格控件显示数据库表中存储的数据。
如果要实现双击重调用类方法,您可以在`display_alv_table`方法中使用`SET_HANDLING`语句为双击事件注册一个处理程序,并在处理程序中调用`save_to_database_table`方法。