ABAP 業務處理中的彈窗提示
阿新 • • 發佈:2021-08-16
網上各種彈窗技術,以下僅記錄業務中用到的。
第一,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 NOTINITIAL. CALL FUNCTION 'POPUP_TO_CONFIRM' EXPORTING TEXT_QUESTION = '此合同已經傳入過OA,是否需要再次上傳?' TEXT_BUTTON_1 = '是'(001) TEXT_BUTTON_2 = '否'(002) DEFAULT_BUTTON = '2' DISPLAY_CANCEL_BUTTON = '' IMPORTINGANSWER = 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'. PERFORMDOWN_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.