Freitag, 21. Dezember 2012

Führende Nullen

Im ABAP findet man immer wieder folgenden Code
UNPACK lf_field TO lf_field.
Damit wird erreicht dass das Feld mit führenden Nullen aufgefüllt wird.
Manchmal gibt es auch den Ansatz den  Wert in ein NUMC Feld zu schieben und dann wieder retour.

Normalerweise sollte man aber für das Auffüllen der Nulllen bzw. der Umwandlung von Daten in ein internes Format, die SAP eigenen Konvertierungsexits verwenden!
Diese werden auch in der Domäne des entsprechenden Datentyps definiert!

Der FuBa Name setzt sich dann wie folgt zusammen

CONVERSION_EXIT_xxx_INPUT
CONVERSION_EXIT_xxx_OUTPUT

xxx wird durch den entsprechenden Exit welcher in der Domäne hinterlegt ist ersetzt!

Für Datentypen welche führende Nullen haben, ist dies in der Regel der Exit ALPHA

_INPUT fügt dann die führenden Nullen hinzu und
_OUTPUT entfernt diese dann

Beispiel

DATA: lf_partner TYPE bu_partner.
lf_partner = '1001'.
"lf_partner => 1001
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'  EXPORTING    input  = lf_partner  IMPORTING    output = lf_partner.
"lf_partner => 0000001001

Dienstag, 27. November 2012

SAP ITS Laden von MIME Objekten erzeugt 404 HTTP Fehler

Im SAP werden Service über die TA SICF verwaltet, damit eine ITS Transaktion funktioniert muss der zugrunde liegende Service gestartet sein!
Es kann nun aber vorkommen, dass die Anwendung nicht lädt, schaut man sich dann das Netzwerkprotokoll  mittels eines Browserentwicklertools an (z.B. Firebug, ...), kann man erkennen, dass gewisse Resourcen nicht geladen werden können und einen 404 HTTP Fehler verursachen!

Handelt es sich dabei um Resourcen die den URL Prefix /sap/public/bc/its/mime/ werden diese über das Servelet CL_HTTP_EXT_ITS_MIMES geladen.

Sollte der Service aktiv sein und das Problem weiter bestehen, sollte der Service SYSTEM nochmals publiziert werden. Dies kann man mittels TA SE80 machen.

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