zoukankan      html  css  js  c++  java
  • 模板下载函数&&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.

    ENDFUNCTION.

     excel上载函数:使用方便但数量金额字段需在excel中转换为文本(不是只将单元格设置为文本),必须转换为EXCEL单元中左上角为绿色小三角形的文本单元格。 设置后再上载此数据。

      DATA:i_raw TYPE truxs_t_text_data.

      CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
        EXPORTING
    *     I_FIELD_SEPERATOR    =
          i_line_header        'X' "X表示带抬头行的EXCEL的抬头行不传进内表,否则EXCEL不要带抬头
          i_tab_raw_data       = i_raw           " WORK TABLE
          i_filename           = p_file
        TABLES
          i_tab_converted_data = gt_excel   "ACTUAL DATA
        EXCEPTIONS
          conversion_failed    1
          OTHERS               2.
      IF sy-subrc <> 0.
        MESSAGE '无法上载数据,请检查EXCEL文件' TYPE  'S' DISPLAY LIKE 'E'.
        STOP.
      ENDIF.

  • 相关阅读:
    URAL 1998 The old Padawan 二分
    URAL 1997 Those are not the droids you're looking for 二分图最大匹配
    URAL 1995 Illegal spices 贪心构造
    URAL 1993 This cheeseburger you don't need 模拟题
    URAL 1992 CVS
    URAL 1991 The battle near the swamp 水题
    Codeforces Beta Round #92 (Div. 1 Only) A. Prime Permutation 暴力
    Codeforces Beta Round #7 D. Palindrome Degree hash
    Codeforces Beta Round #7 C. Line Exgcd
    Codeforces Beta Round #7 B. Memory Manager 模拟题
  • 原文地址:https://www.cnblogs.com/lingxiaoj/p/11833663.html
Copyright © 2011-2022 走看看