• 模板下载函数&&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.

  • 相关阅读:
    设计模式系列
    【ABAP系列】SAP ABAP 关于FUNCTION-POOL的理解
    【MM系列】SAP S/4 HANA 1511的BP角色创建及供应商数据的创建方法
    【ABAP系列】SAP ABAP 动态指针
    【HR系列】SAP HR PA信息类型的创建与增强
    【HANA系列】SAP UI5上传图片 用XSJS存储在HANA中的方法
    【HANA系列】SAP Vora(SAP HANA和Hadoop)简析
    【MM系列】SAP SAP库龄报表逻辑理解
    【HANA系列】SAP HANA XS Administration Tool登录参数设置
    【ABAP系列】SAP 一个完整的SAP的Abap例子(idoc,edi文件的相互转换)
  • 原文地址:https://www.cnblogs.com/lingxiaoj/p/11833663.html
Copyright © 2020-2023  润新知