SE78图片批量管理


*&---------------------------------------------------------------------*
*& 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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值