Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hi,

erstmal sorry für den blöden Titel...

Thema ist folgendes:

Ich habe eine Klasse die als Super Class für viele andere zur Verfügung steht (als Vereinfachung nehm ich einfach [Auto])

Dieses [Auto] eben vererbt seine Methoden an [bMW] [Mercedes] und [VW].

Nun ist aber in JEDER Subklasse die Mehtode "Blinken" implementiert, was ja falsch ist, da das in Auto gehört (wo es nicht ist) (sinn oder unsinn mal dahingestellt).

Jedenfalls suche ich nun einen Weg EINE Klasse hierfür zu verwenden, denn ich kann zwar alle 3 Subklassen in [Auto] laden, habe dann aber keinen Zugriff auf "Blinken" denn die Methode gibts da nicht. (will mir also den Aufwand sparen zwischen [bMW] [Mercedes] und [VW] unterscheiden zu müssen)

Die Klassen selbst kann ich nicht ändern, kann mir aber was drum herum bauen...

Sprache ist ABAP.

Danke schonmal für die zahlreichen Antworten ;)

Geschrieben

Hi CroQuet,

implementieren die Subklassen ein gemeinsames Interface? Wenn nicht, sehe ich eigentlich keine Möglichkeit, auf die Unterscheidung zwischen [bMW], [VW] usw. zu verzichten...

Handelt es sich um SAP Standardklassen? Wenn ja um welche?

Geschrieben
Hi CroQuet,

implementieren die Subklassen ein gemeinsames Interface? Wenn nicht, sehe ich eigentlich keine Möglichkeit, auf die Unterscheidung zwischen [bMW], [VW] usw. zu verzichten...

Handelt es sich um SAP Standardklassen? Wenn ja um welche?

ne, nix Interface

geht um:

cl_wd_input_field

cl_wd_dropdown_by_idx

cl_wd_dropdown_by_key

.

.

.

die haben alle einen gemeinsamen nenner die Klasse CL_WD_UIELEMENT

aber die Mehtode SET_READ_ONLY die ich da bräuchte fehlt...

aber vielleicht hab ich ja auch was übersehen :beagolisc

Geschrieben

*----------------------------------------------------------------------*

*       CLASS cl_drumherum DEFINITION

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

CLASS cl_drumherum DEFINITION INHERITING FROM cl_wd_uielement.

  PUBLIC SECTION.

    METHODS: set_read_only IMPORTING value TYPE abap_bool,

             init_object IMPORTING i_object TYPE REF TO object."cl_wd_abstract_input_field.

  PRIVATE SECTION.

    DATA: m_abstract TYPE REF TO object."cl_wd_abstract_input_field.

ENDCLASS.                    "cl_drumherum DEFINITION


*----------------------------------------------------------------------*

*       CLASS cl_drumherum IMPLEMENTATION

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

CLASS cl_drumherum IMPLEMENTATION.

  METHOD init_object.

    m_abstract = i_object.

  ENDMETHOD.                    "init_object


  METHOD set_read_only.

    DATA: method_name TYPE string VALUE 'SET_READ_ONLY'.

    CALL METHOD m_abstract->(method_name)

      EXPORTING

        value = value.

  ENDMETHOD.                    "set_read_only

ENDCLASS.                    "cl_drumherum IMPLEMENTATION


DATA: cl_input TYPE REF TO cl_wd_input_field,

      cl_dropdown TYPE REF TO cl_wd_dropdown_by_idx,

      cl_drum  TYPE REF TO cl_drumherum.


START-OF-SELECTION.


  cl_input = cl_wd_input_field=>new_input_field( ).

  cl_dropdown = cl_wd_dropdown_by_idx=>new_dropdown_by_idx( bind_texts = 'X' ).


  CREATE OBJECT cl_drum.

  CALL METHOD cl_drum->init_object( i_object = cl_input ).

  CALL METHOD cl_drum->set_read_only( value = 'X' ).


  CALL METHOD cl_drum->init_object( i_object = cl_dropdown ).

  CALL METHOD cl_drum->set_read_only( value = 'X' ).
Ist zwar nicht streng objektorientiert, aber in ABAP sehe ich keine andere Möglichkeit, deine Anforderung zu realisieren. Mann müsste nur noch eine mögliche Exception bei
CALL METHOD m_abstract->(method_name)

      EXPORTING

        value = value.

abfangen.

Geschrieben

Also ich habs jetzt nicht so gemacht,sondern mit nem Makro (jaja ich weiß, noch schmutziger :D ) aber so spar ich am meisten coding mit dem wenigsten Aufwand... Danke für die Wegführung :)

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...