Можно в html выкинуть, а потом из него на печать. Что-то типа:
Code:
TYPE-POOLS: sdydo.
DATA: container TYPE REF TO cl_gui_docking_container,
document TYPE REF TO cl_dd_document,
local_path_for_copy TYPE string,
files TYPE TABLE OF bapifiles,
file TYPE bapifiles,
html_table TYPE sdydo_html_table,
html_line TYPE sdydo_html_line,
tag1 TYPE string,
tag2 TYPE string.
PARAMETERS: p_object TYPE bds_typeid.
AT SELECTION-SCREEN OUTPUT.
IF p_object IS NOT INITIAL.
IF container IS INITIAL.
CREATE OBJECT:
container EXPORTING repid = sy-cprog
dynnr = sy-dynnr
side = container->dock_at_bottom
ratio = 95,
document.
ENDIF.
document->initialize_document( ).
document->add_picture( picture_id = p_object ).
document->merge_document( ).
document->display_document( reuse_control = 'X' parent = container ).
ENDIF.
START-OF-SELECTION.
IF document IS NOT INITIAL AND p_object IS NOT INITIAL.
CALL FUNCTION 'WS_QUERY'
EXPORTING
query = 'CD'
IMPORTING
return = file-directory
EXCEPTIONS
OTHERS = 1.
REFRESH: files, html_table.
html_table = document->html_table.
LOOP AT html_table INTO html_line.
IF html_line CP '<img src="*'.
SPLIT html_line AT '"' INTO tag1 file-comp_id tag2.
CONCATENATE file-directory file-comp_id INTO file-filename.
CONCATENATE tag1 file-filename tag2 INTO html_line
SEPARATED BY '"'.
CLEAR file-filename.
file-doc_count = 1.
file-comp_count = 1.
APPEND file TO files.
MODIFY html_table FROM html_line.
EXIT.
ENDIF.
ENDLOOP.
document->html_table = html_table.
CALL FUNCTION 'BDS_BUSINESSDOCUMENT_GET_FILES'
EXPORTING
classname = 'PICTURES'
classtype = 'OT'
client = sy-mandt
object_key = p_object
TABLES
files = files
EXCEPTIONS
OTHERS = 1.
document->print_document( reuse_control = 'X' ).
CALL METHOD cl_gui_cfw=>flush.
ENDIF.
Минус один - приходится файл на фронтенде сохранять.