Abap 语句不可访问

Abap 语句不可访问,abap,Abap,第49行有一个错误,我在那里写了调用方法lclref->lcm.如何解决它 REPORT ZPRACTICE_TILL_NOW. include zlc. include zinc. START-OF-SELECTION. create OBJECT lclref. CALL METHOD lclref->lcm . 首先包括: class zlcl DEFINITION. PUBLIC SECTION. METHODS: lcm. ENDCLASS. CLASS

第49行有一个错误,我在那里写了
调用方法lclref->lcm.
如何解决它

REPORT ZPRACTICE_TILL_NOW.

include zlc.
include zinc.

START-OF-SELECTION.
create OBJECT lclref.
CALL METHOD lclref->lcm .
首先包括:

class zlcl DEFINITION.
  PUBLIC SECTION.
  METHODS: lcm.
  ENDCLASS.

  CLASS zlcl IMPLEMENTATION.
    method lcm.
    new-LINE.
    WRITE: 'method called '.
    ENDMETHOD.
    ENDCLASS.
第二,包括:

*&---------------------------------------------------------------------*
*&  Include           ZINC
*&---------------------------------------------------------------------*

    data lclref TYPE REF TO zlcl.

“语句不可访问”错误是因为lclref是一个对象。 调用引用到类的对象的方法(在本例中为object->lclref和class->zlcl)

可以直接指定对象和方法

因此,正确的代码是:lclref->lcm

玩得开心

*&---------------------------------------------------------------------*
*&  Include           ZINC
*&---------------------------------------------------------------------*

    data lclref TYPE REF TO zlcl.
你确定第一个包含的是锌吗

class zlcl DEFINITION.
  PUBLIC SECTION.
  METHODS: lcm.
  ENDCLASS.

  CLASS zlcl IMPLEMENTATION.
    method lcm.
    new-LINE.
    WRITE: 'method called '.
    ENDMETHOD.
    ENDCLASS.
当我尝试使用你的代码时,我没有得到任何错误。请检查您的包含,哪一个是第一个

我不知道您的SAP版本是否支持您可以使用内联声明。您可以看到下面的示例。不需要额外的数据声明

DATA(lo_lcl) = new zlcl( ).
lo_lcl->lcm( ).

它不工作,我认为新的错误是“语句lclref->lcm未定义”,所以问题一定是包含锌。据我所知。开始选择事件必须如下所示:DATA:lclref TYPE REF TO zlcl。然后在引用语句的正下方创建对象lclref。然后调用方法。这应该可以工作。因为include位于选择事件的开始上方,并且该语句不可访问。因此,您可以尝试删除引用语句的include,并将其降低到选择事件的开始。我无法重现您的错误,您的系统中一定有其他内容。这种错误通常发生在语句不在过程或事件块内时,但在您的示例中并非如此。请提供一个可复制的案例。