Mittwoch, 29. August 2012

Events bei Pflegeviews

SAP bietet die Möglichkeit auf gewisse Events bei generierten Pflegeviews zu reagieren.

So hat man dann z.B. die Möglichkeit, Coding vor dem Schreiben auf die DB oder nachher anzutriggern!

Sehr praktisch wenn eine Änderung einen Folgeprozess anstoßen soll, und man nicht unbedingt mit Typkopplung, welche Änderungsbelege voraussetzt verwenden will.

SDN Doku

Montag, 20. August 2012

ABAP instanceof

Im Java gibt es den Operator instanceof mit diesem kann zur Laufzeit festgestellt werden, ob ein definiertes Objekt vom Typ einer Klasse ist. Dies ist sehr praktisch, speziell Basisobjekte erweitert werden (Superklassen).

Im ABAP gibt es diesen Operator leider nicht, behelfen kann man sich indem man einen CAST ausführt, falls dieser fehlschlägt weiß man, dass das Objekt kein Typ oder Supertyp der zu vergleichenden Klasse ist.

Es gibt aber eine Helper Methode die diesen Check kapselt.

CL_WDY_WB_REFLECTION_HELPER=>IS_INSTANCE_OF

Donnerstag, 2. August 2012

BP hinzufügen Benutzer und Personalnummer

Im CRM bzw. Solution Manager werden die Mitarbeiter auch als BP in der BUT000 geführt. Zusätzlich werden für die Rolle Mitarbeiter die Felder Benutzer und Personalnummer zu Verfügung gestellt.

Diese Daten werden dann in den HR Tabellen HRP1000 bzw. HRP1001 hinterlegt, die Struktur dieser Tabellen ist ein wenig komplex, daher sollte man das manuelle Befüllen eher nicht in Betracht ziehen.

Der Baustein BP_BUPA_CREATECENTRALPERSON bietet die Möglichkeit diese Daten entsprechend zu setzen.

Falls man den BP mittels BAPI_BUPA_CREATE_FROM_DATA anlegt, hat man die GUID des Partners nicht im Zugriff, diese wird aber für den o.g. Baustein benötigt.
Mittells BUPA_NUMBERS_GET bekommt man die GUID aus dem Puffer.

Wichtig, dem Partner muss auch die Mitarbeiterrolle zugeordnet werden, dies macht man mit dem Baustein BAPI_BUPA_ROLE_ADD_2, Businesspartnerrole = BUP003

Mittwoch, 1. August 2012

Erweiterungsset auf Basis eines bestehenden Erweiterungssets


Wenn man ein neues Erweiterungsset anlegt (Viewcluster BSPWDVC_CMP_EXT) kann man ein bestehendes kopieren bzw. ein komplett neues erstellen!
Kopiert man ein bestehendes Erweiterungsset werden dieselben Controller Klassen des kopierten Sets verwendet, somit greifen Änderungen des Controllers / Contexts immer auf beide Sets durch.

Um das zu verhindern muss man ein wenig Arbeit investieren!
Zuerst muss man die Komponente die man individuell erweitern will aus dem neuen kopierten Erweiterungsset löschen (inkl. abh. Einträge).
Danach wechselt man in die Komponenten Workbench (TA BSP_WD_CMPWB), dort geht man dann im Änderungsmodus mit der neuem Erweiterungsset in die Komponente. Dann klickt man rechts oben auf "Komponentenerweiterung anlegen". Nun wird eine neue BSP Applikation angelegt, welche als Basis für die Erweiterungen dient!
Will man nun für einen speziellen View bereits existieren Controller bzw. Context Klassen aus einem anderen Erweiterungsset nutzen, muss man diesen View erweitern (Kontextmenü auf Viewknoten) Es werden nun vom System 2 Klassen generiert ZL*IMPL und ZL*CTXT, diese beiden Klassen bitte merken!

Nach der Generierung wechselt man in die se24 und löscht diese beiden neuen Klassen!
Danach kopiert man die Controller und Context Klasse des ursprünglichen Erweiterungssets mit den zuvor gelöschten Klassennamen.
In der Controllerklasse muss noch die richtige Kontextklasse hinterlegt werden!
Einmal ist diese als Attribut referenziert und einmal in der Methode WD_CREATE_CONTEXT.

Danch sollte in der Workbench in der entsprechenden Komponente zu dem neuen Erweiterungsset die bereits bestehende Erweiterung ziehen!