Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Klasseninterface

Empfohlene Antworten

Veröffentlicht

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 ;)

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?

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

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

*       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.

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 :)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.