excle打印

打印前需要先下载EXCLE模板

FORM frm_download .

  CALL METHOD cl_gui_frontend_services=>file_exist
    EXPORTING
      file                 = l_file
    RECEIVING
      result               = l_result
    EXCEPTIONS
      cntl_error           = 1
      error_no_gui         = 2
      wrong_parameter      = 3
      not_supported_by_gui = 4
      OTHERS               = 5.
  "  IF l_result = 'X'.
  "    MESSAGE '模板ZMM_ZD_0015模具维修出库单.XLS已存在!' TYPE 'S'.
  "    STOP.
  "  ELSE.
  wwwdata_new-relid = 'MI'.
  wwwdata_new-objid = 'ZMM_ZD_0015'.              "SMW0定义的对象名称 Z5009201
  CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
    EXPORTING
      key         = wwwdata_new
      destination = 'C:\SAPDOWNLOAD\ZMM_ZD_0015模具维修出库单.XLS'.
  IF sy-subrc NE 0.
    MESSAGE '下载模板失败!' TYPE 'E'.
  ELSE.
    MESSAGE '成功下载模板,请重新调整以适应本机!默认下载目录:C:\SAPDOWNLOAD\ZMM_ZD_0015模具维修出库单.XLS。' TYPE 'S'.
  ENDIF.
  "  ENDIF.

打印

FORM frm_print .

*填充数据*
  CREATE OBJECT excel 'EXCEL.APPLICATION'.
  SET PROPERTY OF excel 'VISIBLE' = 1.
  CALL METHOD OF excel 'WORKBOOKS' = workbooks.
  CALL METHOD OF workbooks 'OPEN' EXPORTING #1 = 'C:\SAPDOWNLOAD\ZMM_ZD_0015模具维修出库单.XLS'.
  SET PROPERTY OF excel 'SCREENUPDATING' = 'TRUE'.

*------BEGIN头部填充
  CLEAR:gs_data.

  LOOP AT gt_data INTO gs_data.
    PERFORM cell_fill USING 3 3   gs_data-aedat.  "发料日期
    PERFORM cell_fill USING 3 15  gs_data-ebeln.  "维修订单
    PERFORM cell_fill USING 4 9  gs_data-zname1. "维修商
    PERFORM cell_fill USING 11 3  gs_data-ernam. "维修开单人
    CLEAR:gs_data.
    EXIT.
  ENDLOOP.
*------END头部填充
  CLEAR:g_lines,g_lines_c,page_count,page_count_s.

  g_lines = lines( gt_data ).
  g_lines_c = g_lines / page_of_line.
  page_count = ceil( g_lines_c ) .
  page_count_s = page_count.

  CONCATENATE '共' page_count_s '页' INTO page_all SEPARATED BY space. "

*------------END页码处理
  SORT gt_data BY ebelp ASCENDING.

  CLEAR:gs_data.
  LOOP AT gt_data INTO gs_data.
    CALL METHOD OF excel 'WORKSHEETS' = sheet
    EXPORTING #1 = 1 .
    CALL METHOD OF sheet 'ACTIVATE '.

    CLEAR page_s.
    page_s = page.
    CONCATENATE '第' page_s '页' INTO page_s SEPARATED BY space.
    page_now = ''.
    CONCATENATE  page_s page_all INTO page_now SEPARATED BY space.

*&-----------------填充数据----------------------*
    PERFORM cell_fill USING l_row 1    gs_data-ebelp.         "行项目
    PERFORM cell_fill USING l_row 2    gs_data-ean11.         "模具资产编码
    PERFORM cell_fill USING l_row 4    gs_data-txz01.         "模具名称
    PERFORM cell_fill USING l_row 12   gs_data-mseht.         "计量单位
    PERFORM cell_fill USING l_row 13   gs_data-menge.         "发料数(重)量
    "    PERFORM cell_fill USING 12  18     page_now.         "页码(暂时不考虑打印页数)
    "    hxm1 = hxm1 + 1.
    "    hxm2 = hxm2 + 1.

    IF l_count = page_of_line AND hxm2 NE g_lines.
      GET PROPERTY OF excel 'ACTIVEWORKBOOK' = workbook.
      CALL METHOD OF workbook 'SAVE'.
      IF p_ck = 'X'.
        CALL METHOD OF workbook 'PRINTPREVIEW'.
      ELSE.
        CALL METHOD OF workbook 'PRINTOUT'.
      ENDIF.
      PERFORM free_cell. "清空数据区域
      l_count = 0.
      l_row = 5.  "下一页开始的行数
      page = page + 1.
    ENDIF.

    l_row = l_row + 1.
    l_count = l_count + 1.
    CLEAR:gs_data.
  ENDLOOP.

  GET PROPERTY OF excel 'ACTIVEWORKBOOK' = workbook.
  CALL METHOD OF workbook 'SAVE'.
  IF p_ck = 'X'.
    CALL METHOD OF workbook 'PRINTPREVIEW'.
  ELSE.
    CALL METHOD OF workbook 'PRINTOUT'.
  ENDIF.

  PERFORM free_cell.
  PERFORM free_top.
  CALL METHOD OF workbook 'SAVE'.
  CALL METHOD OF excel 'QUIT'.                      "退出
*&---------------------------------------------------------------------*
*&      FORM  FREE_TOP
*&---------------------------------------------------------------------*
*       清空头部数据
*----------------------------------------------------------------------*
FORM free_top.

  PERFORM cell_fill USING 3 3  ''.  "发料日期
  PERFORM cell_fill USING 3 15 ''.  "维修订单
  PERFORM cell_fill USING 4 9  ''. "维修商
  PERFORM cell_fill USING 11 3 ''. "维修开单人

ENDFORM.                    "FREE_TOP
*&---------------------------------------------------------------------*
*&      FORM  FREE_CELL
*&---------------------------------------------------------------------*
*       清空数据区域
*----------------------------------------------------------------------*
FORM free_cell.
  DATA l_row_o TYPE i.
  l_row_o = 6.
  PERFORM cell_fill USING 12  18      ''.         "页码
  DO page_of_line TIMES.
    PERFORM cell_fill USING l_row_o 1    ''.         "行项目
    PERFORM cell_fill USING l_row_o 2    ''.         "模具资产编码
    PERFORM cell_fill USING l_row_o 4    ''.         "模具名称
    PERFORM cell_fill USING l_row_o 12    ''.         "计量单位
    PERFORM cell_fill USING l_row_o 13   ''.         "发料数(重)量
    l_row_o = l_row_o + 1 .
  ENDDO.
ENDFORM.                    "FREE_CELL
FORM cell_fill  USING    l_rowi
      l_coli
      l_ivalue.
  CALL METHOD OF excel 'CELLS' = cell
  EXPORTING
    #1 = l_rowi
    #2 = l_coli.
  SET PROPERTY OF cell 'VALUE' =   l_ivalue.
ENDFORM.                    "CELL_FILL
*&---------------------------------------------------------------------*
*&      FORM  CELL_READ
*&---------------------------------------------------------------------*
*       TEXT
*----------------------------------------------------------------------*
*      -->L_ROWI     TEXT
*      -->L_COLI     TEXT
*      -->L_IVALUE   TEXT
*----------------------------------------------------------------------*
FORM cell_read  USING    l_rowi
      l_coli
      l_ivalue.
  CALL METHOD OF excel 'CELLS' = cell
  EXPORTING
    #1 = l_rowi
    #2 = l_coli.
  GET PROPERTY OF cell 'VALUE' =   l_ivalue.
ENDFORM.                    "CELL_READ
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值