segunda-feira, 14 de março de 2011

Design de Aplicações - Parte 9

Execução

O exemplo usado neste documento tem por base movimentos de mercadoria standard, sendo essencialmente um interface simplificado para introdução de dados de forma simples e de acordo com os requisitos de negócio. A execução está a cargo de uma classe que se divide em duas subclasses, uma para fabrico e outra para desfabrico. A criação do movimento está a cargo do BAPI BAPI_GOODSMVT_CREATE.
Caso a execução tenha por base processos standard então o programador deve seleccionar o método mais adequado de entre os existentes, aqui grosseiramente ordenados de aconselhado a desaconselhado e, para o leitor atento, até repetidos:
  1. Funções ou métodos Z desenvolvidos para disponibilizar a acção
  2. BAPI
  3. Processamento de IDOC
  4. Processamento de LSMW
  5. Chamadas a Webservices
  6. Chamadas a PI/XI
  7. Objectos ou processos de Workflow
  8. Batch Input
  9. Chamada directa a função ou método standard

Os métodos devem se possível contemplar um modo teste que devolva os erros de execução sem commit do BAPI.
O código seguinte apresenta o método de gravar do exemplo. O método de teste é chamado antes da execução para validar erros. Os erros são devolvidos numa tabela interna. A parte de apresentação do programa é que decide se e como apresenta os erros ao utilizador.

method save .
  
field-symbols<fs_return> type bapiret2.

  
call method me->test
    
importing
      return_o 
return_o
      equi_o   
equi_o.
*  verifica se ocorreram erros
  
loop at return_o assigning <fs_return> 
                   where type 'E' or type 'A'.
    
exit.
  
endloop.
  
if sy-subrc <> 0.
    
call method me->call_bapi
      
exporting
        testrun_i 
''
      
importing
        return_o  
return_o
        mkpf_o    
mkpf_o.
  
endif
.

Sem comentários:

Enviar um comentário