Search code examples
constructorabstract-classabap

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


This is my abstract superclass:

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.

This is my subclass inheriting from an abstract superclass above

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.

It throws an ERROR inside Z30082019_BMWCAR's constructor implemenatation - line see above: ERROR: No value was passed to the mandatory parameter "MAXSEATS".

Can you tell me what is the problem?


Solution

  • Also U can completely remove constructor from ZMP_ACAR and put it inside Z30082019_BMWCAR. Not so elegant but it would work.

    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.