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.