トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

ABAP/CASE のバックアップ(No.1)


処理の分岐に使用する。

概要

IFと同じく、分岐に用いる。なお、IFとの差異は下記の通り。

  • ある変数を軸とする 複数の判断要素は採用できない。例えば会社コードなど、処理の軸を規定して使用する。
  • 判断の優先順位がない 複数の条件に合致する場合でもIFならば優先順位をつけられるが、こちらにはない。
  • 等号での比較に限られる 大なり・小なりなどは使用できない。但し、ORは使える。

用法

概要の通り、つまり「ある変数を軸とし、優先順位のない等号による比較」に用いる。

また、逆にこの命令を使うようなシーンではIFと違い優先順位や条件分岐を深慮せずに済むため、ラジオボタンやコンフィグの追加などがあり得る場合には非常に有効と言える。 その際、実装担当者が修正箇所を発見しやすかったり、デグレのリスクが低減されたりすることもプラスの点と考える。

但し、柔軟性で言えば100%IFに軍配が上がるため、考えなしに使うのはやめよう。

サンプル

# CASE BKPF-BUKRS.

# WHEN C_JAPAN.

#   L_REGION = 'ASIA'.

#  WHEN C_US.

# L_REGION = 'NORTH AMERICA'.

#  WHEN OTHERS.

# CONTINUE.

# ENDCASE.

その他

ある担当者が、下記のようなコーディングをしていたことがあった。

# CASE 'X'.

# WHEN RADIO_A.

#   PERFORM PROCESS_A.

#  WHEN RADIO_B.

#   PERFORM PROCESS_B.

#  WHEN RADIO_C.

#   PERFORM PROCESS_C.

# ENDCASE.

何をやっていたかというと、選択されたラジオボタンに応じた処理に遷移するというもの。 CASE文の本来的な用途に反するため、脊椎反射でNoいう答えを出したが、可視性という観点ではどうか。

非常にわかりやすいのだ。

これは、あるべき論あるいは綺麗事と実利・実益の交差点ともいえる利用法で、個人的には、自分は絶対にこういう書き方をしないが、わかりやすいのは事実だ。 諸兄はどう思われるか?




コメントはありません。 Comments/ABAP/CASE

お名前: