lingxiaoj

模板下载函数&&excel上载函数

留存一个批导模板下载的函数

使用方式如下

  CALL FUNCTION \'ZFM_DOWN_EXCEL\'
    EXPORTING
      i_file = p_file
      i_name \'ZSDC016\'.

 

I_FILE TYPE LOCALFILE
I_NAME TYPE W3OBJID

 

FUNCTION zfm_down_excel.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     REFERENCE(I_FILE) TYPE  LOCALFILE
*"     VALUE(I_NAME) TYPE  W3OBJID
*"----------------------------------------------------------------------
  DATA: lv_objdata LIKE wwwdatatab,
        lv_obj_name LIKE wwwdatatab-objid,
        lv_destination LIKE rlgrap-filename,
        lv_objid LIKE sy-repid,
        lv_subrc LIKE sy-subrc.
  DATA:l_ret TYPE abap_bool,
       lv_answer.
  DATA:lv_file TYPE string.
  DATA:p_filepath TYPE string.

  DATA:g_excel TYPE ole2_object,
       g_applica TYPE ole2_object,
       g_sheet TYPE ole2_object,
       g_cell TYPE ole2_object,
       g_workbook TYPE ole2_object.

  DATA: lw_file TYPE localfile.

  MOVE i_file TO lv_file.

  CALL METHOD cl_gui_frontend_services=>file_exist
    EXPORTING
      file                 = lv_file
    RECEIVING
      result               = l_ret
    EXCEPTIONS
      cntl_error           1
      error_no_gui         2
      wrong_parameter      3
      not_supported_by_gui 4
      OTHERS               5.

  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    EXIT.
  ENDIF.

  IF l_ret EQ \'X\'.

* 模版已存在,是否覆盖

    CALL FUNCTION \'POPUP_TO_CONFIRM\'
      EXPORTING
        text_question  \'模版已存在,是否覆盖?\'
        text_button_1  \'是\'(001)
        text_button_2  \'否\'(002)
      IMPORTING
        answer         = lv_answer
      EXCEPTIONS
        text_not_found 1
        OTHERS         2.
    IF sy-subrc <> 0.

    ENDIF.

    IF lv_answer EQ \'A\'"取消
      EXIT.
    ELSEIF lv_answer NE \'1\'"否
      p_filepath = i_file.
    ENDIF.
  ELSE.
    lv_answer \'1\'.
  ENDIF.

  CREATE OBJECT g_excel \'EXCEL.APPLICATION\'.
  GET PROPERTY OF g_excel \'Workbooks\' = g_workbook .
  CALL METHOD OF
      g_workbook
      \'Close\'.

  IF lv_answer EQ \'1\'.

    SELECT relid objid
      FROM wwwdata
      INTO  CORRESPONDING FIELDS OF lv_objdata
      UP TO ROWS
      WHERE srtf2 AND relid \'MI\'
        AND objid = i_name.
    ENDSELECT.

    CONCATENATE i_file \'.XLSX\' INTO lw_file.

    CALL FUNCTION \'DOWNLOAD_WEB_OBJECT\'
      EXPORTING
        key         = lv_objdata
        destination = lw_file
      IMPORTING
        rc          = lv_subrc.
    IF lv_subrc 0.
    ENDIF.
  ENDIF.

  CALL METHOD OF
      g_workbook
      \'open\'

    EXPORTING
      #1         = i_file.

  CALL METHOD OF
      g_excel
      \'worksheets\' = g_sheet
    EXPORTING
      #1           1.

  CALL METHOD OF
      g_sheet
      \'activate\'.

  SET PROPERTY OF g_excel \'visible\' 1.
  FREE OBJECT g_sheet.
  FREE OBJECT g_applica.
  FREE OBJECT g_workbook.
  FREE OBJECT g_excel

分类:

技术点:

相关文章:

  • 2022-01-08
  • 2022-01-07
  • 2021-12-15
  • 2021-04-17
  • 2021-06-10
  • 2021-12-08
  • 2019-07-06
猜你喜欢
  • 2020-05-04
  • 2021-08-06
  • 2021-10-16
  • 2021-09-29
  • 2021-09-15
  • 2021-09-15
  • 2021-11-04
相关资源
相似解决方案