Hallo,
ich arbeite an der Erweiterung eines SAP-Reportes, der zur Zeit mandantenabhängig arbeitet. Ich bin nun dabei, diesen mandantenunabhängig zu machen, da ich auf acht Mandanten zugreifen muß und ich beim Abgleichen von externen Protokollen vorher nicht weiß, zu welchem Mandanten das Protokoll gehört. Nach Murphy ist es ja immer der, den man als letztes aufruft.
Bisher hat auch alles wunderbar geklappt. Ich kann die Daten lesen und auch darstellen. Problematisch wird nun aber das Setzen eines Status. Hier stosse ich an meine Grenzen. Ich habe unter anderem die Klasse CL_HR_B2A_DOCUMENT kopiert. Eigentlich kein Problem. Nur hat diese einige Kindklassen, die in Tabellen z.B. t50ba eingetragen ist. Da hört natürlich alles auf. Ich kann ja nicht irgendwelche Tabellen verbiegen, die für den normalen Betrieb notwendig sind.
Das Problem ergibt sich in einer Methode, wenn aus einer anderen kopierten Klasse (ZCL_HR_B2A_TRANSFER) heraus ein Objekt mit der Referenz zur Klasse ZCL_HR_B2A_DOCUMENT mit der nachfolgenden Anweisung angelegt wird:
Code: Alles auswählen.
* ... create instance
CREATE OBJECT b2adoc TYPE (l_t50ba-badoc).
IF sy-subrc <> 0.
CONCATENATE l_t50ba-badoc text-002 INTO l_text SEPARATED BY space.
CALL METHOD cl_hr_b2a_admin=>prot_write
EXPORTING i_glbid = i_glbid
i_level = 2
i_mtype = 'E'
i_color = 6
i_text = l_text.
RAISE no_object.
ELSE.
e_b2adocref = b2adoc.
ENDIF.
Der TYPE aus der T50ba ist dann z.B. CL_HR_B2A_DE_ST_LSTA
Er meckert jetzt natürlich, da die Typen nicht mitneinander kompatibel sind. Der Weg über kopierte Klassen funktioniert also nicht. Nun meine Fragen:
- Kann man da über Vererbung etwas regeln?
- Oder kann man dem System bei Aufruf von Methoden, die auf mandantenabhängige Daten zugreifen, einen anderen Mandanten vorgauckeln als der angemeldete?
Gruß.
SkyHobbit