ABAP-弹出对话框函数-'POPUP_TO_CONFIRM'
- 格式:docx
- 大小:13.97 KB
- 文档页数:2


sap abap屏幕显示调用总结-alv双击打开窗口和弹出窗1)alv及其事件定义CLASS lcl_event_receiver DEFINITION.PUBLIC SECTION.METHODS handle_f4FOR EVENT onf4 OF cl_gui_alv_gridIMPORTING e_fieldnamees_row_noer_event_dataet_bad_cells.METHODS catch_doubleclickFOR EVENT double_click OF cl_gui_alv_gridIMPORTING e_rowe_columnes_row_no .ENDCLASS. "lcl_event_receiver DEFINITION *---------------------------------------------------------------------* * CLASS lcl_event_receiver IMPLEMENTATION*---------------------------------------------------------------------* CLASS lcl_event_receiver IMPLEMENTATION. METHOD handle_f4.PERFORM f4 USING e_fieldnamees_row_noer_event_dataet_bad_cells.ENDMETHOD. "handle_f4 METHOD catch_doubleclick.PERFORM atdoubleclick USING e_rowe_columnes_row_no.ENDMETHOD. "catch_doubleclickENDCLASS. "lcl_event_receiver IMPLEMENTATIONFORM atdoublec lick USING p_e_rowp_e_columnp_es_row_no.* MESSAGE '双击' TYPE 'I'.READ TABLE itab INDEX p_e_row.IF p_e_column = 'EBELN'.SET PARAMETER ID 'BES' FIELD itab-ebeln.CALL FUNCTION 'ME_DISPLAY_PURCHASE_DOCUMENT' "相应双击事件,根据双击列进行调用相应的方法EXPORTINGi_ebeln = itab-ebelni_enjoy = 'X'.ELSEIF p_e_column = 'LIFNR'.CALL FUNCTION 'MMPUR_VENDOR_DISPLAY'EXPORTINGim_lifnr = itab-lifnrim_ekorg = 'B000'.else.CALL SCREEN 200."(弹出窗口)ENDIF.ENDFORM. " atdoubleclickMODULE status_0100 OUTPUT.SET PF-STATUS 'MAIN200'.gs_variant-report = sy-repid."注册事件到alvIF g_custom_container IS INITIAL.CREATE OBJECT g_custom_containerEXPORTING container_name = g_container.IF go_grid IS INITIAL.CREATE OBJECT go_gridEXPORTINGi_parent = g_custom_container."cl_gui_container=>screen0."CREATE OBJECT event_receiver.SET HANDLER event_receiver->handle_f4 FOR go_grid.CALL METHOD go_grid->register_f4_for_fieldsEXPORTINGit_f4 = gt_f4."gt_f4用于保存产生f4事件的字段SET HANDLER event_receiver->catch_doubleclick FOR go_grid.IF sy-batch IS INITIAL.CALL METHOD go_grid->register_edit_eventEXPORTINGi_event_id = cl_gui_alv_grid=>mc_evt_enter.ENDIF.PERFORM load_data_into_grid.ENDIF.ENDIF.ENDMODULE.(2)弹出窗口200显示:CLASS lcl_event_handler DEFINITION.PUBLIC SECTION.CLASS-METHODS:on_close FOR EVENT close OF cl_gui_dialogbox_container IMPORTING sender.ENDCLASS. "lcl_event_handler DEFINITION*----------------------------------------------------------------------** CLASS lcl_event_handler IMPLEMENTATION*----------------------------------------------------------------------* CLASS lcl_event_handler IMPLEMENTATION.METHOD on_close.CALL METHOD sender->free.FREE: con_diabox, l_alv.CALL SCREEN '100'.ENDMETHOD. "on_closeENDCLASS.MODULE STATUS_0200 OUTPUT.SELECT * FROM sflight INTO TABLE lt_sflight.IF con_diabox IS INITIAL.CREATE OBJECT con_diaboxEXPORTINGwidth = 600height = 200top = 70left = 140caption = 'Title'EXCEPTIONSOTHERS = 1.SET HANDLER lcl_event_handler=>on_close FOR con_diabox .CREATE OBJECT l_alvEXPORTINGi_parent = con_diabox.ENDIF.CALL METHOD l_alv->set_table_for_first_display EXPORTINGi_structure_name = 'SFLIGHT'CHANGINGit_outtab = lt_sflight.ENDMODULE.。
ABAP(高级商务应用程序编程语言)是一种支持SAP系统开发的编程语言。
ABAP Dialog是指在SAP系统中用户与系统进行交互的界面。
本文将介绍ABAP Dialog区间的相关概念和使用方法。
一、ABAP Dialog区间的概念ABAP Dialog区间是指在SAP系统中用来实现用户交互的一个特定区域。
这个区域通常包括了用户输入的字段、系统的输出结果、以及交互式的按钮和菜单。
在ABAP程序中,通过对Dialog区间的设置和控制,可以实现与用户的有效交流,让用户能够更方便地使用系统进行操作。
二、ABAP Dialog区间的组成ABAP Dialog区间通常由以下几个主要组成部分构成:1. 输入字段:用户可以在这些字段中输入相关的信息,比如订单号、产品名称等等。
这些输入字段可以是文本框、下拉菜单、多选框等形式。
2. 输出结果:系统会在Dialog区间中显示相关的查询结果、报表、图形等信息,让用户能够直观地看到系统处理的结果。
3. 交互按钮:通过按钮和菜单,用户可以触发系统执行相应的功能,比如提交订单、保存数据、导出报表等。
4. 交互逻辑:除了上述组成部分之外,ABAP Dialog区间还包括了一些交互逻辑的控制,比如事件触发、界面刷新、数据验证等。
三、ABAP Dialog区间的使用方法在ABAP程序中,可以通过一些特定的语句和函数来创建和使用Dialog区间。
以下是一些主要的使用方法:1. 在ABAP程序中使用DIALOG语句定义Dialog区间的布局和元素。
2. 通过MODULE模块和相关的事件处理函数,实现处理用户的交互操作和逻辑。
3. 使用相关的函数和方法,比如对话框函数(POPUP_TO_CONFIRM、POPUP_TO_DECIDE等)来实现用户提示和确认操作。
四、ABAP Dialog区间的优势和应用场景ABAP Dialog区间作为SAP系统中用户交互的重要部分,具有以下一些优势和应用场景:1. 提高用户体验:通过合理的布局和交互设计,可以提高用户在系统中的操作效率和便利性。
SAP中的popupdialog(弹出对话框)常见实现⽅法⽅法1:FM:POPUP_TO_CONFIRM(标准对话弹出消息)有三个button:YES-NO-CANL,可进⾏对应的逻辑推断可设定标题,描写叙述问题,不⽅便对⽂本进⾏换⾏等排版,不能改变弹出框⼤⼩。
⽅法2:FM:POPUP_CONTINUE_YES_NO有两个button:J-N(YES-NO),可进⾏对应的逻辑推断可设定标题,最⼤仅仅能⼩时两⾏⽂本,不⽅便对两⾏以上⽂本进⾏排版,不能改变弹出框⼤⼩。
⽅法3:以内部数据,在⽂本编辑器中按⾏进⾏输出FM:ADA_POPUP_WITH_TABLE(Popup to display internal table data)可设定标题,能将⾮常多数据,以text⽂本的⽅式,在弹出框中以text编辑器UI显⽰,仅仅能控制弹出框显⽰位置。
不能改变弹出框⼤⼩。
⽅法4:FM:POPUP_WITH_TABLE_DISPLAY(将数据当做表格数据显⽰)有两个button:选择-取消-(双击)可设定标题。
可将⾮常多数据按⾏进⾏显⽰,⽽且还有选择功能,能够返回选中的⾏数。
能够控制弹出框显⽰位置。
能够改变弹出框⼤⼩⽅法5:FM:POPUP_WITH_TABLE_DISPLAY_OK有两个button:选择-取消跟函数POPUP_WITH_TABLE_DISPLAY⾮常相似。
可是没有选择功能,⽽且标题始终是‘Register’。
不能改变。
能够控制弹出框显⽰位置,能够改变弹出框⼤⼩⽅法6:⾃⼰写代码拷贝SAP 标准的程序⽤OO 的⽅法改写ALV⾥⾯detail display 的实现⽅法。
实现⽅法例如以下:CALL SCREEN 0101 STARTING AT STARTPOS_COL STARTPOS_ROWENDING AT ENDPOS_COL ENDPOS_ROW.*&---------------------------------------------------------------------**& Module STATUS_0101 OUTPUT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*MODULE status_0101 OUTPUT.SET PF-STATUS '101'.SET TITLEBAR '101'.ENDMODULE. " STATUS_0101 OUTPUT*&---------------------------------------------------------------------**& Module USER_COMMAND_0101 INPUT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*MODULE user_command_0101 INPUT.IF ok_code = 'CANCEL'.* LEAVE PROGRAM.LEAVE TO SCREEN 0.ELSEIF ok_code = 'CANCEL'.* LEAVE PROGRAM.LEAVE TO SCREEN 0.ENDIF.ENDMODULE. " USER_COMMAND_0101 INPUT重点:CALL SCREEN 0101 STARTING ATENDING AT .这个语法,你就明确了,那么煞费苦⼼的去找POPPUP 函数是多么的狼狈。