“Boolsche” Variabeln invertieren

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 '.

Langtexte lesen und formatieren

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 »

Outlook Kontakte vereinheitlichen

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

Copyright © 2001 - 2010, faebusoft.ch