情報発信
情報発信
クレスコ・イー・ソリューションは、2006年12月20日にSAP ERPユニコードシステム専用の接続ツールConnectPlus Unicode Version2.1をリリースしました。
このコラムでは、開発を通じてSAP ERP(SAP S/4HANA)ユニコードシステムについて分かったこと、考えたことなどを紹介していきたいと思っています。
開発に取り組むまで、ユニコードについて「世界中の様々な文字を同時に使うことができる」や「すべての文字が同じ長さになる」ぐらいの曖昧なとらえ方していました。
英字・数字・半角カナ・全角かな漢字を意識する必要のないユニコードは、なにか「先進的」で「開発しやすい」文字コードという漠然としたイメージがあったように思います。
しかし、実際に開発を始めてみるとユニコードについて、いかに無知であったかを痛感しました。
今回は、典型的な誤解の例として、ユニコード文字の長さについてお伝えしたいと思います。
分からない言葉が出てくるかもしれませんが、次回から詳しく説明をしたいと思っていますので、気にせずに読み進んでみてください。
SAP ERPの品目マスターには「品目テキスト」という項目があります。
品目コードに対する名称つまり品名を入力する項目で、文字型で長さ40の属性を持っています。
これまでのSAP ERPの場合、品目テキスト項目に入力可能なデータは文字数に関係なく40バイトでした。
アルファベットや数字は1文字あたり1バイト、日本語文字はシフトJISで符号化されるので、半角カナは1文字あたり1バイト、全角かなや漢字は1文字あたり2バイトになりますが、どんな文字が混じっても入力可能なデータは40バイトでした。
また、SAP ERPから品目テキストの値を出力した場合、特別な処理を行わない限りシフトJISで符号化されて未入力部分に空文字が埋められるので、どんな文字が入力されていても出力されるデータのバイト長は40バイト固定でした。
SAP ERPユニコードシステムの場合でも、品目テキストは文字型で長さ40の項目であることに変わりはありません。
しかしながら、1文字あたり2バイトの領域が用意され、UTF-16でほとんどの文字が2バイトで符号化されるので、英数字と同様に全角かな文字も40文字まで入力可能になります。
一方、品目テキストの値をSAP ERPから出力する際には文字がUTF-8で符号化されるので、英数字のみ40文字であれば40バイト、全角かな文字のみ40文字であれば120バイト、英数字20文字と全角かな20文字であれば80バイトといった具合に入力した文字によって出力されるバイト長が変化します。
つまり、ユニコードシステムに切り替えると、これまでバイト固定長で出力されていたデータが、バイト可変長で出力されるようになるのです。
例えば、SAP ERPから他のシステムへデータを転送している場合、データフォーマットがCSVやXMLであればこのような可変長のデータを取り扱うことは簡単ですが、バイト固定長のデータフォーマットでデータ転送を行っている場合は、大幅なシステム修正が必要になるかもしれません。
【SAP ERP(SAP S/4HANA)データ連携製品ユニコード開発】第2回 ユニコードについて は こちら