hemir_abap

学习ABAP的小小博客

My Links

Blog Stats

Cached @ 2025/4/28 14:54:44Control ASP.skins_mtclean_controls_blogstats_ascx

留言簿(1)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜

Cached @ 2025/4/28 14:54:44Control ASP.skins_mtclean_controls_singlecolumn_ascx

SAP:ABAP: 使用OLE2对象(操作EXCEL:把内表中的数据在EXCEL中显示出来)

*&---------------------------------------------------------------------*
*& Report  ZTEST_OLE_EXCEL
*&
*&---------------------------------------------------------------------*
*&  测试OLE EXCEL
*&---------------------------------------------------------------------*
REPORT  ZTEST_OLE_EXCEL
  MESSAGE-ID ZTEST.

*&---------------------------------------------------------------------*
*& TYPE-POOLS
*&---------------------------------------------------------------------*
TYPE-POOLS:
  OLE2.      "或者:INCLUDE OLE2INCL

*&---------------------------------------------------------------------*
*& 定义数据
*&---------------------------------------------------------------------*
DATA:
  TD_BKPF TYPE TABLE OF BKPF,
  TH_BKPF TYPE BKPF.

DATA:
  W_TMP_FILE(65) TYPE C.

* OLE2对象
DATA:
  W_EXCEL TYPE OLE2_OBJECT,  "EXCEL
  W_BOOKS TYPE OLE2_OBJECT,  "LIST OF WORKBOOKS
  W_BOOK  TYPE OLE2_OBJECT,  "WORKBOOK
  W_SHEET TYPE OLE2_OBJECT,  "SHEET
  W_CELL  TYPE OLE2_OBJECT.  "CELL OF SHEET

CONSTANTS:

* 前面一定要添加'MI'
  CNS_DOWN_KEY TYPE WWWDATATAB VALUE 'MIZTSTOLE_EXCEL',
  CNS_DOWN_PATH TYPE LOCALFILE VALUE 'C:\ZTST_TMP.XLT',  "下载地址
* 部分字符串
  CNS_VISIBLE TYPE CHAR32 VALUE 'VISIBLE',
  CNS_WORKBOOKS TYPE CHAR32 VALUE 'WORKBOOKS',
  CNS_OPEN TYPE CHAR32 VALUE 'OPEN',
  CNS_WORKSHEETS TYPE CHAR32 VALUE 'WORKSHEETS',
  CNS_ACTIVATE TYPE CHAR32 VALUE 'ACTIVATE',
  CNS_RANGE TYPE CHAR32 VALUE 'RANGE',
  CNS_VALUE TYPE CHAR32 VALUE 'VALUE'.

*&---------------------------------------------------------------------*
*& 选择屏幕
*&---------------------------------------------------------------------*
PARAMETERS:
  P_BUKRS TYPE BKPF-BUKRS OBLIGATORY,  "公司代码
  P_GJAHR TYPE BKPF-GJAHR OBLIGATORY.   "会计年度

*&---------------------------------------------------------------------*
*&  START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.

* 取得数据
  PERFORM FRM_GET_BKPF_DATA.

*-从SAP服务器上下载模板(要先通过SMWO上传)
  PERFORM FRM_DOWN_TEMPLATE.

*-向EXCEL中填入数据,并显示出来
  PERFORM FRM_EXPORT_DATA.

*&---------------------------------------------------------------------*
*&      Form  FRM_GET_BKPF_DATA
*&---------------------------------------------------------------------*
*       取得数据
*----------------------------------------------------------------------*
FORM FRM_GET_BKPF_DATA .

  SELECT *
    FROM BKPF
    INTO TABLE TD_BKPF
   WHERE BUKRS = P_BUKRS
     AND GJAHR = P_GJAHR.

  IF SY-SUBRC <> 0.
*    MESSAGE S001 DISPLAY LIKE 'E'.
    LEAVE LIST-PROCESSING.
  ENDIF.

ENDFORM.                    " FRM_GET_BKPF_DATA

*&---------------------------------------------------------------------*
*&      Form  FRM_DOWN_TEMPLATE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM FRM_DOWN_TEMPLATE .
  DATA:
    LW_SUBRC TYPE SY-SUBRC.

* 显示进度
  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
    EXPORTING
      PERCENTAGE       = 0
      TEXT             = 'Download the template!'.
* 下载sap服务器上的RFC模板(html)
  CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
    EXPORTING
      KEY               = CNS_DOWN_KEY
      DESTINATION       = CNS_DOWN_PATH
    IMPORTING
      RC                = LW_SUBRC
    CHANGING
      TEMP              = W_TMP_FILE.

  IF LW_SUBRC <> 0.
*    MESSAGE 'DOWNLOAD TEMPLATE FALL!' TYPE 'S' DISPLAY LIKE 'E'.
    LEAVE LIST-PROCESSING.
  ENDIF.

ENDFORM.                    " FRM_DOWN_TEMPLATE

*&---------------------------------------------------------------------*
*&      Form  FRM_EXPORT_DATA
*&---------------------------------------------------------------------*
*       向EXCEL中填入数据,并显示出来
*----------------------------------------------------------------------*
FORM FRM_EXPORT_DATA .
  DATA:
    LW_H TYPE CHAR2,
    LW_S TYPE CHAR2.

* 创建EXCEL
  CREATE OBJECT W_EXCEL 'EXCEL.APPLICATION'.
  SET PROPERTY OF W_EXCEL CNS_VISIBLE = 0.
* 设置可见
*  SET PROPERTY OF W_EXCEL CNS_VISIBLE = 1 NO FLUSH.
* 创建EXCEL的WORKSBOOKS
  CALL METHOD OF W_EXCEL CNS_WORKBOOKS = W_BOOKS.
* 创建BOOK FOR WORKSBOOKS
  CALL METHOD OF W_BOOKS CNS_OPEN = W_BOOK
    EXPORTING
      #1 = CNS_DOWN_PATH.

  CALL METHOD OF W_BOOK CNS_WORKSHEETS = W_SHEET
    EXPORTING
      #1 = 'Sheet1'.

  CALL METHOD OF W_SHEET CNS_ACTIVATE.

* 输出到EXCEL
  LW_S = '4'.
  LOOP AT TD_BKPF INTO TH_BKPF.

    LW_H = 'A'.
    PERFORM FRM_FILL_CELL USING LW_H LW_S TH_BKPF-BUKRS.

    LW_H = 'B'.
    PERFORM FRM_FILL_CELL USING LW_H LW_S TH_BKPF-BELNR.

    LW_H = 'C'.
    PERFORM FRM_FILL_CELL USING LW_H LW_S TH_BKPF-GJAHR.

    LW_H = 'D'.
    PERFORM FRM_FILL_CELL USING LW_H LW_S TH_BKPF-BLART.

    LW_H = 'E'.
    PERFORM FRM_FILL_CELL USING LW_H LW_S TH_BKPF-BLDAT.

    LW_H = 'F'.
    PERFORM FRM_FILL_CELL USING LW_H LW_S TH_BKPF-BUDAT.

    LW_H = 'G'.
    PERFORM FRM_FILL_CELL USING LW_H LW_S TH_BKPF-MONAT.

    LW_H = 'H'.
    PERFORM FRM_FILL_CELL USING LW_H LW_S TH_BKPF-CPUDT.

    LW_H = 'I'.
    PERFORM FRM_FILL_CELL USING LW_H LW_S TH_BKPF-XBLNR.

    LW_H = 'J'.
    PERFORM FRM_FILL_CELL USING LW_H LW_S TH_BKPF-BKTXT.

    LW_S = LW_S + 1.

  ENDLOOP.

* 设置可见
  SET PROPERTY OF W_EXCEL CNS_VISIBLE = 1 NO FLUSH.

  FREE OBJECT:
    W_EXCEL,
    W_BOOKS,
    W_BOOK,
    W_SHEET,
    W_CELL.

ENDFORM.                    " FRM_EXPORT_DATA

*&---------------------------------------------------------------------*
*&      Form  FRM_FILL_CELL
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->i_H  text
*      -->i_S  text
*      -->i_value  text
*----------------------------------------------------------------------*
FORM FRM_FILL_CELL  USING  VALUE(I_H)
                           VALUE(I_S)
                           VALUE(I_VALUE).
  DATA:
    LW_CELL TYPE CHAR4.

* 填充单元格(定位)
  CONCATENATE I_H I_S INTO LW_CELL.
  CALL METHOD OF W_SHEET CNS_RANGE = W_CELL
    EXPORTING
      #1 = LW_CELL.
* 插入值
  SET PROPERTY OF W_CELL CNS_VALUE = I_VALUE.

ENDFORM.                    " FRM_FILL_CELL

posted on 2009-03-26 14:03 hemir 阅读(1058) 评论(0)  编辑 收藏

Feedback

标题
姓名
主页
内容 
  登录  使用高级评论  Top 订阅回复  取消订阅
[使用Ctrl+Enter键可以直接提交]