Para integrar validação de CPF em sistemas SAP usando ABAP, crie um destino HTTP externo na transação SM59 apontando para api.cpfhub.io, importe o certificado SSL via STRUST e use a classe CL_HTTP_CLIENT para fazer chamadas GET ao endpoint da API com o header x-api-key. A resposta JSON pode ser parseada com /UI2/CL_JSON e encapsulada em um Function Module reutilizável, aplicável em processos de cadastro de Business Partners, emissão de NF-e e admissão de funcionários.
Introdução
O SAP é o sistema ERP mais utilizado por grandes empresas no Brasil, gerenciando desde processos de vendas e compras até faturamento, contabilidade e recursos humanos. Em muitos desses processos, a validação de CPF é uma etapa essencial — seja no cadastro de clientes (Business Partners), na emissão de notas fiscais ou na admissão de funcionários. No entanto, a integração com APIs REST externas a partir de código ABAP pode parecer desafiadora para desenvolvedores acostumados com o ecossistema SAP.
Pré-requisitos
Antes de iniciar a implementação, certifique-se de que o ambiente SAP está preparado:
-
SAP NetWeaver 7.0 ou superior -- Necessário para usar as classes CL_HTTP_CLIENT.
-
Configuração de destino RFC -- Criar um destino HTTP externo na transação SM59 apontando para api.cpfhub.io.
-
Certificado SSL -- Importar o certificado SSL do CPFHub.io na transação STRUST.
-
Conta no CPFHub.io -- Criar uma conta gratuita em cpfhub.io para obter a chave de API necessária para autenticação.
Configuração do destino RFC (SM59)
- Acesse a transação SM59.
- Crie um novo destino do tipo G (HTTP Connection to External Server).
- Informe o host: api.cpfhub.io
- Porta: 443
- Caminho: /cpf/
- Marque a opção SSL Ativo.
- Teste a conexão.
Entendendo a API do CPFHub.io
A API utiliza o método GET com o CPF na URL. A autenticação é feita via header x-api-key. Veja o exemplo com cURL para referência:
curl -X GET https://api.cpfhub.io/cpf/12345678900 \
-H "x-api-key: SUA_CHAVE_DE_API" \
-H "Accept: application/json"
A resposta JSON:
{
"success": true,
"data": {
"cpf": "12345678900",
"name": "João da Silva",
"nameUpper": "JOAO DA SILVA",
"gender": "M",
"birthDate": "15/06/1990",
"day": 15,
"month": 6,
"year": 1990
}
}
Implementação em ABAP: chamada HTTP
O código ABAP a seguir demonstra como fazer a requisição GET à API do CPFHub.io e processar a resposta JSON.
Código completo do report
REPORT z_cpfhub_consulta.
DATA: lv_cpf TYPE string VALUE '12345678900',
lv_url TYPE string,
lv_api_key TYPE string VALUE 'SUA_CHAVE_DE_API',
lo_http_client TYPE REF TO if_http_client,
lv_response TYPE string,
lv_status_code TYPE i,
lv_reason TYPE string.
* Montar URL
CONCATENATE 'https://api.cpfhub.io/cpf/' lv_cpf INTO lv_url.
* Criar cliente HTTP
cl_http_client=>create_by_url(
EXPORTING
url = lv_url
ssl_id = 'ANONYM'
IMPORTING
client = lo_http_client
EXCEPTIONS
argument_not_found = 1
plugin_not_active = 2
internal_error = 3
OTHERS = 4 ).
IF sy-subrc <> 0.
WRITE: / 'Erro ao criar cliente HTTP:', sy-subrc.
RETURN.
ENDIF.
* Configurar timeout (10 segundos)
lo_http_client->set_timeout( timeout = 10 ).
* Configurar headers
lo_http_client->request->set_header_field(
name = 'x-api-key'
value = lv_api_key ).
lo_http_client->request->set_header_field(
name = 'Accept'
value = 'application/json' ).
* Configurar método GET
lo_http_client->request->set_method(
if_http_request=>co_request_method_get ).
* Enviar requisição
lo_http_client->send(
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3
OTHERS = 4 ).
IF sy-subrc <> 0.
WRITE: / 'Erro ao enviar requisição:', sy-subrc.
lo_http_client->close( ).
RETURN.
ENDIF.
* Receber resposta
lo_http_client->receive(
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3
OTHERS = 4 ).
IF sy-subrc <> 0.
WRITE: / 'Erro ao receber resposta:', sy-subrc.
lo_http_client->close( ).
RETURN.
ENDIF.
* Obter status HTTP
lo_http_client->response->get_status(
IMPORTING
code = lv_status_code
reason = lv_reason ).
* Obter corpo da resposta
lv_response = lo_http_client->response->get_cdata( ).
* Fechar conexão
lo_http_client->close( ).
* Exibir resultado
WRITE: / 'Status:', lv_status_code, lv_reason.
WRITE: / 'Resposta:', lv_response.
Parseando a resposta JSON em ABAP
Para extrair os dados da resposta JSON, utilize a classe /UI2/CL_JSON ou CL_TREX_JSON_DESERIALIZER, dependendo da versão do SAP.
Usando /UI2/CL_JSON
TYPES: BEGIN OF ty_cpf_data,
cpf TYPE string,
name TYPE string,
nameupper TYPE string,
gender TYPE string,
birthdate TYPE string,
day TYPE i,
month TYPE i,
year TYPE i,
END OF ty_cpf_data.
TYPES: BEGIN OF ty_cpf_response,
success TYPE abap_bool,
data TYPE ty_cpf_data,
END OF ty_cpf_response.
DATA: ls_response TYPE ty_cpf_response.
/ui2/cl_json=>deserialize(
EXPORTING
json = lv_response
CHANGING
data = ls_response ).
IF ls_response-success = abap_true.
WRITE: / 'CPF:', ls_response-data-cpf.
WRITE: / 'Nome:', ls_response-data-name.
WRITE: / 'Gênero:', ls_response-data-gender.
WRITE: / 'Nascimento:', ls_response-data-birthdate.
ELSE.
WRITE: / 'CPF não encontrado.'.
ENDIF.
Criando uma função reutilizável (Function Module)
Para que a validação de CPF possa ser chamada de diferentes programas e transações SAP, encapsule a lógica em um Function Module.
Interface do Function Module
- Import -- IV_CPF (TYPE string), IV_API_KEY (TYPE string)
- Export -- ES_CPF_DATA (TYPE ty_cpf_data), EV_SUCCESS (TYPE abap_bool), EV_ERROR_MSG (TYPE string)
- Exceptions -- COMMUNICATION_ERROR, INVALID_CPF, API_ERROR
Chamando o Function Module
DATA: ls_dados TYPE ty_cpf_data,
lv_sucesso TYPE abap_bool,
lv_erro TYPE string.
CALL FUNCTION 'Z_CPFHUB_CONSULTAR_CPF'
EXPORTING
iv_cpf = '12345678900'
iv_api_key = 'SUA_CHAVE_DE_API'
IMPORTING
es_cpf_data = ls_dados
ev_success = lv_sucesso
ev_error_msg = lv_erro
EXCEPTIONS
communication_error = 1
invalid_cpf = 2
api_error = 3
OTHERS = 4.
IF sy-subrc = 0 AND lv_sucesso = abap_true.
WRITE: / 'Nome do titular:', ls_dados-name.
ELSE.
WRITE: / 'Erro:', lv_erro.
ENDIF.
Casos de uso no SAP
Cadastro de Business Partner (BP)
Integre a validação de CPF na transação BP ou na BAPI correspondente para verificar o CPF antes de salvar o cadastro do parceiro de negócios.
Emissão de nota fiscal (NF-e)
Antes de gerar a nota fiscal na transação J1B1N ou via BAPI, valide o CPF do destinatário para evitar rejeições pela SEFAZ.
Admissão de funcionários (PA40)
No processo de contratação, valide o CPF do novo colaborador contra a base oficial antes de prosseguir com o cadastro no módulo HR.
Pedidos de venda (VA01)
Adicione a validação de CPF como passo obrigatório na criação de pedidos de venda para clientes pessoa física.
Tratamento de erros e rate limits
Códigos HTTP
| Código | Significado | Ação no SAP |
|---|---|---|
| 200 | Sucesso | Processar resposta normalmente |
| 400 | CPF inválido | Exibir mensagem ao usuário |
| 401 | API Key inválida | Verificar configuração |
| 429 | Rate limit excedido | Aguardar e tentar novamente |
| 500 | Erro do servidor | Log no SLG1 e retry |
Rate limits
O plano gratuito permite 1 requisição a cada 2 segundos (50 consultas/mês). Para operações SAP em lote, o plano Pro (R$ 149/mês, 1.000 consultas) ou Corporativo é mais adequado.
Boas práticas para integração SAP
-
Armazenar a API Key em tabela customizada -- Nunca coloque a chave diretamente no código. Use uma tabela Z ou o Secure Store (SSFS).
-
Implementar cache local -- Se o mesmo CPF é consultado repetidamente, armazene o resultado em uma tabela Z com timestamp de expiração.
-
Log de consultas -- Registre todas as consultas no SLG1 para auditoria e rastreabilidade.
-
Tratamento assíncrono para lotes -- Em processos de migração ou atualização em massa, use jobs em background com controle de rate limit.
-
Monitoramento via SM21 -- Configure alertas para falhas de comunicação com a API.
Perguntas frequentes
Qual versão mínima do SAP NetWeaver é necessária para integrar com a API do CPFHub.io?
É necessário SAP NetWeaver 7.0 ou superior para utilizar as classes CL_HTTP_CLIENT e /UI2/CL_JSON. Versões anteriores podem exigir abordagens alternativas, como chamadas via RFC para um servidor intermediário. A maioria das instalações SAP ECC 6.0 e S/4HANA atende ao requisito sem configurações adicionais.
Como armazenar a API Key do CPFHub.io de forma segura em ABAP?
Nunca armazene a chave diretamente no código-fonte ABAP. Use uma tabela Z customizada com controle de acesso por autorização, o SAP Secure Store (SSFS) disponível no NetWeaver 7.4+, ou o SAP Credential Store no S/4HANA Cloud. Isso facilita a rotação da chave sem necessidade de transporte e evita exposição em sistemas de controle de versão.
A integração ABAP funciona para processos em lote com grandes volumes de CPF?
Sim, mas com atenção ao rate limit do plano gratuito (1 requisição a cada 2 segundos, 50/mês). Para migrações ou atualizações em massa, use o plano Pro ou Corporativo e implemente jobs em background com pausa controlada entre requisições. O cache local em tabela Z é fundamental para evitar consultas repetidas ao mesmo CPF.
Como tratar falhas de comunicação com a API em processos críticos do SAP como emissão de NF-e?
Implemente uma lógica de fallback: se a API retornar erro ou timeout, use a validação algorítmica local dos dígitos verificadores como segunda linha de defesa e registre o incidente no SLG1. Para NF-e, considere uma fila de reprocessamento para CPFs que não puderam ser validados em tempo real, evitando bloqueios no faturamento.
Conclusão
Integrar a API de consulta de CPF do CPFHub.io em sistemas SAP usando ABAP é um processo estruturado que pode ser aplicado em diversos cenários, desde cadastro de clientes até emissão de notas fiscais. Com as classes de HTTP client nativas do SAP, o código é direto e pode ser encapsulado em Function Modules reutilizáveis. O plano gratuito é ideal para desenvolvimento e testes, e os planos Pro e Corporativo atendem operações SAP em escala.
Cadastre-se em cpfhub.io — 50 consultas mensais gratuitas, sem cartão de crédito — e comece a validar CPFs diretamente nos seus processos SAP hoje mesmo.
CPFHub.io
Pronto para integrar a API?
50 consultas gratuitas para testar agora. Sem cartão de crédito. Acesso imediato à documentação.
Sobre a redação
Redação CPFHub.io
Time editorial especializado em APIs de CPF, identidade digital e compliance no mercado brasileiro. Produzimos guias técnicos, análises regulatórias e tutoriais sobre LGPD e KYC para desenvolvedores e líderes de produto.



