【发布时间】:2015-03-13 11:21:41
【问题描述】:
我是abap(OO)的新手,但之前在java中开发并编写了一个abap“cl_caretaker”类,它应该处理对数据库表及其本地副本(实习表)的操作。
我想进行以下方法调用:
caretaker->show_table( caretaker->get_users( ) ) .
与:
caretaker = cl_caretaker=>get_instance( ). "singleton instance
METHODS:
"! get a list of all user which registrated for FCP
"!
"! @parameter rt_users | users which are registrated for FCP
get_users
RETURNING value(rt_users) TYPE itty_users,
"! shows the content of a table
"!
"! @parameter it_table | the table we want to visualize
show_table
IMPORTING
value(it_table) TYPE ANY TABLE.
如果我将调用一分为二并将 get_users 的结果存储在一个 tmp 变量中,它就可以工作。
DATA:
gt_tmp_users TYPE caretaker->itty_users.
gt_tmp_users = caretaker->get_users( ).
caretaker->show_table( gt_tmp_users ).
所以我的问题是:
1) 是这样的调用:caretaker->show_table( caretaker->get_users( ) ).
可能,如果如何?
2) 我还尝试创建一个通用变量,用于存储各种表格。 因为我不想为每个表类型创建我使用 tmp/help 变量。 但我得到的信息是,只有(德语:Formalparameter)方法定义的虚拟参数被允许为泛型类型(例如,TYPE any TABLE)。
这里有一些我已经尝试过的东西:
DATA:
* tmpanytable TYPE TABLE OF any.
* tmpAnyTable TYPE any.
tmpanytable TYPE REF TO data.
" needed to store a temporal table
FIELD-SYMBOLS: <tmpanytable> TYPE ANY TABLE.
* ASSIGN caretaker->get_users( ) TO <tmpAnyTable>.
* <tmpAnyTable> = caretaker->get_users( ).
* caretaker->get_users( ).
*caretaker->show_table( <tmpAnyTable> ).
*caretaker->show_table( caretaker->get_users( ) ).
*CALL METHOD: caretaker->show_table( IMPORTING it_table = caretaker->get_users ).
*CALL METHOD: caretaker->show_table( it_table = caretaker->get_users( ) ).
*COMPUTE caretaker->show_table( it_table = caretaker->get_users( ) ).
*ASSIGN caretaker->get_users() ->* to <tmpAnyTable>.
*Caretaker->show_table( <tmpAnyTable> ).
*call METHOD caretaker->show_table
* Exporting It_table = caretaker->get_users( ).
* CREATE DATA tmpanytable TYPE STANDARD TABLE OF (dbtab)
* WITH NON-UNIQUE DEFAULT KEY.
* ASSIGN tmpanytable->* TO <tmpanytable>.
* CREATE DATA tmpanytable TYPE tabkind OF any Table .
* ASSIGN tmpanytable->* TO <tmpanytable>.
*GET REFERENCE OF caretaker->get_users() INTO tmpAnyTable.
*caretaker->show_table( tmpAnyTable ) .
【问题讨论】:
-
您使用的是哪个 SAP_ABA 版本?
-
软件组件:SAP_ABA 版本:701 级别:0004 最高支持包:SAPKA70104
标签: oop methods parameters abap