Datum formatieren mit variablem Format

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
18 Beiträge • Seite 1 von 2 (current) Nächste
18 Beiträge Seite 1 von 2 (current) Nächste

Datum formatieren mit variablem Format

Beitrag von NCC-1701-M (ForumUser / 9 / 3 / 0 ) »
Hallo zusammen,

ich möchte ein Datum formatieren allerdings soll der Benutzer das Format vorher frei bestimmen können. Daher liegt mir das Format nur als Zeichenkette vor und somit funktioner das ganze mit "write to" nicht. Gibt es eine Möglichkeit, das Datum in ABA zu formatieren (auch mit abgekürzten und Ausgeschriebenen Monatsnamen)

Danke schon im voraus.

Gruß,
NCC-1701-M

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Datum formatieren mit variablem Format

Beitrag von RockyAM (ForumUser / 30 / 0 / 7 ) »
CONVERSION_EXIT_IDATE_INPUT

Re: Datum formatieren mit variablem Format

Beitrag von NCC-1701-M (ForumUser / 9 / 3 / 0 ) »
RockyAM hat geschrieben:CONVERSION_EXIT_IDATE_INPUT
Danke für deine Antwort, aber wie kann ich da ein Format angeben?


Re: Datum formatieren mit variablem Format

Beitrag von Tron (Top Expert / 1327 / 35 / 333 ) »
Moin Trekkie und Rocky,
Der Link auf die Doku ist für Sapscript-Formulare !

Das Datumsformat wird durch die Benutzereinstellungen (SU01) beeinflußt.
Wenn das Datum den Typ D hat, kann man mit

Code: Alles auswählen.

data datum2 type syst-datum.
data datum3(20).
write datum2 to datum3 DDMMYY.
die Aufbereitung bestimmen.
SET COUNTRY cntry.
hat ebenfalls Einfluß auf die Aufbereitung.
Welchen Datentyp hat das Datum denn derzeit ? (string oder char)
allerdings soll der Benutzer das Format vorher frei bestimmen können

..und wie ?
gruß Jens
Zuletzt geändert von Tron am 18.11.2011 11:10, insgesamt 2-mal geändert.
<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: Datum formatieren mit variablem Format

Beitrag von NCC-1701-M (ForumUser / 9 / 3 / 0 ) »
Sorry, ich programmier nur alle paar Jahre mal in ABAP aber meinem Verständnis nach ist SET DATE MASK ein SAPScript Befehl und ich arbeite nicht mit SAPScript. Kann man SAPScript Befehle denn auch in ABAP aufrufen?

Re: Datum formatieren mit variablem Format

Beitrag von Tron (Top Expert / 1327 / 35 / 333 ) »
....Bitte mal ein Beispiel für das Datum in CHAR - Format ( 20.11.2011 etwa so ?)
gruß Jens
<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: Datum formatieren mit variablem Format

Beitrag von NCC-1701-M (ForumUser / 9 / 3 / 0 ) »
Hi Jens,

danke für deine Antwort.

Also dafür muss ich etwas weiter ausholen. Es geht um Etiketten wo auch wirklich SAPScript verwendet wird. Bei normalen Daten (also mehrzahl von Datum) funktioniert SET DATE MASK auch ohne Probleme. Aber es gibt auf dem Etikett ein Art Ablaufdatum das vor dem Drucken berechnet werden soll. Dafür habe ich ein Programm geschrieben, dass dieses Datum berechnet. Das Programm wird über PERFORM in SAPScript aufgerufen. Da die Programme, die in SAPScript aufgerufen werden, jedoch nur mit Parametern und Rückgabewerten funktionieren, die Tabellen vom Typ itcsy sind wird bei der Rückgabe das Datum in c(255) umgewandelt und somit hat SET DATE MASK keinen Einfluss mehr auf die Ausgabe des Datums. Daher war meine Idee, die Darstellung des Datums in meinem Programm vorzunehmen in dem ich dem Programm einen zusätzlichen Parameter mit dem Format übergebe (das gleiche Format, dass ich für SET DATE MASK verwendet hatte) z.B. 'DD. MMMM YYYY' Das Datumsformat wird entsprechend beim erstellen des Etiketts festgelegt (durch Benutzer oder Endkundenvorgabe).

Gruß,
NCC-1701-M

P.S.: Für die Berechnung verwende ich eine Variable vom Typ d. Daher sieht die Debug-Darstellung des Wertes z.B.: 20111118

Re: Datum formatieren mit variablem Format

Beitrag von RockyAM (ForumUser / 30 / 0 / 7 ) »
kannst du nicht das Ergebnis in den Zieltyp moven??

Re: Datum formatieren mit variablem Format

Beitrag von NCC-1701-M (ForumUser / 9 / 3 / 0 ) »
RockyAM hat geschrieben:Tron hat die Lösung bereits gepostet

Code: Alles auswählen.

write datum2 to datum3 DDMMYY.
Das geht nicht, weil ich für DDMMYY keine Variable vom Typ c(50) einsetzen kann und das Format WRITE TO unterstützt, soweit ich die Doku verstanden hab, nicht solche Formate wie z.B. DD. MMMM YYYY. USING EDIT MASK funktioniert auch nicht, weil er mir dann in den Rückgabewert nicht '18. November 2011' schreibt sondern 'DD. MMMM YYYY'.

Re: Datum formatieren mit variablem Format

Beitrag von NCC-1701-M (ForumUser / 9 / 3 / 0 ) »
RockyAM hat geschrieben:kannst du nicht das Ergebnis in den Zieltyp moven??
Also in SAPScript gibt es (soweit ich weiß) leider keine Möglichkeit zu sagen, dass die Zeichenkette '20111118' in wirklichkeit vom Typ d ist.

Re: Datum formatieren mit variablem Format

Beitrag von Tron (Top Expert / 1327 / 35 / 333 ) »
.. ok,

Code: Alles auswählen.

FORM DATE_TEST   TABLES imp_par_tab STRUCTURE itcsy
                            exp_par_tab STRUCTURE itcsy.

DATA: lv_datum  TYPE syst-datum.
DATA: lv_datum_xxl(20).



  READ TABLE imp_par_tab WITH KEY name = 'DATUMTEST'.
  CHECK sy-subrc = 0.
  lv_datum = imp_par_tab-value.

* lv_datum ist vom Typ D !!
* imp_par_tab-value ist vom Typ CHAR !!
* exp_par_tab-value  ist vom Typ CHAR !!

* Aufbereitung 
  write lv_datum to lv_datum_xxl DDMMYY.

*oder 
*lv_datum(4) = Jahr
*lv_datum+4(2) = MOnat
*lv_datum+6(2) = Tag

*concatenate lv_datum+6(2) '-' lv_datum+4(2) '-' lv_datum(4) into exp_par_tab-value .
* Ergibt zB. 18-11-2011

* das Ergebnis fürs Formular ist CHAR

  exp_par_tab-name = 'ERGEBNIS'.
  exp_par_tab-value = lv_datum_xxl.
  APPEND exp_par_tab.

ENDFORM.                    "DATE_TEST
Die Aufbereitungsoptionen des Users sollten über die Eingabeschnittstelle mitkommen
Die Aufbereitung erfolgt im PERFORM.

Alternativ könte man die Daten via "Dirty Assign" austauschen, sollte aber eigentlich nicht
notwendig sein.

für die Ermittlung des Monatnamen verwende ich :

Code: Alles auswählen.

  CALL FUNCTION 'MONTH_NAMES_GET'
    TABLES
      month_names = lt_month_table
    EXCEPTIONS
      OTHERS      = 0.

gruß Jens
Zuletzt geändert von Tron am 18.11.2011 13:32, insgesamt 3-mal geändert.
<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: Datum formatieren mit variablem Format

Beitrag von NCC-1701-M (ForumUser / 9 / 3 / 0 ) »
Hi,

danke nochmal für eure Mühe. WRITE ... TO... bringt mir leider nichts weil z.B. DD/MM/YYYY kein variables Format ist, das ich per Parameter übergeben kann (oder doch?).

Ich stell mir das ganze ungefähr so vor, dass ich eine Funktion (oder ein Unterprogramm) der ich ein Datum übergebe und ein Datumsformat und das ich als Rückgabewert eine formatierte Zeichenkette zurückbekomme (als Beispiel hab ich mal den Rahmen eines solchen Unterprogramms gestrickt und die Parameter und den Rückgabewert mit verschiedenen Beispielen kommentiert):

Code: Alles auswählen.

FORM ToString USING date TYPE d
                     dateFormat TYPE c
               CHANGING result TYPE c.

  " dateFormat: 'DD. MMMM YYYY'
  " date: 20110101
  " result soll sein: 01. Januar 2011
  
  " dateFormat: 'DD.MM.YYYY'
  " date: 20110101
  " result soll sein: 01.01.2011
  
  " dateFormat: 'MM.YYYY'
  " date: 20110101
  " result soll sein: 01.2011
  
  " dateFormat: 'MM/YY'
  " date: 20110101
  " result soll sein: 01/11
  
  " dateFormat: 'MMMM YYYY'
  " date: 20110101
  " result soll sein: Januar 2011
  
  " dateFormat: 'MMM YYYY'
  " date: 20110101
  " result soll sein: Jan. 2011

  
  " usw. mit beliebiger Kombination von DD MM YY

ENDFORM.                    " ToString
Und das ganze selbst zu Programmieren möchte ich nur dann, wenn es sowas nicht gibt, weil man muss ja nicht immer das Rad neu erfinden.

Danke und Gruß,
NCC

Re: Datum formatieren mit variablem Format

Beitrag von RockyAM (ForumUser / 30 / 0 / 7 ) »
dann move doch einfach deinen string in deine datumsvarible -> das geht

MOVE lv_string TO lv_datum.

Wobei string vom Typ string und datum vom Typ d

...

Folgende Benutzer bedankten sich beim Autor RockyAM für den Beitrag:
NCC-1701-M


Re: Datum formatieren mit variablem Format

Beitrag von NCC-1701-M (ForumUser / 9 / 3 / 0 ) »
RockyAM hat geschrieben:dann move doch einfach deinen string in deine datumsvarible -> das geht

MOVE lv_string TO lv_datum.

Wobei string vom Typ string und datum vom Typ d

...
Ich will aber doch das Datum in einen String umwandel. Oder versteh ich dich da jetzt falsch? Ich will das ein Datum vom Typ d in einen string umgewandelt wird. z.B. sy-datum soll in '18. November 2011' umgewandelt werden.

Vergleichbare Themen

2
Antw.
1757
Views
Datum formatieren
von supermario73 » 17.06.2008 14:00 • Verfasst in ABAP® Core
4
Antw.
3717
Views
Dynpro Datum Format YYYY.MM.DD
von Kleenmex » 16.05.2007 11:23 • Verfasst in Dialogprogrammierung
0
Antw.
3413
Views
Datum ins Interne Format konvertieren
von Ralph » 19.10.2007 14:56 • Verfasst in ABAP® für Anfänger
3
Antw.
2681
Views
Datum so Formatieren: "December 04th 2017"
von Timoniac » 19.01.2018 08:09 • Verfasst in ABAP® Core
1
Antw.
1097
Views
Do-Enddo mit variablem Füllen von Feldern
von ginotico » 27.07.2007 09:32 • Verfasst in ABAP® Core

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.