CALL METHOD-Abstract class 和 public class的调用

 

ABAP程序中今天会用到CALL METHOD即调用类方法,类似CALL FUNCTION。

以SAP中的两个类为例:CL_GUI_CFW,CL_GUI_ALV_GRID。

调用格式如下:

CALL METHOD cl_gui_cfw=>dispatch
*  IMPORTING
*    return_code =
    .

*DATA: g_grid           TYPE REF TO cl_gui_alv_grid.

*CREATE OBJECT g_grid
*  EXPORTING
**   i_shellstyle      = 0
**   i_lifetime        =
*    i_parent          = g_dock_container
*  EXCEPTIONS
*    error_cntl_create = 1
*    error_cntl_init   = 2
*    error_cntl_link   = 3
*    error_dp_create   = 4
*    OTHERS            = 5.
*IF sy-subrc <> 0.
*  MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
*             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
*ENDIF.

*CALL METHOD g_grid->set_table_for_first_display
**  EXPORTING
**    i_buffer_active               =
**    i_bypassing_buffer            =
**    i_consistency_check           =
**    i_structure_name              =
**    is_variant                    =
**    i_save                        =
**    i_default                     = 'X'
**    is_layout                     =
**    is_print                      =
**    it_special_groups             =
**    it_toolbar_excluding          =
**    it_hyperlink                  =
**    it_alv_graphics               =
**    it_except_qinfo               =
**    ir_salv_adapter               =
*  CHANGING
*    it_outtab                     =
**    it_fieldcatalog               =
**    it_sort                       =
**    it_filter                     =
**  EXCEPTIONS
**    invalid_parameter_combination = 1
**    program_error                 = 2
**    too_many_lines                = 3
**    others                        = 4
*        .
*IF sy-subrc <> 0.
** Implement suitable error handling here
*ENDIF.

 

这里我们会发现一个现象:调用类CL_GUI_CFW不需要实例化对象,而调用类CL_GUI_ALV_GRID需要实例化一个对象。

原因如下:

通过T-CODE:SE24可以知道类型的属性CL_GUI_CFW属性Abstract,CL_GUI_ALV_GRID属性Public,如下所示:

如此可知我们在CALL属性为Abstract的类时,无需进行实例化,而CALL属性为Public的类时,需要进行实例化操作。

 

如何自动调用METHOD的那?系统提供自动插入的操作

1.点击“pattern”选择“ABAP Objects Patterns”然后回车,如下:

2.调用method

2.1调用属性为abstract的类

2.2调用属性为Public的类

首先实例化该类的一个对象

DATA:g_grid           TYPE REF TO cl_gui_alv_grid.

然后调用类

 

ok~~!

更多一点的信息可以查询:http://zevolving.com/2012/01/abstract-class-vs-interface/

 

 

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王小磊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值