ABAP上传excel文件模板到SAP服务器

本文介绍了一种在SAP报表程序中实现Excel模板下载的功能。通过使用特定的事务代码和编程技巧,用户可以在选择屏幕界面上点击按钮,直接下载预定义的Excel文件模板。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

示例的SAP报表程序,在选择屏幕界面上,提供了一个按钮. 用户点击按钮,就下载到一个excel的文件模板,本文介绍这个功能时如何实现的:

 把xls作为二进制数据传入SAP服务器的事务代码:SMW0

输入对应的报表名称:

新建文件对象:

导入xls文件到SAP系统中:

可以使用的代码:

*&---------------------------------------------------------------------*
*& Report ZPPU0063
*&---------------------------------------------------------------------*
*& james_lx  2023.4.14
*&---------------------------------------------------------------------*
REPORT ZPPU0063.








selection-screen begin of block bk with frame title text-b02.
parameter:p_path like rlgrap-filename modif id md1.
selection-screen end of block bk.




DATA: functxt TYPE smp_dyntxt.
TABLES: sscrfields.
SELECTION-SCREEN: FUNCTION KEY 1,FUNCTION KEY 2."download template.


initialization.


  functxt-icon_id       = icon_xxl.
  functxt-icon_text     = text-002.
  sscrfields-functxt_01 = functxt.

  functxt-icon_id       = ICON_SPOOL_REQUEST.
  functxt-icon_text     = text-003.
  sscrfields-functxt_02 = functxt.


  AT SELECTION-SCREEN.

  CASE sscrfields-ucomm.
    WHEN 'FC01'.
      PERFORM frm_download_template.
    WHEN 'FC02'.
      SUBMIT ZSDR0026 VIA SELECTION-SCREEN.


  ENDCASE.




at selection-screen on value-request for p_path.
  perform frm_sel_file changing p_path.


start-of-selection.
 " perform frm_excel_import.





FORM frm_download_template.

  CONSTANTS:
    c_save     TYPE gui_code VALUE 'SAVE',
    c_template TYPE w3objid VALUE 'ZPPU0063'.

  DATA:
    lv_template_name TYPE string,
    lv_temp_dir      TYPE string,
    lv_fname         TYPE rlgrap-filename,
    ls_objdata       TYPE wwwdatatab,
    lv_file          TYPE string,
    lv_result        TYPE abap_bool,
    lv_sucess        TYPE char01,
    lv_filename      TYPE string,
    lv_path          TYPE string,
    lv_fullpath      TYPE string,
    lv_result_save   TYPE i.

  CALL METHOD cl_gui_frontend_services=>get_desktop_directory
    CHANGING
      desktop_directory    = lv_temp_dir
    EXCEPTIONS
      cntl_error           = 1
      error_no_gui         = 2
      not_supported_by_gui = 3
      OTHERS               = 4.

  CHECK sy-subrc =  0.

  CALL METHOD cl_gui_cfw=>flush
    EXCEPTIONS
      cntl_system_error = 1
      cntl_error        = 2
      OTHERS            = 3.

  CHECK sy-subrc =  0.

  SELECT SINGLE text INTO lv_template_name FROM wwwdata WHERE relid = 'MI' AND objid = c_template AND srtf2 = '0' .

  CALL METHOD cl_gui_frontend_services=>file_save_dialog
    EXPORTING
      default_extension = 'xlsx'
      default_file_name = lv_template_name
      initial_directory = lv_temp_dir
    CHANGING
      filename          = lv_filename
      path              = lv_path
      fullpath          = lv_fullpath
      user_action       = lv_result_save.
  lv_file  = lv_fullpath.

  CHECK lv_file IS NOT INITIAL.
  CALL METHOD cl_gui_frontend_services=>file_exist
    EXPORTING
      file   = lv_file
    RECEIVING
      result = lv_result.


  IF lv_result = 'X'.
    PERFORM frm_confirm USING TEXT-002 CHANGING lv_sucess.
    IF lv_sucess = 'X'.
      MESSAGE '下载模板操作取消' TYPE 'I'."s035."下载模板操作取消
    ENDIF.

  ENDIF.

  CHECK lv_result IS INITIAL OR lv_sucess IS INITIAL.
  lv_fname         = lv_file.
  ls_objdata-relid = 'MI'.
  ls_objdata-objid = c_template.
  CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
    EXPORTING
      key         = ls_objdata
      destination = lv_fname.

  MESSAGE '模板文档已下载' TYPE 'I'.."模板文档已下载

  CLEAR: ls_objdata, lv_temp_dir, lv_fname.
  CLEAR: lv_file, lv_result, lv_sucess.

ENDFORM. " FRM_DOWNLOAD_TEMPLATE





form frm_sel_file changing po_path.
  data:
    lt_filetable    type   filetable,
    ls_filetable    type   file_table,
    lv_rc           type   sy-subrc,
    lv_filename     type   string,
    lv_initial_path type   string value 'c:\'.

  clear lv_filename.
  lv_filename = p_path.
  call method cl_gui_frontend_services=>file_open_dialog
    exporting
      default_filename        = lv_filename
      initial_directory       = lv_initial_path
    changing
      file_table              = lt_filetable
      rc                      = lv_rc
    exceptions
      file_open_dialog_failed = 1
      cntl_error              = 2
      error_no_gui            = 3
      not_supported_by_gui    = 4.

  if sy-subrc ne 0 or lv_rc lt 0.
    message '上传文件选择失败' TYPE 'I'."上传文件选择失败
  else.
    if lv_rc = 1.
      read table lt_filetable into ls_filetable index 1.
      po_path = ls_filetable-filename.
    else.
      exit.
    endif.
  endif.
endform.




FORM _frm_charact_values USING iv_charact_value TYPE char70
                               iv_charact_cfgid TYPE cux_cfg_id
                               iv_charact_insid TYPE cu_inst_id
                               iv_prodcut TYPE cuib_objkey
                               iv_zdp_00001 TYPE zz_config_key
                      CHANGING is_cfgval TYPE bapicuval.
  CLEAR is_cfgval.
  DATA iv_data TYPE char32.
  CALL METHOD zcl_ca_tools=>get_hc_single
    EXPORTING
      iv_config_key = iv_zdp_00001
    IMPORTING
      ev_single     = iv_data
    EXCEPTIONS
      dynamic_error = 1
      OTHERS        = 2.
  IF sy-subrc <> 0.
    " .......
  ENDIF.
  is_cfgval-config_id = iv_charact_cfgid.
  is_cfgval-inst_id = iv_charact_insid.
  is_cfgval-value = iv_charact_value.
  CONCATENATE iv_prodcut '_' iv_data INTO is_cfgval-charc.

ENDFORM.




FORM frm_confirm USING pa_text TYPE char132k
                CHANGING pa_sucess TYPE char01.

  DATA:lv_answer TYPE c.

  pa_sucess = space.

  CALL FUNCTION 'POPUP_TO_CONFIRM'
    EXPORTING
      text_question         = pa_text
      text_button_1         = TEXT-t02 "'是'
      icon_button_1         = '@0V@'
      text_button_2         = TEXT-t03 "'否'
      icon_button_2         = '@0W@'
      default_button        = '1'
      display_cancel_button = 'X'
      start_column          = 25
      start_row             = 6
    IMPORTING
      answer                = lv_answer
    EXCEPTIONS
      text_not_found        = 1
      OTHERS                = 2.

  IF sy-subrc <> 0 OR lv_answer <> '1'.
    pa_sucess = 'X'.
  ELSE.
    pa_sucess = space.
  ENDIF.

  CLEAR lv_answer.

ENDFORM . "FRM_CONFIRM

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘欣的博客

你将成为第一个打赏博主的人!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值