Durante a extração, todos os dados de uma chamada RFC são transferidos de uma vez para o cliente Java usando o SAP JCo. No entanto, grandes volumes de dados podem provocar sobrecarga da memória (OutOfMemoryError). Por exemplo, isso acontece quando as chaves primárias das tabelas do documento e tabelas de cabeçalho do documento estão sendo determinadas. Nesse caso, os dados devem primeiro ser armazenados em buffer no sistema R/3 e, em seguida, transferidos para o cliente Java, um bloco de cada vez. A dimensão do bloco é especificada pelo parâmetro -cpd. Existem três modos de bloco diferentes, que diferem em termos de como os dados são armazenados no sistema R/3.
Modo de bloco D
O modo D é recomendado para extração em bloco de grandes conjuntos de dados do sistema R/3. Os dados selecionados são armazenados na tabela do banco de dados /IDS/INDX. Se a conexão com o Extrator falhar ou se a operação de extração for interrompida manualmente, os dados não serão excluídos automaticamente da tabela do banco de dados. Tem de excluir manualmente os dados armazenados. Para isso, exiba o conteúdo da tabela /IDS/INDX usando a transação SE16. Em seguida, selecione todas as entradas relevantes e exclua-as usando a opção Excluir tudo... no menu principal Entrada da tabela.
Exemplo
Quer extrair mais de um milhão de entradas da tabela CPDOS (elementos do documento de alteração). Se não usar a extração em bloco, a memória Java será sobrecarregada e a extração será interrompida.
Ao executar a seguinte linha de comando, extrai os dados em blocos (parâmetro do bloco em negrito):
runsap2ppm -systemconfig Systemconfig.xml -tableconfig TableconfigCDPOS.xml
-outfile eventsCDPOS -nozip -begindate 19700101 -rfc_blockmode D -cpd 10000
Ao especificar o parâmetro -rfc_blockmode com o argumento D, é iniciada a extração em bloco, que grava todos os dados da tabela do banco de dados CPDOS para o arquivo de saída. O parâmetro -cpd é usado para especificar a dimensão dos blocos a serem processados. No exemplo, 10000 documentos são processados simultaneamente. O valor padrão é 5000.
O progresso da extração em bloco é registrado como especificado, por exemplo:
I: 09.05.06 11:30:38: [XML] Extrair dados de...
...
...
I: 09.05.06 11:32:30: [XML] Tabela "CDPOS":
10.000 de 1.036.995 linhas extraídas.
I: 09.05.06 11:32:30: [XML] Extrair atributos para
10000 eventos do sistema de origem...
I: 09.05.06 11:32:39: [XML] Tabela "CDPOS":
20.000 de 1.036.995 linhas extraídas.
I: 09.05.06 11:32:39: [XML] Extrair atributos para
10000 eventos do sistema de origem...
...
Ao especificar -progress no, pode suprimir as mensagens de log adicionais para os modos de bloco, que mostram o progresso da extração em bloco.
Modo de bloco G
Os dados selecionados são armazenados em uma tabela interna do grupo de funções. Os dados são mantidos na memória do servidor R/3. Se a conexão com o Extrator falhar ou se a extração for interrompida manualmente, os dados serão excluídos automaticamente do sistema R/3. Estas especificações aplicam-se desde a versão SAP 4.7, ou seja, desde a versão SAP Kernel 6.10.
Modo de bloco M
Os dados selecionados são armazenados na memória ABAP usando exportar para id de memória. Os dados são mantidos na memória do servidor R/3. Se a conexão com o Extrator falhar ou se a extração for interrompida manualmente, os dados serão excluídos automaticamente do sistema R/3. Estas especificações aplicam-se desde a versão SAP 4.7, ou seja, desde a versão SAP Kernel 6.10.