Patrocinado por
Patrocinado por Inetum

Comunicação por evento entre programas

images/thumbnail.jpg - Thumbnail

Na mitologia grega a forma de comunicação mais frequentemente utilizada pelos deuses para comunicar com os mortais era o estupro. Estupravam por dá cá aquela palha.

O mais parecido que temos com estupro no ABAP é o comando SUBMIT, que é também a forma mais comum de comunicação entre dois programas.

Mas há formas menos brutas de um programa comunicar com outro. Recorrendo a um evento, por exemplo.

Presumamos que tens um programa chamado ZEUS (em rigor seria ZEUS_TOURO, mas OK) que quer comunicar com outro chamado ZEUROPA.

  1. Na transacção SM62 crias o evento com um nome tipo Z*. Chamemos-lhe ZAS! Uma vez criado podes encontrá-lo perto do fim da longa lista de eventos, junto dos restantes eventos criados pelo cliente;

  2. Se carregares no botão direito podes fazer uma data de coisas com ele. Uma delas é transportá-lo, ou seja, adicioná-lo a uma ordem de transporte;

  3. No programa ZEUS, no sítio onde houver vontade de invocar a ZEUROPA, mete o seguinte código:

CALL FUNCTION 'BP_EVENT_RAISE'
  EXPORTING
    eventid                      = 'ZAS'
 EXCEPTIONS
   BAD_EVENTID                  = 1
   EVENTID_DOES_NOT_EXIST       = 2
   EVENTID_MISSING              = 3
   RAISE_FAILED                 = 4
   OTHERS                       = 5
  1. Na transacção SM36 cia um job ZEUS_ZAS_EUROPA com um único passo, a execução (salvo seja) da ZEUROPA;

  2. Nas condições de execução do job escolhe a opção “após evento” e escolhe o evento ZAS. Grava.

Pronto. Ao correres o programa ZEUS, Ele lança o evento ZAS, Que espoleta o job ZEUS_ZAS_EUROPA, Que executa (salvo seja) a ZEUROPA.

O Abapinho saúda-vos.