Por uma ou duas vezes eu tive um problema com relação ao histórico do meu SAP Gui, e nada do que digitava era gravado no histórico, assim o SAP Gui não fazia nenhum sugestão para preenchimento de campos.
Parece ser um problema relacionado ao MDAC, já que o SAP Gui utiliza uma base access para gravar o histórico local. Eu consegui resolver o problema através desse post.
sábado, 25 de fevereiro de 2012
Importando um certificado SSL para o servidor
Nesse post eu ensinei como consumir um webservices através de http_client, na ocasião o endpoint estava acessível através de http, mas e se fosse https?
Nesse post vou mostrar como importar um certificado SSL para que você possa fazer uma conexão através de HTTPS.
Antes de mais nada é preciso que a biblioteca SAP Cryptographic Library esteja instalada no servidor, converse com o BASIS a respeito.
Exportando o certificado do servidor
Primeiro precisamos exportar o certificado ssl do servidor para X509 codificado em Base64, se você estiver utilizando windows faça o seguinte:
Configurando o PSE e o ICM
Acesse a transação STRUST e clique em Cliente SSL (standard)
No quadro certificado clique no botão importar certificado
Na tela de importação de certificado, clique em Base64 e informe o caminho para o arquivo exportado na primeira etapa e confirme.
Será exibido os dados do certificado, verifique se está tudo ok e clique no botão incluir
Acesse o menu PSE, em seguida distribuir todos ou pressione F6
Agora o certificado foi importado para o PSE, precisamos reiniciar o ICM antes de poder utilizar o certificado. Para isso acesse a transação SMICM, clique no menu Administração, ICM e encerrar soft.
Aguarde o ICM ser reiniciado e a configuração SSL estará ok.
Nesse post vou mostrar como importar um certificado SSL para que você possa fazer uma conexão através de HTTPS.
Antes de mais nada é preciso que a biblioteca SAP Cryptographic Library esteja instalada no servidor, converse com o BASIS a respeito.
Exportando o certificado do servidor
Primeiro precisamos exportar o certificado ssl do servidor para X509 codificado em Base64, se você estiver utilizando windows faça o seguinte:
- Execute o internet explorer como adimistrador
- Acesse o endereço do servidor que você você pretende acessar pelo SAP
- Clique no cadeado da barra de endereços, em seguida em exibir certificados
- Clique na guia detalhes e em seguida copiar para arquivo
- Clique em avançar e na proxima tela selecione X509 codificado na base 64 e clique em avançar novamente.
- Indique onde deseja salvar o arquivo.
Configurando o PSE e o ICM
Acesse a transação STRUST e clique em Cliente SSL (standard)
No quadro certificado clique no botão importar certificado
Na tela de importação de certificado, clique em Base64 e informe o caminho para o arquivo exportado na primeira etapa e confirme.
Será exibido os dados do certificado, verifique se está tudo ok e clique no botão incluir
Acesse o menu PSE, em seguida distribuir todos ou pressione F6
Agora o certificado foi importado para o PSE, precisamos reiniciar o ICM antes de poder utilizar o certificado. Para isso acesse a transação SMICM, clique no menu Administração, ICM e encerrar soft.
Aguarde o ICM ser reiniciado e a configuração SSL estará ok.
Marcadores:
abap,
base64,
certificado,
https,
icm,
pse,
smicm,
ssl,
strust,
trustmanager,
webservcies,
x509
Usando eventos para iniciar um job
Uma das formas de iniciar o processamento de um job é através de eventos. Você define esses eventos e toda vez que um programa dispará-los os jobs associados a eles serão executados.
Primeiro acesse a transação SM62, selecione atualizar em definições evento usuário e pressione enter. Em sguida clique em criar ou pressione F5.
Agora é só chamar a função BP_EVENT_RAISE para disparar os eventos.
Acesse a SM36 para criar um novo job.
Clique em condição de execução, em seguida após eventos e informe o nome do evento criado no primeiro passo.
Conclua as demais configurações comuns e libere seu job.
Agora toda vez que o evento for disparado o job será executado.Nesse link ensina como disparar eventos a partir de programas externos.
Primeiro acesse a transação SM62, selecione atualizar em definições evento usuário e pressione enter. Em sguida clique em criar ou pressione F5.
Agora é só chamar a função BP_EVENT_RAISE para disparar os eventos.
Acesse a SM36 para criar um novo job.
Clique em condição de execução, em seguida após eventos e informe o nome do evento criado no primeiro passo.
Conclua as demais configurações comuns e libere seu job.
Agora toda vez que o evento for disparado o job será executado.Nesse link ensina como disparar eventos a partir de programas externos.
Conectando um http_client através de um destino http externo
Nesse post eu mostrei como consumir um webservice usando http_client, no exemplo eu instanciei o http_client a partir do endpoint do webservice, mas é possível fazer isso a partir de um destino http, dessa forma você não precisa se preocupar com atualização do endpoint, ssl e proxy.
A primeira coisa a fazer é acessar a transação SM59 e definir um novo destino http externo.
As configurações SSL estão inativas porque o endpoint não utiliza https.
Agora precisamos substituir o método create pelo método create_by_destination para instanciar o http_client.
A primeira coisa a fazer é acessar a transação SM59 e definir um novo destino http externo.
As configurações SSL estão inativas porque o endpoint não utiliza https.
Agora precisamos substituir o método create pelo método create_by_destination para instanciar o http_client.
Importando um arquivo CSV
Uma das formas de fazer upload de um arquivo CSV no ABAP, é fazendo a leitura através das funções de upload, percorrer a tabela e fazer a separação dos campos utilizando o comando SPLIT AT.
Mas é possível fazer isso de uma forma mais simples utilizando a função TEXT_CONVERT_TEX_TO_SAP.Nesse post vou mostrar como usar essa FM, no exemplo abaixo abaixo é feito a leitura de uma arquivo de contatos em formato CSV separado por ";" com dois campos nome e email, em seguida os dados carregados são escritos na tela.
Primeiro fazemos a leitura do arquivo CSV:
Em seguida convertemos o conteudo lido para a nossa tabela com os campos do CSV
Exemplo completo:
Mas é possível fazer isso de uma forma mais simples utilizando a função TEXT_CONVERT_TEX_TO_SAP.Nesse post vou mostrar como usar essa FM, no exemplo abaixo abaixo é feito a leitura de uma arquivo de contatos em formato CSV separado por ";" com dois campos nome e email, em seguida os dados carregados são escritos na tela.
Primeiro fazemos a leitura do arquivo CSV:
Em seguida convertemos o conteudo lido para a nossa tabela com os campos do CSV
Exemplo completo:
Enviando email em formato HTML com PDF em anexo utilizando a classe CL_BCS
No post anterior eu ensinei como enviar mensagens html com anexo usando a FM SO_SEND_DOCUMENT_API, agora vou mostrar como fazer a mesma coisa utlizando a classe cl_bcs.
Esse é o meio preferido de enviar emails, pois é muito mais fácil anexar arquivos, o código fica bem limpo e o melhor de tudo está dentro do meu modo preferido de programar, orientado a objetos.
Para enviar as mensagem precisaremos de objetos das seguintes classes e interface :
cl_bcs: responsável pelo envio da mensagem
cl_document_bcs: que é a mensagem a ser enviada
cl_cam_address_bcs: que será o remetente
if_recipient_bcs: será o destinatário da mensagem
Agora instanciamos a request, o sender e recipient
Montamos a mensagem em formato HTML e criamos o documento a ser enviado
Agora fazemos o upload do arquivo e anexamos ao documento
Finalmente passamos o document e o destinátio para a request, confguramos a mensagem para ser enviada imediatamente e o email de status para ser enviado em caso de erros e enviamos a mensagem.
Exemplo completo:
Esse é o meio preferido de enviar emails, pois é muito mais fácil anexar arquivos, o código fica bem limpo e o melhor de tudo está dentro do meu modo preferido de programar, orientado a objetos.
Para enviar as mensagem precisaremos de objetos das seguintes classes e interface :
cl_bcs: responsável pelo envio da mensagem
cl_document_bcs: que é a mensagem a ser enviada
cl_cam_address_bcs: que será o remetente
if_recipient_bcs: será o destinatário da mensagem
Agora instanciamos a request, o sender e recipient
Montamos a mensagem em formato HTML e criamos o documento a ser enviado
Agora fazemos o upload do arquivo e anexamos ao documento
Finalmente passamos o document e o destinátio para a request, confguramos a mensagem para ser enviada imediatamente e o email de status para ser enviado em caso de erros e enviamos a mensagem.
Exemplo completo:
Enviando email HTML com PDF em anexo através da função SO_SEND_DOCUMENT_API
No post de hoje vou mostrar como enviar mensagems de email no formato HTML e com um arquivo PDF em anexo, obviamente vocês poderão adaptar para outros tipos de anexo.
Nesse exemplo eu estou utilizando a função SO_SEND_DOCUMENT_API, essa a forma mais antiga de enviar mensagens de email através de ABAP, atualmente você pode fazer isso através da classe BCS.
Antes de enviar qualquer mensagem cetifique-se junto ao BASIS se o sistema está configurado para enviar emails (ver SCON).
Exemplo completo:
Entendendo o exemplo:
Rotina de envio
Nessa rotina eu defini duas macros, new_line e
add_receiver, para adicionar o conteudo da mensagem em formato html e para adicionar destinatários respectivamente.
Na linha 50 é adicionado o email do destinatário.
Na linha 51 é adicionado o email ou lista da equipe de suporte em cópia oculta.
Da linha 53 a 55 é adicionado o conteudo da mensagem.
Da 59 a 66 o corpo da mensagem é adicionado ao packing list.
Da linha 68 a 72 é configurado o assunto e o tamanho da mensagem
Na linha 74 é chamada a rotina para anexar o PDF, passando o packing list, a tabela onde conteudo binário do PDF deve ser colocado e o nome do arquivo a ser lido.
Na linha 78 é chamada a função para envio da mensagem, atenção especial aos seguintes parâmetros:
put_in_outbox: Coloque X se você deseja visualizar a mensagem pela SOST
sender_address: Aqui você informa um email ou nome do usuário SAP, dependendo do que for configurado em sender_address_type.
sender_address_type: Informe SMTP se deseja que o remetente seja um email ou deixe o valor padrão B quando o remetente for um usuário SAP.
sender_address: Aqui você informa um email ou nome do usuário SAP, dependendo do que for configurado em sender_address_type.
sender_address_type: Informe SMTP se deseja que o remetente seja um email ou deixe o valor padrão B quando o remetente for um usuário SAP.
Se você omitir esses dois parâmetros, será utilizado o email do usuário que está executando o programa (ver SU01)
Rotina para anexar PDF
Na linha 122 o arquivo PDF é lido em formato binário através do método GUI_UPLOAD da classe cl_gui_frontend_services.
Na linha 131 o conteudo binário é ajustado para 255 caracteres. Sem esse trecho talvez você enfrente o erro MESSAGE TYPE X.
Na linha 144 o conteúdo binário é adicionado a tabela de conteúdo binário que será passada para a função.
Da linha 146 a 156 o conteúdo binário é configurado no packing list.
Assinar:
Postagens (Atom)