Text editieren, FuB READ_TEXT, EDIT_TEXT

Wer braucht das nicht auch mal. Einen Text editieren, der sich mit der Transaktion SO10 nicht editieren lassen will!

In diesem Beispiel wollen wir einen Text eines bestimmten objekt-Typs editieren. Die Transaktion SO10 scheint dafür aber nicht so ganz geeignet, da hiermit keine Texte bearbeitet werden können, die als Objekttyp etwas anderem als „TEXT“ zugeordnet sind. Mit einem kleinen Trick geht’s dann aber doch!

Zunächst suchen wir nach dem Objektschlüssel. Dieser ist je nach Anwendung an verschiedenen Stellen zu finden und ist sehr individuell. Das hier gezeigte Beispiel soll nur exemplarisch für alle anderen Fälle gelten.

Fall: automatische Rechnungseingangsverarbeitung, ein bestimmter Text enthält nicht plausible Zeichen.

Weiterlesen

Belegübersicht in Bestellung

In der Transaktion zur Bestellschreibung kann die Belegübersicht angezeigt werden. Dieses Fenster kann mit der Maus in der Breite verändert werden. Manchmal kommt es vor, das sich das Fenster danach nicht mehr vergrößern lässt. Man ist einfach nicht in der Lage, die Fensterkanten mit der Maus zu erreichen. Hierzu gibt es einen Hinweis 197012. Die Tabelle ESDUS enthält Einträge zu dynamischen Benutzereinstellungen. In diesem Fall hilft es, wenn die Einträge zum Vorgang gelöscht werden. Nach einem erneuten Aufruf der Transaktion ME21n ist die Belegübersicht wieder in den Originalzustand versetzt.

Alternativ können auch die Einträge zu

SAPLMEGUI/0000 Tree-Width und

Tree-Control Tree-Width

mit dem Wert 132 auf den Originalzustand zurückgesetzt werden.

alt

SBWP – Worklist eines anderen Benutzers anzeigen

F.: Gibt es eine Möglichkeit, die Worklist eines bestimmten Benutzers einzusehen?

A.: Es scheint kein Administrationswerkzeug zu existieren, mit dem die Worklist eines bestimmten Benutzers einzusehen wäre. Hier wird gezeigt, wie ein SAP-Funktionsbaustein dazu eingesetzt werden kann. Der hier gezeigte Report ist aufgrund einer Dringlichkeit sehr schnell (quick and dirty) entstanden und soll zur Erweiterung anregen. Sehr empfehlenswert ist auch diese Seite: http://www.alv-grid-display.de/alv_grid_de.html . Dort kann ruck-zuck eine ALV-Anzeige realisiert werden.

Weiterlesen

Dokumentation für kundeneigene Entwicklung anlegen

Implementierung einer kundeneigenen Dokumentation in die GHT/Anforderungsmaske

Häufig möchte man seinen kundeneigenen Entwicklungen auch eine Dokumentation hinzufügen, die über den Menüpunkt ->Hilfe Zur Anwendung

——- vielen Dank an Sven für diesen Tipp ——–

Mit der Transaktion SE61 können Dokumente zur Anwendung angelegt werden.

image009

image010

Nachdem das Dokument aktiviert und somit in einen Transportauftrag aufgenommen wurde, steht es in der Hilfe zur Verfügung.

image011

 

 

 

 

 

 

im Hintergrund ausgeführter Report / Ausgabe weiterverarbeiten

Wir benötigen eine Auswertung, die periodisch im Hintergrund ausgeführt werden soll und die Daten in eine Kundeneigene Tabelle schreibt. Normalerweise würden wir die Auswertelogik in ein programm packen. Da der Programmierer aber eine Menge Arbeit sparen kann, soll hier die Möglichkeit aufgezeigt werden wie man mit einen Standard-Report die ausgegebenen daten nutzen kann.

Weiterlesen

Datenbankcluster schreiben und lesen

Ein externes Auswertetool (z.B. SAS BI) soll Daten zu bestimmten Inhalten lesen die, in SAP R3, nicht in Tabellen vorgehalten werden sondern über Funktionsbausteine zusammengestellt werden müssen. Hierfür ist ein Report erstellt worden, der die Daten in ein Datenbankcluster schreibt. Es handelt sich um eine Kopie des Programms RM06EL00 (Einkaufsbelege) das um die genannte Funktion erweitert wurde.

Ein Beispiel zum befüllen eines Datenbankclusters = Anhang Cluster_1.pdf

Das Cluster hält nun die Daten in komprimierter Form in der Datenbank. Ein direktes auslesen der Tabelle macht keinen Sinn un deswegen geschieht das auslesen des Clusters hier mit einem Funktionsbaustein, der per RFC-Aufruf aus dem Fremdsystem gestartet wird und die entsprechenden Daten zurückliefert.

CALL FUNCTION ‚Z_WE_SAS‘ „DESTINATION ‚XXXXXXXX‘
EXPORTING
VARIANTE = VARIANTE
ZUVON_N = ZUVON_N
ZUBIS_N = ZUBIS_N
DATVON_M = DATVON_M
DATBIS_M = DATBIS_M
ACTION = ACTION
TABLES
LISTE = LISTE
LISTETXT = LISTETXT
CONTAINER = CONTAINER
* EXCEPTIONS
* NOT_FOUND = 1
* OTHERS = 2
.

Ein Beispiel zum auslesen eines Datenbankclusters = Anhang Cluster_2.pdf

Rahmenprogramm mit Absprung

Die Transaktionen ZME21n und ZME22n wurden eingeführt um einen eigenen Weg bei der Bestellschreibung zu beschreiten. Die Hintergründe hierzu möche ich nicht weiter erläutern, es geht nur darum, einige Möglichkeiten der Programmierung festzuhalten. Die Besonderheit besteht darin, dass hier ein Programm mit den o.g. Transaktionen gestartet wird und in Abhängigkeit verschiederner Randbedingungen Parameter gesetzt und im Speicher gehalten werden obwohl das aufrufende Programm verlassen wird. Weiterhin werden Unterprogramme mit Parameterübergabe gestartet, die nicht im Rahmenprogramm sondern in eigenen Reports vorhanden sind.


Schnittstellenprogramm über Batch-Input

Intension

Hauseigene Versorgungskräfte sind für die Pflege der Materialschränke auf verschiedenen Stationen verantwortlich. Sie sollen ständig den Vorrat auffüllen den die Stationskräfte dort entnehmen. Dazu wurde bisher händich ein Bestellformular ausgefüllt dem Lager übermittelt. Mittlerweile wurde dieses Verfahren elektronisch abgebildet. Dafür wurden sog. Handlesegeräte angeschafft die mittels Barcodescanner die erforderlichen Daten elektronisch erfassen. Damit diese Daten weiterhin automatisch in das SAP-System aufgenommen werden, wurde eine Schnittstelle entwickelt. Dabei wird eine von den Handlesegeräten erzeugte Datei über einen cronologisch laufenden Job Im SAP eingelesen und verbucht. Als Resultat stehen Reservierungen bereit die dann im Lager weiter bearbeitet werden können.

Vereinbarungen

Die Bewegungsart wird aus der Länge des Adresscodes abgeleitet.

Länge des Adcodes = 8-stellig, =>Bewegungsart = 261,

Länge des Adcodes = 9-stellig, =>Bewegungsart = 201.

Basisdatum = akt. Datum

Werk = 100 (fest vorgegeben)

Warenempfänger = Adresscode (kommt aus der Schnittstellendatei)

Kostenstelle wird abgeleitet aus dem Adresscode (Adresscode minus letzte 2 Stellen)

Material = Materialnummer (aus Schnittstellendatei)

Menge = Menge (aus Schnittstellendatei)

LORT =

Besonderheit:

Bei Bewart 261 erhält das Feld Auftrag die Kostenstelle, das Feld Kostenstelle bleibt leer.

Kostenstellen werden zusammenhängend erfasst. D.h. Zu je einer Kostenstelle werden alle Reservierungen in eine Liste aufgenommen.

Schnittstellendatei

Die Spalten der Datei sind folgendermaßen strukturiert:

Personalnummer

Wird von SAP nicht benötigt, bleibt aber als Kopie im Dateisystem

Kostenstelle

Zeitstempel

Zeitpunkt des einlesens in den Handscanner

Materialnummer

Menge

Sicherheitskopie

Nach erfolgreichem lesen der Datei wird eine Kopie angelegt die jeweils Daten eines Tages abbildet, z.B. CBSI20041213 für den 13.12.2004.

Spalten der Datei

Personalnummer

Kostenstelle

Materialnummer

Menge

Zeitstempel

Aus Schnittstellendatei

Datum und Zeit

Zeitpunkt der Verbuchung in SAP

Fehlerhafte Datensätze

Datensätze die nicht verbucht werden konnten, Gründe hierfür sind Bspw. Material wird gesperrt, Adresscode nicht vorhanden etc., werden in einer gesonderten Datei im Verzeichnispfad aufbewahrt.

Diese Datei kann mit dem gleichen Report zu einem späteren Zeitpunkt beliebig oft neu eingelesen werden. Dabei ist zu beachten, dass das Kontrollfeld „Datei löschen“ in jedem Fall zu kennzeichnen ist. Andernfalls werden bei wiederholtem Fehler die Datensätze erneut in diese Datei geschrieben, und diese würden dann später mehrfach in der Reservierungsliste erscheinen.

28.2.2005 Änderung:

Die Fehlerdatei wird automatisch beim nächsten Lauf wieder eingelesen. Dadurch werden Datensätze die vorher evtl. gesperrt waren erneut eingelesen.

ABAP-Programm

Name : Z_Reservierungsliste

Beteiligt: TC MB21

Start: im Hintergrund

Periode: alle 5 Minuten

Der Report ist auch im Dialog lauffähig. Hier ist es möglich abweichende Parameter als Variante zu speichern, oder für Diagnosezwecke das Debugging einzuschalten. Die Daten werden als BATCH-Input Datei verarbeitet und mit der Transaktion MB21 verbucht.

Name des Dateipfades: Zeigt auf die Schnitstellendatei. (Default)

Anzulegende Sicherheitskopie: Diese Datei wird enthält alle Datensätze die von SAP eingelesen wurden. (Default)

Sichtbar abspielen: Führt im Dialogbetrieb dazu jede Transaktion im GUI anzuzeigen, ähnlich wie bei Batch-Input-mappen.

Debug: Das Protokoll enthält ausser den Angeben zu den verbuchten Reservierungen auch weitere Angaben zur evtl. Fehlersuche.

Datei löschen: löscht die Schnittstellendatei nach dem einlesen. Sollte für Produktivbetrieb auf jeden Fall gekennzeichnet sein, da sonst die gleichen Daten immer wieder neu eingelesen werden. (Default)


Meldungsfenster als Popup mit Parameterübergabe

  1. Aufruf eines selbst definierten Meldungsfenster als Popup

CALL FUNCTION ‚Z_POPUP_RETURN_PARAM‘
TABLES
RETURN = SD_RETURN.

  1. Funktionsdefinition:

FUNCTION Z_POPUP_RETURN_PARAM.
*“———————————————————————-
*“*“Lokale Schnittstelle:
*“ TABLES
*“ RETURN STRUCTURE BAPIRET2 OPTIONAL
*“———————————————————————-


RETURN = RETURN.
CLEAR I_RETURN[].
LOOP AT RETURN INTO I_RETURN.
* IF I_RETURN-TYPE EQ ‚E‘.
APPEND I_RETURN.
* ENDIF.
ENDLOOP.

CALL SCREEN 201 STARTING AT 1 3
ENDING AT 120 16.
ENDFUNCTION.

  1. DYNPRO Ablauflogik


PROCESS BEFORE OUTPUT.
*&SPWIZARD: PBO FLOW LOGIC FOR TABLECONTROL ‚CTL_RET‘
MODULE CTL_RET_CHANGE_TC_ATTR.
*&SPWIZARD: MODULE CTL_RET_CHANGE_COL_ATTR.
LOOP AT I_RETURN
WITH CONTROL CTL_RET
CURSOR CTL_RETCURRENT_LINE.
MODULE CTL_RET_GET_LINES.
*&SPWIZARD: MODULE CTL_RET_CHANGE_FIELD_ATTR
ENDLOOP.

* MODULE STATUS_0201.
*
PROCESS AFTER INPUT.
*&SPWIZARD: PAI FLOW LOGIC FOR TABLECONTROL ‚CTL_RET‘
LOOP AT I_RETURN.
CHAIN.
FIELD I_RETURNTYPE.
FIELD I_RETURNID.
FIELD I_RETURNNUMBER.
FIELD I_RETURNMESSAGE.
FIELD I_RETURNLOG_NO.
FIELD I_RETURNLOG_MSG_NO.
FIELD I_RETURNMESSAGE_V1.
FIELD I_RETURNMESSAGE_V2.
FIELD I_RETURNMESSAGE_V3.
FIELD I_RETURNMESSAGE_V4.
FIELD I_RETURNPARAMETER.
FIELD I_RETURNROW.
FIELD I_RETURNFIELD.
FIELD I_RETURNSYSTEM.
ENDCHAIN.
ENDLOOP.
* LOOP WITH CONTROL CTL_RET.
* CURSOR CTL_RET-CURRENT_LINE.
* MODULE 201_GET_MARK.
* ENDLOOP.
MODULE CTL_RET_USER_COMMAND.
*&SPWIZARD: MODULE CTL_RET_CHANGE_TC_ATTR.
*&SPWIZARD: MODULE CTL_RET_CHANGE_COL_ATTR.

* MODULE USER_COMMAND_0201.

führende Nullen

Hier geht es nicht darum, wie man Mitarbeiter in Leitungspositionen los wird. Vielmehr soll gezeigt werden, wie Datenfelder Tabellenkonform verwendet werden können.

Oft ist es so, dass ein Tabellenvergleich nur funktioniert, wenn die Datenfelder einander entsprechen. So kann z.B. ein WHERE in einer SQL-Bedingung (numerisch) nur wahr sein, wenn die Felder gleichartig definiert sind.

führende Nullen entfernen
    SHIFT I_SAKTO_C LEFT DELETING LEADING ‚0‘.
    

mit führenden Nullen auffüllen
    UNPACK I_SAKTO_C TO I_SAKTO_C.