Automatische Konvertierung von numerischen Daten bei Eingabe in ALV

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Getting started ... Alles für einen gelungenen Start.
5 Beiträge • Seite 1 von 1
5 Beiträge Seite 1 von 1

Automatische Konvertierung von numerischen Daten bei Eingabe in ALV

Beitrag von Radinator (ForumUser / 42 / 9 / 6 ) »
Servus,

wenn ich beim Kopieren von Excel -> ALV numerische Werte, wie etwa 10, habe werden sie (aus welchem Grund auch immer) automatisch nach 0,010 umgewandelt. Und ich komm nicht drauf warum.

In dem Report verwende ich einen FieldCatalog Typ slis_t_fieldcat_alv und zeigen ihn mit dem FuBa REUSE_ALV_GRID_DISPLAY an. Die interne Tabelle, die angezeigt werden soll, basiert auf einer eigenen Z-Tabelle, in der ich 3 numerische Felder habe. Diese wiederum haben als Datenelement ein Z-Feld welches auf der Domäne DEC_15_3 basieren.

Den Quelltext hab ich mal auf ein Minimalbeispiel gekürzt:

Code: Alles auswählen.

types:
  zmenge15_3 type p length 15 decimals 3,
  begin of t_zbstecomm,
    matnr type matnr,
    verfuegbar type zmenge15_3,
    kalku type c length 3,
  end of t_zbstecomm.

data:
  alv_fieldcat     type slis_t_fieldcat_alv,
  alv_layout       type slis_layout_alv,
  alv_repid        like sy-repid.

data:
  zbstecomm_daten type table of t_zbstecomm,
  zbstecomm_row like line of zbstecomm_daten.

clear alv_fieldcat.
alv_fieldcat = value #(
  ( fieldname = 'MATNR'       seltext_m = 'Materialnummer'  col_pos = 0 key = abap_true edit = abap_true outputlen = 18 )
  ( fieldname = 'VERFUEGBAR'  seltext_m = 'Verfügbar'       col_pos = 3 key = abap_true edit = abap_true outputlen = 10 )
  ( fieldname = 'KALKU'       seltext_m = 'Kalkulation'     col_pos = 6 key = abap_true edit = abap_true outputlen = 10 )
).

clear zbstecomm_row.
append zbstecomm_row to zbstecomm_daten.

alv_repid = sy-repid.
alv_layout-zebra = abap_true.
call function 'REUSE_ALV_GRID_DISPLAY'
  exporting
    i_callback_program      = alv_repid           
    i_callback_user_command = 'USER_COMMAND_0100' 
    is_layout               = alv_layout
    it_fieldcat             = alv_fieldcat
  tables
    t_outtab                = zbstecomm_daten
  exceptions
    program_error           = 1
    others                  = 2.
Wenn man den Report aufruft und als Mateiralnummer 4711, für die Spalte Verfügbar 10 eingibt und Enter drückt wird aus 4711 der Wert 000000000000004711 und aus 10 wird 0,010. Auch wenn ich 10,0 10,00 oder sogar 10,000 eintrage, es wird immer zu 0,010. Aus 100 (mit den diversen Nachkommastellen) wird 0,10 und aus 1000 wird 1,000 - egal wie viele Nachkommastellen ich angebe.

Ich hab auf dem Forum hier diesen Eintrag viewtopic.php?t=24357 gefunden. Dieser passt nicht 100% auf mein Problem, daher poste ich eine neue Frage.

1.) An was liegt es, dass hier eine Konvertierung passiert und wie kann ich es verhindern?
2.) Gibt es beim FieldCatalog eine Option mit der man das verhindern kann?

Danke schon mal im Voraus!

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


Re: Automatische Konvertierung von numerischen Daten bei Eingabe in ALV

Beitrag von PeterPaletti (Specialist / 355 / 33 / 98 ) »
Probier mal an dem Feld decimals_out = 3 zu setzen:

Code: Alles auswählen.

clear alv_fieldcat.
alv_fieldcat = value #(
  ( fieldname = 'MATNR'       seltext_m = 'Materialnummer'  col_pos = 0 key = abap_true edit = abap_true outputlen = 18 )
  ( fieldname = 'VERFUEGBAR'  seltext_m = 'Verfügbar'       col_pos = 3 key = abap_true edit = abap_true outputlen = 10 decimals_out = 3 )
  ( fieldname = 'KALKU'       seltext_m = 'Kalkulation'     col_pos = 6 key = abap_true edit = abap_true outputlen = 10 )
).


Re: Automatische Konvertierung von numerischen Daten bei Eingabe in ALV

Beitrag von Radinator (ForumUser / 42 / 9 / 6 ) »
Hast du eine Erklärung warum man hier noch die Anzahl der Nachkommastellen angeben muss bzw warum selbst ein 10,000 als 0,0010 interpretiert wird?

Re: Automatische Konvertierung von numerischen Daten bei Eingabe in ALV

Beitrag von PeterPaletti (Specialist / 355 / 33 / 98 ) »
Ohne diese Angabe weiß, das System nicht, die Eingabe der Zahl richtig zu interpretieren. Die Typisierung des Feldes allein reicht dazu nicht hin. So verschiebt das System die Zahl um 3 Stellen.

Folgende Benutzer bedankten sich beim Autor PeterPaletti für den Beitrag:
Radinator


Seite 1 von 1

Vergleichbare Themen

14
Antw.
14142
Views
String-Eingabe prüfen auf numerischen Wert
von madeleine104 » 02.12.2016 01:10 • Verfasst in ABAP® für Anfänger
6
Antw.
2648
Views
automatische Konvertierung verhindern?
von just » 05.04.2006 10:10 • Verfasst in ABAP® Core
2
Antw.
2449
Views
ALV / Eingabe ohne Konvertierung
von AC » 10.08.2005 16:21 • Verfasst in ABAP Objects®
3
Antw.
2642
Views
Char Feld Abfrag auf numerischen oder text Inhalt
von Dörk » 13.10.2006 11:18 • Verfasst in ABAP® Core
2
Antw.
1621
Views
Automatische tab
von Ben Nibang » 16.08.2005 10:39 • Verfasst in Dialogprogrammierung

Über diesen Beitrag



Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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.