既存のプログラムの CASE ステートメントを変更しているときに、NetWeaver ポータル設定を設定するためにいくつかのロジックが繰り返される 2 番目のブロックを追加する必要がありました。これは、ローカル変数に値を設定し、その変数を Changing パラメータに割り当てることによって行われます。コードをコピーしてプリティ プリントを実行し、コンパイラが不明な変数について文句を言うことを期待しました。しかし驚いたことに、このコードは実際には問題なくコンパイルされます。
CASE i_actionid.
WHEN 'DOMIGO'.
DATA: ls_portal_actions TYPE powl_follow_up_sty.
CLEAR ls_portal_actions.
ls_portal_actions-bo_system = 'SAP_ECC_Common'.
" [...]
c_portal_actions = ls_portal_actions.
WHEN 'EBELN'.
ls_portal_actions-bo_system = 'SAP_ECC_Common'.
" [...]
C_PORTAL_ACTIONS = ls_portal_actions.
ENDCASE.
他のすべてのプログラミング言語で見たようDATA:
に、最初のWHEN
ステートメントの宣言はカプセル化して、その switch ブロック内でのみ使用できるようにする必要があります。SAP はこのカプセル化を無視して、その値を CASE ステートメント全体で使用できるようにしますか? これはどこかに文書化されていますか?
このコードは正常にコンパイルされ、2 番目のスイッチでローカル変数をダブルクリックすると、最初のデータ宣言に移動することに注意してください。ただし、テスト環境がダウンしているため、このコードが正しく実行されることをテストできませんでした。