[59103] in SAPr3-news
Re: Unterscheidung zwischen 0 und ' ' und ''
daemon@ATHENA.MIT.EDU (St. Kother)
Tue Mar 20 09:41:07 2007
To: sapr3-news@mit.edu
Date: Tue, 20 Mar 2007 14:40:57 +0100
From: "St. Kother" <steffen.kother@gmx.net>
Message-ID: <56a6j9F26oq5kU1@mid.individual.net>
Reply-To: steffen.kother@gmx.net
Hallo Michael,
michael.sbs@freenet.de schrieb:
> probier mal Funktionsbaustein
> * Neue Prüfziffer berechnen
> CALL FUNCTION 'LE_CHECK_DIGIT_CALCULATION'
> ...
Danke für den Tipp. Bei Code 39 wird aber der Rest aus Division durch 43
ausgewertet. Somit geht es mit meiner jetzt fertigen und getesteten
Funktion (siehe unten) etwas einfacher. Müsste ja sonst erst
Z-Funktionsbaustein anlegen und diesen dann an meine Bedürfnisse anpassen.
<ABAP>
form z_barcodedruck_get_checksign.
data: checkstring(43) type c, "43 Zeichen (0..42)
bc_leng type i, "Länge Barcode
bc_char type c, "Barcodezeichen
bc_chari type i, "Barcodezeichenoffset
bc_sum type i, "Summe Barcodezeichen
rest type i, "Rest bc_sum mod 43
bc_sign type c. "Prüfzeichen
* Aus Druckerhandbuch
checkstring = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%'.
* Ermittlung Länge Barcodezeichenkette und durchlaufen dieser
bc_leng = strlen( l_str_barcodedruck-barcode ).
while bc_chari < bc_leng.
* Zeichen an Offset
bc_char = l_str_barcodedruck-barcode+bc_chari(1).
* Ermittlung des Zeichenwertes
if bc_char eq ''.
sy-fdpos = 38.
else.
search checkstring for bc_char.
endif.
* Aufaddierung der Gesamtwertigkeit
bc_sum = bc_sum + sy-fdpos.
* Offset erhöhen
bc_chari = bc_chari + 1.
endwhile.
* Restermittlung mittels Modulo 43
rest = bc_sum mod 43.
* Ermittlung des Zeichen entsprechend des Rests
bc_sign = checkstring+rest(1).
* Barcodezeichenkett mit Prüfzeichen bilden
concatenate l_str_barcodedruck-barcode
bc_sign
into l_str_barcodedruck-barcode.
endform. " z_barcodedruck_get_checksign
</ABAP>
--
MfG, Steffen