*&---------------------------------------------------------------------*
*& Report ZSE78
*&---------------------------------------------------------------------*
*& Baitianzhen
*& SE78批量上传/下载/删除/传输/查看
*&---------------------------------------------------------------------*
REPORT zse78 NO STANDARD PAGE HEADING.
TABLES: stxbitmaps,bdsphio3.
DATA: gv_line TYPE i,
gv_text TYPE char50.
DATA: BEGIN OF gt_upld OCCURS 0,
name TYPE stxbitmaps-tdname,
file TYPE rlgrap-filename,
desc TYPE bapisignat-prop_value,
END OF gt_upld.
DATA: gt_maps TYPE TABLE OF stxbitmaps WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE btxt1.
PARAMETERS: p_upld RADIOBUTTON GROUP typ USER-COMMAND sele DEFAULT 'X',
p_down RADIOBUTTON GROUP typ,
p_dele RADIOBUTTON GROUP typ,
p_tran RADIOBUTTON GROUP typ,
p_view RADIOBUTTON GROUP typ.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE btxt2.
PARAMETERS: p_type TYPE stxbitmaps-tdbtype MODIF ID a DEFAULT 'BCOL',
p_rsdt AS CHECKBOX MODIF ID a,
p_auto AS CHECKBOX MODIF ID a DEFAULT 'X',
p_comp AS CHECKBOX MODIF ID a DEFAULT 'X'.
SELECT-OPTIONS: s_name FOR gt_maps-tdname MODIF ID b,
s_type FOR gt_maps-tdbtype MODIF ID b.
SELECTION-SCREEN END OF BLOCK b2.
AT SELECTION-SCREEN OUTPUT.
btxt1 = '功能选择'.
btxt2 = '数据'.
%_p_upld_%_app_%-text = '上传'.
%_p_down_%_app_%-text = '下载'.
%_p_dele_%_app_%-text = '删除'.
%_p_tran_%_app_%-text = '传输'.
%_p_view_%_app_%-text = '查看'.
%_p_type_%_app_%-text = '彩色/黑白'.
%_p_rsdt_%_app_%-text = '驻留在打印机内存中'.
%_p_auto_%_app_%-text = '自动保留高度'.
%_p_comp_%_app_%-text = '压缩'.
%_s_name_%_app_%-text = '名称'.
%_s_type_%_app_%-text = '彩色/黑白'.
LOOP AT SCREEN.
IF p_upld = 'X'.
IF screen-group1 CA 'B'.
screen-active = '0'.
ENDIF.
ELSE.
IF screen-group1 CA 'A'.
screen-active = '0'.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
START-OF-SELECTION.
CASE 'X'.
WHEN p_upld.
PERFORM upld.
WHEN OTHERS.
SELECT * INTO TABLE gt_maps
FROM stxbitmaps
WHERE tdname IN s_name AND
tdid EQ 'BMAP' AND
tdbtype IN s_type.
IF sy-subrc NE 0.
MESSAGE s000(oo) WITH '未找到数据'.
ELSE.
CASE 'X'.
WHEN p_down.
PERFORM down.
WHEN p_dele.
PERFORM dele.
WHEN p_tran.
PERFORM tran.
WHEN p_view.
PERFORM view.
ENDCASE.
ENDIF.
ENDCASE.
*&---------------------------------------------------------------------*
*& 上传 如果已经存在,则覆盖
*&---------------------------------------------------------------------*
FORM upld.
DATA: lv_docid TYPE stxbitmaps-docid.
DATA: lv_exnam TYPE char255.
DATA: lv_resol TYPE stxbitmaps-resolution.
DATA: lt_files TYPE TABLE OF file_table.
DATA: lv_rcode TYPE i.
DATA: lv_file TYPE string.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = '请选择导入文件'
default_filename = '*.txt'
multiselection = ''
CHANGING
file_table = lt_files
rc = lv_rcode
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
OTHERS = 5.
IF sy-subrc = 0 AND lt_files IS NOT INITIAL.
READ TABLE lt_files INTO lv_file INDEX 1.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = lv_file
filetype = 'ASC'
has_field_separator = 'X'
TABLES
data_tab = gt_upld
EXCEPTIONS
OTHERS = 1.
IF sy-subrc = 1.
MESSAGE e000(oo) WITH '文件打开错误'.
ENDIF.
ENDIF.
gv_line = lines( gt_upld ).
LOOP AT gt_upld.
TRANSLATE gt_upld-name TO UPPER CASE.
MESSAGE s000(oo) WITH sy-tabix '/' gv_line gt_upld-name INTO gv_text.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = 0
text = gv_text.
lv_exnam = gt_upld-file.
WHILE lv_exnam CA '.'.
SHIFT lv_exnam.
ENDWHILE.
TRANSLATE lv_exnam TO UPPER CASE.
WRITE / gt_upld-name.
CLEAR: lv_docid.
PERFORM import_bitmap_bds IN PROGRAM saplstxbitmaps
USING gt_upld-file
gt_upld-name
'GRAPHICS'
'BMAP'
p_type
lv_exnam
gt_upld-desc "描述
p_rsdt "驻留打印机内存
p_auto "自动保留高度
p_comp "压缩
CHANGING lv_docid
lv_resol.
WRITE lv_docid.
ENDLOOP.
ENDFORM. "upld
*&---------------------------------------------------------------------*
*& 下载 弹出保存路径对话框
*&---------------------------------------------------------------------*
FORM down.
DATA: lv_blen TYPE i,
gv_line TYPE i,
lv_path TYPE string,
lv_file TYPE string,
lv_xstr TYPE xstring,
lt_btab TYPE TABLE OF x255.
CALL METHOD cl_gui_frontend_services=>directory_browse
EXPORTING
window_title = '下载到目录:'
CHANGING
selected_folder = lv_path
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.
CHECK sy-subrc = 0.
gv_line = lines( gt_maps ).
LOOP AT gt_maps.
MESSAGE s000(oo) WITH sy-tabix '/' gv_line gt_maps-tdname INTO gv_text.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = 0
text = gv_text.
WRITE / gt_maps-tdname.
CALL METHOD cl_ssf_xsf_utilities=>get_bds_graphic_as_bmp
EXPORTING
p_object = 'GRAPHICS'
p_name = gt_maps-tdname
p_id = gt_maps-tdid
p_btype = gt_maps-tdbtype
RECEIVING
p_bmp = lv_xstr
EXCEPTIONS
not_found = 1
internal_error = 2
OTHERS = 3.
IF sy-subrc = 0.
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lv_xstr
IMPORTING
output_length = lv_blen
TABLES
binary_tab = lt_btab.
IF lv_xstr(2) = '424D'."BMP
CONCATENATE lv_path '\' gt_maps-tdname '_'
gt_maps-tdbtype '.bmp' INTO lv_file.
ELSE.
CONCATENATE lv_path '\' gt_maps-tdname '_'
gt_maps-tdbtype '.tif' INTO lv_file.
ENDIF.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = lv_file
filetype = 'BIN'
bin_filesize = lv_blen
TABLES
data_tab = lt_btab
EXCEPTIONS
OTHERS = 1.
IF sy-subrc = 0.
WRITE lv_file.
ELSE.
WRITE '下载失败'.
ENDIF.
ELSE.
WRITE '获取文件失败'.
ENDIF.
ENDLOOP.
ENDFORM. "down
*&---------------------------------------------------------------------*
*& 删除
*&---------------------------------------------------------------------*
FORM dele.
DATA lv_mess TYPE char100.
LOOP AT gt_maps.
WRITE: / gt_maps-tdname,gt_maps-tdbtype.
CALL FUNCTION 'SAPSCRIPT_DELETE_GRAPHIC_BDS'
EXPORTING
i_object = 'GRAPHICS'
i_name = gt_maps-tdname
i_id = gt_maps-tdid
i_btype = gt_maps-tdbtype
dialog = ''
EXCEPTIONS
delete_failed = 1
not_found = 2
canceled = 3
OTHERS = 4.
CASE sy-subrc.
WHEN 0.
WRITE '成功删除'.
WHEN OTHERS.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO lv_mess.
WRITE lv_mess.
ENDCASE.
ENDLOOP.
ENDFORM. "dele
*&---------------------------------------------------------------------*
*& 传输 弹出选择请求号的对话框 工作台请求
*&---------------------------------------------------------------------*
FORM tran.
DATA: lv_task TYPE e070-trkorr,
lt_071k TYPE TABLE OF e071k WITH HEADER LINE,
lt_e071 TYPE TABLE OF e071 WITH HEADER LINE.
lt_e071-objfunc = 'K'.
lt_e071-pgmid = 'R3TR'.
lt_e071-object = 'TABU'.
lt_e071-obj_name = 'STXBITMAPS'.
APPEND lt_e071.
LOOP AT gt_maps.
lt_071k-pgmid = 'R3TR'.
lt_071k-mastertype = 'TABU'.
lt_071k-object = 'TABU'.
lt_071k-mastername = 'STXBITMAPS'.
lt_071k-objname = 'STXBITMAPS'.
CONCATENATE gt_maps-tdobject
gt_maps-tdname
gt_maps-tdid
gt_maps-tdbtype
INTO lt_071k-tabkey RESPECTING BLANKS.
APPEND lt_071k.
ENDLOOP.
CALL FUNCTION 'TR_ORDER_CHOICE_CORRECTION'
EXPORTING
iv_category = 'SYST'
IMPORTING
ev_task = lv_task
EXCEPTIONS
OTHERS = 3.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CALL FUNCTION 'TR_APPEND_TO_COMM_OBJS_KEYS'
EXPORTING
wi_simulation = ''
wi_suppress_key_check = ''
wi_trkorr = lv_task
TABLES
wt_e071 = lt_e071
wt_e071k = lt_071k
EXCEPTIONS
OTHERS = 68.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
MESSAGE s000(oo) WITH '成功'.
ENDIF.
ENDFORM. "tran
*&---------------------------------------------------------------------*
*& 使用HTML查看多个图片
*&---------------------------------------------------------------------*
FORM view.
DATA: lv_pkey TYPE char80,
lv_xstr TYPE xstring,
lv_html TYPE string.
DATA: lt_data TYPE cl_abap_browser=>load_tab WITH HEADER LINE.
DATA: lr_stru TYPE REF TO data,
lr_type TYPE REF TO cl_abap_structdescr,
lt_comp TYPE abap_component_tab WITH HEADER LINE.
FIELD-SYMBOLS: <ls_stru> TYPE any,
<lt_btab> TYPE STANDARD TABLE.
LOOP AT gt_maps.
lt_comp-name = gt_maps-tdname && gt_maps-tdbtype.
lt_comp-type ?= cl_abap_datadescr=>describe_by_name( 'SWXMLCONT' ).
APPEND lt_comp.
ENDLOOP.
lr_type = cl_abap_structdescr=>create( lt_comp[] ).
CREATE DATA lr_stru TYPE HANDLE lr_type.
ASSIGN lr_stru->* TO <ls_stru>.
lv_html = `<html><meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>` &&
`<table border=1 cellpadding=2 ` &&
`style='border-collapse:collapse;font-size:10.5pt'>` &&
`<tbody><TR style= 'background:#f4f4f4'></TR>` .
gv_line = lines( gt_maps ).
LOOP AT gt_maps.
MESSAGE s000(oo) WITH sy-tabix '/' gv_line gt_maps-tdname INTO gv_text.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = 0
text = gv_text.
CALL METHOD cl_ssf_xsf_utilities=>get_bds_graphic_as_bmp
EXPORTING
p_object = 'GRAPHICS'
p_name = gt_maps-tdname
p_id = gt_maps-tdid
p_btype = gt_maps-tdbtype
RECEIVING
p_bmp = lv_xstr
EXCEPTIONS
not_found = 1
internal_error = 2
OTHERS = 3.
IF sy-subrc = 0.
lv_pkey = gt_maps-tdname && gt_maps-tdbtype.
ASSIGN COMPONENT lv_pkey OF STRUCTURE <ls_stru> TO <lt_btab>.
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lv_xstr
TABLES
binary_tab = <lt_btab>.
IF lv_xstr(2) = '424D'."BMP
lt_data-name = lv_pkey && '.bmp'.
ELSE.
lt_data-name = lv_pkey && '.tif'.
ENDIF.
lt_data-type = 'image'.
GET REFERENCE OF <lt_btab> INTO lt_data-dref.
APPEND lt_data.
SELECT SINGLE * FROM bdsphio3
WHERE loio_id = gt_maps-docid+10.
lv_html = lv_html && `<TR>` &&
`<td style="BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid;` &&
`BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid" nowrap>` &&
gt_maps-tdname && `</td>` &&
`<td style="BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid;` &&
`BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid" nowrap>` &&
bdsphio3-descript && `</td>` &&
`<td style="BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid;` &&
`BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid" nowrap>` &&
`<img src="` && lt_data-name && `"></td> </tr>`.
ENDIF.
ENDLOOP.
lv_html = lv_html && `</tbody></table> <br/> </html>`.
cl_abap_browser=>show_html( title = '表格图形批量查看'
html_string = lv_html
data_table = lt_data[] ).
ENDFORM. "view
10-23
489
07-11
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交