【iDempiere Lab】PO is Immutable エラー

iDempiere8.2よりキャッシュしている情報が変更されないようにチェックが厳格化されています。その影響により設定を変更した時に、「PO is Immutable」というエラーが表示される可能性がありますので、ここに調査及び研究し、その成果をまとめておきます。

【事例】印刷書式の書式アイテムを複数行表示にする場合

iDempiereの一覧表示の機能の1つに、1レコードの情報を複数行にして表示する機能があります。

この機能を使用するために設定を変更して、一覧レポートをリフレッシュすると次のように「PO is Immutable」エラーが表示されました。

これは、レポートエンジンにおいて、複数行表示する場合には、IsSuppressNullの設定を"true"にしている処理があるためです。

ここの処理でキャッシュしている値を上書きしている事から、エラーが表示されます。

これを回避するためには、複数行表示したい場合は、印刷書式の書式アイテムの設定で、ヌルカラム非表示(IsSuppressNull)の設定を予めONにしておく事です。

今回のこのエラーは、既にiDempiereの標準ソースコードでは修正されています(IDEMPIERE-4667)が、他にも同様のエラーが発生する可能性があるかなと思いますので、もし「PO is Immutable」に遭遇したら、キャッシュを変更していないかどうか確認してみて下さい。ちなみに修正後のソースは下記のようになっています。

改修後のソース
改修後のソース

参考サイト