ABAP OLE

1、业务需求

用户在报表中点击导出按钮,将销售发票有关信息填充至模板中的SHEET1以及SHEET2中

2、代码实现

  DATA: gs_excel       TYPE ole2_object,
        gs_sheet1      TYPE ole2_object,
        gs_sheet2      TYPE ole2_object,
        gs_wbooklist   TYPE ole2_object,
        gs_wbook       TYPE ole2_object,
        gs_cell1       TYPE ole2_object,
        gs_cell2       TYPE ole2_object,
        gs_cells       TYPE ole2_object.

  DATA: lv_paste(8022) TYPE c,
        lt_paste       LIKE TABLE OF lv_paste.

  DATA gv_sheet_name(20) TYPE c .
  DATA gv_intex(2) TYPE c .
  DATA gv_line_cntr TYPE i .
  DATA : lv_row(5) TYPE c .
  DATA: lv_filename TYPE string,
        lv_path     TYPE string,
        lv_fullpath TYPE string,
        lv_path2    TYPE localfile.
  DATA(lv_fild_name) = '批量开票-导入开票模板' && sy-datum && sy-uzeit && '.xlsx' .
* 选择导出路径
  CALL METHOD cl_gui_frontend_services=>file_save_dialog
    EXPORTING
      window_title         = 'SAVE'
      default_file_name    = lv_fild_name
      file_filter          = 'xlsx 文件|*.xlsx|'
    CHANGING
      filename             = lv_filename
      path                 = lv_path
      fullpath             = lv_fullpath
    EXCEPTIONS
      cntl_error           = 1
      error_no_gui         = 2
      not_supported_by_gui = 3
      OTHERS               = 4.

  DATA: ls_wwwdata TYPE wwwdatatab,
        lv_message TYPE string.
  DATA: lv_subrc TYPE sy-subrc.
  lv_path2 = lv_fullpath .
  " 校验文件是否存在
  SELECT SINGLE
    relid
    objid
    FROM wwwdata
    INTO CORRESPONDING FIELDS OF ls_wwwdata
   WHERE srtf2 = 0
     AND relid = 'MI'
     AND objid = 'ZSDB001'.
  IF sy-subrc = 0.
    " 下载
    CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
      EXPORTING
        key         = ls_wwwdata
        destination = lv_path2
      IMPORTING
        rc          = lv_subrc.
  ENDIF.

  CREATE OBJECT gs_excel 'EXCEL.APPLICATION'.             " 创建 XLSX
  SET PROPERTY OF gs_excel 'Visible' = 0 .                 "1前台运行。为0时表示为后台运行。
  GET PROPERTY OF gs_excel 'Workbooks' = gs_wbooklist .
  CALL METHOD  OF gs_wbooklist 'Open'  = gs_wbook
        EXPORTING #1 = lv_fullpath.
*  GET PROPERTY OF gs_excel 'ACTIVESHEET' = gs_activesheet.

  CALL METHOD OF gs_excel 'Worksheets' = gs_cells.
  CALL METHOD OF gs_cells 'Item' = gs_sheet1
  EXPORTING #1 = '1-发票基本信息' .

  CALL METHOD OF gs_excel 'Worksheets' = gs_cells.
  CALL METHOD OF gs_cells 'Item' = gs_sheet2
  EXPORTING #1 = '2-发票明细信息' .
*09.10.2024 17:41:58 :填充数据
  lv_row = '4' .
  LOOP AT gt_alv INTO gs_alv WHERE sel IS NOT INITIAL .
    CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
      EXPORTING
        input          = gs_alv-meins
        language       = sy-langu
      IMPORTING
        output         = gs_alv-meins
      EXCEPTIONS
        unit_not_found = 1
        OTHERS         = 2.

    CALL METHOD OF gs_sheet1 'Cells' = gs_cell1
      EXPORTING
      #1 = lv_row
      #2 = 1.
    SET PROPERTY OF gs_cell1 'Value' = gs_alv-vbeln .   "发票号
    SET PROPERTY OF gs_cell1 'HorizontalAlignment' = -4108 .  "字体默认居中

    CALL METHOD OF gs_sheet1 'Cells' = gs_cell1
      EXPORTING
      #1 = lv_row
      #2 = 6.
    SET PROPERTY OF gs_cell1 'Value' = gs_alv-name .    "客户号
    SET PROPERTY OF gs_cell1 'HorizontalAlignment' = -4108 .  "字体默认居中

    CALL METHOD OF gs_sheet1 'Cells' = gs_cell1
      EXPORTING
      #1 = lv_row
      #2 = 7.
    SET PROPERTY OF gs_cell1 'Value' = gs_alv-taxnum .   "客户税号
    SET PROPERTY OF gs_cell1 'HorizontalAlignment' = -4108 .  "字体默认居中

    CALL METHOD OF gs_sheet2 'Cells' = gs_cell2
      EXPORTING
      #1 = lv_row
      #2 = 1.
    SET PROPERTY OF gs_cell2 'Value' = gs_alv-vbeln .   "发票号
    SET PROPERTY OF gs_cell2 'HorizontalAlignment' = -4108 .  "字体默认居中

    CALL METHOD OF gs_sheet2 'Cells' = gs_cell2
      EXPORTING
      #1 = lv_row
      #2 = 5.
    SET PROPERTY OF gs_cell2 'Value' = gs_alv-meins .   "单位
    SET PROPERTY OF gs_cell2 'HorizontalAlignment' = -4108 .  "字体默认居中

    CALL METHOD OF gs_sheet2 'Cells' = gs_cell2
      EXPORTING
      #1 = lv_row
      #2 = 6.
    SET PROPERTY OF gs_cell2 'Value' = gs_alv-lfimg .   "数量
    SET PROPERTY OF gs_cell2 'HorizontalAlignment' = -4108 .  "字体默认居中

    CALL METHOD OF gs_sheet2 'Cells' = gs_cell2
      EXPORTING
      #1 = lv_row
      #2 = 7.
    SET PROPERTY OF gs_cell2 'Value' = gs_alv-cmpre .   "单价
    SET PROPERTY OF gs_cell2 'HorizontalAlignment' = -4108 .  "字体默认居中

    CALL METHOD OF gs_sheet2 'Cells' = gs_cell2
      EXPORTING
      #1 = lv_row
      #2 = 8.
    SET PROPERTY OF gs_cell2 'Value' = gs_alv-zhszj .   "金额
    SET PROPERTY OF gs_cell2 'HorizontalAlignment' = -4108 .  "字体默认居中

    CALL METHOD OF gs_sheet2 'Cells' = gs_cell2
      EXPORTING
      #1 = lv_row
      #2 = 9.
    SET PROPERTY OF gs_cell2 'Value' = gs_alv-zsm .   "税率
    SET PROPERTY OF gs_cell2 'HorizontalAlignment' = -4108 .  "字体默认居中

    lv_row = lv_row + 1 .
    CLEAR : gs_alv .
  ENDLOOP .
  CLEAR : lv_row .
*-----------
  CALL METHOD OF gs_wbook 'SAVE'. "保存

  CALL METHOD OF gs_wbook 'CLOSE'."关闭

  CALL METHOD OF gs_excel 'QUIT'. "退出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

消气伟消消气

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值