CroQuet Geschrieben 13. November 2007 Geschrieben 13. November 2007 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 Zitieren
MAJOR_TOM Geschrieben 13. November 2007 Geschrieben 13. November 2007 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? Zitieren
CroQuet Geschrieben 13. November 2007 Autor Geschrieben 13. November 2007 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 Zitieren
MAJOR_TOM Geschrieben 13. November 2007 Geschrieben 13. November 2007 *----------------------------------------------------------------------* * 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. Zitieren
CroQuet Geschrieben 19. November 2007 Autor Geschrieben 19. November 2007 Also ich habs jetzt nicht so gemacht,sondern mit nem Makro (jaja ich weiß, noch schmutziger ) aber so spar ich am meisten coding mit dem wenigsten Aufwand... Danke für die Wegführung Zitieren
Empfohlene Beiträge
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.