[59103] in SAPr3-news

home help back first fref pref prev next nref lref last post

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

home help back first fref pref prev next nref lref last post