`
Jack Wu
  • 浏览: 887471 次
  • 来自: ...
社区版块
存档分类
最新评论

ABAP--通过OLE操作OFFICE(代码)

阅读更多

本代码是通过OLE技术操作EXCEL,将SAP的数据填写到本地EXCEL中,Office运行在SAP的GUI界面外,注意红色代码。
REPORT ZRSDEMO01 NO STANDARD PAGE HEADING.
* this report demonstrates how to send some ABAP data to an
* EXCEL sheet using OLE automation.
*必须包含
INCLUDE OLE2INCL.
* handles for OLE objects
*申明相关的OFFICE的OLE对象
DATA: H_EXCEL TYPE OLE2_OBJECT,        " Excel object
      H_MAPL TYPE OLE2_OBJECT,         " list of workbooks
      H_MAP TYPE OLE2_OBJECT,          " workbook
      H_ZL TYPE OLE2_OBJECT,           " cell
      H_F TYPE OLE2_OBJECT.            " font
TABLES: SPFLI.
DATA  H TYPE I.
* table of flights
DATA: IT_SPFLI LIKE SPFLI OCCURS 10 WITH HEADER LINE.

*&---------------------------------------------------------------------*
*&   Event START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.
* read flights
  SELECT * FROM SPFLI INTO TABLE IT_SPFLI UP TO 10 ROWS.
* tell user what is going on
  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
     EXPORTING
*           PERCENTAGE = 0
           TEXT       = TEXT-007
       EXCEPTIONS
            OTHERS     = 1.
* start Excel(创建对象)
  CREATE OBJECT H_EXCEL 'EXCEL.APPLICATION'.
  PERFORM ERR_HDL.
*设置office对象是否显示
  SET PROPERTY OF H_EXCEL  'Visible' = 1.
  PERFORM ERR_HDL.
* tell user what is going on
  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
     EXPORTING
*           PERCENTAGE = 0
           TEXT       = TEXT-008
       EXCEPTIONS
            OTHERS     = 1.
* get list of workbooks, initially empty
  CALL METHOD OF H_EXCEL 'Workbooks' = H_MAPL.
  PERFORM ERR_HDL.
* add a new workbook
  CALL METHOD OF H_MAPL 'Add' = H_MAP.
  PERFORM ERR_HDL.
* tell user what is going on
  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
     EXPORTING
*           PERCENTAGE = 0
           TEXT       = TEXT-009
       EXCEPTIONS
            OTHERS     = 1.
* output column headings to active Excel sheet
  PERFORM FILL_CELL USING 1 1 1 'Flug'(001).
  PERFORM FILL_CELL USING 1 2 1 'Nr'(002).
  PERFORM FILL_CELL USING 1 3 1 'Von'(003).
  PERFORM FILL_CELL USING 1 4 1 'Nach'(004).
  PERFORM FILL_CELL USING 1 5 1 'Zeit'(005).
  LOOP AT IT_SPFLI.
* copy flights to active EXCEL sheet
    H = SY-TABIX + 1.
    PERFORM FILL_CELL USING H 1 0 IT_SPFLI-CARRID.
    PERFORM FILL_CELL USING H 2 0 IT_SPFLI-CONNID.
    PERFORM FILL_CELL USING H 3 0 IT_SPFLI-CITYFROM.
    PERFORM FILL_CELL USING H 4 0 IT_SPFLI-CITYTO.
    PERFORM FILL_CELL USING H 5 0 IT_SPFLI-DEPTIME.
  ENDLOOP.
* disconnect from Excel
*
  CALL METHOD OF    H_EXCEL  'QUIT'.
  FREE OBJECT H_EXCEL.
  PERFORM ERR_HDL.

*---------------------------------------------------------------------*
*       FORM FILL_CELL                                                *
*---------------------------------------------------------------------*
*       sets cell at coordinates i,j to value val boldtype bold       *
*---------------------------------------------------------------------*
FORM FILL_CELL USING I J BOLD VAL.
*get cell
  CALL METHOD OF H_EXCEL 'Cells' = H_ZL EXPORTING #1 = I #2 = J.
  PERFORM ERR_HDL.
*set cell value
  SET PROPERTY OF H_ZL 'Value' = VAL .
  PERFORM ERR_HDL.
*Get cell font
  GET PROPERTY OF H_ZL 'Font' = H_F.
  PERFORM ERR_HDL.
*set cell font 
  SET PROPERTY OF H_F 'Bold' = BOLD .
  PERFORM ERR_HDL.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  ERR_HDL
*&---------------------------------------------------------------------*
*       outputs OLE error if any                                       *
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM ERR_HDL.
IF SY-SUBRC <> 0.
  WRITE: / 'Fehler bei OLE-Automation:'(010), SY-SUBRC.
  STOP.
ENDIF.
ENDFORM.                    " ERR_HDL
相关链接:http://blog.csdn.net/CompassButton/archive/2007/07/26/1709383.aspx
                   http://blog.csdn.net/CompassButton/archive/2007/03/09/1524959.aspx

分享到:
评论

相关推荐

    ABAP-OLE开发[汇编].pdf

    OLE自动化是Windows环境中的一种技术,它使得不同的应用程序可以共享数据和服务,通常用于控制一个应用程序(服务器)的功能,通过另一个应用程序(客户端)进行操作。在SAP世界中,ABAP作为客户端,可以调用和控制...

    ABAP-OLE[借鉴].pdf

    综上所述,ABAP-OLE在SAP环境中提供了一种强大而灵活的方式,使得SAP应用程序能够与Office应用程序如Excel交互,进行数据导入导出和报表生成。这种技术对于数据分析、报告自动化以及与其他系统的集成具有重要作用。

    ABAP-操作Excel导出数据

    为了更好地理解这一过程,你可以参考提供的文档:《用OLE DOI 实现ABAP导出EXCEL表格.docx》和《ABAP-透過OLE操作OFFICE.docx》。同时,《OLE.pdf》可能包含更深入的OLE和DOI技术细节,这对于优化和调试代码会非常有...

    ABAP OLE开发EXCEL

    标题与描述均提及了“ABAP OLE开发EXCEL”,这明确指出了本文将探讨的主题:如何使用ABAP(一种由SAP开发的高级商务应用编程语言)通过OLE(对象链接与嵌入)技术来自动化操作Excel。在企业级应用程序中,尤其是SAP...

    ABAP OLE2 EXCEL

    ABAP OLE2是SAP ABAP编程语言中的一种功能,它允许开发者通过COM接口调用外部应用程序,如Microsoft Office套件中的Excel。这使得SAP系统能够生成、编辑或处理Excel电子表格,而无需用户手动操作。 2. **创建Excel...

    OLE开发(excel)

    通过录制宏,可以快速获取对应操作的VBA代码,并将其转化为ABAP的OLE调用。 需要注意的是,由于安全考虑,某些环境可能会禁用Excel的宏执行,这会影响OLE调用宏的功能。因此,在设计解决方案时,要考虑到这种可能性...

    ABAP导数据到excel.docx

    **示例代码**:可以通过事务代码QWE300中的y_excel_ole程序查看OLE方式的具体实现。 - **优点**:实现简单。 - **缺点**:功能相对有限;依赖于客户端安装的Office版本。 ##### 2. DOI方式 DOI(Document Object ...

    abap编程.doc

    ABAP可以调用外部OLE对象,实现与非SAP应用程序的集成,如Microsoft Office应用。 总之,ABAP作为一种专门针对SAP环境的编程语言,提供了丰富的功能和工具,覆盖了从数据处理、界面设计到系统集成的各个方面,对于...

    OLE & DOI.doc

    OLE的工作原理类似于Excel中的VBA(Visual Basic for Applications)编程语言,用户可以通过录制宏的方式来实现自动化操作,并将这些宏转化为OLE代码。 ##### OLE的特点: - **VBA风格的写法**:类似于VBA的语法...

    SAP OLE开发技术介绍.pdf

    1. OLE接口:通过SAP的OLE接口,ABAP程序可以直接创建和操作Excel对象。这包括创建新的工作簿,填充数据,设置单元格格式,以及应用公式和图表。 2. DOI(Direct Output to Interface):DOI是另一种方式,它允许...

    SAP顾问常备的参考资料(清单)

    - **主要内容**:讲解了如何使用ABAP 4 OLE Automation Controller实现与其他系统的集成。 - **应用场景**:适用于需要与外部应用程序(如Microsoft Office)交互的项目。 #### 七、BC-...

    sap excel基类

    在SAP系统中,操作Excel文件通常涉及到与OLE2对象的交互,这允许程序通过COM接口与Microsoft Office应用程序通信。"sap excel基类"是指一个基础的SAP ABAP类,用于实现对Excel文件的基本操作,如创建、打开、读取和...

Global site tag (gtag.js) - Google Analytics