ABAP-为Container添加图片
首先创建Container:
Class的声明&实现:
*---------------------------------------------------------------------*
* CLASS c_service DEFINITION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS C_SERVICE DEFINITION.
PUBLIC SECTION.
CLASS-METHODS GET_PIC_TAB IMPORTING MIME_URL TYPE CSEQUENCE
EXPORTING PIC_TAB TYPE STANDARD TABLE.
ENDCLASS. "c_service DEFINITION
CLASS C_SERVICE IMPLEMENTATION.
METHOD GET_PIC_TAB.
DATA PIC_WA TYPE XSTRING.
DATA LENGTH TYPE I.
DATA MIME_API TYPE REF TO IF_MR_API.
MIME_API = CL_MIME_REPOSITORY_API=>GET_API( ).
MIME_API->GET( EXPORTING I_URL = MIME_URL
IMPORTING E_CONTENT = PIC_WA
EXCEPTIONS OTHERS = 4 ).
IF SY-SUBRC = 4.
RETURN.
ENDIF.
CLEAR PIC_TAB.
LENGTH = XSTRLEN( PIC_WA ).
WHILE LENGTH >= 1022.
APPEND PIC_WA(1022) TO PIC_TAB.
SHIFT PIC_WA BY 1022 PLACES LEFT IN BYTE MODE.
LENGTH = XSTRLEN( PIC_WA ).
ENDWHILE.
IF LENGTH > 0.
APPEND PIC_WA TO PIC_TAB.
ENDIF.
ENDMETHOD. "get_pic_tab
ENDCLASS. "c_service IMPLEMENTATION
* PICTURE_CONTROL
DATA: CONTAINER1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
CONTAINER2 LIKE CONTAINER1,
PICT1 TYPE REF TO CL_GUI_PICTURE,
PICT2 LIKE PICT1,
EVT_TAB TYPE CNTL_SIMPLE_EVENTS,
EVT_TAB_LINE LIKE LINE OF EVT_TAB,
URL(256) TYPE C.
在START-OF-SELECTION事件下为URL添加图片地址:
START-OF-SELECTION.
* Reporting events
PERFORM INIT_REPORTING.
PERFORM FOM_GETDATA .
CALL SCREEN 100.
*&---------------------------------------------------------------------*
*& Form INIT_REPORTING
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM INIT_REPORTING .
C_SERVICE=>GET_PIC_TAB(
EXPORTING MIME_URL = '/SAP/BC/fp/graphics/FPsamples/Tatze.bmp'
IMPORTING PIC_TAB = PIC_TAB ).
CALL FUNCTION 'DP_CREATE_URL'
EXPORTING
TYPE = 'IMAGE'
SUBTYPE = 'GIF'
TABLES
DATA = PIC_TAB
CHANGING
URL = URL.
ENDFORM.
在PBO事件下显示图片:
*&---------------------------------------------------------------------*
*& Form CREATE_PICTURE_CONTROL
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM CREATE_PICTURE_CONTROL .
CREATE OBJECT: container1 EXPORTING container_name = 'CONT02',
container2 EXPORTING container_name = 'PICTURE2',
pict1 EXPORTING parent = container1,
pict2 EXPORTING parent = container2.
l_alignment = cl_gui_control=>align_at_left +
cl_gui_control=>align_at_right +
cl_gui_control=>align_at_top +
cl_gui_control=>align_at_bottom.
CALL METHOD pict1->set_alignment
EXPORTING
alignment = l_alignment.
CALL METHOD pict1->set_3d_border
EXPORTING
border = 1.
evt_tab_line-eventid = cl_gui_picture=>eventid_picture_click.
evt_tab_line-appl_event = ' '. " System Event!
APPEND evt_tab_line TO evt_tab.
CALL METHOD pict1->set_registered_events
EXPORTING
events = evt_tab.
CALL METHOD pict1->load_picture_from_url
EXPORTING
url = url
EXCEPTIONS
OTHERS = 4.
ENDFORM.
效果展示: