ABAP/システム変数
システムが動作する上で必要とする、または動作した結果が格納される変数のこと。
概要 †
システム項目の正体はSYSTという構造のデータで、これを元にSYという構造が自動生成される。
処理結果系 †
- SY-SUBRC
SELECT命令や汎用モジュールなど、諸々の処理結果が格納される変数。 - SY-DBCNT
SELECT命令で抽出したデータの件数が格納される。 - SY-MSGID
発行したメッセージのメッセージクラス。 - SY-MSGTY
発行したメッセージのメッセージタイプ。 - SY-MSGNO
発行したメッセージのメッセージ番号。 - SY-UCOMM
機能コードが格納される。 - SY-DYNNR
実行中のプログラムのDynpro番号が格納される。 - SY-CPROG
実行中のプログラムのプログラムIDが格納される。
呼び出し元がある場合は呼び出し元のプログラムIDが格納される。 - SY-REPID
実行中のプログラムのプログラムIDが格納される。 - SY-PAGNO
出力した帳票の現在表示しているページの番号が格納されり。
環境系 †
- SY-LANGU
ログオン言語が格納される。 - SY-DATUM
サーバ日付が格納される。
ジョブなどサーバ日付が重要なシーンではこちらを使用すること。 - SY-UZEIT
サーバ時刻が格納される。
DATUMと同じく、ジョブやベーシス的なシーンでは、こちらを使用すること。 - SY-DATLO
タイムゾーンを考慮した日付項目。
日本にサーバを設置する日本企業への導入においてはSY-DATUMとイコールであるため気にすることもないかもしれないが、業務的なレポートやフォームにおいてはこちらを使うこと。 - SY-TIMLO
タイムゾーンを考慮した時刻項目。
上記DATLOと同じく、業務的なシーンではこっちを使うこと。
まとめ前のメモ †
システム日付の利用の仕方 †
プログラムの中で、システム日付は安易に使用してはならない。
というのも、システム本体あるいはサブシステム移行にあたって過去日の伝票を入力するなんてこともあるわけだが、ことごとく邪魔になる。
そもそも内部的な処理を除けばシステム日付に頼らざるを得ないシーンは多くはないはずで、例えば得意先発注日や伝票日付および転記日などシステム日付なんかよりもよっぽど妥当性が高い項目はある。
あるいは、選択条件でもよいし。
移行とかシステム切り替えとかイチイチ導入時に考えてられるかよ!という話もあるのだが、SAP導入企業ですら諸般の事情によりシステムの寿命が数年しかないこともあるわけだから、細部まではケアできなくとも、後々薬価になりそうなロジックは組み込まないのが吉。
SY-DATUMとSY-DATLOの違い †
何の疑問もなく、システム日付=SY-DATUMだと思っていないか?使っていないか?
DATUMはサーバ時刻、DATLOはサーバ時刻にタイムゾーンを加味したローカル時刻。
「いや、日本企業が日本にデータセンタがあるパターンが殆どじゃんwww」というオメデタイ人も割といるが、そういうプレハブ的な思考回路だから変化に弱い仕組み、コンセプトを理解しない設計をして余計な人員と工数を無駄遣いする羽目になる。
こういう「目の前に実害があるか否かも大事だけど、それだけじゃなくて、本来どうあるべきかを考える」ってのが本来のコンサルティングなわけで、目の前の即物的なことだけしか見ない聞かない考えないっていうファストフード的なITとの関わり方をプロフェッショナルがやっちゃいけない。
コメントはありません。 Comments/ABAP/システム変数?