Documente Academic
Documente Profesional
Documente Cultură
ABAPZombieProcessamentoemParaleloutilizandoRFCAssncrona
as
ic
D
Back to Top
AP
AB
1,356
Fans
821
Followers
RSS
Subscribe
oniTunes
onAndroid
viaRSS
32
Processamento em Paralelo
utilizando RFC Assncrona
Demorou, mas chegou! Meu post inaugural no ABAP Zombie! Vou comear falando um
pouco sobre processamento paralelo com RFC Assncrona. Hein???
O processamento em paralelo (ou paralelismo) no um conceito novo, mas pouco
utilizado para melhoria de performance. Por qu?
Em alguns casos podemos utilizar mais de uma sesso (ou task) disponvel, mas geralmente
utilizamos apenas uma delas. como se uma transportadora contasse apenas com um
caminho para levar seus produtos, quando h uma frota inteira de caminhes que podem
ser utilizados.
No s isso, a maioria dos sistemas conta com mais de um servidor de aplicao com uma
srie de sesses disponveis. Ento, o que estamos esperando?
Livro anti-zumbis
Escrito por Mauricio Cruz, sobre o mundo ABAP.
Diverso e informao para iniciantes, plenos e
sniors! Clique para conhecer:
http://www.abapzombie.com/dicasabap/2012/03/12/processamentoemparaleloutilizandorfcassincrona/
1/12
9/9/2016
ABAPZombieProcessamentoemParaleloutilizandoRFCAssncrona
Categorias!
Dicas ABAP (67)
Non-ABAP (3)
Dicas PI (7)
O Topic (32)
Guias (62)
Podcast (6)
Neste post vou mostrar um exemplo prtico utilizando RFC Assncrona. Vamos tentar
equilibrar o trabalho do programa com base no nmero de dados informados na tela de
seleo e nas sesses disponveis nos servidores de aplicao. Por ltimo, vamos analisar o
tempo de execuo do programa e comparar a execuo utilizando uma nica sesso.
Ento, vamos l!
Default
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
REPORTzppbap_rfc_assincrona.
**********************************************************************
* VARIVEIS GLOBAIS (V_...)*
**********************************************************************
DATA: v_tasksTYPE i,
v_task_idTYPE numc2,
v_task_count TYPE i,
v_task_ativa TYPE i.
**********************************************************************
* TABELA INTERNA (T_...) *
**********************************************************************
DATA: t_bsegTYPE TABLE OF bseg,
t_bseg_auxTYPE TABLE OF bseg.
**********************************************************************
* TABELA *
**********************************************************************
TABLES: bseg.
**********************************************************************
* PARMETROS DE TELA:*
* SELECT OPTIONS (S_...) *
* PARAMETERS (P_...) *
**********************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
**********************************************************************
* START-OF-SELECTION *
**********************************************************************
START-OF-SELECTION.
DATA: wa_gjahr LIKE LINE OF s_gjahr.
http://www.abapzombie.com/dicasabap/2012/03/12/processamentoemparaleloutilizandorfcassincrona/
2/12
9/9/2016
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
ABAPZombieProcessamentoemParaleloutilizandoRFCAssncrona
pbt_env_already_initialized= 3
currently_no_resources_avail = 4
no_pbt_resources_found = 5
cant_init_different_pbt_groups = 6
OTHERS = 7.
IF sy-subrc <> 0.
*** Mensagem de erro
LEAVE LIST-PROCESSING.
ENDIF.
* Como no sabemos a quantidade de registros, devemos controlar quantas sesses sero geradas
DO.
IF sy-subrc <> 0.
* Se a RFC falhar, vamos tentar novamente e diminuir o nmero de sesses ativas. Cuidado para no entrar
* em loop infinito!!
SUBTRACT 1 FROM v_task_ativa.
ELSE.
EXIT.
ENDIF.
ELSE.
SUBTRACT 1 FROM v_task_ativa.
ENDIF.
ENDDO.
ENDLOOP.
IF sy-subrc IS INITIAL.
* Esperar at que todas as sesses sejam finalizadas. O nmero decrementado na subrtoina abaixo
* e incrementado quando a RFC chamada.
WAIT UNTIL v_task_ativa = 0.
*** Neste ponto voc poder utilizar os resultados retornados da RFC para continuar a lgica do programa
ENDIF.
**********************************************************************
* SUBROTINA*
**********************************************************************
FORM update_order USING name.
ENDFORM." UPDATE_ORDER
http://www.abapzombie.com/dicasabap/2012/03/12/processamentoemparaleloutilizandorfcassincrona/
3/12
9/9/2016
ABAPZombieProcessamentoemParaleloutilizandoRFCAssncrona
Tags: paralelismo
Related Posts
Custodio says:
March 12, 2012 at 7:50 pm
Miguel says:
March 12, 2012 at 9:51 pm
Hahaha!
Estava me perguntando a mesma coisa!
Quando corrigido ser um post muito til!
Reply
http://www.abapzombie.com/dicasabap/2012/03/12/processamentoemparaleloutilizandorfcassincrona/
4/12