SAP ABAPインスタンスの禁則文字について

年一くらいでABAPインスタンスの禁則文字について確認する機会があるので、関係各位とやり取りした内容も含めメモ。

■結論

  • ABAP言語(フレームワーク)標準仕様として共通的なテキスト項目の入力制限は存在しない。
  • ABAP言語(フレームワーク)標準仕様としては、必須項目チェック、型チェック、外部キーチェック、ドメイン値チェックのみ
  • 上記チェック以外は、それぞれの「Dynproの入出力template」機能や、PAIでやるチェックロジックで対応
  • SAP関係者なら誰もが知る(?)エクスクラメーションマーク*1の件は、歴史的な経緯とおのおのの標準PGがそのようにしているだけ。
     ⇒この機能は、「Dynproの入出力template」機能で設定されている。

■「Dynproの入出力template」機能について
エクスクラメーションマークは入力した値が消えてしまって、結果として入力不可文字となってしまうだけです。
それ以外にも意味がありますが、Note:1015345にこの機能の詳細が書かれています。但し、標準Dynproのどの項目で使用されているかは、一つ一つチェックしないといけないとわからないです。
チェック方法は、スクリーンペインタのレイアウトエディタの入力項目の属性。
 (標準テーブルのどこかに保存されているかもしれませんが、そこまでは不明)

レイアウトエディタの画面ショットは下記参照。
この画面ショットの一番したにある、Without templateにチェックが入っていないとこの機能が有効です。
 (日本語だとなぜか「入出力項目なし」というテキストとなり意味不明。。)

f:id:nyop:20180415124945p:plain

■その他参考Note
Note:734353

Note:1108179

■その他

  • 入力すると文字化けするので、入力できても使用してはいけないものがある。
    ユニコードシステムの場合、APサーバは、UTF-16なんだけどサロゲートペアの文字をサポートしないため入力してはいけない
  • キーボードの直接入力というより、webサイトのコピペとかで発生 

文字化けについてはトランザクションコードSCPで各文字セット毎の利用可能文字を調査可能。

得意先コード、仕入先コード、品目コードについては番号範囲チェックが適用されるため、1文字目は半角英数以外はエラーとなる。
また、品目コードについては、「&(アンパサンド)」「 *(アスタリスク)」「,(カンマ)」は2桁目以降もエラーとなります。

 

もし嘘ついていたら突っ込んでくだしあ。

*1:先頭一文字目に!を入れるとそのフィールドの入力文字列が消える