情報発信

  • TOP
  • 情報発信
  • 【SAP ERP(SAP S/4HANA)データ連携製品ユニコード開発】第1回 無知ではいられない

【SAP ERP(SAP S/4HANA)データ連携製品ユニコード開発】第1回 無知ではいられない

 ~第1回~ 
 SAP ERP(SAP S/4HANA)ユニコードシステム専用の接続ツール開発談 
 ユニコード文字の長さについて 

クレスコ・イー・ソリューションは、2006年12月20日にSAP ERPユニコードシステム専用の接続ツールConnectPlus Unicode Version2.1をリリースしました。
このコラムでは、開発を通じてSAP ERP(SAP S/4HANA)ユニコードシステムについて分かったこと、考えたことなどを紹介していきたいと思っています。
開発に取り組むまで、ユニコードについて「世界中の様々な文字を同時に使うことができる」や「すべての文字が同じ長さになる」ぐらいの曖昧なとらえ方していました。
英字・数字・半角カナ・全角かな漢字を意識する必要のないユニコードは、なにか「先進的」で「開発しやすい」文字コードという漠然としたイメージがあったように思います。
しかし、実際に開発を始めてみるとユニコードについて、いかに無知であったかを痛感しました。
今回は、典型的な誤解の例として、ユニコード文字の長さについてお伝えしたいと思います。
分からない言葉が出てくるかもしれませんが、次回から詳しく説明をしたいと思っていますので、気にせずに読み進んでみてください。

文字のバイト長は同じではない

先ほど、ユニコードについて「すべての文字が同じ長さになる」という捉え方をしていたと言いましたが、このような誤解をしている方は意外に多いのではないかと思います。
ユニコードの規格では、群・面・区・点の4つの値の組み合わせですべての文字コードが定義されているのですが、その文字コードを符号化すると、そのバイト長は必ずしも同じにはならないのです。
例えば、UTF-8というエンコード方式を使って文字を符号化すると、1文字あたり1バイトから4バイトまでのバイト列に変換されます。
数字やアルファベットは1文字あたり1バイト、半角カナや全角かな・一般的な漢字は3バイトのバイト列といった具合です。

SAP ERPユニコードシステムとバイト長

SAP ERPユニコードシステムでは、2つのエンコード方式が採用されています。
システムの内部ではUTF-16と呼ばれるエンコード方式で文字が符号化されます。
このUTF-16は半角カナや全角かな・一般的な漢字を2バイトの長さに符号化します。
一方、データの入出力では前述のエンコード方式UTF-8で符号化されます。
2つのエンコード方式が使われている理由については別の回で触れるつもりですが、ここではSAP ERPユニコードシステムで日本語文字を使うとどのようなことが起こるのかを考えてみたいと思います。

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 ERPユニコードシステム自体はこれまでのSAP ERPと同様に、日本企業の基幹システムとしての運用に十分堪えるものではないか思っています。
しかし、文字コードはSAP ERP単体だけで片付けられる問題ではありません。
パソコンにデータをダウンロードしたり、取引先へEDI でデータを送信したり、様々な方法でSAP ERPのデータを利用しているのではないかと思います。
そして、SAP ERPから出力されるユニコードデータをどうやって処理するのかは、SAPではなく利用者側が考えることになる問題です。
SAPユーザもユニコードについて無知ではいられないと思うのです。
このコラムを通じて、SAP ERPに関わる方々に少しでもユニコードについて情報を発信できればと思っています。

【SAP ERP(SAP S/4HANA)データ連携製品ユニコード開発】第2回 ユニコードについて は こちら

データ連携 カテゴリー記事一覧

  • データ連携
    2024年3月19日
    【事例公開】株式会社NaITO様が、SAP S/4HANA導入のために「ConnectPlusGT」を採用
  • データ連携
    2022年6月9日
    SAP ConcurとSAP ERP・SAP S/4HANAとのデータ連携
  • データ連携
    2018年6月5日
    【三層構造とデータ連携】SAPシステムとのデータ連携
  • データ連携
    実際の開発に踏み切る前に
  • データ連携
    ERP接続方式