【SAP基礎】SAPの内部書式と外部書式について解説!

SAP_内部書式と外部書式

登場人物紹介

三崎レイナ
社会人1年目。新卒でITコンサルティングファームに就職。初配属がSAPプロジェクトにアサインされる。SAPがわからないことだらけで悩んでいたところ、会社の先輩にSAPラボの所長を紹介され、毎週末に所長とSAPのお勉強中!

博士
SAPラボの所長。SAP大好き博士!SAP導入プロジェクトを構想策定~運用保守まであらゆるフェーズを数多く経験。
いまは優しきおじいちゃんだが、プロマネバリバリの時代はかなり怖かったらしい。現在は引退し、SAPの後進育成と啓蒙活動に従事中!

この記事を読むメリット

  • SAPの内部書式(内部値)と外部書式(外部値)の概念および調査方法を理解することができます

SAP独特のデータ構造である内部書式(内部値)と外部書式(外部値)は、SAPのデータを扱う上で、避けては通れない重要事項です。

昨今は、S/4 HANAへのデータ移行に取り組んでいる企業も多いと思いますので、「価格の数値を100倍にして移行してしまった」などのミスを未然に防ぐことができるよう、このデータ構造をしっかりと理解しておきましょう!

博士

それでは、さっそく解説していくぞい!

SAPフリーランスバンク SAPフリーランスバンク
Warning: file_get_contents(https://sap-career.com/freelancebank/jobs/feed/): Failed to open stream: HTTP request failed! HTTP/1.1 429 Too Many Requests in /home/saplab/sap-career.com/public_html/saplabo/wp-content/themes/swell_child/admin/article_list.php on line 70

Warning: Attempt to read property "channel" on bool in /home/saplab/sap-career.com/public_html/saplabo/wp-content/themes/swell_child/admin/article_list.php on line 72

新着のSAPフリーランス案件


Warning: Attempt to read property "item" on null in /home/saplab/sap-career.com/public_html/saplabo/wp-content/themes/swell_child/admin/article_list.php on line 82

Warning: foreach() argument must be of type array|object, null given in /home/saplab/sap-career.com/public_html/saplabo/wp-content/themes/swell_child/admin/article_list.php on line 82
この記事のポイント

内部書式・外部書式とは

『内部書式』とは、SAPがシステム内部で保持している書式です。そのため、ユーザーが目にすることはありません。一方、『外部書式』は、実際に画面上や帳票に出力される書式で、ユーザーが目にする情報になります。

この内部書式と外部書式の変換を採用している代表的な項目として、“金額”があります。
例えば、下図の通りデスクトップの画面上にはある受注の金額情報として ”1,230円” と表示されているとします。これが実際にユーザーが目にする『外部書式』です。
一方、システム内部のデータベース上では、金額の数値が“12.30”通貨は”JPY”(日本円)となっています。このように、通貨が”JPY”であれば、外部書式は内部書式の金額の数値を100倍して表示しています。

内部書式と外部書式
内部書式と外部書式

USD(アメリカ$)の場合はどうでしょう?
受注の金額情報が、外部書式として ”$100” と表示されているとします。一方、システム内部のデータベース上では金額の数値が“100”、通貨は“USD”(アメリカドル)となっています。

これは、SAP内部で「金額情報のもととなる数値」と「通貨」をセットで管理しており、その通貨によって変換ロジックが異なる為です。

もっと詳しく💡

価格の金額値以外にも、内部書式と外部書式の変換を採用している項目はあります。

代表的なものに、取引先機能(Partner Function)や数量単位(UoM)、通貨(Currency)、言語キー(Language Key)、日付(Date)などがあります。

SE16Nでの内部書式・外部書式の参照方法

T-CODE:SE16Nでテーブルを参照する際に、内部書式で参照するのか・外部書式で参照するのかを下記の手順で選択することができます。

  1. T-CODE:SE16Nで選択画面を開く。
  2. 補足タブから“設定変更”を選択する。
  3. “変換Exitなしの出力”にチェックを入れる。
SE16N
SE16Nの設定

デフォルトでは、“変換Exitなしの出力”にチェックが入っておらず、テーブルを参照時に内部書式から外部書式に変換するプログラムが走り、外部書式で表示されるようになっています。その為、このチェックを入れると、内部書式のままデータを出力、またはローカルにダウンロードすることができます。

書式変換方法について

技術的な話になりますが、外部書式⇔内部書式の書式変換方法について解説します。
たいていの書式変換は、SAP標準で用意されている汎用モジュールを利用して実行することが可能です。
そして、その変換処理には変換テーブルが使用されています。

汎用モジュールと変換テーブルの確認方法

項目“取引先機能(Partner Function)”を例に外部書式と内部書式の変換で使われている汎用モジュールと変換テーブルを見ていきます。

まず、下記の5ステップで汎用モジュールを特定し、ソースコードを確認します。

  1. T-CODE:SE11で取引先機能が使われているテーブルを検索します(ここではKNVP)
  2. 取引先機能の項目をダブルクリックします(項目名はPARVW)
  3. ポップアップ画面のドメインをダブルクリック(ドメイン名はPARVW)
  4. ドメイン照会画面からルーチンをダブルクリック(ルーチン名はPARVW)
  5. 変換用の汎用モジュールをダブルクリック(ここでは外部→内部の汎用モジュールを選択)
SAP_SE11_外部値_内部値の変換
SE11_外部値&内部値の変換プログラム参照

上記手順により、汎用モジュールのコードを確認するとSELECT文からコールしているテーブル名を確認できます。取引先機能の場合、テーブル“TPAUM”を使用していることが分かります。さらに、言語キーと取引先機能の2つのKEYを用いて変換していることが確認できます。

ABAP_Conversion Routine
変換処理のABAP
もっと詳しく💡

代表的な項目のSAP標準の汎用モジュールを紹介します。

金額の書式変換 汎用モジュール

  • 内部書式 ⇒ 外部書式・・・BAPI_CURRENCY_CONV_TO_EXTERNAL 
  • 外部書式 ⇒ 内部書式・・・BAPI_CURRENCY_CONV_TO_INTERNAL

<日付の書式変換 汎用モジュール

  • 内部書式 ⇒ 外部書式・・・CONVERT_DATE_TO_EXTERNAL
  • 外部書式 ⇒ 内部書式・・・CONVERT_DATE_TO_INTERNAL

カスタマイズからの確認方法

一部の項目については、この内部書式と回部書式の変換をカスタマイズで設定することが可能です。
取引先機能(Partner Function)もその1つであり、下記のパスから設定を確認・変更することができます。

SPRO > 販売管理 > 基本機能 > 取引先決定 > 設定: 取引先決定 > 設定: 得意先およびサプライヤマスタの取引先決定

SPRO_Partner Function
取引先機能の内部/外部書式のカスタマイズ

考慮が必要なポイント

レイナ

この外部書式と内部書式を考慮しないと、どんなリスクがあるのかな~?

外部システムとのインターフェイス

外部書式と内部書式の考慮漏れが影響するケースとして、特に外部システムとのインターフェイスがあげられます。

例えば、下記図の様にSAP内の”1,000円”というデータを外部のシステムにインターフェースする時、SAPのデータベース上の情報をそのまま連携してしまうと、受信するシステム側では“10円”と認識してしまいます。また、受信するシステム側も決まった書式がある場合は、受信データを取り込む際に書式変換が必要になります。インターフェース開発時は「外部システムとはどのような書式で連携をするのか」までしっかり確認しておく必要があります。

内部書式と外部書式の考慮点
内部書式と外部書式の考慮点

逆に、外部システムからSAPにインターフェースするケースも同様に書式に注意が必要です。上図の通り、“1,000円”で連携されてきた金額情報をそのままSAPに取り込むことはできません。内部書式を使用している項目は、SAPに取り込む際に内部書式への変換が必要です。

SAP ECCからS/4 HANAへのデータ移行

博士

SAPからSE16Nで抽出したデータを、再度SAPに登録する時も注意じゃぞい!

下記図の通り、SAPのテーブルからT-CODE:SE16Nなどを使用し、内部書式でデータを抽出した場合、そのデータを外部書式に変換してSAPの画面から登録する必要があります。

SE16Nでデータを抽出する場合は、上述の外部書式で表示させる設定にすれば、変換作業は不要ですが、仮にデータベースから直接データを抽出する場合は、内部書式から外部書式に変換してSAPに登録する必要があります。*もし、変換処理(内部→外部)が備わっているプログラムの場合は問題ないです。

まとめ

今回は、SAP独自のデータ構造である内部書式と外部書式の概要について紹介しました。

SAPを長くやっている人にとってはお馴染みの内容だったと思いますが、初学者とっては少し複雑で業務の中でも躓きやすいポイントです。本記事を通して、SAPのデータの持ち方や書式の確認方法を理解する一助になれば幸いです。
最後まで読んでいただきありがとうございました!


Warning: file_get_contents(https://sap-career.com/freelancebank/jobs/feed/): Failed to open stream: HTTP request failed! HTTP/1.1 429 Too Many Requests in /home/saplab/sap-career.com/public_html/saplabo/wp-content/themes/swell_child/admin/article_list.php on line 70

Warning: Attempt to read property "channel" on bool in /home/saplab/sap-career.com/public_html/saplabo/wp-content/themes/swell_child/admin/article_list.php on line 72

新着のSAPフリーランス案件


Warning: Attempt to read property "item" on null in /home/saplab/sap-career.com/public_html/saplabo/wp-content/themes/swell_child/admin/article_list.php on line 82

Warning: foreach() argument must be of type array|object, null given in /home/saplab/sap-career.com/public_html/saplabo/wp-content/themes/swell_child/admin/article_list.php on line 82

★★★SAPラボのライター募集★★★

SAPラボでは、SAPの知識を活かして副業をしたい方を募集してるのじゃ!

SAPラボのライターの特徴

・ライティング初心者OK!
・報酬高単価!
・業務委託契約なので副業として最適!

SAP記事執筆者としての活動実績として利用可能なので、転職時や案件探しの際に企業へのアピール材料にもなります。

募集要項

・SAP導入や運用保守プロジェクトへの参画経験1年以上

ご応募/お問合せ先

info@sap-labo.com

少しでもご興味ある方、ぜひお気軽にご連絡下さい!

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

事業会社の社内SE(SAP販売・貿易管理領域を担当)

大学卒業後、化学メーカーに社内SEとして勤務し、S/4海外展開プロジェクトに参画しています。主に、SDモジュールのデータ移行を2年間経験し、その後はST/IFテストの推進業務を担当しております。その間にも、SDやGTSの保守・運用に携わりながら、SAPに関する知見を深めている最中です。

業務の中で得られた知見をアウトプットしながら、SAPを利用する方々のお役に立てれば嬉しいです!

この記事のポイント