通过静态构造函数创建 ALV 时的 NULL 对象引用.为什么? [英] NULL object reference while creating ALV via static constructor. Why?
本文介绍了通过静态构造函数创建 ALV 时的 NULL 对象引用.为什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试运行从教程中复制的这个程序.但是我在这一行中收到了 Null 异常
I was trying run this program copied from a tutorial. But I am getting Null exception I this line
CALL METHOD list->SET_TABLE_FOR_FIRST_DISPLAY.
form 我的理解列表对象应该在类构造函数中创建.
form My understanding the list object should be created in the class-constructor.
Method CLASS_CONTRUCTOR.
CREATE OBJECT list
EXPORTING
i_parent = cl_gui_container=>screen0.
ENDMETHOD.
//代码请看一下.
class select_display_sflight DEFINITION.
public section.
CLASS-METHODS class_contructor.
Methods: constructor
importing i_carrid type sflight-carrid
i_connid type sflight-connid
Exceptions nothing_found,
display_sflight.
private section.
CLASS-DATA list type ref to CL_GUI_ALV_GRID.
data sflight_tab TYPE TABLE OF sflight.
ENDCLASS.
class select_display_sflight IMPLEMENTATION.
Method CLASS_CONTRUCTOR.
CREATE OBJECT list
EXPORTING
i_parent = cl_gui_container=>screen0.
ENDMETHOD.
Method CONSTRUCTOR.
select * from sflight
into table sflight_tab
where carrid = i_carrid and
connid = i_connid.
if sy-subrc = 4 .
raise NOTHING_FOUND.
ENDIF.
ENDMETHOD.
Method display_sflight.
CALL METHOD list->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
i_structure_name = 'SFLIGHT'
CHANGING
it_outtab = sflight_tab.
call screen 100.
ENDMETHOD.
ENDCLASS.
Selection-SCREEN begin of screen 500.
parameters: p_carrid type sflight-carrid,
p_connid type sflight-connid.
selection-screen end of screen 500.
data: begin of ref_tab_line,
carrid type sflight-carrid,
connid type sflight-connid,
oref type ref to select_display_sflight,
end of ref_tab_line,
ref_tab like sorted table of ref_tab_line
with unique key carrid connid.
START-OF-SELECTION.
do.
call SELECTION-SCREEN 500 starting at 10 10.
if sy-subrc <> 0.
leave program.
endif.
ref_tab_line-carrid = p_carrid.
ref_tab_line-connid = p_connid.
read table ref_tab into ref_tab_line
from ref_tab_line.
if sy-subrc <> 0.
CREATE OBJECT ref_tab_line-oref
EXPORTING
i_carrid = p_carrid
i_connid = p_connid
EXCEPTIONS
nothing_found = 4.
IF sy-subrc = 4.
Message i888(sabapdocu) with 'No data'.
CONTINUE.
else.
insert ref_tab_line into table ref_tab.
ENDIF.
endif.
CALL METHOD ref_tab_line-oref->display_sflight.
ENDDO.
推荐答案
您输入了一个拼写错误.你吃了CLASS_CONSTRUCTOR
名字中的字母S
.
You have committed a typo. You ate the letter S
in the CLASS_CONSTRUCTOR
name.
是:
CLASS-METHODS class_contructor.
Method CLASS_CONTRUCTOR.
应该是:
CLASS-METHODS class_constructor.
Method CLASS_CONSTRUCTOR.
因此静态构造函数是并且永远不会被调用,因为 list
没有被初始化.
Therefore the static constructor is and will never be invoked ergo the list
is not getting initialised.
这篇关于通过静态构造函数创建 ALV 时的 NULL 对象引用.为什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文