「ブラックリスト」
なんとも物騒な名前のリストが、SAP S/4HANA上に存在する。
通称ではなく、本当にブラックリストなのだ。
何のブラックリストかといえば、「S/4HANAで使用を禁じられている(ブロックされている)汎用モジュール/BAPIのリスト」である。
S/4HANAへバージョンアップしたらBAPIが使えない!?
特に、初期の頃のS/4HANAでは多かった気がする。
S/4HANAでは、ECCでは問題なく使えていた一部の汎用モジュール/BAPIが、エラーを返すのだ!!
S/4HANAは、やはり、だいぶ変わってしまった!! でもなんで・・・?
理由は、S/4HANAには、使用を制限されている汎用モジュール/BAPIがあるからだ。
BAPIのブラックリスト(ブロックリスト)
使用が制限されている汎用モジュール/BAPIが登録されているリストが、ブラックリスト(ブロックリスト)である。ブロックされている理由は後述するが、約3000個の汎用モジュール/BAPIが使用不可となっている。この数は、S/4HANAのバージョンによって異なる。
ブラックリストのBAPIを実行するとどうなる?
S/4HANAでは、ブラックリストに登録されている汎用モジュール/BAPIを実行しようとすると、エラーが発生する。
アプリケーションから見ると、動くはずの汎用モジュールが動かないので、
「S/4HANAのバグでは!?」
と疑いたくなるが、よく調べると、エラー SYSTEM_ABAP_ACCESS_DENIED が発生しているはずである。このエラーはABAPダンプにも出力される。
詳細は、SAP Note #2249880 (Dump SYSTEM_ABAP_ACCESS_DENIED caused through Blocklist Monitor in SAP S/4HANA on premise)を参照のこと。
なぜBAPIがブロックされているのか?
SAP社がS/4HANAで特定の汎用モジュール/BAPIの使用をブロックしている主な理由は、概ね以下である。
システム信頼性の維持
一部の古い汎用モジュールは、最新のS/4HANAアーキテクチャとの互換性が十分でない場合がある。そのような汎用モジュールは、不整合のあるデータをデータベースに書き込んでしまうリスクがある。つまり、古い汎用モジュールは、データの整合性や、システムの信頼性に、悪影響を及ぼす可能性があるのだ。
SAP社はシステムの信頼性を維持するため、互換性のない汎用モジュールをブロックしている。
ブロックされている汎用モジュールは、互換性の確認を完了するとブロック解除される。あるバージョンのS/4HANAでブロックされていた汎用モジュールが、数世代後のS/4HANAではブロックを解除されていた場合、互換性を維持するための改修および検証が完了したということである。
新ソリューションの促進
SAP社は、最新のソリューションを推進するため、一部の古い汎用モジュールを制限している。これにより、ユーザーが最新のソリューションや機能を採用しやすくなる。
つまり、SAP社は最新のソリューションにユーザーを誘導するため、古い汎用モジュールをブロックしている場合がある。
古い技術資産の解消
機能が増えれば技術資産も増えることになるが、古い汎用モジュールの多くは、技術的な負債となり得る。この負債を解消するための措置として、古い汎用モジュールはブロックされている。
古い技術資産を減らすことで、SAP社はリソースを新ソリューションに投入しやすくなる。それは、システムの保守性と拡張性の向上に繋がる。
ブラックリストのBAPIを探す方法
ブラックリストの一覧を見る
プログラム RS_RFC_BLACKLIST_COMPLETE を実行することで、ブラックリストの一覧を照会できる。
やり方は次の通り。
- トランザクションコード(T-CODE): SE38を起動。
- 「プログラム」に”RS_RFC_BLACKLIST_COMPLETE“と入力し、実行する([F8]キーを押す)。
- 「パッケージ」に[F4]キーを押して入力ヘルプを呼び出し、パッケージ名を入力する。
ここで選択できる値は、使用中のSAPシステムに一つしかないので、選択できる値をセットする。
たとえば、S/4HANA2022であれば、”ABLMUCO2022″である。 - パッケージ名に値を入力したら、[Enter]キーを押す。
- 使用がブロックされている汎用モジュールの一覧が表示される。
これが、ブラックリストである。
ブラックリストの一覧をダウンロードする
上記で表示されたブラックリストの一覧をダウンロードするには、次のように操作する。
- RS_RFC_BLACKLIST_COMPLETE で表示されるリストの一覧上で、右クリックする。
- メニューが表示されるので、「スプレッドシート」を選択。
- ファイルを保存するダイアログが表示されるので、ファイル名を指定し、「エクスポート先」を押す。
(適宜、形式を変更する。「形式」に「スプレッドシート(*.xlsx)」を選択すれば、Excelで開けるファイルとして保存される) - ファイルをダウンロードするフォルダを指定し、[保存]ボタンを押してファイルを保存する。
BAPIを単体で探す
ブラックリストの汎用モジュール/BAPIを個別に検索したい場合は、プログラム RS_RFC_BLACKLIST_CUSTOM を実行する。
- T-CODE: SE38より、プログラム RS_RFC_BLACKLIST_CUSTOM を実行する。
- 「汎用モジュール」に目的の汎用モジュール名を入力し、[Enter]を押す。
- 「ブロック」(数カ所)のチェックがONであれば、汎用モジュールはブロックされている。
RS_RFC_BLACKLIST_CUSTOM は、存在しない汎用モジュールを指定してもエラーを返さない。
なので、汎用モジュール名を間違えて指定し、「ブロックされてないんだ」と勘違いしないよう、注意のこと。
汎用モジュールがブラックリストに載っていたら、どうする?
サポートパッケージを適用する
ブラックリストの汎用モジュールのいくつかは、一時的にブロックされているだけかもしれない。
そのような汎用モジュールなら、サポートパッケージを適用することで、ブラックリストから削除できる場合がある。
他の機能を探す
ブラックリストに登録されている汎用モジュールを見限って、SAP社が提供する代替手段、すなわち、他の機能を探す。
これが王道らしい。具体的には、SAP Noteを検索する。
たとえば、S/4HANAでT-CODE: VA06を実行しようとすると、
「トランザクションVA06はサポートされていません(SAPノート2228098を参照)」
というメッセージがポップアップし、実行できない。
(バージョンによっては、ポップアップではなく、ショートダンプ SYSTEM_ABAP_ACCESS_DENIED が発生する)
この原因は、VA06が依存している汎用モジュールがブロックされているからである。
解決策として、VA06ではなく、Fioriアプリを使うように、ということが、SAP Note #2456442(VA06 giving shortdump SYSTEM_ABAP_ACCESS_DENIED) に書かれている。
ブロックを解除する
ブラックリストに登録されて使用がブロックされている汎用モジュールは、ブラックリストから除外することができる。つまり、ブロックの解除が可能だ。
ただし、ブロック解除の前に、SAP社の開発サポートに問い合わせること。これは、ブロック解除前の注意事項として、SAP Note 2408693(リモート対応汎用モジュールのブロックリストの上書き)に明記されている。
サポートの方から、ブロックが一次的なものか、恒久的なものか、ブロックの解除は許可されるかなどを、回答してもらうのである。
理由があってブロックされているのだから、自分たちだけの判断でブロック解除してはいけないのだ。
以下は、プログラム RS_RFC_BLACKLIST_CUSTOM を使った、ブロック解除の手順である。
- T-Code: SE38より、RS_RFC_BLACKLIST_CUSTOM を実行する。
- ブロック解除を行う汎用モジュールを「汎用モジュール」に入力し、[Enter]を押す。
- カスタム設定/オリジナル設定の「サーバでブロック」のチェックを外し、[保存]ボタンを押す。
- カスタマイジングエントリ(移送依頼)を登録する。
なお、この操作を行うには、以下の権限が必要である。
AUTHORITY OBJECT: S_UCON_ADM
ID: UCON_TYPE: FIELD: BLRC
ID: UCON_NAME: DUMMY
ID: ACTVT: FIELD: 01、02、03、06
ブロック解除の詳細は、SAPノート 2408693 (Override blocklist of Remote Enabled Function Modules)に記載されているので、必ず読んでから実行すること。
汎用モジュールが登録されているブラックリストのまとめ
- S/4HANAでは、互換性のない汎用モジュールをブロックする「ブラックリスト」が存在する。
- ブラックリストに登録されている汎用モジュールを実行しようとすると、ダンプエラーが発生する。
- ブラックリストを照会するには、プログラム RS_RFC_BLACKLIST_COMPLETE または RS_RFC_BLACKLIST_CUSTOM を使用する。
- ブロック解除は RS_RFC_BLACKLIST_CUSTOM を使用すれば可能。
ただし、ブロック解除が可能であるか、事前にSAP社のサポートに問い合わせること。
ブラックリストとは、かなりネガティブな印象を与える名前であるが、システムの信頼性を維持するため、使用を防ごうとする、SAP社の意図は理解できる。
ブラックリストに登録されている汎用モジュールを実行しようとすると、エラーが発生する。しかし、
「S/4HANAのバグだ!」
と早合点しないよう、落ち着いて、先ずはブラックリストをチェックしよう。
コメント