ABAP SCREEN 相關用法

一, 屏幕基本元素(單值輸入框,RANGE輸入,單選按鈕,複選框定義) 

TABLES: SFLIGHT.

SELECTION-SCREEN BEGIN OF BLOCK bk1 WITH FRAME TITLE text-001.
  PARAMETERS: P_CARRID  LIKE SFLIGHT-CARRID  ." 單值輸入框


  SELECT-OPTIONS:     "定義RANGE輸入
  S_CARRID FOR SFLIGHT-CARRID ,
  S_CONNID FOR SFLIGHT-CONNID , 
  S_1  FOR SCARR-CARRID DEFAULT 'AA' TO 'AZ' OPTION BT SIGN E . "設置默認值
                  
  SELECTION-SCREEN SKIP 1. "屏幕換行
  PARAMETERS: PR_01 RADIOBUTTON GROUP gp1 DEFAULT 'X',  "定義RADIOBUTTON
                            PR_02 RADIOBUTTON GROUP  gp1.
  PARAMETERS: p_old TYPE c  AS CHECKBOX.   "定義複選框

  SELECTION-SCREEN ULINE.
  SELECTION-SCREEN SKIP 1. "屏幕換行
 
  SELECTION-SCREEN COMMENT 1(65) TEXT-T02 ."屏幕上輸出文本
  SELECTION-SCREEN SKIP 1. "屏幕換行

  SELECTION-SCREEN PUSHBUTTON 30(10) PHB_01 USER-COMMAND PB1 . "添加按鈕


SELECTION-SCREEN END OF BLOCK bk1.

PARAMETERS 附加項
DEFAULT 'A'   設置初始值  
LENGTH N 定義長度,只適用於C,N,X,P
DECIMALS des 指定小數點位數
MEMORY ID pid 指定SAP內存參數ID
MATCHCODE OBJECT mobj 設定使用的Search Help (SE11 中定義搜索幫助)
MODIF ID 通過screen-group1爲屏幕元素分組
NO-DISPLAY 不顯示在畫面上
LOWER CASE 區分大小寫(默認大寫)

 

SELECT-OPTIONS 附加項
DEFAULT 'A' 始值初始值
DEFAULT g... OPTION op... SIGN s 設置初始的option和sign
DEFAULT g TO h

設置初始的LOW值和HIGH值 ,SIGN爲 ‘BT’

DEFAULT g TO h OPTION op... SIGN s 設置初始的OPTION,SIGN, LOW值和HIGH值 ,SIGN只能爲BT 或 NB
MEMORY ID pid 指定SAP內存參數ID
MATCHCODE OBJECT mobj 設定使用的Search Help
OBLIGATORY 設定必輸項,畫面上顯示?,不輸入時自動報錯
VISIBLE LENGTH vlen 設置顯示長度
NO-EXTENSION 隱藏多指輸入按鈕
NO INTERVALS 隱藏HIGH 輸入部分

1.2  添加 FUNCTION KEY .

TABLES: SSCRFIELDS .
SELECTION-SCREEN FUNCTION KEY 1.
SELECTION-SCREEN FUNCTION KEY 2.
SELECTION-SCREEN FUNCTION KEY 3.

DATA LS_DYNTXT TYPE SMP_DYNTXT .

CLEAR LS_DYNTXT .
LS_DYNTXT-ICON_ID = ICON_CREATE .
LS_DYNTXT-QUICKINFO = 'CREATE' .
SSCRFIELDS-FUNCTXT_02 = LS_DYNTXT .

CLEAR LS_DYNTXT .
LS_DYNTXT-ICON_ID = ICON_DISPLAY .
LS_DYNTXT-QUICKINFO = 'DISPLAY' .
SSCRFIELDS-FUNCTXT_02 = LS_DYNTXT .

CLEAR LS_DYNTXT .
LS_DYNTXT-ICON_ID = ICON_DELETE .
LS_DYNTXT-QUICKINFO = 'DELETE' .
SSCRFIELDS-FUNCTXT_02 = LS_DYNTXT .

二,SELECTION-SCREEN BEGIN OF LINE 應用, 將多個參數組合後顯示在一行中,在行組中不能使用SELECT-OPTIONS,           SELECTION-SCREEN SKIP N 語句 

 SELECTION-SCREEN BEGIN OF LINE.
   PARAMETERS: P_BOX AS CHECKBOX.
   "指定關於參數的描述 SELECTION-SCREEN COMMENT fmt name 
   SELECTION-SCREEN COMMENT 5(29) text-001. 
   PARAMETERS: P_TEXT TYPE string.
 SELECTION-SCREEN END OF LINE.

 SELECTION-SCREEN BEGIN OF LINE. "list 帶描述
   SELECTION-SCREEN COMMENT 1(31) TEXT-L01 FOR FIELD P_LIST.
   PARAMETERS: P_LIST TYPE T001-BUKRS AS LISTBOX VISIBLE LENGTH 10 USER-COMMAND LS1.
   PARAMETERS: P_BUTXT TYPE T001-BUTXT.
 SELECTION-SCREEN END OF LINE.

 SELECT SINGLE BUTXT FROM T001 INTO P_BUTXT WHERE BUKRS = P_LIST .

爲下拉框賦值 CALL FUNCTION 'VRM_SET_VALUES'

  TYPE-POOLS VRM.
  DATA: VID    TYPE VRM_ID VALUE 'xxx', "下拉框的名稱
        VLIST  TYPE VRM_VALUES,
        VALUES LIKE LINE OF VLIST.

  SELECT ZKEY AS KEY
         TEXT
    FROM ZSTU_SALARY
    INTO CORRESPONDING FIELDS OF TABLE VLIST[]
    ORDER BY KEY
    .


  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      ID              = VID
      VALUES          = VLIST
    EXCEPTIONS
      ID_ILLEGAL_NAME = 1
      OTHERS          = 2.
  IF SY-SUBRC <> 0.
    MESSAGE '下拉框出錯,請聯繫管理員!' TYPE 'I' DISPLAY LIKE 'S'.
  ENDIF.

 

三, 動態修改選擇屏幕

3.1 SCRENN 參數

選擇屏幕、對話屏幕都有對應的SCREEN內表,下面是幾個重要屬性:

 Name : Name of the screen field。如果參數是select-options類型參數,則參數名以LOW與HIGH後綴來區分。

GROUP: 選擇屏幕元素通過MODIF ID 選項設置GROUP1(對話屏幕通過屬性設置),將屏幕元素分爲一組,方便屏幕的元素的批量修改

REQUIRED控制文本框、下拉列表屏幕元素的必輸性,使用此屬性後會忽略OBLIGATORY選項。取值如下:

0:不必輸,框中前面也沒有鉤
1:必輸,框中前面有鉤,系統會自動檢驗是否已輸入,相當於OBLIGATORY選項
2:不必輸,但框中前面有鉤,系統不會檢查是否已輸入,此時需要手動檢驗

INPUT:控制屏幕元素(包括複選框、單選框、文本框)的可輸性

ACTIVE:控制屏幕元素的可見性

3.2  屏幕假必輸,將輸入框的REQUIRED屬性設置爲2(顯示必須的鉤,但系統不會自動進行必輸驗證),去掉OBLIGATORY選         項(不去掉也會被忽略),並在AT SELECTION-SCREEN ON field事件裏時手動進行爲空驗證

PARAMETERS P_INPUT(128) MODIF ID  mxy  .
AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN  .
    "的必輸性:外觀上打鉤,但不自動校驗
    IF screen-group1 = 'MXY'.
      screen-required = '2'."外觀上打鉤,但不自動校驗
      MODIFY SCREEN.
  ENDLOOP.

AT SELECTION-SCREEN ON P_INPUT.
  IF P_INPUT IS INITIAL
    MESSAGE e055(00).
  ENDIF.

 3.3 屏幕隱藏字段

PARAMETERS: RB_01 RADIOBUTTON GROP G1 USER-COMMAND RA1,
            RB_02 RADIOBUTTON GROP G1 .

LOOP AT SCREEN .
  CASE 'X' .
  WHEN RB_01 .
    IF SCREEN-GROUP1 = '***'
      SCREEN-ACTIVE = 1 .
      MODIFY SCREEN .
    ENDIF.
  WHEN RB_02 .
    IF SCREEN-GROUP1 = '***'
      SCREEN-ACTIVE = 0 .
      MODIFY SCREEN .
    ENDIF.
ENDLOOP.

四, 屏幕事件

       INITIALIZATION  "初始化屏幕字段(SET TITLEBAR ,GUI STATUS, SET PF-STATUS),主要用於顯示SELECTION-SCREEN之前

       AT SELECTION-SCREEN " 屏幕跳出之前

       START-OF-SELECTION "取數據

       END-OF-SELECTION  "展示數據

       TOP-OF-PAGE  "普通報表輸出頁頭

        END-OF-PAGE "普通報表輸出頁尾

AT SELECTION-SCREEN(類似一個FORM),在屏幕中INPUT FIELD的值有變更時執行的事件,例如CHECKBOX的選擇與否,RADIOBUTTON的選擇,LISTBOX的選擇等等。

所以分爲以下幾個方面:

1. ... ON field :對SELECTION SCREEN具體的字段進行校驗,若錯誤則重新輸入,其他字段變灰

2. ... ON END OF sel :SELECT-OPTION觸發的事件,用於整個選擇表輸入結束後各行的檢查

3. ... OUTPUT :設置屏幕上畫面佈局

4. ... ON HELP-REQUEST FOR psel_low_high :當光標位於某屏幕字段時,選擇的幫助(F1)

5. ... ON RADIOBUTTON GROUP radi :單選按鈕事件,必須進行整體輸入檢查

6. ... ON BLOCK block :抑制塊內輸入值

7. ... ON VALUE-REQUEST FOR psel_low_high :當光標位於某屏幕字段時,選擇的幫助(F4)

 

發佈了25 篇原創文章 · 獲贊 0 · 訪問量 793
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章