SMW0 下载excel的两种方式 - 海边星
【原创】 SMW0 下载excel的两种方式
栏目:ABAP  作者:在海边看星星  阅读:(1209)

两种弹窗方式

* 相关变量定义
  DATA:lo_objdata     LIKE wwwdatatab,
       lo_mime        LIKE w3mime,
       lc_filename    TYPE string VALUE'独立需求导入模板',
       lc_fullpath    TYPE string VALUE'c:\',
       lc_path        TYPE string VALUE'c:\',
       ls_destination LIKE rlgrap-filename,
       ls_objnam      TYPE string,
       l_rc           LIKE sy-subrc,
       ls_errtxt      TYPE string,
       l_objid        TYPE wwwdatatab-objid,
       l_dest         LIKE sapb-sappfad.

* 对象名
  l_objid = 'ZPPB_007'.
* 模板下载路径名
  CALL METHOD cl_gui_frontend_services=>file_save_dialog
    EXPORTING
      window_title              = '独立需求导入模板'
      default_extension         = 'XLS'
      default_file_name         = lc_filename
    CHANGING
      filename                  = lc_filename
      path                      = lc_path
      fullpath                  = lc_fullpath
    EXCEPTIONS
      cntl_error                = 1
      error_no_gui              = 2
      not_supported_by_gui      = 3
      invalid_default_file_name = 4
      OTHERS                    = 5.
* 没有选择路径
  IF lc_fullpath = ''.
    MESSAGE  '请选择正确的路径!' TYPE 'E'.
  ELSE.
*-  路径名
    l_dest = lc_fullpath.

    SELECT SINGLE
           relid     "IMPORT/EXPORT 记录中的区域
           objid     "SAP WWW 网关对象名
      FROM wwwdata
      INTO CORRESPONDING FIELDS OF lo_objdata
     WHERE srtf2 = 0
      AND relid = 'MI'
      AND objid = l_objid.

    IF sy-subrc <> 0 OR lo_objdata-objid IS INITIAL.
      MESSAGE '没有获得模板数据' TYPE 'E'.
    ENDIF.

    ls_destination = l_dest.
    CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
      EXPORTING
        key         = lo_objdata
        destination = ls_destination
      IMPORTING
        rc          = l_rc.
    IF l_rc <> 0.
      MESSAGE '模板下载失败' TYPE 'E'.
    ENDIF.
  ENDIF.
  DATA:
    l_objid           TYPE wwwdata-objid,
    l_name            TYPE string,
    l_pass_path       TYPE string,
    l_pass_path1(128),
    l_action          TYPE i,
    l_key             LIKE wwwdatatab,
    rc                LIKE sy-subrc,
    temp              TYPE c.

  l_objid = 'ZSOPR_025_UP'.
  CASE 'X'.
    WHEN p_xsys.
      l_name = '销售预算导入模板.XLSX'.
    WHEN p_xsyc.
      l_name = '销售预测导入模板.XLSX'.
    WHEN p_dgcyc.
      l_name = '代工厂预测导入模板.XLSX'.
    WHEN p_tzsop.
      l_name = '调整后SOP预测导入模板.XLSX'.
  ENDCASE.

  "取出模板对象参数,判断模板是否存在
  SELECT SINGLE relid objid FROM wwwdata
    INTO CORRESPONDING FIELDS OF l_key
  WHERE relid = 'MI'
    AND objid = l_objid
    AND srtf2 = 0.
  IF sy-subrc <> 0.
    MESSAGE 'EXCEL模板不存在' TYPE 'S' DISPLAY LIKE 'E'. "The excel template no existed !
    RETURN.
  ENDIF.

*导出模板存放路径
  CALL FUNCTION 'GUI_FILE_SAVE_DIALOG'
    EXPORTING
      file_filter       = '.XLSX'
      default_file_name = l_name
      initial_directory = 'D:\'
    IMPORTING
      fullpath          = l_pass_path
      user_action       = l_action.
  IF sy-subrc = 0 AND l_action <> 9.
    l_pass_path1 = l_pass_path.
*取出模板
    CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
      EXPORTING
        key         = l_key
        destination = l_pass_path1
      IMPORTING
        rc          = rc
      CHANGING
        temp        = temp.
    IF rc = 0.
      MESSAGE '下载模板成功' TYPE 'S'.
    ELSE.
      MESSAGE '下载模板失败' TYPE 'S' DISPLAY LIKE 'E'.
      RETURN.
    ENDIF.
  ENDIF.



上一篇: 用户参数...


我的评论
昵称
邮箱
域名
  记住 通知博主
验证码

  联系我们

微信扫一扫

 登录  打赏

  随机文章