子类构造函数中的错误 "No value was passed to the mandatory parameter"

Error "No value was passed to the mandatory parameter" in constructor of subclass

这是我的抽象超类:

class ZMP_ACAR definition
  PUBLIC
  ABSTRACT
  create public .

public section.
  DATA: maxSeats TYPE i,
        maxKidSeats TYPE i,
        carKidSeats TYPE TABLE OF REF TO z280819_kidseat,
        carPeople TYPE TABLE OF REF TO z280819_person.
  METHODS CONSTRUCTOR
    IMPORTING maxSeats TYPE i
              maxKidSeats TYPE i.
  METHODS goToTrip ABSTRACT.
protected section.
private section.
ENDCLASS.

CLASS ZMP_ACAR IMPLEMENTATION.
  METHOD CONSTRUCTOR.
    me->maxSeats = maxSeats.
    me->maxKidSeats = maxKidSeats.
  ENDMETHOD.
ENDMETHOD.
ENDCLASS.

这是我继承自上面抽象超类的子类

class Z30082019_BMWCAR definition
  public
  inheriting from ZMP_ACAR
  final
  create public .

public section.
  METHODS CONSTRUCTOR
    IMPORTING maxSeats TYPE i
              maxKidSeats TYPE i.
  METHODS addKidSeatToCar REDEFINITION.
  METHODS goToTrip REDEFINITION.
protected section.
private section.
ENDCLASS.

CLASS Z30082019_BMWCAR IMPLEMENTATION.
  METHOD CONSTRUCTOR.
    super->constructor( ).  "--> ERROR: No value was passed to the mandatory parameter "MAXSEATS".

    me->maxSeats = maxSeats.
    me->maxKidSeats = maxKidSeats.
  ENDMETHOD.

  METHOD goToTrip.
    ... 
  ENDMETHOD.
ENDCLASS.

它在 Z30082019_BMWCAR 的构造函数实现中抛出错误 - 行见上: ERROR: No value was passed to the mandatory parameter "MAXSEATS".

你能告诉我问题是什么吗?

从基础 class (ZMP_ACAR) 构造函数的签名可以看出,它有两个强制(非可选)导入参数。在实例化派生的 class (Z30082019_BMWCAR) 时提供它们。将多个参数传递给函数时,ABAP 语法有点臃肿,但这应该有效:

CLASS Z30082019_BMWCAR IMPLEMENTATION.
  METHOD CONSTRUCTOR.
    super->constructor( EXPORTING maxSeats = maxSeats
                                  maxKidSeats = maxKidSeats ). 
    ""// me->maxSeats and me->maxKidSeats are now inherited (public) instance variables from the super class.
  ENDMETHOD.

你也可以从 ZMP_ACAR 中完全删除构造函数并将其放入 Z30082019_BMWCAR 中。不太优雅,但它会工作。

class ZMP_ACAR definition
  PUBLIC
  ABSTRACT
  create public .

public section.
  DATA: maxSeats TYPE i,
        maxKidSeats TYPE i,
        carKidSeats TYPE TABLE OF REF TO z280819_kidseat,
        carPeople TYPE TABLE OF REF TO z280819_person.
  METHODS goToTrip ABSTRACT.
protected section.
private section.
ENDCLASS.

CLASS ZMP_ACAR IMPLEMENTATION.

ENDCLASS.
class Z30082019_BMWCAR definition
  public
  inheriting from ZMP_ACAR
  final
  create public .

public section.
  METHODS CONSTRUCTOR
    IMPORTING maxSeats TYPE i
              maxKidSeats TYPE i.
  METHODS addKidSeatToCar REDEFINITION.
  METHODS goToTrip REDEFINITION.
protected section.
private section.
ENDCLASS.

CLASS Z30082019_BMWCAR IMPLEMENTATION.
  METHOD CONSTRUCTOR.
    super->constructor( ).
    me->maxSeats = maxSeats.
    me->maxKidSeats = maxKidSeats.
  ENDMETHOD.

  METHOD goToTrip.
    ... 
  ENDMETHOD.
ENDCLASS.