BC_CONTROLS_TUTORIAL

效果

 

 

 

 

 

 代码

REPORT bc_controls_tutorial.
*--------------------------------------------------------------
* This report is the result of all exercises described in the
* "Controls Tutorial".
*--------------------------------------------------------------
*


*( Code added in: Lesson 1, Exercise 2
DATA: custom_container TYPE REF TO cl_gui_custom_container,
      editor TYPE REF TO cl_gui_textedit,
      repid LIKE sy-repid.
CONSTANTS: line_length TYPE i VALUE 256.
*)

*( Code added in: Lesson 3, Exercise 4
DATA: scratch TYPE REF TO cl_gui_textedit,
     custom_container2 TYPE REF TO cl_gui_custom_container.
*)

*( Code added in: Lesson 1, Exercise 3
TYPES: BEGIN OF mytable_line,
          line(line_length) TYPE c,
          END OF mytable_line.
DATA: mytable TYPE TABLE OF mytable_line,
      textstruct TYPE mytable_line,
      g_loaded TYPE c.
*)

*( Code added in: Lesson 2, Exercise 2
DATA events TYPE cntl_simple_events.
DATA wa_events TYPE cntl_simple_event.
*)

*( Code added in: Lesson 2, Exercise 1
DATA: event_type(20) TYPE c.
*---------------------------------------------------------------------*
*       CLASS lcl_event_handler DEFINITION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
CLASS lcl_event_handler DEFINITION.

  PUBLIC SECTION.
    CLASS-METHODS: catch_dblclick
                       FOR EVENT dblclick OF cl_gui_textedit
                       IMPORTING sender.
ENDCLASS.

DATA: event_handler TYPE REF TO lcl_event_handler.

*---------------------------------------------------------------------*
*       CLASS lcl_event_handler IMPLEMENTATION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
CLASS lcl_event_handler IMPLEMENTATION.
  METHOD catch_dblclick.

*( Code added in: Lesson 2, Exercise 4
    DATA: from_line TYPE i,
           from_pos TYPE i,
           to_line TYPE i,
           to_pos TYPE i.
    CALL METHOD sender->get_selection_pos
        IMPORTING
                from_line = from_line
                from_pos = from_pos
                to_line = to_line
                to_pos = to_pos.

    IF not g_loaded is initial.
      CALL METHOD sender->get_text_as_r3table
        IMPORTING
               table = mytable.
    ENDIF.

    READ TABLE mytable INDEX from_line INTO textstruct.
    IF sy-subrc = 0.
      IF textstruct+0(1) cs '*'.
        SHIFT textstruct.
      ELSEIF textstruct+0(1) ns '*'.
        SHIFT textstruct RIGHT.
        textstruct+0(1) = '*'.
      ENDIF.

      MODIFY mytable FROM textstruct INDEX from_line.
      CALL METHOD sender->set_text_as_r3table
         EXPORTING table = mytable
      EXCEPTIONS
         OTHERS = 1.
    ENDIF.

    CALL METHOD cl_gui_cfw=>flush.
    IF sy-subrc ne 0.
      CALL FUNCTION 'POPUP_TO_INFORM'
           EXPORTING
                titel = repid
                txt2  = sy-subrc
                txt1  = 'Method CATCH_DBLCLICK: Error in Flush!'(602).
    ENDIF.
*)

*( Code changed in Lesson 2, Exercise 3
* (event_type is set at PAI time now!)
*    event_type = text-002.

* (added)
    CALL METHOD cl_gui_cfw=>set_new_ok_code
         EXPORTING new_code = 'SHOW'.
*)

  ENDMETHOD.
ENDCLASS.
*)


*( Code added in: Lesson 1, Exercise 1
DATA  ok_code LIKE sy-ucomm.

START-OF-SELECTION.
  SET SCREEN '100'.
*)


*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*

*( Code added in: Lesson 1, Exercise 1
MODULE user_command_0100 INPUT.

  CASE ok_code.
    WHEN 'EXIT'.
      LEAVE TO SCREEN 0.
*( Code added in: Lesson 1, Exercise 3
    WHEN 'IMP'.
      PERFORM load_tab.
*)

*( Code added in: Lesson 2, Exercise 3
    WHEN 'SHOW'.
      event_type = 'Doubleclick'(555).
*)

*( Code added in: Lesson 3, Exercise 1
    WHEN 'PROTECT'.
      DATA: from_idx TYPE i,
            to_idx TYPE i,
            index TYPE i.
*( Code added in: Lesson 3, Exercise 3
* remark: In this exercise, the calls GET_SELECTION_POS and
*         GET_FIRST_VISIBLE LINE are copied to Form GET_LINES.
      PERFORM get_lines CHANGING from_idx to_idx index.
*### Note: There is no Flush call in form GET_LINES!
*)

*(
* Code added in: Lesson 3, Exercise 2
      CALL METHOD cl_gui_cfw=>flush.
      IF sy-subrc ne 0.
        CALL FUNCTION 'POPUP_TO_INFORM'
             EXPORTING
                  titel = repid
                  txt2  = sy-subrc
                  txt1 =
                     'PAI USER_COMMAND_100(1): Error in Flush!'(603).
      ENDIF.
      IF from_idx = index.
        MESSAGE i208(00) WITH text-003.
        EXIT.
      ENDIF.
*)

      LOOP AT mytable INTO textstruct.
        IF ( sy-tabix >= from_idx and sy-tabix <= to_idx ).
          index = sy-tabix.
          CALL METHOD editor->protect_lines
                  EXPORTING from_line = index
                            to_line   = index.
        ENDIF.
      ENDLOOP.
      CALL METHOD cl_gui_cfw=>flush.
      IF sy-subrc ne 0.
        CALL FUNCTION 'POPUP_TO_INFORM'
             EXPORTING
                  titel = repid
                  txt2  = sy-subrc
                  txt1 =
                     'PAI USER_COMMAND_100(2): Error in Flush!'(604).
      ENDIF.
*)

*( Code added in: Lesson 2, Exercise 2
    WHEN OTHERS.
*(
* The following line was commented out in Lesson 2, Exercise 3
* (DISPATCH is not needed when using system events only)
*      CALL METHOD cl_gui_cfw=>dispatch.
*)

  ENDCASE.
*)
ENDMODULE.                             " USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
*  SET PF-STATUS 'xxxxxxxx'.
*  SET TITLEBAR 'xxx'.
*( Code added in: Lesson 1, Exercise 2
  IF editor is initial.
    repid = sy-repid.
    CREATE OBJECT custom_container
       EXPORTING
          container_name = 'MYCONTAINER1'
       EXCEPTIONS
          cntl_error = 1
          cntl_system_error = 2
          create_error = 3
          lifetime_error = 4
          lifetime_dynpro_dynpro_link = 5.

    CREATE OBJECT editor
       EXPORTING
          parent = custom_container
          wordwrap_mode = cl_gui_textedit=>wordwrap_at_fixed_position
          wordwrap_position = line_length
          wordwrap_to_linebreak_mode = cl_gui_textedit=>true.

* ( Code added in: Lesson 2, Exercise 2
    wa_events-eventid = cl_gui_textedit=>event_double_click.

*( Code changed in: Lesson 2, Exercise 3
*   wa_events-appl_event = 'X'.
    wa_events-appl_event = space.
*)
    APPEND wa_events TO events.
    CALL METHOD editor->set_registered_events
          EXPORTING events = events.
* )

*( Code added in: Lesson 1, Exercise 1
    SET HANDLER event_handler->catch_dblclick FOR editor.
*)

*( Code added in: Lesson 3, Exercise 4
    CREATE OBJECT custom_container2
          EXPORTING
             container_name = 'MYCONTAINER2'
          EXCEPTIONS
             cntl_error = 1
             cntl_system_error = 2
             create_error = 3
             lifetime_error = 4
             lifetime_dynpro_dynpro_link = 5.


    CREATE OBJECT scratch
       EXPORTING
          parent = custom_container2
          wordwrap_mode = cl_gui_textedit=>wordwrap_at_windowborder
          wordwrap_to_linebreak_mode = cl_gui_textedit=>true.
    CALL METHOD scratch->set_statusbar_mode
       EXPORTING
          statusbar_mode = cl_gui_textedit=>false.
*)

*( Code added in: Lesson 1, Exercise 3
    DO 20 TIMES.
      WRITE text-001 TO textstruct-line.
      APPEND textstruct TO mytable.
    ENDDO.
*)
  ENDIF.                               "editor is initial
*)





ENDMODULE.                             " STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*&      Form  load_tab
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM load_tab.
*( Code added in: Lesson 1, Exercise 3
  CALL METHOD editor->set_text_as_r3table
            EXPORTING table = mytable
     EXCEPTIONS
         OTHERS = 1.
  IF sy-subrc ne 0.
    CALL FUNCTION 'POPUP_TO_INFORM'
         EXPORTING
              titel = repid
              txt2  = ' '
              txt1  = 'Error in set_text_as_r3table'(600).
  ELSE.
    g_loaded = 'X'.
  ENDIF.
  CALL METHOD cl_gui_cfw=>flush.
  IF sy-subrc ne 0.
    CALL FUNCTION 'POPUP_TO_INFORM'
         EXPORTING
              titel = repid
              txt2  = sy-subrc
              txt1  = 'Form LOAD_TAB: Error in FLUSH'(601).
  ENDIF.
*)

ENDFORM.                               " load_tab
*&---------------------------------------------------------------------*
*&      Form  GET_LINES
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      <--P_FROM_IDX  text
*      <--P_TO_IDX  text
*      <--P_INDEX  text
*----------------------------------------------------------------------*
FORM get_lines CHANGING from_idx TYPE i
                        to_idx   TYPE i
                        index    TYPE i.
*###(
*### The following code block has been moved from PAI to form GET_LINES
*### in Lesson 3, Exercise 3
  CALL METHOD editor->get_selection_pos
         IMPORTING
            from_line = from_idx
            to_line = to_idx
  EXCEPTIONS
            error_cntl_call_method = 1.
*( Code added in: Lesson 3, Exercise 2
  CALL METHOD editor->get_first_visible_line
           IMPORTING
               line = index
           EXCEPTIONS
               error_cntl_call_method = 1.
*)
* Note: The flush is made after returning from this form!

ENDFORM.                               " GET_LINES

 

Customer container

效果

 

 

*&---------------------------------------------------------------------*
*& Report  RSDEMO_CUSTOM_CONTROL                                       *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  rsdemo_custom_control         .
DATA  url(132).

TYPE-POOLS cndp.
* custom container
DATA container TYPE REF TO cl_gui_custom_container.
* picture Control.
DATA picture TYPE REF TO cl_gui_picture.
* Definition of Control Framework
CLASS cl_gui_cfw DEFINITION LOAD.

DATA  init.
DATA ok_code TYPE sy-ucomm.

CALL SCREEN 100.

*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'STATUS'.
*  SET TITLEBAR 'xxx'.
  IF init is initial.
* create the custom container
    CREATE OBJECT container
                  EXPORTING container_name = 'CUSTOM'.
* create the picture control
    CREATE OBJECT picture
                  EXPORTING parent = container.

* Request an URL from the data provider by exporting the pic_data.

    CLEAR URL.
    PERFORM LOAD_PIC_FROM_DB CHANGING URL.

* load picture
    CALL METHOD picture->load_picture_from_url
        EXPORTING url = url.
    init = 'X'.

    CALL METHOD cl_gui_cfw=>flush
         EXCEPTIONS cntl_system_error = 1
                    cntl_error = 2.
    IF sy-subrc <> 0.
* error handling
    ENDIF.
  ENDIF.
ENDMODULE.                             " STATUS_0100  OUTPUT

*&---------------------------------------------------------------------*
*&      Module  EXIT  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE exit INPUT.
  CALL METHOD picture->free.
  CALL METHOD container->free.
  FREE picture.
  FREE container.
  LEAVE PROGRAM.
ENDMODULE.                             " EXIT  INPUT
*&---------------------------------------------------------------------*
*&      Form  LOAD_PIC_FROM_DB
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM LOAD_PIC_FROM_DB CHANGING URL.
  DATA QUERY_TABLE LIKE W3QUERY OCCURS 1 WITH HEADER LINE.
  DATA HTML_TABLE LIKE W3HTML OCCURS 1.
  DATA RETURN_CODE LIKE  W3PARAM-RET_CODE.
  DATA CONTENT_TYPE LIKE  W3PARAM-CONT_TYPE.
  DATA CONTENT_LENGTH LIKE  W3PARAM-CONT_LEN.
  DATA PIC_DATA LIKE W3MIME OCCURS 0.
  DATA PIC_SIZE TYPE I.

  REFRESH QUERY_TABLE.
  QUERY_TABLE-NAME = '_OBJECT_ID'.
  QUERY_TABLE-VALUE = 'ENJOYSAP_LOGO'.
  APPEND QUERY_TABLE.

  CALL FUNCTION 'WWW_GET_MIME_OBJECT'
       TABLES
            QUERY_STRING        = QUERY_TABLE
            HTML                = HTML_TABLE
            MIME                = PIC_DATA
       CHANGING
            RETURN_CODE         = RETURN_CODE
            CONTENT_TYPE        = CONTENT_TYPE
            CONTENT_LENGTH      = CONTENT_LENGTH
       EXCEPTIONS
            OBJECT_NOT_FOUND    = 1
            PARAMETER_NOT_FOUND = 2
            OTHERS              = 3.
  if sy-subrc = 0.
    PIC_SIZE = CONTENT_LENGTH.
  endif.

CALL FUNCTION 'DP_CREATE_URL'
         EXPORTING
              TYPE     = 'image'
              SUBTYPE  = cndp_sap_tab_unknown
              SIZE     = PIC_SIZE
              lifetime = cndp_lifetime_transaction
         TABLES
              DATA     = PIC_DATA
         CHANGING
              URL      = URL
         EXCEPTIONS
              others   = 1.


ENDFORM.                    " LOAD_PIC_FROM_DB

Docking container

效果

 

 

*&---------------------------------------------------------------------*
*& Report  RSDEMO_DOCKING_CONTROL                                      *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  rsdemo_docking_control         .

* Docking Container
DATA docking TYPE REF TO cl_gui_docking_container.
* Picture Control
DATA picture TYPE REF TO cl_gui_picture.
* Definition of Control Framework
TYPE-POOLS cndp.

DATA  init.
DATA ok_code TYPE sy-ucomm.
DATA repid TYPE sy-repid.
DATA dynnr TYPE sy-dynnr.

CALL SCREEN 100.

*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'STATUS'.
*  SET TITLEBAR 'xxx'.
  IF init is initial.
    repid = sy-repid.
    dynnr = sy-dynnr.
* create the docking container
    CREATE OBJECT docking
                  EXPORTING repid     = repid
                            dynnr     = dynnr
                            side      = docking->dock_at_left
                            extension = 180.
* create the picture container
    CREATE OBJECT picture
                  EXPORTING parent = docking.

* Request an URL from the data provider by exporting the pic_data.
    DATA url(255).
    CLEAR url.
    PERFORM load_pic_from_db CHANGING url.

* load picture
    CALL METHOD picture->load_picture_from_url
        EXPORTING url = url.
    init = 'X'.

  ENDIF.
ENDMODULE.                             " STATUS_0100  OUTPUT

*&---------------------------------------------------------------------*
*&      Module  EXIT  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE exit INPUT.
  CALL METHOD docking->free.
  LEAVE PROGRAM.
ENDMODULE.                             " EXIT  INPUT

*&---------------------------------------------------------------------*
*&      Form  LOAD_PIC_FROM_DB
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM load_pic_from_db CHANGING url.
  DATA query_table LIKE w3query OCCURS 1 WITH HEADER LINE.
  DATA html_table LIKE w3html OCCURS 1.
  DATA return_code LIKE  w3param-ret_code.
  DATA content_type LIKE  w3param-cont_type.
  DATA content_length LIKE  w3param-cont_len.
  DATA pic_data LIKE w3mime OCCURS 0.
  DATA pic_size TYPE i.

  REFRESH query_table.
  query_table-name = '_OBJECT_ID'.
  query_table-value = 'ENJOYSAP_LOGO'.
  APPEND query_table.

  CALL FUNCTION 'WWW_GET_MIME_OBJECT'
       TABLES
            query_string        = query_table
            html                = html_table
            mime                = pic_data
       CHANGING
            return_code         = return_code
            content_type        = content_type
            content_length      = content_length
       EXCEPTIONS
            OBJECT_NOT_FOUND    = 1
            parameter_not_found = 2
            OTHERS              = 3.
  IF sy-subrc = 0.
    pic_size = content_length.
  ENDIF.

  CALL FUNCTION 'DP_CREATE_URL'
       EXPORTING
            type     = 'image'
            subtype  = cndp_sap_tab_unknown
            size     = pic_size
            lifetime = cndp_lifetime_transaction
       TABLES
            data     = pic_data
       CHANGING
            url      = url
       EXCEPTIONS
            OTHERS   = 1.


ENDFORM.                               " LOAD_PIC_FROM_DB

Spliter container

效果

 

 

*&---------------------------------------------------------------------*
*& Report  RSDEMO_SPLITTER_CONTROL                                     *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  rsdemo_splitter_control         .
DATA  url(132).

DATA splitter TYPE REF TO cl_gui_splitter_container.
DATA container TYPE REF TO cl_gui_custom_container.
DATA container_1 TYPE REF TO cl_gui_container.
DATA container_2 TYPE REF TO cl_gui_container.
DATA picture_1 TYPE REF TO cl_gui_picture.
DATA picture_2 TYPE REF TO cl_gui_picture.
DATA  init.
DATA ok_code TYPE sy-ucomm.

TYPE-POOLS cndp.


CALL SCREEN 100.

*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'STATUS'.
  IF init is initial.
    CREATE OBJECT container
                  EXPORTING container_name = 'CUSTOM'.
    CREATE OBJECT splitter
                  EXPORTING parent = container
                            rows    = 1
                            columns = 2.
    CALL METHOD splitter->get_container
                      EXPORTING row      = 1
                                column   = 1
                      RECEIVING container = container_1.
    CALL METHOD splitter->get_container
                  EXPORTING row      = 1
                            column   = 2
                  RECEIVING container = container_2.

    CREATE OBJECT picture_1
                  EXPORTING parent  = container_1.


    CREATE OBJECT picture_2
                  EXPORTING parent  = container_2.

* Request an URL from the data provider by exporting the pic_data.
    CLEAR url.
    PERFORM load_pic_from_db CHANGING url.

* load picture
    CALL METHOD picture_1->load_picture_from_url
        EXPORTING url = url.

    CALL METHOD picture_2->load_picture_from_url
        EXPORTING url = url.

    init = 'X'.

    CALL METHOD cl_gui_cfw=>flush
         EXCEPTIONS cntl_system_error = 1
                    cntl_error = 2.
    IF sy-subrc <> 0.
* error handling
    ENDIF.
  ENDIF.
ENDMODULE.                             " STATUS_0100  OUTPUT

*&---------------------------------------------------------------------*
*&      Module  EXIT  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE exit INPUT.
  CALL METHOD container->free.
  LEAVE PROGRAM.
ENDMODULE.                             " EXIT  INPUT

*&---------------------------------------------------------------------*
*&      Form  LOAD_PIC_FROM_DB
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM load_pic_from_db CHANGING url.
  DATA query_table LIKE w3query OCCURS 1 WITH HEADER LINE.
  DATA html_table LIKE w3html OCCURS 1.
  DATA return_code LIKE  w3param-ret_code.
  DATA content_type LIKE  w3param-cont_type.
  DATA content_length LIKE  w3param-cont_len.
  DATA pic_data LIKE w3mime OCCURS 0.
  DATA pic_size TYPE i.

  REFRESH query_table.
  query_table-name = '_OBJECT_ID'.
  query_table-value = 'ENJOYSAP_LOGO'.
  APPEND query_table.

  CALL FUNCTION 'WWW_GET_MIME_OBJECT'
       TABLES
            query_string        = query_table
            html                = html_table
            mime                = pic_data
       CHANGING
            return_code         = return_code
            content_type        = content_type
            content_length      = content_length
       EXCEPTIONS
            OBJECT_NOT_FOUND    = 1
            parameter_not_found = 2
            OTHERS              = 3.
  IF sy-subrc = 0.
    pic_size = content_length.
  ENDIF.

  CALL FUNCTION 'DP_CREATE_URL'
       EXPORTING
            type     = 'image'
            subtype  = cndp_sap_tab_unknown
            size     = pic_size
            lifetime = cndp_lifetime_transaction
       TABLES
            data     = pic_data
       CHANGING
            url      = url
       EXCEPTIONS
            OTHERS   = 1.

endform.

Easy spliter container

效果

 

 

*&---------------------------------------------------------------------*
*& Report  RSDEMO_EASY_SPLITTER_CONTROL                                *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  rsdemo_easy_splitter_control         .

* splitter control
DATA splitter TYPE REF TO cl_gui_easy_splitter_container.
* container for the splitter control
DATA container TYPE REF TO cl_gui_custom_container.
* containers created by the splitter control
DATA container_1 TYPE REF TO cl_gui_container.
DATA container_2 TYPE REF TO cl_gui_container.
* picture controls
DATA picture_1 TYPE REF TO cl_gui_picture.
DATA picture_2 TYPE REF TO cl_gui_picture.
* load control framework definition
TYPE-POOLS cndp.

DATA  init.
DATA ok_code TYPE sy-ucomm.

CALL SCREEN 100.

*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'STATUS'.
  IF init is initial.
* create a container for the splitter control
    CREATE OBJECT container
                  EXPORTING container_name = 'CUSTOM'.
* create the splitter control
    CREATE OBJECT splitter
                  EXPORTING parent = container
                            orientation    = 1.
* get the containers of the splitter control
    container_1 = splitter->top_left_container.
    container_2 = splitter->bottom_right_container.
* create the picture controls inside the containers of the splitter
    CREATE OBJECT picture_1
                  EXPORTING parent  = container_1.

    CREATE OBJECT picture_2
                  EXPORTING parent  = container_2.
* Request an URL from the data provider by exporting the pic_data.
    DATA url(255).
    CLEAR url.
    PERFORM load_pic_from_db CHANGING url.

* load picture
    CALL METHOD picture_1->load_picture_from_url
        EXPORTING url = url.

    CALL METHOD picture_2->load_picture_from_url
        EXPORTING url = url.

    init = 'X'.

    CALL METHOD cl_gui_cfw=>flush
         EXCEPTIONS cntl_system_error = 1
                    cntl_error = 2.
    IF sy-subrc <> 0.
* error handling
    ENDIF.
  ENDIF.
ENDMODULE.                             " STATUS_0100  OUTPUT

*&---------------------------------------------------------------------*
*&      Module  EXIT  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE exit INPUT.
  CALL METHOD container->free.
  LEAVE PROGRAM.
ENDMODULE.                             " EXIT  INPUT

*&---------------------------------------------------------------------*
*&      Form  LOAD_PIC_FROM_DB
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM load_pic_from_db CHANGING url.
  DATA query_table LIKE w3query OCCURS 1 WITH HEADER LINE.
  DATA html_table LIKE w3html OCCURS 1.
  DATA return_code LIKE  w3param-ret_code.
  DATA content_type LIKE  w3param-cont_type.
  DATA content_length LIKE  w3param-cont_len.
  DATA pic_data LIKE w3mime OCCURS 0.
  DATA pic_size TYPE i.

  REFRESH query_table.
  query_table-name = '_OBJECT_ID'.
  query_table-value = 'ENJOYSAP_LOGO'.
  APPEND query_table.

  CALL FUNCTION 'WWW_GET_MIME_OBJECT'
       TABLES
            query_string        = query_table
            html                = html_table
            mime                = pic_data
       CHANGING
            return_code         = return_code
            content_type        = content_type
            content_length      = content_length
       EXCEPTIONS
            OBJECT_NOT_FOUND    = 1
            parameter_not_found = 2
            OTHERS              = 3.
  IF sy-subrc = 0.
    pic_size = content_length.
  ENDIF.

  CALL FUNCTION 'DP_CREATE_URL'
       EXPORTING
            type     = 'image'
            subtype  = cndp_sap_tab_unknown
            size     = pic_size
            lifetime = cndp_lifetime_transaction
       TABLES
            data     = pic_data
       CHANGING
            url      = url
       EXCEPTIONS
            OTHERS   = 1.


ENDFORM.                               " LOAD_PIC_FROM_DB

Dialog box container

效果

 

 

*&---------------------------------------------------------------------*
*& Report  RSDEMO_DIALOGBOX_CONTROL                                    *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  rsdemo_dialogbox_control         .
DATA repid TYPE sy-repid.
DATA dynnr TYPE sy-dynnr.
DATA  init.
DATA ok_code TYPE sy-ucomm.
TYPE-POOLS cndp.

* dialogbox Container
DATA dialogbox TYPE REF TO cl_gui_dialogbox_container.
* picture Control
DATA picture TYPE REF TO cl_gui_picture.
* Definition of Control Framework
CLASS cl_gui_cfw DEFINITION LOAD.


CALL SCREEN 100.

*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'STATUS'.
*  SET TITLEBAR 'xxx'.
  IF init IS INITIAL.
    repid = sy-repid.
    dynnr = sy-dynnr.
    CREATE OBJECT dialogbox
                  EXPORTING
                           width    = 540
                           height   = 100
                           top      = 150
                           left     = 150
                           repid    = repid
                           dynnr    = dynnr.

    CREATE OBJECT picture
                  EXPORTING parent = dialogbox.

* Request an URL from the data provider by exporting the pic_data.
    DATA url(255).
    CLEAR url.
    PERFORM load_pic_from_db CHANGING url.

* load picture
    CALL METHOD picture->load_picture_from_url
        EXPORTING url = url.
    init = 'X'.

    CALL METHOD cl_gui_cfw=>flush
         EXCEPTIONS cntl_system_error = 1
                    cntl_error = 2.
    IF sy-subrc <> 0.
* error handling
    ENDIF.
  ENDIF.
ENDMODULE.                             " STATUS_0100  OUTPUT

*&---------------------------------------------------------------------*
*&      Module  EXIT  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE exit INPUT.
  CALL METHOD dialogbox->free.
  LEAVE PROGRAM.
ENDMODULE.                             " EXIT  INPUT
*&---------------------------------------------------------------------*
*&      Form  LOAD_PIC_FROM_DB
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM load_pic_from_db CHANGING url.
  DATA query_table LIKE w3query OCCURS 1 WITH HEADER LINE.
  DATA html_table LIKE w3html OCCURS 1.
  DATA return_code LIKE  w3param-ret_code.
  DATA content_type LIKE  w3param-cont_type.
  DATA content_length LIKE  w3param-cont_len.
  DATA pic_data LIKE w3mime OCCURS 0.
  DATA pic_size TYPE i.

  REFRESH query_table.
  query_table-name = '_OBJECT_ID'.
  query_table-value = 'ENJOYSAP_LOGO'.
  APPEND query_table.

  CALL FUNCTION 'WWW_GET_MIME_OBJECT'
       TABLES
            query_string        = query_table
            html                = html_table
            mime                = pic_data
       CHANGING
            return_code         = return_code
            content_type        = content_type
            content_length      = content_length
       EXCEPTIONS
            OBJECT_NOT_FOUND    = 1
            parameter_not_found = 2
            OTHERS              = 3.
  IF sy-subrc = 0.
    pic_size = content_length.
  ENDIF.

  CALL FUNCTION 'DP_CREATE_URL'
       EXPORTING
            type     = 'image'
            subtype  = cndp_sap_tab_unknown
            size     = pic_size
            lifetime = cndp_lifetime_transaction
       TABLES
            data     = pic_data
       CHANGING
            url      = url
       EXCEPTIONS
            OTHERS   = 1.


ENDFORM.                               " LOAD_PIC_FROM_DB

 

posted on 2020-09-11 10:25  姬如千泷  阅读(384)  评论(0编辑  收藏  举报