Bilder automatisch drehen

Geschrieben am Montag, 19. Mai 2008 um 18:05

Nach stundenlanger Suche nach einer Software, die anhand der EXIF Informationen die Bilder einer Digicam automatisch korrekt dreht bin ich – kurz vor Begin einer Eigenentwicklung – auf das Tool JPEG-EXIF autorotate gestossen. Dabei handelt es sich um ein kleines Command Line Tools, dass mit dem Installer Events für das Kontextmenü im Explorer registriert. Mit einem einfach Rechts-Klick durchsucht das Programm das entsprechenden Verzeichnis (Wahlweise mit Unterverzeichnissen) und dreht sämtliche Bilder in die richtige Position mit einer sehr positiven Geschwindigkeit!

http://www.pilpi.net/software/JPEG-EXIF_autorotate.php

Auto-Inkrement in SAP

Geschrieben am Donnerstag, 8. Mai 2008 um 14:04

Scheinbar ist es im SAP nicht ohne weiteres möglich ein Feld automatisch inkrementieren zu lassen. Es scheint als müsse man sich selber um die Vergabe eines solchen Wertes kümmern. Mit einem Nummernkreisobjekt ist dies eine nicht allzu aufwändige Angelegenheit, wobei es natürlich sinnvollerweise nur an einer zentralen Stelle effektiv neue Werte in der Tabelle angelegt werden.

Nummernkreisobjekt anlegen

Mit der Transaktion SNRO kann ein solches Objekt angelegt und später angezeigt werden, um den Nummernkreis zu pflegen oder zu überwachen. Beim Anlegen wird grundsätzlich nur die Angabe einer Domäne verlangt, wobei sich hier ein rein numerisches Textfeld – z.B. NUMC10 – hervorragend eignet. Weitere Angaben sind – zumindest für einen einfachen Inkrement in einer Tabelle – nicht notwendig. Abschliessend ist zum Objekt noch ein entsprechender Nummernkreis anzulegen, wo dann auch der Start und das Ende definiert werden kann.

Nächste Nummer holen

In SAP kann mittels dem Funktionsbaustein NUMBER_GET_NEXT die nächste Nummer besorgt werden. In der Praxis sieht das dann in etwa so aus:

  call function 'NUMBER_GET_NEXT'
    exporting
      nr_range_nr = '01'
      object      = 'ZTEST
    importing
      number      = lf_meine_nummer.

Natürlich sind allfällige Exceptions abzufangen. Somit wäre unser eigentliches Problem eigentlich bereits gelöst.

Spezialfall Tabellenpflege

Problematischer wird es bei pflegbaren Daten. Der von SAP mitgelieferte Tabellenpflegegenerator erleichtert das Lebel zwar ungemein, bleibt aber halt ein generisches Konstrukt, dass in diesem Spezialfall angepasst werden muss. Grundsätzlich sollte das entsprechende Feld mal auf “Read-Only” geschaltet werden. Dies erreicht man, indem man entweder das generierte Dynpro über das Menü Umfeld -> Modifikation -> Pflegebilder entsprechend anpasst, oder indem man einen separaten Pflege-View für die Tabelle erstellt, wo das Pflegemerkmal auf “R” (für Read-Only) geschaltet werden kann. Ist dies erst einmal vollbracht, muss das Feld nun nur noch zum richtigen Zeitpunkt gefüllt werden.

SAP sieht diverse sog. Zeitpunkt vor, für die eine Form-Routine hinterlegt werden kann. Diese Zeitpunkte finden sich im Menü unter Umfeld -> Modifikation -> Zeitpunkte. Die Dokumentation zu diesen Zeitpunkten ist mehr als spärlich. Der scheinbar geeignetste Zeitpunkt zur Datenanreicherung vor der Validierung ist der Zeitpunkt 05 (beim Hinzufügen eines neuen Eintrags). Dort ist nun der Name einer Form-Routine anzugeben, welche in einem Include der Funktionsgruppe liegt und keine Parameter erwartet.

Die Form ist dann wiederum ähnlich trivial, denn die Form wird für jeden neuen Datensatz aufgerufen. Die entsprechenden Daten sind direkt über den View- oder Tabellennamen anzusprechen (Achtung: Bei Verwendung eines Views sind die Daten unbedingt über den Viewnamen anzusprechen!).

form get_id.
 
  call function 'NUMBER_GET_NEXT'
    exporting
      nr_range_nr = '01'
      object      = 'ZTEST'
    importing
      number      = TABELLE_ODER_VIEW-ID_FELD.
 
endform.

Copyright © 2001 - 2010, faebusoft.ch