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:
- Funções ou métodos Z desenvolvidos para disponibilizar a acção
- BAPI
- Processamento de IDOC
- Processamento de LSMW
- Chamadas a Webservices
- Chamadas a PI/XI
- Objectos ou processos de Workflow
- Batch Input
- 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>
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.
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