ABAP写入数据到Excel中

前言

业务需求,需要将SAP的一些数据(如交货单数据)进行打印,在SAP中,除了使用SMARTFORMS进行模版设计打印外,也可以使用Excel数据填充技术进行打印。下面以打印交货单数据进行演示。
LOGO为固定位置,公章为动态位置,跟随数据行的多少决定其位置。

第一步:使用Excel制作模版

根据需求使用Excel制作模版的共用部分,包括抬头(head)信息和行项目(items)信息。
在这里插入图片描述

第二步:上传Excel模板到SAP数据库中

进入t-code:SMW0;
在这里插入图片描述
输入开发者的包名,点执行
在这里插入图片描述
点击创建,上传制作好的模版(公章同理)
在这里插入图片描述

第三步 下载模版

设置默认文件下载路径

“全局变量
DATA: gv_excel    TYPE ole2_object,        " Excel object
      gv_mapl     TYPE ole2_object,        " list of workbooks
      gv_sheet    TYPE ole2_object,        " sheet
      gv_cell     TYPE ole2_object,        " cell
      gv_font     TYPE ole2_object,        " font
      gv_range    TYPE ole2_object,        " gange
      gv_borders  TYPE ole2_object,        "BORDERS
      gv_pictures TYPE ole2_object. "PICTURE 
 DATA:gv_xgqz_path TYPE rlgrap-filename. "公章路径
FORM frm_dowm_tempi.

  DATA: lv_filename TYPE string,
        lv_fullpath TYPE string,
        lv_path     TYPE string,
        ls_wwwdata  TYPE wwwdatatab,
        lv_msg      TYPE string,
        lv_subrc    TYPE sy-subrc,
        c_objid_in_xg    TYPE wwwdatatab-objid VALUE 'Excel_name'."Excel名称

  DATA:ls_wwwdata_xgqz  TYPE wwwdatatab.                    "公章

  lv_filename = 'INVOICE.XLSX'  .  " 默认给一个名字
  CALL METHOD cl_gui_frontend_services=>file_save_dialog
    EXPORTING
      window_title              = '模板下载'
      default_extension         = 'XLS'
      default_file_name         = lv_filename
    CHANGING
      filename                  = lv_filename
      path                      = lv_path
      fullpath                  = lv_fullpath
    EXCEPTIONS
      cntl_error                = 1
      error_no_gui              = 2
      not_supported_by_gui      = 3
      invalid_default_file_name = 4
      OTHERS                    = 5.
  IF sy-subrc <> 0.
    MESSAGE TEXT-006 TYPE c_msgty_s DISPLAY LIKE c_msgty_e.“文件保存出错
    LEAVE LIST-PROCESSING.
  ELSE.
    gv_excelnamei = lv_fullpath.

        SELECT SINGLE *
          INTO CORRESPONDING FIELDS OF ls_wwwdata
          FROM wwwdata
          WHERE srtf2 = 0
          AND relid = c_relid
          AND objid = c_objid_in_xg.

        "获取公章
        SELECT SINGLE *
          INTO CORRESPONDING FIELDS OF ls_wwwdata_xgqz
          FROM wwwdata
          WHERE srtf2 = 0
          AND relid = c_relid
          AND objid = 'GZ'.“公章保存时的名称
          
    IF sy-subrc NE 0.
      lv_msg = TEXT-007.
      MESSAGE lv_msg TYPE c_msgty_s DISPLAY LIKE c_msgty_e."模版不存在
      LEAVE LIST-PROCESSING.
    ELSE.

      CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
        EXPORTING
          key         = ls_wwwdata
          destination = gv_excelnamei
        IMPORTING
          rc          = lv_subrc.
      IF lv_subrc NE 0.
        lv_msg = TEXT-008.
        MESSAGE lv_msg TYPE c_msgty_s DISPLAY LIKE c_msgty_e.
        LEAVE LIST-PROCESSING.
      ENDIF.
      IF gv_xh = 'X'.                                       "下载公章到指定的文件路径中

        gv_xgqz_path = gv_excelnamei.
        SPLIT gv_xgqz_path AT '.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值