博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sap中Excel的模版上传和下载
阅读量:2034 次
发布时间:2019-04-28

本文共 3385 字,大约阅读时间需要 11 分钟。

一:所用到的事物码:

    smw0

二:上传步骤

三:下载代码

 TABLES:sscrfields.

*定义OLE变量
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:p_filepath TYPE string.
CONSTANTS:c_yes TYPE c VALUE 'X',
          c_path TYPE char128 VALUE 'C:\TMP\价格信息批量导入.xls'.
*模版下载按钮
SELECTION-SCREEN PUSHBUTTON /1(10text-002
                                  USER-COMMAND attch.
AT SELECTION-SCREEN.
  PERFORM frm_check_input.
*&---------------------------------------------------------------------*
*&      Form  frm_check_input
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_check_input .
  DATA l_ret TYPE abap_bool.
  IF sscrfields-ucomm = 'ATTCH'.
* 下载模版
    PERFORM frm_download_template.
  ELSE.
    IF p_filepath IS INITIAL.
      MESSAGE s004(zmess) DISPLAY LIKE 'E'.
      STOP.
    ENDIF.
* 将路径全部转换为大写
    TRANSLATE p_filepath TO UPPER CASE.
* 检查文件是否存在
    CALL METHOD cl_gui_frontend_services=>file_exist
      EXPORTING
        file                 = p_filepath
      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.
    ENDIF.
    IF l_ret NE c_yes.
      MESSAGE e004(zmess) WITH '文件不存在'.
    ENDIF.
  ENDIF.
ENDFORM.                    "frm_check_input
*&---------------------------------------------------------------------*
*&      Form  frm_download_template
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_download_template .
  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.
  MOVE c_path 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 c_yes.
* 模版已存在,是否覆盖
    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 = c_path.
    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'.
    MOVE 'ZGN_MMB021' TO lv_obj_name.
    SELECT relid objid
      FROM wwwdata
      INTO  CORRESPONDING FIELDS OF lv_objdata
      UP TO 1 ROWS
      WHERE srtf2 = 0 AND relid = 'MI'
        AND objid = lv_obj_name.
    ENDSELECT.
    CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
      EXPORTING
        key         = lv_objdata
        destination = c_path
      IMPORTING
        rc          = lv_subrc.
    IF lv_subrc = 0.
      p_filepath = c_path.
    ENDIF.
  ENDIF.
  CALL METHOD OF
      g_workbook
      'open'
    EXPORTING
      #1         = c_path.
  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.
ENDFORM.                    "frm_download_template

转载地址:http://lloaf.baihongyu.com/

你可能感兴趣的文章
bash 命令执行环境
查看>>
物理内存的管理
查看>>
高效能人士的七个习惯——由内而外全面造就自己
查看>>
为什么精英都是清单控(笔记)——工作清单
查看>>
怦然心动的人生整理魔法(笔记)——物品类别整理
查看>>
让人生发生戏剧性变化的整理魔法(笔记)
查看>>
按物品类别整理的心动收纳法(笔记)
查看>>
番茄工作图解——序(笔记)
查看>>
每天最重要的2小时——序(笔记)
查看>>
29.开源项目--git远程仓库的概念
查看>>
36.开源项目--git搭建本地Git服务器
查看>>
01.创新与企业家精神——创新实践
查看>>
17.创新与企业家精神——攻其软肋
查看>>
14.openssl编程——错误处理
查看>>
29.openssl编程——PKCS7
查看>>
openssl passwd
查看>>
openssl pkeyutl
查看>>
02.规划过程组表格-责任分配矩阵
查看>>
02.规划过程组表格-质量管理计划
查看>>
02.规划过程组表格-干系管理计划
查看>>