March 28, 2024

Exemplo OLE – WORD

Integrar o SAP com sistema legado..
Integrar o SAP com PI…
Integrar o SAP com uma torradeira…
Integrar o SAP com mundos perdidos… Enfim… Este é o seu jogo, menino ABAP oO

Sábia que era possível gerar arquivos do pacote Office da Microsoft, mas nunca participei de nenhum projeto com esta demanda.

Mas, porque esperar a demanda para correr atras, resolvi tentar fazer um programinha de exemplo para gerar um texto no Word do Microsoft Office.

Meu objetivo era apenas escrever AbapZombie.com.

Então vamos:

REPORT  zombie_teste_ole.
* Types-Pools
*-------------------------------------*
TYPE-POOLS: ole2.

* Variables
*--------------------------------------*
DATA: v_word_app TYPE ole2_object, "Word Application
v_documents TYPE ole2_object, "Documentos
v_document TYPE ole2_object, "Documento
v_selection TYPE ole2_object, "Linha de texto
v_paragraph TYPE ole2_object, "Paragrafo (Alinhamento)
v_font TYPE ole2_object. "Font (Cor, Tamanho, Fonte)

"Cria o Application do Word
CREATE OBJECT v_word_app 'WORD.APPLICATION'.

"Documento será aberto após criação?
SET PROPERTY OF v_word_app 'Visible' = '1' .

"Cria a sessão de documentos
CALL METHOD OF v_word_app 'Documents' = v_documents.

"Cria um documento dentro da sessão de documentos
CALL METHOD OF v_documents 'Add' = v_document.

"Cria uma entrada de texto
CALL METHOD OF v_word_app 'Selection' = v_selection.

"Cria um paragrafo dentro da entrada de texto
CALL METHOD OF v_selection 'ParagraphFormat' = v_paragraph.

"Cria um font dentro da entrada de texto
CALL METHOD OF v_selection 'Font' = v_font.

"Insere o alinhamento do paragrafo
SET PROPERTY OF v_paragraph 'Alignment' = '2' . "Right-justified

"Altera os atributos da fonte
SET PROPERTY OF v_font 'Name' = 'Arial' .
SET PROPERTY OF v_font 'Size' = '50' .
SET PROPERTY OF v_font 'Bold' = '0' . "Not bold
SET PROPERTY OF v_font 'Italic' = '1' . "Italic

"Insere o Texto
CALL METHOD OF v_selection 'TypeText'
EXPORTING #1 = 'AbapZombie.com!'.

"Salva o Documento
CALL METHOD OF v_document 'SaveAs'
EXPORTING
#1 = 'C:/example/abapzombie.ole.doc'.

Segue também o link de um material da SAP sobre o assunto.

Abraços Zombizada

Mauro Laranjeira

Motoqueiro fantasma... curandeiro do SAP desde 2006... trago o go-live perdido em um fim de semana... junto 9 mulheres para fazer um filho em um mês... acreditador em histórias de Basis... garimpeiro de dados de teste...

View all posts by Mauro Laranjeira →

12 thoughts on “Exemplo OLE – WORD

  1. Existe algum procedimento anterior (como instalar alguma lib)?
    Ao tentar ativar código recebo este erro:
    The type “OLE2_OBJECT” is unknown, but there is a type with the similar name “OBJECT”.

    VLW!

        1. Valmir,

          Fiz hoje o teste em um CRM 7.0 também funcionou.

          Queria fazer o teste no SRM, mas não tenho acesso a nenhum.

          Assim que descobrir algo respondo aqui no post.

          Abs,

          Mauro Laranjeira

  2. Conheci o blog através de um outro Blog que sigo regularmente, o http://www.abapinho.com e aproveito para dar vos dar os Parabéns!! Excelente Blog, com excelentes conteúdos e com uma leitura muito apelativa.

    Quanto ao post, já usei ole2 para gerar ficheiros de excel, mas descobri um projecto no SDN muito bom com uma abordagem totalmente OO.

    Também existe para Word, por isso deixo o link se quiseres pesquisar.

    ABAP2DOCX – https://cw.sdn.sap.com/cw/groups/abap2docx

    Cumprimentos
    Sérgio Fraga
    Portugal

  3. Mauro, trabalho com HR e utilizo bastante a integração.

    Só uma coisa que colocaria a mais, é o sy-subrc depois do CREATE OBJECT, se retornar algo diferente de zero quer dizer que deu algum erro relacionado a integração e não será possível continuar..

    O único problema que vejo nessa integração é em relação a performance, se voce gera um documento um pouco extenso ele demora para completar o processo e até agora não achei a solução para isso…

    1. Guilherme,

      Realmente a performance pega bastante, o SAP utiliza o word da maquina, seria melhor se ele criasse um arquivo interno e depois so exportava, mas desta forma ainda não vi em nenhum lugar.

      Abs

  4. Olá Mauro, sou estagiário e existem algumas especificações técnicas chatinhas de fazer,
    Você sabe se é possivel preencher uma ET utilizando a mesma função?

  5. Bom dia,

    Em vez de criar um novo documento Word quero editar um já existente, posicionando-me do fim do documento e acrescentando o que quero.
    Tem como fazer?

Leave a Reply to Luiz Felipe Macias Porta Cancel reply

Your email address will not be published. Required fields are marked *