Como integrar validação de CPF em sistemas SAP usando ABAP

Aprenda a integrar a API de consulta de CPF do CPFHub.io em sistemas SAP usando ABAP, com exemplos de código e boas práticas de integração.

Redação CPFHub.io
Redação CPFHub.io
··9 min de leitura
Como integrar validação de CPF em sistemas SAP usando ABAP

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)

  1. Acesse a transação SM59.
  2. Crie um novo destino do tipo G (HTTP Connection to External Server).
  3. Informe o host: api.cpfhub.io
  4. Porta: 443
  5. Caminho: /cpf/
  6. Marque a opção SSL Ativo.
  7. 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ódigoSignificadoAção no SAP
200SucessoProcessar resposta normalmente
400CPF inválidoExibir mensagem ao usuário
401API Key inválidaVerificar configuração
429Rate limit excedidoAguardar e tentar novamente
500Erro do servidorLog 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.

Redação CPFHub.io

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.

WhatsAppFale conosco via WhatsApp