ラジオボタンで選択項目を動的に変更

概要


選択されたラジオボタンによって各項目の入力可能?入力不可を動的に制御する方法を紹介したいと思う。

サンプルコード:単一

PARAMETERS r_bukrs RADIOBUTTON GROUP rg DEFAULT 'X' USER-COMMAND command.
PARAMETERS r_vkorg RADIOBUTTON GROUP rg.
PARAMETERS p_bukrs TYPE bukrs.
PARAMETERS p_vkorg TYPE vkorg.
 
AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    CASE screen-name.
      WHEN 'P_BUKRS'.
        IF r_bukrs = 'X'.
          screen-input = 1.
        ELSE.
          screen-input = 0.
        ENDIF.
      WHEN 'P_VKORG'.
        IF r_vkorg = 'X'.
          screen-input = 1.
        ELSE.
          screen-input = 0.
        ENDIF.
    ENDCASE.
    MODIFY SCREEN.
  ENDLOOP.

説明


今回は、r_bukrsを選択された場合、p_bukrsを入力可能にしp_vkorgを入力不可にする。
また、逆にr_vkorgを選択された場合、p_bukrsを入力不可にしp_vkorgを入力可能にするというプログラムである。
気をつけて頂きたいのがAT SELECTION-SCREEN OUTPUT.のイベントブロックが実行されるようにラジオボタンにUSER-COMMANDのオプションをつける事だ。
SCREENは選択画面の情報をもっているので、ループしSCREEN-NAMEで処理対象の選択項目を判断する。
その後、どちらのラジオボタンが選択されているかを確認し、SCREEN-INPUTに1(入力可能)か0(入力不可)の値を設定する。
最後にMODIFYでSCREENの値を反映する。

上記の例は一つ一つの項目を設定したが、複数の項目を同時に設定したい場合はグループを設定する事で判断が可能だ。

 

サンプルコード:グループ

PARAMETERS r_bukrs RADIOBUTTON GROUP rg DEFAULT 'X' USER-COMMAND command.
PARAMETERS r_vkorg RADIOBUTTON GROUP rg.
 
PARAMETERS p_bukrs TYPE bukrs MODIF ID BUK.
PARAMETERS p_land1 TYPE LAND1 MODIF ID BUK.
 
PARAMETERS p_vkorg TYPE vkorg MODIF ID VKO.
PARAMETERS p_vtweg TYPE vtweg MODIF ID VKO.
 
AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    CASE screen-group1.
      WHEN 'BUK'.
        IF r_bukrs = 'X'.
          screen-input = 1.
        ELSE.
          screen-input = 0.
        ENDIF.
      WHEN 'VKO'.
        IF r_vkorg = 'X'.
          screen-input = 1.
        ELSE.
          screen-input = 0.
        ENDIF.
    ENDCASE.
    MODIFY SCREEN.
  ENDLOOP.

  

説明


各選択項目にMODIF IDのオプションをつけると、SCREEN-GROUP1に値が設定される。
その値を使用する事が各選択項目の名前を一つずつ確認する必要がなくなる。
選択項目が多い場合にはプログラムソースを簡略化する事ができるのでお勧めだ。

補足


構造:screenは選択画面のさまざまな情報を保持しており、入力可能?入力不可だけではなく
項目自体を表示?非表示(screen-invisible)にしたり、必須?任意(screen-required)を変更したりする事が可能だ。

  

转载于:https://www.cnblogs.com/yjyongil/p/10494071.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值