SAPには、ブール値のコアデータ型がありません。さらに、SAPの高レベルのブール型には、通常、true( 'X')、false( '')、unknown( '-')の3つの状態があります。
今では明らかにブール値が私の開発作業の多くの基礎となっていますが、タイプ(データ要素)の使用法にひどく一貫性がないことに気づきました。これまでのところ、これらが最も一般的であると私は信じています:
abap_bool
:abapタイププールで定義され、制約はありませんが、定数はtrue、false、unknown、yes、noに対して定義されていますos_boolean
:データ要素、はい( 'X')またはいいえ( '')xfeld
:データ要素True( 'X')またはFalse( '')には、チェックボックスとして記述されているフィールドラベルがありません私のコードでは、主にabap_bool
を使用しました。これは、文字値の代わりに定数を使用できるためです。abap_true
をxfeld
に割り当てることができなかったわけではありません。ただし、このタイプのプールが常に利用できるとは限らないことに注意してください。
私は今、ブール値のベストプラクティスについて疑問に思っています。具体的には次のとおりです。
コーディングでは、型プールABAP
とその定数を使用します。古いシステムでは手動で含める必要があるかもしれませんが、常に利用可能である必要があります。辞書要素については、必要に応じて説明を追加できるように、デフォルトのドメインのいずれかを使用して独自のデータ要素を作成することを好みます。 WDY_BOOLEANも使用できます。
公式ABAPプログラミングガイドライン のルール6.11に従って、abap_boolを使用する必要があります。
ルール6.11:真理値にabap_boolデータ型を使用する
真理値を明示的に処理するには、実際のブールデータ型の回避策としてabap_bool型を使用します。この方法で宣言されたデータオブジェクトには、対応する定数abap_trueおよびabap_false(およびabap_undefined)以外の値が含まれることは想定されていません。
リリース7.40、SP08 の更新:
リリース7.40、SP08では、述語メソッド呼び出しを取得し、次のようにコーディングできます。
IF cl_abap_demo_services=>is_production_system( ). "There is no '= abap_true' needed!
cl_demo_output=>display(
'This demo cannot be executed in a production system' ).
LEAVE PROGRAM.
ENDIF.
あなたのメソッド(例ではis_production_system
) ABAP_BOOL-value (abap_true( 'X')またはabap_false( ''))を返す必要があります
オンラインヘルプ に例があります。