热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SAP如何将SMW0上的EXCEL模板下载到本地

前面有说过如何如何将EXCEL模板上传到SAP里,那么使用代码的话如何实现下载EXCEL模板*&-----------------------------------

前面有说过如何如何将EXCEL 模板上传到SAP里,

那么使用代码的话如何实现下载EXCEL模板

 

*&---------------------------------------------------------------------*
*& Report  ZTEST09
*&  by cmh
*&---------------------------------------------------------------------*
*&
*& 下载 EXCEL 模板
*&---------------------------------------------------------------------*

REPORT  ZTEST09.

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 VALUE 'X',
          c_path TYPE char128 VALUE 'C:\TEMP\资产负债表.xls'.            " 下载后存放路径

*模版下载按钮
SELECTION-SCREEN BEGIN OF block block1 with frame title text-000.

  parameters g_filen like wwwdatatab-objid default 'ZFI045_1000'.      " 要下载的模板名称 

  SELECTION-SCREEN PUSHBUTTON /1(10text-002
                                  USER-COMMAND attch.

  SELECTION-SCREEN end of block block1.



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.

  ENDIF.

ENDFORM.                    "frm_check_input

*&---------------------------------------------------------------------*
*&      Form  frm_download_template
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_download_template .

  DATAlv_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 g_filen TO lv_obj_name.

    SELECT relid objid
      FROM wwwdata
      INTO  CORRESPONDING FIELDS OF lv_objdata
      UP TO ROWS
      WHERE srtf2 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


推荐阅读
  • 题目描述输入整型数组和排序标识,对其元素按照升序或降序进行排序(一组测试用例可能会有多组数据)本题有多组输入,请使用whil ... [详细]
  • 通过CreateDirectory命令创建相应的Directory之后,可以将目录的访问权限授予其他用户,这样其他用户就能通过外部表访问很多主机上的文件,而不需要登录到数据库服务器 ... [详细]
  • selenium 定位方式3css_selector
    关于页面元素定位,可以根据id、class、name属性以及link_text。其中id属性是最理想的定位方式,class与name属性, ... [详细]
  • IamusingmaterialDateTimepickerformyAndroidapp.ButIwanttocombinetheDateandTimepic ... [详细]
  •   uni-app开发教程,uni-app实例教程  UNI-APP开发(仿饿)开发课程:进入学习  推荐(免费):uni-app开发教程  文章目录  简介,网 ... [详细]
  • 最近想用js做一个简单的计算器,不过网上的例子好像大部分都是直接从左到右挨个计算,就好像1+2*5,就会先计算1+2,再计算3*5,并没有实现运算符的优先级,这里找到了一种方法实现,来总结一下。不过这 ... [详细]
  • JS动态生成表格案例 ... [详细]
  • 我正在使用数组列表通过构建一个交互式菜单供用户选择来存储来自用户输入的值。到目前为止,我的两个选择是为用户提供向列表输入数据和读取列表的全部内容。到目前为止,我创建的代码由两个类组成。 ... [详细]
  • Mysql MySqlBulkLoader在.NET平台下的批量插入
    批量导入publicboolTranBatchImpo ... [详细]
  • 在这一期的SendMessage函数应用中,我将向大家介绍如何利用消息函数来扩展树型列表(TreeView)控件的功能相信对于树型列表控件大家十分的熟悉, ... [详细]
  • 下面是一个用openssl实现获取https网页内容的demo,整个流程比较简单,主要封装的API如下staticinthttps_init(http ... [详细]
  • 上次我们总结了React代码构建后的webpack模块组织关系,今天来介绍一下Babel编译JSX生成目标代码的一些规则,并且写一个简单的解析器,模拟整个生成的过程。我们还是拿最简 ... [详细]
  • 技术点:1、通过已知的网页路径获得流2、把流转换成字节数组3、把字节数组转换成String字符串显示在TextView控件中一、获得流publicstaticSt ... [详细]
  • 对于输入的每个字符串,查找其中的最大字母,在该字母后面插入字符串“(max)”。Input输入数据包括多个测试实例,每个实例由一行长度 ... [详细]
  • [二分图]JZOJ 4612 游戏
    DescriptionInputOutputSampleInput44#****#****#*xxx#SampleOutput5DataConstraint分析非常眼熟࿰ ... [详细]
author-avatar
冷瞳流行精品服装店
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有