Google Search - Blog...........

ABAP - Calling Word Documents From ABAP Using OLE Automation.

REPORT YTEST_ABINASH .
*--Include for OLE-enabling definitions
INCLUDE OLE2INCL .

*--Global variables

*--Variables to hold OLE object and entity handles
DATA GS_WORD TYPE OLE2_OBJECT . "OLE object handle
DATA GS_DOCUMENTS TYPE OLE2_OBJECT . "Documents
DATA GS_ACTDOC TYPE OLE2_OBJECT . "Active document
DATA GS_APPLICATION TYPE OLE2_OBJECT . "Application
DATA GS_OPTIONS TYPE OLE2_OBJECT . "Application options
DATA GS_ACTWIN TYPE OLE2_OBJECT . "Active window
DATA GS_ACTPAN TYPE OLE2_OBJECT . "Active pane
DATA GS_VIEW TYPE OLE2_OBJECT . "View
DATA GS_SELECTION TYPE OLE2_OBJECT . "Selection
DATA GS_FONT TYPE OLE2_OBJECT . "Font
DATA GS_PARFORMAT TYPE OLE2_OBJECT . "Paragraph format
DATA GS_TABLES TYPE OLE2_OBJECT . "Tables
DATA GS_RANGE TYPE OLE2_OBJECT . "Range handle for various ranges
DATA GS_TABLE TYPE OLE2_OBJECT . "One table
DATA GS_TABLE_BORDER TYPE OLE2_OBJECT . "Table border
DATA GS_CELL TYPE OLE2_OBJECT . "One cell of a table
DATA GS_PARAGRAPH TYPE OLE2_OBJECT . "Paragraph
DATA GV_POS(5) TYPE N . "Position information for table

CREATE OBJECT GS_WORD 'WORD.APPLICATION' .

IF SY-SUBRC NE 0.
MESSAGE S000(SU) WITH 'Error while creating OLE object!'.
LEAVE PROGRAM .
ENDIF .

*--Setting object's visibility property
SET PROPERTY OF GS_WORD 'Visible' = '1' .

*--Opening a new document
GET PROPERTY OF GS_WORD 'Documents' = GS_DOCUMENTS .
CALL METHOD OF GS_DOCUMENTS 'Add' .

*--Getting active document handle
GET PROPERTY OF GS_WORD 'ActiveDocument' = GS_ACTDOC .

*--Getting applications handle
GET PROPERTY OF GS_ACTDOC 'Application' = GS_APPLICATION .

*--Setting the measurement unit
GET PROPERTY OF GS_APPLICATION 'Options' = GS_OPTIONS .
SET PROPERTY OF GS_OPTIONS 'MeasurementUnit' = '1' . "CM

*--Getting handle for the selection which is here the character at the

*--cursor position
GET PROPERTY OF GS_APPLICATION 'Selection' = GS_SELECTION .
GET PROPERTY OF GS_SELECTION 'Font' = GS_FONT .
GET PROPERTY OF GS_SELECTION 'ParagraphFormat' = GS_PARFORMAT .

*--Setting font attributes
SET PROPERTY OF GS_FONT 'Name' = 'Arial' .
SET PROPERTY OF GS_FONT 'Size' = '10' .
SET PROPERTY OF GS_FONT 'Bold' = '0' . "Not bold
SET PROPERTY OF GS_FONT 'Italic' = '1' . "Italic
SET PROPERTY OF GS_FONT 'Underline' = '0' . "Not underlined

*--Setting paragraph format attribute
SET PROPERTY OF GS_PARFORMAT 'Alignment' = '2' . "Right-justified
CALL METHOD OF GS_SELECTION 'TypeText'
EXPORTING
#1 = 'This is an OLE example!'.

*--Setting the view to the main document again
SET PROPERTY OF GS_VIEW 'SeekView' = '0' . "Main document view

*--Reseting font attributes for the title
SET PROPERTY OF GS_FONT 'Name' = 'Times New Roman' .
SET PROPERTY OF GS_FONT 'Size' = '16' .
SET PROPERTY OF GS_FONT 'Bold' = '1' . "Bold
SET PROPERTY OF GS_FONT 'Italic' = '0' . "Not Italic
SET PROPERTY OF GS_FONT 'Underline' = '0' . "Not underlined

*--Setting paragraph format attribute
SET PROPERTY OF GS_PARFORMAT 'Alignment' = '1' . "Centered
CALL METHOD OF GS_SELECTION 'TypeText'
EXPORTING
#1 = TEXT-000.

*--Advancing cursor to the new line
CALL METHOD OF GS_SELECTION 'TypeParagraph' .

*--Getting entity handles for the entities on the way
GET PROPERTY OF GS_ACTDOC 'Tables' = GS_TABLES .
GET PROPERTY OF GS_SELECTION 'Range' = GS_RANGE .

*--Adding a table with 3 rows and 2 columns
CALL METHOD OF GS_TABLES 'Add' = GS_TABLE
EXPORTING
#1 = GS_RANGE " Handle for range entity
#2 = '3' "Number of rows
#3 = '2'. "Number of columns

*--Setting border attribute for the table
GET PROPERTY OF GS_TABLE 'Borders' = GS_TABLE_BORDER .
SET PROPERTY OF GS_TABLE_BORDER 'Enable' = '1' . "With border

*--Filling the table with dummy data
*--Reseting font attributes for table content
SET PROPERTY OF GS_FONT 'Name' = 'Garamond' .
SET PROPERTY OF GS_FONT 'Size' = '11' .
SET PROPERTY OF GS_FONT 'Bold' = '0' . "Not bold
SET PROPERTY OF GS_FONT 'Italic' = '0' . "Not Italic
SET PROPERTY OF GS_FONT 'Underline' = '0' . "Not underlined

*--Getting cell coordinates
CALL METHOD OF GS_TABLE 'Cell'
EXPORTING
#1 = '1' "first row
#2 = '1'. "first column

*--Getting the range handle to write the text
GET PROPERTY OF GS_CELL 'Range' = GS_RANGE .

*--Filling the cell
SET PROPERTY OF GS_RANGE 'Text' = 'abinash' .

*--Getting cell coordinates
CALL METHOD OF GS_TABLE 'Cell' = GS_CELL
EXPORTING
#1 = '3' "third row
#2 = '2'. "second column

*--Getting the range handle to write the text
GET PROPERTY OF GS_CELL 'Range' = GS_RANGE .

*--Filling the cell
SET PROPERTY OF GS_RANGE 'Text' = 'OLE' .

*--Advancing the cursor to the end of the table
GET PROPERTY OF GS_TABLE 'Range' = GS_RANGE .
GET PROPERTY OF GS_RANGE 'End' = GV_POS .
SET PROPERTY OF GS_RANGE 'Start' = GV_POS .
CALL METHOD OF GS_RANGE 'Select' .

*--Skip some lines
DO 3 TIMES .
CALL METHOD OF GS_SELECTION 'TypeParagraph' .
ENDDO.

*--Reseting font attributes for ordinary text
SET PROPERTY OF GS_FONT 'Name' = 'Times New Roman' .
SET PROPERTY OF GS_FONT 'Size' = '12' .
SET PROPERTY OF GS_FONT 'Bold' = '0' . "Not bold
SET PROPERTY OF GS_FONT 'Italic' = '0' . "Not Italic
SET PROPERTY OF GS_FONT 'Underline' = '0' . "Not underlined

*--Setting paragraph format attribute
SET PROPERTY OF GS_PARFORMAT 'Alignment' = '3' . "Justified
*--Indent the paragraph once
GET PROPERTY OF GS_SELECTION 'Paragraphs' = GS_PARAGRAPH .

CALL METHOD OF GS_PARAGRAPH 'Indent' .

CALL METHOD OF GS_SELECTION 'TypeText'
EXPORTING
#1 = TEXT-002.

FREE OBJECT GS_WORD .



ALSO READ:

- Use Of Double Click On ALV Grid/List Display.

- Hierarchical ALV Grid/List Display Report Program.

- Header In Bold - ALV Grid/List Display.

- Double Click On ALV Grid/List Report.

- ALV Interactive (Double Clicking).




RETURN TO MAIN INDEX:

- Sample Programs On Uploading & Downloading Files.

- Sample Programs On HR ABAP.

- Sample Report Programs On ALV List/ Grid Display.

- Sample Programs On Selection Screen.

- Sample Programs On BDC.

.....Back To MAIN INDEX.

3 comments:

  1. Hello Venkatesh,

    Nice article.
    Could you also share some info about how to access data in tables that say already exist in a word document from ABAP ?

    You can also reply onto my mail id jvr.kishore@gmail.com

    ReplyDelete
  2. Excelent article. Your site is very helpfull too.

    ReplyDelete
  3. Hello Venkatesh,

    your article is useful, tks, but I got an error.
    I coped and pasted your code in my system ( sap basis 700 )Ecc 6.0 and only the first line is displayed, the rest in white.

    In tole table i have:
    word.basic, word97 and wordpro.applicatoin.

    I use word 2003.

    Some idea about error that I'm gotting ?

    tks a lot to reply at: rbaldassarre@gmail.com

    ReplyDelete