Show TOC Anfang des Inhaltsbereichs

Besondere Ausgabeformate  Dokument im Navigationsbaum lokalisieren

Eine Zusammenfassung aller Aufbereitungsoptionen der WRITE-Anweisung finden Sie unter Aufbereitungsoptionen. Im vorliegenden Topic wird etwas näher auf einige besondere Aufbereitungsoptionen eingegangen. Diese Optionen formatieren die Ausgabe entsprechend bestimmter Einträge, die in speziellen Datenbanktabellen vorgenommen werden müssen. Diese Tabellen werden vom Kunden normalerweise beim Customizing gepflegt (Mehr Informationen finden Sie in der Dokumentation Customizing).

Länder- und benutzerspezifische Ausgabeformate

Für Zahlen- und Datumsfelder sind die Ausgabeformate im Benutzerstammsatz des jeweiligen Programmbenutzers definiert. Sie haben die Möglichkeit diese Einstellung vom Programm aus zu ändern, indem Sie folgende Anweisung verwenden:

Syntax

SET COUNTRY c.

Für c müssen Sie entweder ein Länderkennzeichen, welches in der Tabelle T005X vorhanden ist, oder space einsetzen.

Ist c ungleich space, schaltet das System die Einstellung des Benutzerstammsatzes aus und sucht in der Tabelle T005X nach dem Länderkennzeichen. Wird dieses gefunden, wird sy-subrc auf 0 gesetzt und die Ausgabe aller nachfolgenden WRITE-Anweisungen wird entsprechend den in T005X angegebenen Einstellungen aufbereitet. Wird das Länderkennzeichen nicht gefunden, wird sy-subrc auf 4 gesetzt und für alle nachfolgenden WRITE-Ausgaben werden Dezimaltrennzeichen als Punkt '.' ausgegeben und Datumsangaben als MM/DD/YYYY formatiert.

Ist c gleich space, wird die Tabelle T005X nicht gelesen, sondern das System schaltet wieder auf die Einstellungen des Benutzerstammsatzes um. In diesem Fall ist sy-subrc immer gleich null.

Die Pflege der Tabelle T005X ist Teil des Customizing. Sie können die Einträge aber auch über System ® Dienste ® Tabellenpflege anzeigen oder ändern.

Beispiel

REPORT demo_list_set_country LINE-SIZE 40.

DATA: num TYPE p DECIMALS 3 VALUE '123456.789'.

ULINE.
WRITE: / 'INITIAL:'.
WRITE: / num, sy-datum.
ULINE.

SET COUNTRY 'US'.
WRITE: / 'US,      sy-subrc:', sy-subrc.
WRITE: / num, sy-datum.
ULINE.

SET COUNTRY 'GB'.
WRITE: / 'GB,      sy-subrc:', sy-subrc.
WRITE: / num, sy-datum.
ULINE.

SET COUNTRY 'DE'.
WRITE: / 'DE,      sy-subrc:', sy-subrc.
WRITE: / num, sy-datum.
ULINE.

SET COUNTRY 'XYZ'.
WRITE: / 'XYZ,     sy-subrc:', sy-subrc.
WRITE: / num, sy-datum.
ULINE.

SET COUNTRY space.
WRITE: / 'space,   sy-subrc:', sy-subrc.
WRITE: / num, sy-datum.
ULINE.

In diesem Programm werden eine gepackte Zahl num und das Systemfeld sy-datum mit verschiedenen Ausgabeformaten ausgegeben.

Diese Grafik wird im zugehörigen Text erklärt

Die erste und letzte Ausgabe sind benutzerspezifisch. Bei den übrigen wird die Tabelle T005X gelesen. Der Eintrag 'XYZ wird nicht gefunden und das Ausgabeformat wird vom System gesetzt. Die Einträge in T005X sind kundenspezifisch.

Währungspezifische Ausgabeformate

Um die Ausgabe eines Zahlenfelds entsprechend einer bestimmten Währung aufzubereiten, verwenden sie die Option CURRENCY der Anweisung WRITE wie folgt:

Syntax

WRITE f CURRENCY c.

Diese Anweisung legt die Anzahl der Dezimalstellen in der Ausgabe gemäß der Währung c fest. Ist der Inhalt von c in der Tabelle TCURX als Währungsschlüssel CURRKEY vorhanden, setzt das System die Anzahl der Dezimalstellen entsprechend des Eintrags CURRDEC in TCURX. Ansonsten wird die Standardeinstellung von zwei Dezimalstellen verwendet. Dies bedeutet, dass in TCURX nur Ausnahmefälle mit einer von zwei abweichenden Anzahl von Dezimalstellen aufgeführt sein müssen.

Das Ausgabeformat für Währungen ist unabhängig von eventuell im Programm vorhandenen Dezimalstellen einer Zahl. Das System betrachtet nur die vorhandene Ziffernfolge. Diese Ziffernfolge stellt somit einen Betrag in den kleinsten Einheiten der verwendeten Währung dar, also z.B. Cents für US-Dollar (USD) oder Francs für Belgische Francs (BEF). Für die Verarbeitung von Währungsbeträgen in ABAP-Programmen wird deshalb der Datentyp p ohne Dezimalstellen empfohlen.

Beispiel

REPORT demo_list_write_currency LINE-SIZE 40.

DATA: num1 TYPE p  DECIMALS 4 VALUE '12.3456',
      num2 TYPE p  DECIMALS 0 VALUE '123456'.

SET COUNTRY 'US'.

WRITE: 'USD', num1 CURRENCY 'USD', num2 CURRENCY 'USD',
     / 'BEF', num1 CURRENCY 'BEF', num2 CURRENCY 'BEF',
     / 'KUD', num1 CURRENCY 'KUD', num2 CURRENCY 'KUD'.

In diesem Programm werden zwei gepackte Zahlen num1 und num2 mit gleichen Ziffernfolgen aber unterschiedlichen Dezimalstellen definiert. Diese Zahlen werden wie folgt als verschiedene Währungen ausgegeben:

Diese Grafik wird im zugehörigen Text erklärt

Für jede Währung sind die Ausgabeformate von num1 und num2 gleich, da nur die Ziffernfolge berücksichtigt wird. Die Währung US-Dollar (USD) wird mit der Standardeinstellung von zwei Dezimalstellen ausgegeben, da die kleinste Einheit ein Cent und somit ein hundertstel Dollar ist. Für Belgische Francs (BEF) ist CURRDEC in TCURX gleich 0 gesetzt, da der belgische Franc keine kleineren Einheiten hat. Kuweitische Dinare (KUD) haben tausendstel Einheiten und deshalb drei Dezimalstellen (CURRDEC ist 3).

Einheitenspezifische Ausgabeformate

Sie können Felder des Typs p entsprechend bestimmter Einheiten aufbereiten. Beispielsweise sollen Stückzahlen keine Nachkommastellen haben, Gewichtsangaben sollen drei Dezimalstellen haben usw. Hierzu verwenden Sie die Option UNIT der Anweisung WRITE wie folgt:

Syntax

WRITE f UNIT u.

Diese Anweisung legt die Anzahl der Dezimalstellen in der Ausgabe gemäß der Einheit u fest. Hierfür muß der Inhalt von u in der Datenbanktabelle T006 in der Spalte MSEHI eingetragen sein. Der Eintrag in Spalte DECAN bestimmt dann, wieviel Dezimalstellen des Felds fangezeigt werden sollen. Findet das System keinen Eintrag u in der Tabelle T006, wird die Option ignoriert.

Für mehr Informationen siehe  Schlüsselwortdokumentation.

Beispiel

REPORT demo_list_write_unit LINE-SIZE 40.

DATA: num1 TYPE p DECIMALS 1 VALUE 1,
      num2 TYPE p DECIMALS 4 VALUE '2.5'.

SET COUNTRY 'US'.

WRITE: 'KG', num1 UNIT 'KG', num2 UNIT 'KG',
     / 'PC', num1 UNIT 'PC', num2 UNIT 'PC'.

In diesem Programm werden zwei gepackte Zahlen num1 und num2 mit einer bzw. vier Dezimalstellen definiert. Wenn die Einheiten 'KG' (kilograms) und 'PC' (pieces) mit drei bzw. null Dezimalstellen in T006 eingetragen sind, sieht die Ausgabe wie folgt aus:

Diese Grafik wird im zugehörigen Text erklärt

Die Option UNIT 'KG' wird für num1 ignoriert, da num1 weniger Dezimalstellen als drei hat. Für num2 kürzt UNIT 'KG' die Ausgabe auf drei Dezimalstellen. Für num1 kürzt UNIT 'PC' die Ausgabe auf null Dezimalstellen. Die Option UNIT 'PC' wird für num2 ignoriert, da ansonsten eine Nachkommastelle ungleich Null abgeschnitten würde.

 

Ende des Inhaltsbereichs