通过定制控制在屏幕上显示图片

1、图片上载

图片的上载是在事务代码SWM0中操作的。

输入包slis进去,然后新建一个对象,尚在成功后相关的数据在数据表WWWDATA中存储,可以通过对象名称查找出来

2、创建屏幕100在屏幕上加上定制控制对象元素P1。

3.代码实现:

*&---------------------------------------------------------------------*
*& Report  YTEST019
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ytest019.

DATA:ok_code TYPE sy-ucomm,
      save_ok TYPE sy-ucomm.

*定义控制和图片对象定义
DATA container TYPE REF TO cl_gui_custom_container.
DATA picture TYPE REF TO cl_gui_picture.

*初始标识字段定义
DATA init.

*直接调用窗口
CALL SCREEN 100.

INCLUDE ytest019_exiti01.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.

  save_ok ok_code.


ENDMODULE.                 " USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
*  SET PF-STATUS 'xxxxxxxx'.
*  SET TITLEBAR 'xxx'.
*如果还未创建定制对象
  IF init IS INITIAL.
    DATA url(255).
    CLEAR url.
    CREATE OBJECT container
      EXPORTING
        container_name 'P1'.
    CREATE OBJECT picture
      EXPORTING
        parent container
      EXCEPTIONS
        error  1.
    IF sy-subrc NE 0.

    ENDIF.

*定义通过函数取得图片地址
    PERFORM load_pic_from_db CHANGING url.

* 显示图片
    CALL METHOD picture->load_picture_from_url
      EXPORTING
        url url.
    IF sy-subrc NE 0.

    ENDIF.

*置标识位置已初始
    init 'X'.


  ENDIF.
ENDMODULE.                 " STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*&      Form  LOAD_PIC_FROM_DB
*&---------------------------------------------------------------------*
FORM load_pic_from_db  CHANGING p_url.
  DATA query_table LIKE w3query OCCURS 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 'TESTPICS'.
  APPEND query_table.

*读取表WWWDATA,取出图片对象信息
  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.

* 创建图片URL地址

  CALL FUNCTION 'DP_CREATE_URL'
    EXPORTING
      type                       'image'
      subtype                    cndp_sap_tab_unknown
     size                       pic_size
*   DATE                       =
*   TIME                       =
*   DESCRIPTION                =
     lifetime                   cndp_lifetime_transaction
*   CACHEABLE                  =
*   SEND_DATA_AS_STRING        =
*   FIELDS_FROM_APP            =
    TABLES
      data                       pic_data
*   FIELDS                     =
*   PROPERTIES                 =
*   COLUMNS_TO_STRETCH         =
    CHANGING
      url                        url
 EXCEPTIONS
*   DP_INVALID_PARAMETER       = 1
*   DP_ERROR_PUT_TABLE         = 2
*   DP_ERROR_GENERAL           = 3
     others                     1
            .
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.


ENDFORM.                    " LOAD_PIC_FROM_DB

原文地址:https://www.cnblogs.com/caizjian/p/3332733.html