Geschrieben am Donnerstag, 28. Januar 2010 um 14:45
In ABAP gibt es nach wie vor keinen echten boolschen Datentyp. Stattdessen wird ein Charactertyp mit einer Länge von 1 verwendet. Bindet man die Typen-Gruppe ABAP ein, erhält man nebst einem Typ abap_bool auch zwei Konstanten abap_true und abap_false für “boolsche” Vergleiche. Da es sich hierbei jedoch eben nicht um einen boolschen Typ handelt, kann der Werte auch nicht mittels NOT oder ähnlichem invertiert werden. Da mal oftmals auf einen invertierten Wert angewiesen ist, habe ich bis anhin einfach die folgende einfach Abfrage gemacht.
data: lf_bool type abap_bool
.
*...
if lf_bool = abap_true.
lf_bool = abap_false.
else.
lf_bool = abap_true.
endif.
Mittlerweile habe ich aber eine etwas einfachere Möglichkeit gefunden, die sich zu nutzen macht, dass es sich um ein Charactertyp handelt und somit mit dem Befehl Translate eine einfache Zeichenersetzung möglich ist. Daraus ergibt sich der nachfolgende 1-Zeiler, welcher “true” in “false” und umgekehrt invertiert.
data: lf_bool type abap_bool
.
*...
translate lf_bool using ' XX '.
Geschrieben am Freitag, 11. September 2009 um 15:07
Immer wieder werden im SAP Langtexte benötigt, die einfach über den Funktionsbaustein READ_TEXT gelesen werden. Dieser Baustein gibt aber gar keinen Plaintext zurück, sondern sog. ITF Text, welcher von SAPScript verwendet wird. In der ersten Spalte steht somit die entsprechenden Absatzformatierung, welche steuert, wo eine neue Zeile bzw. ein neuer Absatz beginnt. Zudem hängt an der Text-Id die Zeilenbreite (Einsehbar über Transaktion SE75), welche hier streng berücksichtigt wird. Somit erhalten wir im Idealfall bereits einen Text mit 132 Zeichen Zeilenbreite, im Normalfall wird dies jedoch nur ein Text mit einer Breite von 72 Zeichen sein und unter Umständen beträgt die Breite aber auch nur 40 Zeichen. Weiterlesen »
Geschrieben am Samstag, 1. November 2008 um 11:15
Hat die grösse der Outlook Kontakte erst mal eine gewisse Grösse erreicht wird ersichtlich was für ein Chaos hier eigentlich vorherscht. Kontakte werden mal mit Nachname mal Vorname zuerst angezeigt, schreibt man E-Mails erscheinen teils nur die E-Mail Adressen, teils nur die Namen (auch hier in verschiedenen Variationen) und auch ein guter Mix von allen Varianten…
Schuld daran sind im Endeffekt die Felder “Speichern als” bzw. “Anzeigen als” für die E-Mail Adressen, welche beim Anlegen oder importieren eines Kontakts automatisch befüllt werden. Zwar kann in den Optionen von Outlook hier Einfluss genommen werden, was der Aufbau dieser Felder anbelangt, aber nachträglich bereinigt Outlook hier gar nichts mehr.
Genervt von diesem Umstand habe ich mir eine kleine Prozedur geschrieben, die ganz primitiv diese Felder neu aufbaut und so für eine Vereinheitlichung sorgt.
Getestet mit Microsoft Outlook 2007, Verwendung auf eigenen Gefahr
Public Sub KontakteAktualisieren(Optional bolLastNameFirst As Boolean = False, _
Optional bolAlwaysShowAdress As Boolean = False)
Dim items As items
Dim item As ContactItem
Dim folder As folder
Dim contactItems As Outlook.items
Dim itemContact As Outlook.ContactItem
Dim strName As String
Dim bolMultiple As Boolean
Set folder = Session.GetDefaultFolder(olFolderContacts)
Set items = folder.items
Count = items.Count
If Count = 0 Then
MsgBox "Keine Kontakte vorhanden", vbOKOnly + vbInformation
Exit Sub
End If
'Filter on the message class to obtain only contact items in the folder
Set contactItems = items.Restrict("[MessageClass]='IPM.Contact'")
For Each itemContact In contactItems
If bolAlwaysShowAdress = True Or itemContact.Email2Address <> "" Then
bolMultiple = True
Else
bolMultiple = False
End If
If bolLastNameFirst = False Then
strName = itemContact.FirstName + " " + itemContact.LastName
Else
strName = itemContact.LastName + ", " + itemContact.FirstName
End If
itemContact.FileAs = strName
If bolMultiple = False Then
If itemContact.Email1Address <> "" Or itemContact.Email1AddressType <> "SMTP" Then
itemContact.Email1DisplayName = strName
End If
If itemContact.Email2Address <> "" Then
itemContact.Email2DisplayName = strName
End If
If itemContact.Email3Address <> "" Then
itemContact.Email3DisplayName = strName
End If
Else
If itemContact.Email1Address <> "" Then
itemContact.Email1DisplayName = strName + " (" + itemContact.Email1Address + ")"
End If
If itemContact.Email2Address <> "" Then
itemContact.Email2DisplayName = strName + " (" + itemContact.Email2Address + ")"
End If
If itemContact.Email3Address <> "" Then
itemContact.Email3DisplayName = strName + " (" + itemContact.Email3Address + ")"
End If
End If
itemContact.Save
Next
MsgBox "Kontakte wurden aktualisiert", vbOKOnly + vbInformation
End Sub