CFW_DEMO 屏幕上添加 图片、按钮、文本编辑、HTML

来源:互联网 发布:c语言中随机函数 编辑:程序博客网 时间:2024/06/05 18:49

本DEMO程序参考了部分系统标准DEMO功能,在PBO的module中可看到相关程序。

相关类和方法的说明资料在下面的链接中可以看到

http://help.sap.com/saphelp_nw73/helpdata/en/4d/78622691c1262ae10000000a42189b/content.htm?frameset=/en/49/17345ea2e314d3e10000000a42189b/frameset.htm&current_toc=/en/e8/87b8200b8c4915bdd2c89ef55caedb/plain.htm&node_id=236&show_children=false

点击打开链接

1.屏幕按钮

2.源码

REPORT y_lyh_test_013.TYPE-POOLS: abap,cntl.DATA: gcl_picture  TYPE REF TO cl_gui_picture,      gcl_textedit TYPE REF TO cl_gui_textedit,      gcl_toolbar  TYPE REF TO cl_gui_toolbar,      gcl_html     TYPE REF TO cl_gui_html_viewer,      gcl_tree     TYPE REF TO cl_gui_simple_tree.DATA: gcl_ctmenu  TYPE REF TO cl_ctmenu.DATA: gcl_container        TYPE REF TO cl_gui_container,      gcl_custom_container TYPE REF TO cl_gui_custom_container,      gcl_splitter         TYPE REF TO cl_gui_splitter_container.DATA: gv_url(255) TYPE c,      gv_dynnr    TYPE sy-dynnr.DATA: lt_button  TYPE ttb_button,      ls_button  TYPE stb_button,      lt_ctxmenu TYPE ttb_btnmnu,      ls_ctxmenu TYPE stb_btnmnu.DATA: lt_events TYPE cntl_simple_events,      ls_events TYPE cntl_simple_event.DATA: gt_text(10) TYPE c OCCURS 0.DATA: lv_edframe(255),      lv_edaction(256),      lv_edgetdata(2048),      lv_edpostdataline(1024).DATA: lt_postdata_tab  TYPE cnht_post_data_tab,      lt_edquery_table TYPE cnht_query_table.* necessary to flush the automation queueCLASS cl_gui_cfw DEFINITION LOAD.** CLASS EVENT HANDLECLASS lcl_event_receiver DEFINITION.  PUBLIC SECTION.    METHODS event_handler         FOR EVENT picture_click OF cl_gui_picture.    METHODS event_handler_menu         FOR EVENT context_menu OF cl_gui_picture.    METHODS event_handler_menuselected                  FOR EVENT context_menu_selected OF cl_gui_picture      IMPORTING fcode.    METHODS: on_sapevent                  FOR EVENT sapevent OF cl_gui_html_viewer      IMPORTING action frame getdata postdata query_table.ENDCLASS.CLASS lcl_event_receiver IMPLEMENTATION.  METHOD event_handler.    MESSAGE 'This is picture click' TYPE 'I' .  ENDMETHOD.  METHOD event_handler_menu.    CREATE OBJECT gcl_ctmenu.    CALL METHOD gcl_ctmenu->load_gui_status      EXPORTING        program    = 'RSDEMO_PICTURE_CONTROL'        status     = 'CONTEXT'        menu       = gcl_ctmenu      EXCEPTIONS        read_error = 1.    CALL METHOD gcl_picture->display_context_menu      EXPORTING        context_menu = gcl_ctmenu      EXCEPTIONS        error        = 1.  ENDMETHOD.  METHOD event_handler_menuselected.    MESSAGE i300(eu) WITH fcode.  ENDMETHOD.  METHOD on_sapevent.    CLEAR: lv_edaction,           lv_edframe,           lv_edgetdata,           lv_edpostdataline.    lv_edaction       = action.    lv_edframe        = frame.    lv_edgetdata      = getdata.    lt_postdata_tab   = postdata.    IF NOT lt_postdata_tab IS INITIAL.      READ TABLE lt_postdata_tab INDEX 1 INTO lv_edpostdataline.    ENDIF.    lt_edquery_table  = query_table.    CASE action.      WHEN 'SHOW_FRAMESET'.        PERFORM load_frame_set.      WHEN OTHERS.    ENDCASE.  ENDMETHOD.ENDCLASS.DATA lcl_event_receiver TYPE REF TO lcl_event_receiver.CLASS lcl_toolbar_events DEFINITION.* Here, you define instance methods or* static methods to handle the events* of the toolbar.  PUBLIC SECTION.    CLASS-METHODS: on_function_selected                  FOR EVENT function_selected OF cl_gui_toolbar      IMPORTING fcode.ENDCLASS.CLASS lcl_toolbar_events IMPLEMENTATION.  METHOD on_function_selected.* Implementation of the method. It has the parameter* FCODE that you can use to work out which function was* chosen    CASE fcode.      WHEN 'BACK'.        gcl_toolbar->free( ).        LEAVE TO SCREEN 0.      WHEN 'CREATE'.        CALL METHOD gcl_toolbar->add_button          EXPORTING            fcode      = 'EXPAND'            icon       = '@3S@'            butn_type  = cntb_btype_menu            text       = 'EXPAND'            quickinfo  = 'EXPAND'          EXCEPTIONS            cntl_error = 1.        CREATE OBJECT gcl_ctmenu.        ls_ctxmenu-function = 'EXPAND'.        ls_ctxmenu-ctmenu = gcl_ctmenu.        APPEND ls_ctxmenu TO lt_ctxmenu.* Use this syntax to add functions to the context menu        CALL METHOD gcl_ctmenu->add_function          EXPORTING            fcode = 'EXPAND1'            text  = 'NUM1'.        CALL METHOD gcl_ctmenu->add_separator.        CALL METHOD gcl_ctmenu->add_function          EXPORTING            fcode = 'EXPAND2'            text  = 'NUM2'            icon  = '@0Z@'.* Add dropdown context menus to toolbar        CALL METHOD gcl_toolbar->assign_static_ctxmenu_table          EXPORTING            table_ctxmenu = lt_ctxmenu.        CALL METHOD gcl_toolbar->set_button_state          EXPORTING            enabled    = ' '            fcode      = 'CREATE'          EXCEPTIONS            cntl_error = 1.      WHEN 'DELETE'.        CALL METHOD gcl_toolbar->delete_button          EXPORTING            fcode = 'EXPAND'.        CALL METHOD gcl_toolbar->set_button_state          EXPORTING            enabled    = 'X'            fcode      = 'CREATE'          EXCEPTIONS            cntl_error = 1.    ENDCASE.  ENDMETHOD.ENDCLASS.DATA: lcl_toolbar_events TYPE REF TO lcl_toolbar_events.PARAMETERS: p_01 RADIOBUTTON GROUP rg01, " Picture            p_02 RADIOBUTTON GROUP rg01, "text edit            p_03 RADIOBUTTON GROUP rg01, "toolbar            p_04 RADIOBUTTON GROUP rg01. "treeINITIALIZATION.AT SELECTION-SCREEN.  CASE abap_true.    WHEN p_01. "picture      gv_dynnr = 9000.    WHEN p_02. "text edit      gv_dynnr = 9001.    WHEN p_03.      gv_dynnr = 9002.    WHEN p_04.      gv_dynnr = 9003.    WHEN OTHERS.  ENDCASE.START-OF-SELECTION.  PERFORM frm_create_container.  CALL SCREEN gv_dynnr.END-OF-SELECTION.  PERFORM frm_release_object.*&---------------------------------------------------------------------**&      Form  FRM_RELEASE_OBJECT*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------**  -->  p1        text*  <--  p2        text*----------------------------------------------------------------------*FORM frm_release_object .  DATA: lv_result TYPE i.  IF gcl_picture IS BOUND.    CALL METHOD gcl_picture->is_valid      IMPORTING        result = lv_result.    IF lv_result = 1.      gcl_picture->free( ).      FREE gcl_picture.    ENDIF.  ENDIF.  IF NOT gcl_textedit IS INITIAL.    CALL METHOD gcl_textedit->free      EXCEPTIONS        OTHERS = 1.    FREE gcl_textedit.  ENDIF.  IF NOT gcl_custom_container IS INITIAL.    CALL METHOD gcl_custom_container->free      EXCEPTIONS        OTHERS = 1.    FREE gcl_custom_container.  ENDIF.  CALL METHOD cl_gui_cfw=>flush    EXCEPTIONS      OTHERS = 1.ENDFORM.*&---------------------------------------------------------------------**&      Form  FRM_CREATE_CONTAINER*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------**  -->  p1        text*  <--  p2        text*----------------------------------------------------------------------*FORM frm_create_container .  CREATE OBJECT gcl_splitter    EXPORTING      link_dynnr = gv_dynnr      link_repid = sy-repid      parent     = cl_gui_container=>screen0      rows       = 1      columns    = 1.  CALL METHOD gcl_splitter->set_border    EXPORTING      border = cl_gui_cfw=>false.* 创建CONTIANER  gcl_container = gcl_splitter->get_container( row = 1 column = 1 ).ENDFORM.*&---------------------------------------------------------------------**&      Module  STATUS_9000  OUTPUT*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------*MODULE status_9000 OUTPUT.  SET PF-STATUS 'STANDARD_FULLSCREEN' OF PROGRAM 'SAPLKKBL' .*  SET TITLEBAR 'xxx'.  IF gcl_picture IS NOT BOUND .    CREATE OBJECT gcl_picture      EXPORTING        parent = gcl_container.    gv_url = 'http://imgsrc.baidu.com/forum/pic/item/01b336d3d539b600707cc35aec50352ac75cb72e.jpg'.  ENDIF.  CALL METHOD gcl_picture->load_picture_from_url    EXPORTING      url   = gv_url    EXCEPTIONS      error = 1.  CALL METHOD gcl_picture->set_display_mode    EXPORTING      display_mode = gcl_picture->display_mode_fit_center    EXCEPTIONS      error        = 1.  PERFORM frm_registe_event_01.  PERFORM frm_registe_event_02.  CALL METHOD gcl_picture->set_tooltip    EXPORTING      text = '跑车'.  CALL METHOD cl_gui_cfw=>flush.ENDMODULE.*&---------------------------------------------------------------------**&      Module  USER_COMMAND_9000  INPUT*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------*MODULE user_command_9000 INPUT.  CASE sy-ucomm.    WHEN '&F15'.      LEAVE TO SCREEN 0.      CALL METHOD gcl_picture->clear_picture.    WHEN OTHERS.  ENDCASE.ENDMODULE.*&---------------------------------------------------------------------**&      Form  FRM_REGISTE_EVENT_01*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------**  -->  p1        text*  <--  p2        text*----------------------------------------------------------------------*FORM frm_registe_event_01 .  CLEAR: ls_events.  ls_events-eventid = gcl_picture->eventid_picture_click.  ls_events-appl_event = 'X'." X: application event ' ':system event  APPEND ls_events TO lt_events.  CLEAR: ls_events.  ls_events-eventid = gcl_picture->eventid_picture_dblclick.  ls_events-appl_event = 'X'.  APPEND ls_events TO lt_events.  CLEAR: ls_events.  ls_events-eventid = gcl_picture->eventid_control_click.  ls_events-appl_event = 'X'.  APPEND ls_events TO lt_events.  CLEAR: ls_events.  ls_events-eventid = gcl_picture->eventid_control_dblclick.  ls_events-appl_event = 'X'.  APPEND ls_events TO lt_events.  CLEAR: ls_events.  ls_events-eventid = gcl_picture->eventid_context_menu.  ls_events-appl_event = 'X'.  APPEND ls_events TO lt_events.  CLEAR: ls_events.  ls_events-eventid = gcl_picture->eventid_context_menu_selected.  ls_events-appl_event = 'X'.  APPEND ls_events TO lt_events.  CALL METHOD gcl_picture->set_registered_events    EXPORTING      events = lt_events.ENDFORM.*&---------------------------------------------------------------------**&      Form  FRM_REGISTE_EVENT_02*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------**  -->  p1        text*  <--  p2        text*----------------------------------------------------------------------*FORM frm_registe_event_02 .*Register the handler methods for the events.  CREATE OBJECT lcl_event_receiver.  SET HANDLER lcl_event_receiver->event_handler          FOR gcl_picture.  SET HANDLER lcl_event_receiver->event_handler_menu          FOR gcl_picture.ENDFORM.*&---------------------------------------------------------------------**&      Module  STATUS_9001  OUTPUT*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------*MODULE status_9001 OUTPUT.*  SET TITLEBAR 'xxx'.  IF gcl_textedit IS NOT BOUND.    SET PF-STATUS 'MAIN100' OF PROGRAM 'SAPTEXTEDIT_DEMO_1'.    CREATE OBJECT gcl_textedit      EXPORTING        wordwrap_mode              = cl_gui_textedit=>wordwrap_at_fixed_position        wordwrap_position          = 10        wordwrap_to_linebreak_mode = cl_gui_textedit=>true        parent                     = gcl_container      EXCEPTIONS        error_cntl_create          = 1        error_cntl_init            = 2        error_cntl_link            = 3        error_dp_create            = 4        gui_type_not_supported     = 5        OTHERS                     = 6.    IF sy-subrc <> 0.*     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO*                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.    ENDIF.    " don't show toolbar and statusbar on this screen*    CALL METHOD gcl_textedit->set_toolbar_mode*      EXPORTING*        toolbar_mode = cl_gui_textedit=>false.*    CALL METHOD gcl_textedit->set_statusbar_mode*      EXPORTING*        statusbar_mode = cl_gui_textedit=>false.  ENDIF.ENDMODULE.*&---------------------------------------------------------------------**&      Module  USER_COMMAND_9001  INPUT*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------*MODULE user_command_9001 INPUT.  CASE sy-ucomm.    WHEN 'BACK' OR 'EXIT'.      gcl_textedit->free( ).      LEAVE TO SCREEN 0.    WHEN 'SAVE'.*   retrieve table from control      CALL METHOD gcl_textedit->get_text_as_r3table        IMPORTING          table = gt_text.    WHEN 'LOAD'.*   send table to control      APPEND 'you and me ' TO gt_text.      CALL METHOD gcl_textedit->set_text_as_r3table        EXPORTING          table = gt_text.  ENDCASE.ENDMODULE.*&---------------------------------------------------------------------**&      Module  STATUS_9002  OUTPUT*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------*MODULE status_9002 OUTPUT.*  SET PF-STATUS 'xxxxxxxx'.*  SET TITLEBAR 'xxx'.  IF gcl_toolbar IS NOT BOUND .    CREATE OBJECT gcl_toolbar      EXPORTING        parent = gcl_container.* Information for first button    ls_button-function = 'BACK'.    ls_button-icon = '@2M@'.    ls_button-quickinfo = 'BACK'.    ls_button-text = 'BACK'.    ls_button-butn_type = cntb_btype_button.    APPEND ls_button TO lt_button.    CLEAR: ls_button.    ls_button-function = 'CREATE'.    ls_button-icon = '@0Y@'.    ls_button-quickinfo = 'CREATE'.    ls_button-text = 'CREATE'.    ls_button-butn_type = cntb_btype_button.    APPEND ls_button TO lt_button.    CLEAR: ls_button.    ls_button-function = 'DELETE'.    ls_button-icon = '@11@'.    ls_button-quickinfo = 'DELETE'.    ls_button-text = 'DELETE'.    ls_button-butn_type = cntb_btype_button.    APPEND ls_button TO lt_button.* Add buttons to toolbar    CALL METHOD gcl_toolbar->add_button_group      EXPORTING        data_table = lt_button.    REFRESH: lt_events.    ls_events-eventid = cl_gui_toolbar=>m_id_function_selected.    ls_events-appl_event = ' '.    APPEND ls_events TO lt_events.    CALL METHOD gcl_toolbar->set_registered_events      EXPORTING        events = lt_events.    CREATE OBJECT lcl_toolbar_events.    SET HANDLER lcl_toolbar_events=>on_function_selected FOR gcl_toolbar.  ENDIF.  CALL METHOD cl_gui_cfw=>flush.ENDMODULE.*&---------------------------------------------------------------------**&      Module  USER_COMMAND_9002  INPUT*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------*MODULE user_command_9002 INPUT.  CASE sy-ucomm.    WHEN 'E'.      gcl_toolbar->free( ).      LEAVE TO SCREEN 0.    WHEN OTHERS.* Use this syntax to add functions to the context menu  ENDCASE.ENDMODULE.*&---------------------------------------------------------------------**&      Form  LOAD_FRAME_SET*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------**  -->  p1        text*  <--  p2        text*----------------------------------------------------------------------*FORM load_frame_set .  DATA: lv_doc_url(80).  CALL METHOD gcl_html->load_html_document    EXPORTING      document_id  = 'SAPHTML_EVENTS_DEMO_FRAME1'      document_url = 'HTMLFrame1.htm'    EXCEPTIONS      OTHERS       = 1.  CALL METHOD gcl_html->load_html_document    EXPORTING      document_id  = 'SAPHTML_EVENTS_DEMO_HOME'      document_url = 'HTMLFrame2.htm'    EXCEPTIONS      OTHERS       = 1.  CALL METHOD gcl_html->load_html_document    EXPORTING      document_id  = 'SAPHTML_EVENTS_DEMO_FRAMESET'    IMPORTING      assigned_url = lv_doc_url    EXCEPTIONS      OTHERS       = 1.  IF sy-subrc EQ 0.    CALL METHOD gcl_html->show_url      EXPORTING        url = lv_doc_url.  ENDIF.ENDFORM.*&---------------------------------------------------------------------**&      Module  STATUS_9003  OUTPUT*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------*MODULE status_9003 OUTPUT.*  SET PF-STATUS 'xxxxxxxx'.*  SET TITLEBAR 'xxx'.  SET PF-STATUS 'TESTHTM1' OF PROGRAM 'SAPHTML_EVENTS_DEMO'.  IF gcl_html IS NOT BOUND .    CREATE OBJECT gcl_html      EXPORTING        parent = gcl_container.    ls_events-eventid = gcl_html->m_id_sapevent.    ls_events-appl_event = 'X'.    APPEND ls_events TO lt_events.    CALL METHOD gcl_html->set_registered_events      EXPORTING        events = lt_events.    CREATE OBJECT lcl_event_receiver.    SET HANDLER lcl_event_receiver->on_sapevent                FOR gcl_html.    PERFORM load_graphics.    PERFORM load_home_page.  ENDIF.ENDMODULE.*&---------------------------------------------------------------------**&      Module  USER_COMMAND_9003  INPUT*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------*MODULE user_command_9003 INPUT. CASE sy-ucomm.    WHEN 'BACK'.                       "Beenden      IF NOT gcl_html IS INITIAL.        CALL METHOD gcl_html->free.        FREE gcl_html.      ENDIF.      LEAVE TO SCREEN 0.    WHEN 'HHOM'.                       " show the home page      PERFORM load_home_page.    WHEN 'HBAK'.      CALL METHOD gcl_html->go_back.    WHEN 'HFWD'.      CALL METHOD gcl_html->go_forward.    WHEN 'HRFR'.      CALL METHOD gcl_html->do_refresh.    WHEN OTHERS.      CALL METHOD cl_gui_cfw=>dispatch.  ENDCASE.ENDMODULE.*&---------------------------------------------------------------------**&      Form  LOAD_GRAPHICS*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------**  -->  p1        text*  <--  p2        text*----------------------------------------------------------------------*FORM load_graphics .  CALL METHOD gcl_html->load_mime_object    EXPORTING      object_id  = 'HTMLCNTL_TESTHTM2_SAPLOGO'      object_url = 'SAPLOGO.GIF'    EXCEPTIONS      OTHERS     = 1.  CALL METHOD gcl_html->load_mime_object    EXPORTING      object_id  = 'HTMLCNTL_TESTHTM2_SAP_AG'      object_url = 'SAP_AG.GIF'    EXCEPTIONS      OTHERS     = 1.  CALL METHOD gcl_html->load_mime_object    EXPORTING      object_id  = 'HTMLCNTL_TESTHTM2_BACKGROUND'      object_url = 'HOME_BACKGROUND.GIF'    EXCEPTIONS      OTHERS     = 1.ENDFORM.*&---------------------------------------------------------------------**&      Form  LOAD_HOME_PAGE*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------**  -->  p1        text*  <--  p2        text*----------------------------------------------------------------------*FORM load_home_page .  DATA: lv_doc_url(80).  CALL METHOD gcl_html->load_html_document       EXPORTING            document_id  = 'SAPHTML_EVENTS_DEMO_HOME'       IMPORTING            assigned_url = lv_doc_url       EXCEPTIONS            OTHERS       = 1.  IF sy-subrc EQ 0.    CALL METHOD gcl_html->show_url         EXPORTING              url = lv_doc_url.  ENDIF.ENDFORM.


0 0
原创粉丝点击