quinta-feira, 12 de setembro de 2013

Como criptografar um programa ABAP (SAP)











Para criptografar um programa ABAP é muito simples mas perigoso....

Na primeira linha do código basta colocar alguns caracteres especiais, que são :

*@#@@[SAP] 

Mas tome cuidado, pois, uma vez feita a criptografia, não da para voltar mais atrás... 

Por isso, mantenha uma cópia/backup do fonte em local seguro

Exemplo:
*---------------------------------------------------------------------** Report  ZTESTE_CRIPTO*---------------------------------------------------------------------**@#@@[SAP]REPORT  ZTESTE_CRIPTO.

    message id 'ZQM' type 'E' number '001'"e001(zqm).   "'Só o autor poderá encerrar a nota.' TYPE 'E'.

Porque os projetos de ERP fracassam

Companheiros,

A notícia "Porque os projetos de ERP fracassam", elaborada por Rodrigo Caetano, da Computerworld (19/08/09), comenta sobre a complexidade de se implantar sistemas de gestão, lista uma série de erros cometidos durante a implantação de sistemas de gestão e, o mais importante, nos fornece dicas importantes sobre como solucionar estas falhas. Trata-se, portanto, de um texto claro e sucinto, servindo de alerta para as nossas práticas diárias envolvendo desenvolvimento, comercialização, implantação e suporte de soluções ERP.
 


Especialistas apontam os principais erros cometidos pelas empresas em implantações de sistemas de gestão.
Grandes projetos, grandes problemas. Não importa a metodologia utilizada, a ferramenta escolhida e o tamanho da equipe. É comum, até demais, que implementações de sistemas de gestão (ERP) fracassem. Prazos são estourados, orçamentos vão muito além do limite e os resultados não correspondem às expectativas das áreas de negócios.
Mesmo projetos bem sucedidos enfrentam problemas no seu decorrer. Sejam eles motivados pela cultura da empresa, por mau planejamento ou briga de egos, os percalços acabam custando caro para as companhias. Afinal, no mundo dos negócios, tempo é dinheiro e sistema que não funciona é igual a processos que não funcionam.
Segundo a consultoria Gartner, a segunda maior prioridade dos executivos de tecnologias para este ano é implementar ou atualizar o sistema de gestão. A vice-presidente de pesquisas da empresa, Ione Coco, afirma que o cenário não deve mudar, pelo menos, até 2012. O que leva a uma reflexão: apesar de tão importantes, por que os projetos de ERP fracassam?
Apontar uma razão principal é difícil, mas, segundo especialistas, existem alguns fatores comuns encontrados nas empresas que, fatalmente, levam ao mau resultado. O primeiro não tem nada a ver com questões técnicas, mas sim com a cultura das organizações. Segundo Ione, as empresas, e principalmente os departamentos de TI, precisam saber o que esperar de um projeto. Estimativas altas demais, ou mesmo com foco errado, comprometem todo o trabalho, não importa se foi bem feito.
Para o sócio da consultoria Mondo Strategies, especializada em gestão integrada de software, Ernani Ferrari, o problema das estimativas ainda vai além do resultado. As empresas têm dificuldades para prever a quantidade de tempo e recursos necessários para a conclusão do projeto. Como conseqüência, tendem a acelerar uma das pontas do processo, pulando etapas e cortando custos, prejudicando as demais.
Em apresentação feita durante evento promovido pela Associação de Usuários SAP do Brasil (Asug), entidade que reúne clientes da fornecedora alemã de sistemas de gestão, o diretor do capítulo São Paulo do Project Management Institute (PMI), Paulo Moraes, apontou alguns pontos que fazem a diferença na hora de iniciar um projeto. O PMI é uma associação sem fins lucrativos que desenvolve estudos sobre o gerenciamento de projetos. Área onde, geralmente, começam os problemas.
Confira as dicas do executivo: 
  • Falta de uma camada de gerenciamento de projetos: no mínimo, a empresas precisa conhecer as melhores práticas de gerenciamento descritas no PMBOK, principal publicação feita pelo PMI. Mas, qualquer metodologia serve, desde que esteja presente. 
  • Falha no planejamento do projeto: essa talvez seja a fase mais crítica de um projeto. Segundo Moraes, as empresas não pode ter preguiça de escrever, fazer diagramas, relatórios, etc.
  • Processos críticos de negócios mal definidos: quase uma conseqüência do mau planejamento. Fatalmente, caso isso aconteça, a empresa terá de fazer mudanças no sistema depois de estar pronto. 
  • Falha em detalhar os processos nas pontas: caso a empresa não conheça exatamente a rotina das pessoas que vão, de fato, utilizar o sistema, fatalmente fará algo inútil ou complicado demais. 
  • Falta de envolvimento do pessoal das pontas: Moraes conta uma história curiosa. Determinada empresa, após implementar um novo ERP, começou a ter problemas com a qualidade dos dados. Após meses de investigação, descobriu que os operadores de empilhadeira, responsáveis pela coleta dos dados nos armazéns da companhia, não conseguiam digitar corretamente nos computadores de mão por usarem luvas. Este pequeno detalhe acabava comprometendo todo o processo. 
  • Falha em preparar o sistema para aguentar os picos de utilização: nenhum sistema é utilizado com a mesma freqüência o tempo inteiro. É preciso saber o quanto ele aguenta e quanto terá de aguentar  quando for exigido em carga máxima. 
  • Evangelizar os patrocinadores do projeto: tudo tem de estar escrito. “Se não está explicitamente indicado, está implicitamente excluído”, afirma Moraes. Todos os envolvidos no projeto precisam ter consciência do que está no papel e saber que é isso que será realizado, nada menos, nada mais. 
  • Iniciar a implantação antes de definir o escopo: nada acontece antes que o cronograma e os recursos estejam bem definidos e formalmente aprovados. 
  • Estouro do escopo: estratégias e cenários econômicos mudam, mas não é possível modificar o projeto a cada novidade de mercado. Por isso é fundamental ter um sistema bem definido de gerenciamento de mudanças. 
  • Grandes modificações de software padrão: um sistema SAP, segundo Moraes, faz muita coisa. Antes de modificar o software, certifique-se, realmente, que isso é necessário. 
  • Falhas de testes: de 20% a 40% do tempo total de projeto deve estar reservado para os testes. E eles só são válidos se forem devidamente documentados. 
  • Falta de treinamento: é um erro reduzir o custo do projeto cortando o treinamento. É necessário ter um plano de treinamento, que serve, também, para avaliar o conhecimento dos usuários. 
  • Falhas ao carregar os dados no sistema: um sistema ERP gera mudanças culturais na empresa. Muitas vezes, os funcionários estão acostumados a usar diversos sistemas legados, cada um referente a uma determinada época. Por isso é preciso definir o alcance do novo sistema. Falta de dados também é um problema. Se um usuário diz que precisa trabalhar com determinada informação, não significa, necessariamente, que ela exista. 
  • Falha no “cut over”: a data de inauguração do novo sistema, e desligamento de antigo, deve estar definida e o processo planejado. É impossível fazer isso sem causar impacto. Este plano tem de ser discutido já na fase de planejamento do projeto. 
  • Falhas após o “go live”: depois de estar tudo funcionando, não é difícil se deparar com um time de suporte mal dimensionado. Outros problemas são a falta de documentação e falhas no entendimento das responsabilidades dos envolvidos. 
  • Deixar os testes para depois do “go live”: testes devem ser feitos durante a fase de testes. Testar quando o usuário está precisando da ferramenta dará dor de cabeça, com absoluta certeza.

quinta-feira, 18 de abril de 2013

O que é mensageria

Mensageria ou Messaging consiste na utilização de mensagens para estabelecer a comunicação síncrona ou assíncrona entre aplicações. 




Em messaging, uma mensagem pode ser definida como uma estrutura de dados composta por meta-dados como host de origem/destino, fila de destino, etc, além de dados fornecidos pela aplicação, por exemplo os dados de um cliente a ser cadastrado. 

Em geral, a arquitetura do ambiente tem um componente chamado Message Queue Manager (Gerenciador de Filas de Mensagens) onde são criadas as Queues (Filas) que serão utilizadas para as aplicações enviarem (PUT) ou pegarem mensagens (GET). Ele também se encarrega de gerenciar as camadas mais baixas de comunicação (TCP/IP, ou outros protocolos, etc). 

A vantagem dessa arquitetura é principalmente a garantia de que todas as transações serão cumpridas a medida que o hardware que roda a aplicação se disponha a processá-las, ou seja, nada será perdido caso haja indisponibilidade em algum ponto da comunicação. Os Message Queue Mangers conseguem garantir a entrega das mensagems. Além disso, é um método organizado para se integrar aplicações. 

Algumas aplicações práticas de Mensageria que já tive contato foram em ambientes de telefonia móvel para envio de SMS (apesar do termo mensageria não ser intrínseco a "mensagens de celular"), sincronia de banco de dados, integração de aplicações que falam "idiomas" diferentes (por exemplo, uma aplicação SAP e outras aplicações de naturezas diferentes). 
Alternativas de mensageria são principalmente Websphere Message Queue da IBM, a Apache também possui uma aplicação que não me recordo agora. Em J2EE você tem acesso aos recursos de mensageria através do JMS, mas nunca cheguei a trabalhar efetivamente com isso. 

quinta-feira, 3 de janeiro de 2013

Como testar parâmetros do BDE




Inclua na seção uses: BDE, Registry, SysUtils, Windows

uses BDE, Registry;

{ retorna o valor do parâmetro  DLL32, pode validar se é igual a '"SQLORA32.DLL' }

function TBBDEOracleDLL32: String;
const
  BdeKey = 'SOFTWARE\Borland\Database Engine\Settings\DRIVERS\ORACLE\INIT';
  Ident = 'DLL32';
var
  Reg: TRegistry;
begin
  Result := '';
  reg := TRegistry.Create(KEY_READ);
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    if Reg.OpenKey(BdeKey, False) then
      if Reg.ValueExists(Ident) then
        Result := UpperCase(Reg.ReadString(Ident)); // = 'SQLORA32.DLL';
  finally
    Reg.Free;
  end;
end;


// A função foi criada para mostrar o resultado da função, mas poderia ser validado o resultado e abortar o // sistema
procedure TForm1.Button1Click(Sender: TObject);
begin

{ Use-a como abaixo: }
//if  then
  { Local Share está TRUE }
  Showmessage('O parametro DLL32 esta parametrizado como '+ TBBDEOracleDLL32);
//else
  { Local Share está FALSE }
//    Showmessage('Diferente DLL32');

end;

DLL em Delphi 7 pChar para Delphi 2009 PAnsiChar (Mas retorna um caractere)

Antes de você encontrar a parte técnica, é interessante saber o motivo da incompatibilidade entre o Pchar do D7 e D2009. É que o D2009 é Unicode (aceita caracteres especiais, no nosso caso utilizamos o russo e foi somente possível no D2009).


 Ao invés de utilizar pChar na DLL tem que utilizar PAnsiChar.  
è  (Manter a compatibilidade as alterações da DLL foram feitas e compiladas no Delphi 7.0)

A DLL – Declaração da função
Delphi 7.0
//function flGerarSenhaDB(hWnd: HWND; const lpPathPalavraChave, lpDataBase: pChar): pChar; stdcall;
Delphi 2009
function flGerarSenhaDB(hWnd: HWND; const lpPathPalavraChave, lpDataBase: pAnsiChar): pAnsiChar; stdcall; 


Declaração nos Programas que utilizam a DLL

Delphi 7.0
flGerarSenhaDB: function(hWnd: HWND; const lpPathPalavraChave : PChar; lpDataBase: PChar): PChar; stdcall;
Delphi 2009
flGerarSenhaDB: function(hWnd: HWND; const lpPathPalavraChave : PAnsiChar; lpDataBase: PAnsiChar): PAnsiChar; stdcall;

Na declaração a utilização do PAnsiChar, foi suficiente para funcionar. Mas na execução retornava somente 1 (um) caractere foi necessário a utilização da função AnsiString. Bingo funcionou...

Chamada para executar função da DLL
Delphi 7.0
flGerarSenhaDB( Application.Handle, PChar(sPathPalavra), PChar(sNmDataBase) );
Delphi 2009
flGerarSenhaDB(Application.Handle, PAnsiChar(AnsiString(sPathPalavra)), PAnsiChar(AnsiString(sNmDataBase)) );

quinta-feira, 27 de dezembro de 2012

Como acessar o Firebird pelo Visual Studio


Para o projeto funcionar, basta acertar a localização do banco de dados no Web.Config

Pode baixar a versão em :


ou



Baseado no treinamento que fizemos, segue um exemplo que acessa, inclui e atualiza SQL Server e Firebird no mesmo projeto. No projeto foi utilizado classes modelo DAL (DALFB.cs).

Para acessar o Firebird, utilizei o NetProvider, que esta anexo, segue o link : http://www.firebirdsql.org/en/net-provider/ (Utilizei a ultima versão 2.7.7)


è No projeto já tem a referencia...

A diferença que tem nesse projeto para acessar o Firebird é que deve ser feito um “Add Reference...” na DLL que tem as funções necessárias para acesso e gravação no FireBird.

Neste projeto já esta adicionado a referencia.

Oracle - Como criar Script para eliminar sessões


Essa select tem o objetivo de avaliar se existem sessões presas em um determinado usuário, retorna o Script pronto para eliminar as mesmas.

Basta executar e melhorar a performance de seu BD Oracle...

SELECT s.inst_id,
       s.sid,
       s.serial#,
       p.spid,
       s.username,
       s.program,
       s.STATUS,
       s.OSUSER,
       'ALTER SYSTEM KILL SESSION '''||s.SID||','||s.SERIAL#||''';'
FROM   gv$session s
       JOIN gv$process p ON p.addr = s.paddr AND p.inst_id = s.inst_id
where  s.username = 'USER_NAME';