sexta-feira, 19 de agosto de 2016

Autenticação de Webservice ABAP via certificado digital

Recentemente eu tive que criar um Service Provider no SAP utilizando autenticação via certificado digital, não encontrei muita documentação a respeito de como fazer isso utilizando o framework de webservice do SAP, mas após varias tentativas eu consegui, nesse post eu vou mostra como fazer isso.
Existem diversos artigos na internet explicando como funciona a autenticação via certificado digital, (procure por "SSL Handshake"), mas basicamente (bem basicamente) o cliente envia um Hello para o servidor com algumas informações, o servidor retorna seu certificado e solicita um certificado para o cliente retornando uma lista de certificados que ele aceita, o cliente verifica o certificado do servidor e envia o certificado solicitado, o servidor verifica se o certificado do cliente é valido e se tudo deu certo, a conexão é estabelecida.
O primeiro passo para fazer isso não só no SAP como em qualquer outro lugar, é ter o certificado do cliente e todos os demais da cadeia de certificação em arquivo, provavelmente o responsável pelo cliente ira te enviar o certificado dele (chave publica), se você abrir ele no Windows conseguira exportar facilmente os demais certificados da cadeia para arquivo.

Se tiver um PFX você pode instala-lo no Windows e exportar os cerificados, ou utilizar o Keystore Explorer que é muito melhor. Se quiser gerar um certificado para testes, o XCA é ótimo para isso. Se quiser fazer um debug/teste do handshake você pode utilizar o OpenSSL com a opção S_CLIENT.

De posse dos certificados, primeiro verifique se o SAP está configurado para aceitar certificados, acesse a SMICM, acesse o menu "Ir Para"->Parâmetros->Exibir, depois procure por icm/HTTPS/verify_client na seção HTTPS (SSL) Settings, verifique se o valor dele é 1 ou 2, se estiver com 0 solicite ao basis que altere na RZ10 (a opção de modificar da SMICM não funciona).









Acesse a STRUST, selecione o PSE Serv.SSL padrão, importe todos os certificados. Se for um certificado de NF-e, por exemplo, o PSE deve conter no mínimo 4 certificados, raiz Serasa, intermediário, Serasa e o certificado da empresa. Sim, isso mesmo, dá pra utilizar o mesmo certificado de NF-e para autenticação em outros lugares.








Se for um Self-Signed será necessário inclui-lo no PSE e exporta-lo para o BD:










Pressione F6 para dar um "Distribuir Todos" e CTRL + S para salvar as alterações no PSE.

Volte a SMICM e acesse o menu Administração->ICM->Encerrar Soft->Global:








Pressione Sim para reiniciar o ICM









Acesse a SM30 com atualização para a VIEW VUSREXTID, opção DN, e insira uma nova entrada.
Clique no botão importar e selecione o certificado do cliente.






Informe o usuário SAP que será associado ao certificado, clique em ativo e salve. O flag "Valor hash" vai ficar ativo dependendo do tamanho do valor que está no campo ID Externo, mas não faz diferença no momento.












Pronto o certificado está configurado, agora é só ir na SOAMANAGER e configurar o webservice para autenticação via certificado.




















Para testar a autenticação você pode utilizar a extensão RestClient do Firefox ou o complemento ARC do Chrome ou o próprio SoapUI, nesse caso é necessário alterar as preferencia conforme abaixo:


quarta-feira, 10 de dezembro de 2014

Criando relatórios SALV

As classes SALV são uma verdadeira mão na roda quando se trata da criação de reports em ABAP, esqueça as funções REUSE_XXX_DISPLAY e as classes cl_gui_alv_xxx, pois o SALV é muito mais fácil e prático.
O SALV é wrapper dessas funções e classes que permite utilizar a mesma sintaxe para todos eles, a melhor parte é que não há a necessidade de manipular fieldcats, nade de perform fieldcat ou LVC_FIELDCATALOG_MERGE, basta apenas passar a sua tabela interna e ele cuidará do fieldcat a partir dos campos dela. Há diversos exemplos muito bons, procure pelos programas SALV_DEMO*.
Se você der uma olhada no programa SALV_DEMO_TABLE_REAL_SIMPLE vai ver o quão simples é criar um ALV com o SALV. São necessárias apenas três instruções para criar um ALV Fullscreen (o mesmo da funçaõ REUSE_ALV_GRID_DISPLAY ):

1 - Declarar o objeto:  
datagr_table  type ref to cl_salv_table.

2 -  Instanciar o objeto a partir da factory do SALV
  call method cl_salv_table=>factory
    IMPORTING
      R_SALV_TABLE gr_table
    changing
      t_table      gt_outtab.


3 - Exibir o ALV
gr_table->display). 



Agora é possivel otimizar a largura das colunas  de forma adequada
 

É possivel configurar uma barra de ferramentas básica sem precisar manipular a tabela interna da toolbar.
 

É possivel declarar um campo na tabela interna para ser utilizado apenas internamente. 



 

Procurar trechos de código em programas ABAP

Embora não seja uma boa prática colocar valores fixos no meio do código ao inves de parametrizá-los, muitos programadores fazem isso e pode ser que você acabe com a ardua tarefa de substitui-los em vários programas, mas como encontrar so programas a serem atualizados?
Felizmente a SAP disponibiliza o programa RS_ABAP_SOURCE_SCAN para fazer isso, com esse report você pode por exemplo localizar a sentença LGORT = 'ABCD' em todos os programas Z.
O report permite fazer busca tanto usando sentenças quanto expressões regulares e se você ainda não conhece essas expressões corra aprender porque elas agilizam muito o dia a dia.
Vamos a alguns exemplos:

Procurar todas as comparações de depósito

 Resultado:





Procurar todos os selects nos programas MB51,MB52, etc.
Resultado:


terça-feira, 23 de abril de 2013

Resolvendo o problemas de proxy no ValidadorFCI da receita

Há alguns dias atrás eu tentei utilizar o software ValidadorFCI da receita federal para testar o envio de FCIs e tive vários problemas devido ao fato de estar utilizando uma conexão via proxy.
O ValidadorFCI, utiliza a internet para validar o certificado digital que você selecionou,então libere o acesso aos endereço www.fazenda.sp.gov.br/* (HTTP e HTTPS).
Se o seu proxy exigir autenticação, navegue até a pasta onde o ValidadorFCI está instaladado, abra o arquivo Br.Gov.Sp.Fazenda.CCI.ValidadorFCI.Presenter.exe.config,  e inclua a tag defaultproxy usedefaultcredentials="true" para que o aplicativo utilize as credenciais do usuário conforme abaixo:

sexta-feira, 8 de fevereiro de 2013

Adicionando uma bilblioteca ao Netbeans



Existem várias IDEs para trabalhar com Java como Eclipse, Netbeans, intelliJ IDEA, entre outras. Todas são excelentes, mas a que eu mais utilizo é o Netbeans, devido aos muitos assistentes e ferramentas que essa Ide possui.
Nesse post eu vou mostrar como configurar uma biblioteca no Netbeans para que você possa utilizá-la nas suas aplicações. Eu estou utilizando o Netbeans 7.2 em inglês - para saber como mudar o idioma do Netbeans clique aqui.

Clique em Tools->Ant Libraries:

Na janela Ant Libraries Manager, clique em New Library:

Na janela New Library, informe o nome da biblioteca que sendo adicionada (eu costumo colocar o nome e versão) e certifique-se de que a opção Class Libraries está selecionada:

Na guia classpath clique em Add JAR/Folder e selecione a o arquivo jar da biblioteca (em, alguns casos são mais de um):

Na guia sources, clique e adicione o código fonte da biblioteca caso esteja disponível (geralmente vem na pasta src), isso permitirá fazer o debug dentro dos métodos da biblioteca:
Na guia Javadoc, clique e adicione a pasta ou o jar com a documentação da biblioteca, isso permitirá visualizar a documentação da classe ou método através da ferramenta Code Completion do Netbeans (Control + Space):

Pronto a biblioteca está adicionada. Para utilizá-la na sua aplicação, basta fazer o seguinte:
Abra as propriedades da sua aplicação (botão direito na aplicação e em seguida properties), clique em Add Library, selecione a biblioteca criada e em seguida Add Library:

Feche a janela de propriedades, expanda o nó Libraries na sua aplicação e você poderá visualizar a biblioteca recém-adicionada e seus pacotes e classes.

Alterando o idioma do Netbeans para inglês



Algumas vezes as traduções deixam a desejar e acabam te deixando perdido, principalmente se traduzirem algum termo técnico. Infelizmente o Netbeans não possui uma opção para que você possa selecionar o idioma da IDE, nesse post vou mostrar como deixa-lo em inglês.

Abra o arquivo netbeans.conf que fica dentro da pasta etc do diretório de instalação do Netbeans:

Inclua o parâmetro -J-Duser.language=en na variável netbeans_default_options:

Agora é só abrir o Netbeans novamente e ele já vai estar em inglês.

segunda-feira, 13 de agosto de 2012

Validar CPF ou CNPJ em ABAP

Para fazer a validação de CPF utilize a FM CONVERSION_EXIT_CPFBR_INPUT e para fazer a validação de CNPJ utilize a FM CONVERSION_EXIT_CGCBR_INPUT.
Basta passar somente os números no parâmetro input e veriifcar o sy-subrc.