c语言sscanf函数的用法是什么
313
2022-11-14
ALV双击弹出新ALV,并响应新ALV事件
一个需求,ALV展示后,双击某行,再弹出一个ALV 某些信息,然后,响应弹出ALV的事件。
然后做了个demo
执行显示spfli数据,双击某行,根据carrid 获取sflight 表数据,弹出alv 展示sflight数据,然后双击sflight数据,弹出message显示双击了第几行。
效果图
其实没什么,太久不做这类的了,做个备份吧,以后方便copy
主要代码如下;
9001空白屏幕
*&---------------------------------------------------------------------**& Include ZLM_TEST_001_TOP*&---------------------------------------------------------------------**--global dataDATA: GT_SPFLI TYPE TABLE OF SPFLI, GT_SFLIGHT TYPE TABLE OF SFLIGHT.*---alv dataDATA: GCL_GRID_SPFLI TYPE REF TO CL_GUI_ALV_GRID, "ALV控件 GCL_GRID_SFLIGHT TYPE REF TO CL_GUI_ALV_GRID, "ALV控件 GCL_DOC_SPFLI TYPE REF TO CL_GUI_DOCKING_CONTAINER, GCL_DOC_SFLIGHT TYPE REF TO CL_GUI_DIALOGBOX_CONTAINER. "第二个弹出框alv 容器*---the first alv event classCLASS LCL_EVENT_SPFLI_RECEIVER DEFINITION. PUBLIC SECTION. METHODS HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID IMPORTING E_ROW E_COLUMN. METHODS HANDLE_CLOSE FOR EVENT CLOSE OF CL_GUI_DIALOGBOX_CONTAINER IMPORTING SENDER.ENDCLASS.CLASS LCL_EVENT_SPFLI_RECEIVER IMPLEMENTATION. METHOD HANDLE_DOUBLE_CLICK. DATA:LS_SPFLI TYPE SPFLI. READ TABLE GT_SPFLI INTO LS_SPFLI INDEX E_ROW. SELECT * FROM SFLIGHT INTO TABLE GT_SFLIGHT WHERE CARRID = LS_SPFLI-CARRID. PERFORM FRM_SHOW_SFLIGHT. ENDMETHOD. METHOD HANDLE_CLOSE. CALL METHOD SENDER->SET_VISIBLE EXPORTING VISIBLE = SPACE. ENDMETHOD.ENDCLASS.*---event calss for the second alvCLASS LCL_EVENT_SFLIGHT_RECEIVER DEFINITION. PUBLIC SECTION. METHODS HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID IMPORTING E_ROW E_COLUMN.ENDCLASS.CLASS LCL_EVENT_SFLIGHT_RECEIVER IMPLEMENTATION. METHOD HANDLE_DOUBLE_CLICK. DATA:LS_SFLIGHT TYPE SFLIGHT. DATA:LV_MSG TYPE STRING. READ TABLE GT_SFLIGHT INTO LS_SFLIGHT INDEX E_ROW. IF SY-SUBRC = 0. LV_MSG = E_ROW. CONCATENATE 'Row:' LV_MSG INTO LV_MSG SEPARATED BY SPACE. MESSAGE LV_MSG TYPE 'I'. ENDIF. ENDMETHOD.ENDCLASS.*---eventDATA: EVENT_SPFLI_RECEIVER TYPE REF TO LCL_EVENT_SPFLI_RECEIVER.DATA: EVENT_SFLIGHT_RECEIVER TYPE REF TO LCL_EVENT_SFLIGHT_RECEIVER.
*&---------------------------------------------------------------------**& Form FRM_ALV_SPFLI*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM FRM_ALV_SPFLI . IF GCL_GRID_SPFLI IS INITIAL. CREATE OBJECT GCL_DOC_SPFLI EXPORTING REPID = SY-REPID DYNNR = '9001'* side = cl_gui_docking_container=>dock_at_right "ALV贴屏幕右边,从屏幕右边开始算宽度 SIDE = CL_GUI_DOCKING_CONTAINER=>DOCK_AT_LEFT "ALV贴屏幕左边,从左边算屏幕宽度, EXTENSION = 900 "屏幕宽度 STYLE = CL_GUI_CONTROL=>WS_CHILD "可选参数,设置ALV是否可用手动拖动大小 EXCEPTIONS CNTL_ERROR = 1 CNTL_SYSTEM_ERROR = 2 CREATE_ERROR = 3 LIFETIME_ERROR = 4 LIFETIME_DYNPRO_DYNPRO_LINK = 5 OTHERS = 6. IF SY-SUBRC <> 0. MESSAGE S001(00) WITH '屏幕初始化失败'. LEAVE LIST-PROCESSING. ENDIF. CREATE OBJECT GCL_GRID_SPFLI EXPORTING I_PARENT = GCL_DOC_SPFLI.* event 绑定事件 CREATE OBJECT EVENT_SPFLI_RECEIVER. "双击某一单元格事件 SET HANDLER EVENT_SPFLI_RECEIVER->HANDLE_DOUBLE_CLICK FOR GCL_GRID_SPFLI.* "显示内表数据 CALL METHOD GCL_GRID_SPFLI->SET_TABLE_FOR_FIRST_DISPLAY EXPORTING I_STRUCTURE_NAME = 'SPFLI' CHANGING IT_OUTTAB = GT_SPFLI[]. ELSE. CALL METHOD CL_GUI_CFW=>FLUSH. ENDIF.ENDFORM. " ZFORM_ALV_SHOW*&---------------------------------------------------------------------**& Form FRM_SHOW_SFLIGHT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM FRM_SHOW_SFLIGHT . IF GCL_GRID_SFLIGHT IS INITIAL. CREATE OBJECT EVENT_SFLIGHT_RECEIVER. CREATE OBJECT GCL_DOC_SFLIGHT EXPORTING TOP = 150 LEFT = 150 LIFETIME = CNTL_LIFETIME_DYNPRO CAPTION = 'SFLIGHT' WIDTH = 800 HEIGHT = 200. CREATE OBJECT GCL_GRID_SFLIGHT EXPORTING I_PARENT = GCL_DOC_SFLIGHT. SET HANDLER EVENT_SPFLI_RECEIVER->HANDLE_CLOSE FOR GCL_DOC_SFLIGHT. SET HANDLER EVENT_SFLIGHT_RECEIVER->HANDLE_DOUBLE_CLICK FOR GCL_GRID_SFLIGHT. CALL METHOD GCL_GRID_SFLIGHT->SET_TABLE_FOR_FIRST_DISPLAY EXPORTING I_STRUCTURE_NAME = 'SFLIGHT' CHANGING IT_OUTTAB = GT_SFLIGHT. CALL METHOD CL_GUI_CONTROL=>SET_FOCUS EXPORTING CONTROL = GCL_GRID_SFLIGHT. ELSE. CALL METHOD GCL_DOC_SFLIGHT->SET_VISIBLE EXPORTING VISIBLE = 'X'. CALL METHOD GCL_GRID_SFLIGHT->REFRESH_TABLE_DISPLAY. ENDIF.ENDFORM.
*&---------------------------------------------------------------------**& Include ZLM_TEST_001_PBO*&---------------------------------------------------------------------**&---------------------------------------------------------------------**& Module STATUS_9001 OUTPUT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*MODULE STATUS_9001 OUTPUT. SET PF-STATUS 'TEST_STATUS'.ENDMODULE.*&---------------------------------------------------------------------**& Module MDL_SHOW OUTPUT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*MODULE MDL_SHOW OUTPUT. PERFORM frm_alv_spfli.ENDMODULE.
*&---------------------------------------------------------------------**& Module MDL_EXIT INPUT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*MODULE MDL_EXIT INPUT. LEAVE PROGRAM.ENDMODULE.
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~