Имя класса PUBLIC в текущем CLASS POOL должно быть "...", а не "..." - PullRequest
1 голос
/ 23 сентября 2019

Я пытаюсь создать локальный класс (Z_MY_LOCAL_CLASS) внутри глобального класса (Z_MY_GLOBAL_CLASS), нажав «Локальные определения / реализации» в транзакции se24.

button

Впоследствии я скопировал исходный код другого класса из его представления на основе исходного кода в текстовую область, которая появилась после того, как я нажал кнопку «локальные определения».

enter image description here

*"* use this source file for the definition and implementation of
*"* local helper classes, interface definitions and type
*"* declarations

class Z_MY_LOCAL_CLASS definition
  public
  final
  create public .

public section.

  class-methods SOME_STATIC_METHOD
    importing
      !IS_IS type Z_SOME_TYPE
    returning
      value(RS_RETURN) type Z_SOME_TYPE .
protected section.
private section.
ENDCLASS.



CLASS Z_MY_LOCAL_CLASS IMPLEMENTATION.


* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method Z_MY_LOCAL_CLASS=>SOME_STATIC_METHOD
* +-------------------------------------------------------------------------------------------------+
* | [--->] IS_IN                   TYPE        Z_SOME_TYPE
* | [<-()] RS_RETURN               TYPE        Z_SOME_TYPE
* +--------------------------------------------------------------------------------------</SIGNATURE>
  method SOME_STATIC_METHOD.
    "" some coding
  endmethod.
ENDCLASS.

При попытке активировать кодировку я получаю следующее сообщение:

Имя класса PUBLIC в текущем CLASS POOLдолжно быть "Z_MY_GLOBAL_CLASS", а не "Z_MY_LOCAL_CLASS".

или на немецком языке:

Der Name der PUBLIC-Klasse im aktuellen CLASS-POOL muß "Z_MY_GLtAL_CL"Z_MY_LOCAL_CLASS "lauten.

Что это значит?

1 Ответ

4 голосов
/ 23 сентября 2019

Как часто в SAP / ABAP, сообщение об ошибке не описывает фактическую ошибку.В определении вашего локального класса измените эти строки

class Z_MY_LOCAL_CLASS definition
  public
  final
  create public .

на

class Z_MY_LOCAL_CLASS definition final create public.

, и он должен скомпилироваться.Таким образом, проблема в том, что только глобальные классы могут содержать public.При копировании / переносе исходного кода из существующих глобальных классов в локальные классы вы должны удалить эти строки.

...