1. 程式人生 > 其它 >ABAP 業務處理中的彈窗提示

ABAP 業務處理中的彈窗提示

網上各種彈窗技術,以下僅記錄業務中用到的。

第一,ALV按鈕事件中,彈窗提示。

使用過的是

'POPUP_TO_CONFIRM'
WHEN 'SCRAP'.
      LOOP AT IT_ALV INTO WA_ALV WHERE SEL EQ 'X'.
        SELECT VBELN INTO TABLE @DATA(VBAP_TEMP) FROM ZTSD027A WHERE VBELN = @WA_ALV-VBELN AND TYPE = 'S'.
        CLEAR: WA_ALV.
      ENDLOOP.
      IF VBAP_TEMP IS NOT
INITIAL. CALL FUNCTION 'POPUP_TO_CONFIRM' EXPORTING TEXT_QUESTION = '此合同已經傳入過OA,是否需要再次上傳?' TEXT_BUTTON_1 = ''(001) TEXT_BUTTON_2 = ''(002) DEFAULT_BUTTON = '2' DISPLAY_CANCEL_BUTTON = '' IMPORTING
ANSWER = LV_ANSWER EXCEPTIONS TEXT_NOT_FOUND = 1 OTHERS = 2. IF SY-SUBRC <> 0. ENDIF. IF LV_ANSWER = '2' OR LV_ANSWER = 'A'. EXIT. ELSEIF LV_ANSWER = '1'. PERFORM
DOWN_DATA. PERFORM MOVE_ALV TABLES IT_ALV. ELSE. MESSAGE '不要瞎點!' TYPE 'S' . ENDIF.

TEXT_QUESTION:它的功能就是寫入要顯示給使用者的資訊。

ICON_BUTTON_1:按鈕上顯示資訊 返回值是1

ICON_BUTTON_2:按鈕上顯示資訊 返回值是2

DEFAULT_BUTTON :呼叫函式後哪個按鈕被預設選中

DISPLAY_CANCEL_BUTTON:顯示取消的按鈕並可用

START_COLUMN;TART_ROW:這兩個是一對的控制對話方塊在畫面上顯示的位置

ANSWER:這個很重要是存放你選擇哪個BUTTON返回值的,定義為一位的CHAR型就可以了,可以根據返回值進行操作

第二,用於ALV取數前的條件螢幕判斷。

有時候,對於螢幕條件需要在執行程式前判斷 不大方便時,採取了一個折中措施,放在執行開始前。

螢幕如下

SELECTION-SCREEN BEGIN OF BLOCK BLK02 WITH FRAME TITLE TEXT-004.
SELECT-OPTIONS: S_WERKS FOR MARC-WERKS MODIF ID M1,        "工廠
                S_LGORT FOR MARD-LGORT MODIF ID M1,        "庫位
                S_MATNR FOR MARA-MATNR MODIF ID M1,        "物料編碼
                S_MAKTX FOR MAKT-MAKTX MODIF ID M1,        "物料描述
                S_MTART FOR MARA-MTART MODIF ID M1,        "物料型別
                S_MATKL FOR MARA-MATKL MODIF ID M1,        "物料組
                S_ERNAM FOR MARA-ERNAM MODIF ID M1,        "建立人
                S_ERSDA FOR MARA-ERSDA MODIF ID M1.        "建立時間
SELECTION-SCREEN END OF BLOCK BLK02.

一般檢查用法:

*AT SELECTION-SCREEN.
*  IF S_WERKS IS INITIAL.
*    MESSAGE '請填入一個查詢工廠' TYPE 'E'.
*  ENDIF.
*  IF S_LGORT IS INITIAL.
*    MESSAGE '請填入一個查詢庫位' TYPE 'E'.
*  ENDIF.

彈窗做法:

IF S_WERKS IS INITIAL.
*    MESSAGE '請填入一個查詢工廠' TYPE 'E' DISPLAY LIKE 'S'.
    CALL FUNCTION 'POPUP_DISPLAY_MESSAGE'
      EXPORTING
        TITEL = '請填入一個查詢工廠'
        MSGID = '00'
        MSGTY = 'E'
        MSGNO = '001'
        MSGV1 = '請填入一個查詢工廠'
*       MSGV2 =
*       MSGV3 =
*       MSGV4 =
*       START_COLUMN       = 5
*       START_ROW          = 5
      .
    STOP.
  ENDIF.
  IF S_LGORT IS INITIAL.
*    MESSAGE '請填入一個查詢庫位' TYPE 'E'.
    CALL FUNCTION 'POPUP_DISPLAY_MESSAGE'
      EXPORTING
        TITEL = '請填入一個查詢庫位'
        MSGID = '00'
        MSGTY = 'E'
        MSGNO = '001'
        MSGV1 = '請填入一個查詢庫位'
*       MSGV2 =
*       MSGV3 =
*       MSGV4 =
*       START_COLUMN       = 5
*       START_ROW          = 5
      .
    STOP.
  ENDIF.