ユニコード文字セットを使用しない SAP システムの SAP 標準では、さまざまなコードページを使用して表示されるデータは以下の場合に変換されます。
SAP システムでデータの入力や出力を行うときに、データはフロントエンドのコードページの書式から SAP システムで使用されるSAP(ISO) コードページのフォーマットに変換されます。SAP GUI とアプリケーションサーバが通信している間に、SAP 内部文字番号を使用してデータが変換されます。SAP システムで、これらの番号がテーブル TCP01 内の各文字にどのように割り当てられているかを確認することができます。
GUI- サーバ通信での正しいデータ変換
この例では、オペレーティングシステムとして Microsoft NT を使用するフロントエンドでチェコ語のデータが入力され、SAP システムに転送されています( 緑色の矢印) 。データは、Microsoft コードページ 1250 を使用して生成されています。このコードページは、SAP システムに含まれている SAP ( フロントエンド) コードページ 1404 と対応しています。したがって、データは、SAP( フロントエンド) コードページ 1404 のフォーマットから、ISO 8859-2 に準拠した SAP(ISO) コードページ 1401 のフォーマットに変換されなければなりません。
SAP( フロントエンド) コードページ 1404 (Microsoft コードページ 1250) では、入力された文字 (Ž) に 16 進コード 8E が割り当てられています。SAP 内部文字番号 291 は、この 16 進コードと対応します。アプリケーションサーバ上の SAP(ISO) コードページ 1401 内でこの文字番号が検索されます。16 進コード AE が検出され、データベースに保存されます。
上の図には、チェコ語の文字 Ž がフロントエンドで出力される( 青色の矢印) 方法も示されています。16 進コード AE がデータベースから読み込まれ、同じ方法で変換されます。SAP 内部文字番号 291 は、SAP(ISO) コードページ 1401 の 16 進コード AE と対応しています。SAP( フロントエンド) コードページ 1404 でこの番号が検索され、16 進コード 8E が検出されています。このコードは、フロントエンドで文字 Ž として出力されます。
以下の点を守ることによって、データは確実に正しく変換されるようになります。
キ フロントエンドで、入力または出力される言語のデータが正しいオペレーティングシステムコードページ ( この例ではMicrosoft コードページ 1250) に従って入力および出力されることを可能にする正しい場所を設定している必要があります。
キ SAP ログオンダイアログボックスで、フロントエンドのオペレーティングシステムコードページと対応する SAP( フロントエンド) コードページ ( この例では SAP( フロントエンド) コードページ 1404) を入力している必要があります。
SAP GUI の SAP ログオンダイアログボックスで入力したコードページまたはフロントエンドの環境パラメータ SAP_CODEPAGE によって、変換で使用される SAP( フロントエンド) コードページが決まります。SAP ログオンダイアログボックスのエントリは、環境パラメータを上書きします。
キ 入力または出力する言語で SAP システムにログオンする必要があります。または、入力または出力する言語と同じSAP(ISO) コードページまたは混合コードページを使用して表示できる言語で SAP システムにログオンしてもかまいません。
ログオン言語によって、アプリケーションサーバで有効になるコードページが制御されます ( この例では、SAP(ISO) コードページ) 。このコードページは変換で使用されます。複数のコードページを使用して表示できる言語では、その言語に指定されたデフォルトコードページだけが有効になります。したがって、デフォルトコードページを使用して表示できる言語でデータを入力する場合は、それらの言語のいずれかでしかシステムにログオンすることができません。
上記のようにしてログオンすることで、設定されている SAP( フロントエンド) コードページに対応する( 適した) SAP(ISO) コードページまたは混合コードページが確実に有効になります ( この例では 1404 ォ 1401) 。この種のコードページのペアの例については、言語、コードページ、および変換を参照してください。
SAP( フロントエンド) コードページと SAP(ISO) コードページが対応していない場合、各文字の SAP 内部文字番号が検出されないことがあります。その場合は、# ( 番号記号) 文字が使用されます。 対応する 16 進コード 23 がこの文字のデータベースに保存されるか、# 文字がフロントエンドで出力されます。以下の図は、16 進コード 23 がデータベースに保存された場合の例を示しています。
アプリケーションサーバ上の有効な SAP(ISO) コードページ(1100) は、SAP( フロントエンド) コードページ (1404) と対応していないため、データは正しく変換されません。
送信側システムと受信側システムの間の通信にリモート汎用モジュール呼出 (RFC) を使用している場合、受信側と送信側のコードページとデータフォーマットによって、転送されたデータの変換が決定されます。その場合、以下のルールが適用されます。
キ RFC 通信中に BINARY モードのデータまたはタイプ X (16 進数) のデータだけが転送された場合は、データは変換されません。
キ 送信側システムの有効コードページが受信側システムの有効コードページと同じである場合は、データは変換 されません。このルールは、ログオン言語や SET LOCALE < 言語> コマンドに関わりなく、適用されます。
キ 送信側システムの有効コードページが受信側システムの有効コードページと異なる場合に変換が行われるかどうかは、関係するコードページのタイプと R/3 リリースによって決まります。通常、データはコードページが一致している場合に変換されます。その場合、以下のルールが適用されます。
。 文字は、受信側システムと送信側システムに含まれている有効コードページに従って変換されます。転送するデータの言語キーは変換には影響 しません。
送信側システムの有効コードページと異なるコードページを使用して表示する必要のあるデータは、正しく変換されないので破損することがあります。
。 受信側システムのコードページに含まれていない文字は、番号記号 (#) に置き換えられます。
。 複数のコードページを使用して生成されたデータが転送された場合、リモート汎用モジュール呼出でデータを レコード単位で変換することはできません。
つまり、さまざまなコードページを使用して表示される言語依存のデータは RFC 通信で転送されるとき全体として変換されます。送信側システムと受信側システムのコードページだけが変換を制御します。言語キーは変換を制御しません。したがって、全体として変換されたデータは、正しく変換されずに破損することがあります。
キ ユニコードを使用する SAP システムと、ユニコードを使用しない SAP システムまたは外部システムの間の通信時に、データは、非ユニコードシステムの現在のコードページに従って、ユニコードから ASCII に変換されます。逆の場合も同様です。この場合も、複数のコードページを使用して表示する必要のあるデータの変換は レコード単位では行われません。
ALE は SAP システム間の RFC 通信に基づいているため、データが転送されるときに、RFC 通信のルールに従って変換が行われます。
ALE では、IDoc は必ず CHAR 書式で転送されるので、送信側システムと受信側システムの有効コードページが異なっている場合に変換が常に可能です。ただし、データは SAP システムで使用されている SAP(ISO) コードページの書式で送信側システムと受信側システムの両方に保存されるので、ALE によってデータを転送するときに変換を行う必要はありません。送信側システムの有効コードページが受信側システムの有効コードページと同じである場合は、不必要な変換を避けることができます。したがって、データは、送信側システムとまったく同じ形で受信側システムに保存されます。
ビジネスアプリケーションプログラミングインタフェース (BAPI) も RFC 通信に基づいています。たとえば、Java アプリケーションで BAPI が呼び出された場合、Java フロントエンドと SAP システムのコードページによってデータの変換が決定されます。