1. 程式人生 > >選擇螢幕動態隱藏欄位(SELECT-OPT…

選擇螢幕動態隱藏欄位(SELECT-OPT…

申明:部落格針對初級顧問 選擇螢幕,比如查詢報表,有時候需要根據使用者選擇動態隱藏篩選條件 如果僅僅是灰掉不可顯示,直接screen-input 0.就行,(1可編輯0不可編輯) 如果需要不顯示,screen-invisible '1'. 如果使用了SELECT-OPTIONS:而且沒有設定NO-EXTENSION 後面會多出一個選擇值的按鈕來。 其實想去掉很簡單,直接debug看這個對應的名稱就行了。 一般前面lab頁籤是 %_定義欄位名稱_%_APP_%-TEXT 後面的值選擇按鈕是 '%_定義欄位名稱_%_APP_%-VALU_PUSH'  案例如下: TABLES: bsid,vbak,vbrk,vbrp,knc1. SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001. PARAMETERS p_r  RADIOBUTTON GROUP g1 USER-COMMAND select DEFAULT 'X'. "日模式 PARAMETERS p_y  RADIOBUTTON GROUP g1  .                               "月模式 SELECTION-SCREEN END OF BLOCK b1. SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE t1 . SELECT-OPTIONS:       s_bukrs    FOR    bsid-bukrs  ,                  "  公司程式碼       s_vkorg    FOR    vbak-vkorg  ,                  "  銷售組織       s_fkdat    FOR    vbrk-fkdat  ,                  "  發票日期       s_kkber    FOR    vbrk-kkber  ,                  "  信貸範圍       s_kunag    FOR    vbrk-kunag  ,                  "  售達方       s_gsber    FOR    vbrp-gsber  ,                  "  業務範圍       s_gjahr     FOR    knc1-gjahr  .                  "  會計年度 PARAMETERS:       p_budat   TYPE   bsid-budat  ,                  "  記賬日期       p_span    TYPE   num1  .                        "  期間 SELECTION-SCREEN END OF BLOCK b2. AT SELECTION-SCREEN OUTPUT . PERFORM frm_modify_screen. START-OF-SELECTION. FORM 
frm_modify_screen .

  LOOP AT SCREEN.
    IF p_r IS NOT INITIAL.                                             "如果是日模式,隱藏會計年底和期間
      t1 text-002.
      IF screen-name 'S_GJAHR' OR
          screen-name 'P_SPAN'  OR
          screen-name '%_P_SPAN_%_APP_%-TEXT'.

        CLEAR p_span.
        CLEAR 
s_gjahr[].
        screen-input 0.
        screen-invisible '1'.
      ENDIF.
    ELSE.                                                              "如果是月模式,隱藏業務範圍和記賬日期
      t1 text-003.

      IF screen-name 'S_GSBER-LOW'
        OR screen-name 'P_BUDAT'
        OR screen-name 'S_GSBER-HIGH'

         OR screen-name '%_S_GSBER_%_APP_%-TEXT'                     "前面描述 lab籤
         OR screen-name '%_S_GSBER_%_APP_%-VALU_PUSH'                "select options 後面的值選擇按鈕
         OR screen-name '%_P_BUDAT_%_APP_%-TEXT'.

        CLEAR p_budat.
        CLEAR s_gsber[].
        screen-active '1'.
        screen-invisible '1'.
        screen-input 0.
      ENDIF.
    ENDIF.


    MODIFY SCREEN.
  ENDLOOP.


ENDFORM.                    " FRM_MODIFY_SCREEN