设为首页 收藏本站
查看: 1258|回复: 0

[经验分享] SAP & Excel

[复制链接]

尚未签到

发表于 2015-9-18 00:38:18 | 显示全部楼层 |阅读模式
  form  XLS into intenal  table:

Function: ALSM_EXCEL_TO_INTERNAL_TABLE

form  internal table  into intenal  XLS: 往xls模板中填写数据

        有时我们打印表单的时候,也可以通过excel模板来实现,把数据从程序内表中下载到模板,模板中对应字段或者行通过名字和程序对应起来。我们可以通过如下程序实现:
INCLUDE ole2incl.
DATA: excelobj TYPE ole2_object,       " Excel object
      wbookobj TYPE ole2_object,       " Workbook object
      wsheetobj TYPE ole2_object,      " Worksheet object
      rangeobj TYPE ole2_object,       " Range object
      cellobj TYPE ole2_object.        " Cell object
DEFINE create_excel.
  create object excelobj 'Excel.Application'.  " Create excel object
  if sy-subrc ne 0.
    write: / 'Excel init failed, return code is ', sy-subrc.
    exit.
  else.
    set property of excelobj 'Visible' = 1.   " Set excel visible
    call method of excelobj              " Create wbook object
    'Workbooks' = wbookobj.
    call method of wbookobj 'Open' = wbookobj
         exporting #1 = &1.                                 "srcfile1
    call method of wbookobj              " Create wsheet object
         'Worksheets' = wsheetobj exporting #1 = 'sheet1'.
    call method of wsheetobj 'Activate'.
  endif.
END-OF-DEFINITION.
  PARAMETER: scrfile0(40) TYPE c DEFAULT 'c:\合同清单(继保软件).xls',     "模板
    savefil0(40) TYPE c DEFAULT 'c:\sapworkdir\合同清单(继保软件).xls'. "输出值
  。。。。
。。。。
。。。。
    create_excel scrfile0.                         "输出到Excel
    PERFORM fill_range USING 'bstkd' head_bstkd.  "输出表头
    PERFORM fill_range USING 'vbeln' head_vbeln.
    PERFORM fill_range USING 'netwr' head_tprice.
    PERFORM fill_range USING 'name' head_name1.
      LOOP AT orderlist.                             "输出行项目
      CHECK orderlist-shprice NE 0.                "产品单价为零
      CHECK orderlist-tprice NE 0.
      PERFORM fill_range USING 'matnr' orderlist-matnr.
      PERFORM fill_range USING 'maktx' orderlist-maktx.
      PERFORM fill_range USING 'maktx1' orderlist-maktx1.
      PERFORM fill_range USING 'kwmeng' orderlist-kwmeng.
      PERFORM fill_range USING 'sprice' orderlist-shprice.
      PERFORM fill_range USING 'tprice' orderlist-tprice.
      PERFORM insert_row USING 'rowno'.
    ENDLOOP.
    PERFORM fill_save USING savefil0.
  
  
*-----------------------------------------------------------------
*       FORM fill_range
*-----------------------------------------------------------------
FORM fill_range USING value(f_range)
                      value(f_value).
  CALL METHOD OF wsheetobj 'Range' = rangeobj
     EXPORTING #1 = f_range.
  SET PROPERTY OF rangeobj 'Value' = f_value.
ENDFORM.
*-----------------------------------------------------------------
*       FORM fill_rowno
*-----------------------------------------------------------------
FORM fill_rowno.
  CALL METHOD OF excelobj 'run'
         EXPORTING #1 = 'ROWNO'.
ENDFORM.
*-----------------------------------------------------------------
*       FORM fill_save
*-----------------------------------------------------------------
FORM fill_save USING value(f_save).
  CALL METHOD OF wbookobj 'SaveAs' = wbookobj
    EXPORTING #1 = f_save.
ENDFORM.
*-----------------------------------------------------------------
*       FORM insert_row
*-----------------------------------------------------------------
FORM insert_row USING value(f_range).
  CALL METHOD OF wsheetobj 'range' = rangeobj
       EXPORTING #1 = f_range.
  CALL METHOD OF rangeobj 'copy'.
  CALL METHOD OF rangeobj 'select'.
  CALL METHOD OF rangeobj 'insert'.
  CALL METHOD OF rangeobj 'clearcontents'.
ENDFORM.

下载到Excel中有字段描述:

我们在做数据导出的时候经常用临时表把数据暂时存一下再输出,比如:
.......
at user-command.
  case sy-ucomm.
   when 'DOWN_ALL'.
    perform all_data_excel_download.
   when 'DOWN_DETA'.
    perform detail_data_excel_download.
endcase.
......
form detail_data_excel_download.
data filename like rlgrap-filename.
refresh  i_down_detail.       clear i_down_detail.
  move : 'P/O'          to i_down_detail-ebeln,
         'Item'            to i_down_detail-ebelp,
         'Mat_code'        to i_down_detail-matnr,
         'Group'           to i_down_detail-matkl,
         'Type'            to i_down_detail-mtart,
         'Netwr'           to i_down_detail-netwr,
         'Vendor'          to i_down_detail-lifnr,
         'Land'            to i_down_detail-land1,
         'Wkurs'           to i_down_detail-wkurs,
         'Amount'          to i_down_detail-amt.
  append i_down_detail.       clear i_down_detail.
   loop at iekpo.
    move-corresponding iekpo to i_down_detail.
    append i_down_detail.   clear i_down_detail.
endloop.

   call function 'WS_FILENAME_GET'
      exporting
        def_filename     = ''
        def_path         = 'C:\'
        mask             = '*.XLS,*.XLS,*.XLS,*.TXT,*.TXT,*.*,*.*.'
        mode             = 'S'
      importing
           filename         = filename
      exceptions
           inv_winsys       = 1
           no_batch         = 2
           selection_cancel = 3
           selection_error  = 4
           others           = 5.

   call function 'WS_DOWNLOAD'
      exporting
           filename                = filename
           filetype                = 'DAT'
      tables
           data_tab                = i_down_detail
      exceptions
           file_open_error         = 1
           file_write_error        = 2
           invalid_filesize        = 3
           invalid_type            = 4
           no_batch                = 5
           unknown_error           = 6
           invalid_table_width     = 7
           gui_refuse_filetransfer = 8
           customer_error          = 9.
endform.                    " detail_data_excel_download


直接下载内表到文件:


     call function 'DOWNLOAD'
         exporting
              filename = 'C:\装置销售业绩清单.xls'
              filetype = 'WK1'
         tables
              data_tab = tablename.   


call function 'WS_EXCEL'
     exporting
          filename = 'C:\11.xls'
          synchron = space
     tables
          data     = it_ekpo.    "单元格中最好要没有空格,否则可能串位

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-115061-1-1.html 上篇帖子: SAP中MTO & MTS的区别分析 下篇帖子: 如何从SAP中查找BADI
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表