Há quase dois anos, apresentei uma variante de como usar Visual Basic dentro do ABAP
aqui
. O mesmo exemplo, mas com versões atualizadas, foi apresentado
aqui
. Esta foi a razão para verificar e melhorar as possibilidades de usar linguagens .NET dentro do ABAP.
Quais são as diferenças?
-
Além do exemplo de código em Visual Basic, também implementei um exemplo de código equivalente em C#.
-
As diferentes partes de código agora são divididas em includes separados. Portanto, você pode copiar e colar seu código em C# ou Visual Basic diretamente do seu IDE local para o include do ABAP, sem a necessidade de modificações.
-
A função para ler um include como string agora é um método de uma classe local.
-
A inicialização do framework PowerShell, através da
biblioteca ActiveXPoshV3 da SAPIEN
, também é agora um método de uma classe local.
-
As chamadas aos métodos da linguagem .NET a partir do ABAP agora são muito fáceis e flexíveis a partir de qualquer ponto do seu código ABAP.
Em primeiro lugar, uma pequena impressão visual:
Aqui está o código, o primeiro código é o include ZCODEINCLUDE que contém o código em C#.
...
Como você pode ver, é exatamente o mesmo exemplo que o código em Visual Basic das postagens anteriores.
Agora o código do PowerShell, para carregar a classe, do include ZPSINCLUDE:
#-Begin-----------------------------------------------------------------
...
Por último, mas não menos importante, o código ABAP:
...
Vamos começar com um comentário principal. Primeiro, inicializamos o ambiente do PowerShell com o método Init e definimos o buffer de saída como destino. O método Init cria um objeto OLE de
SAPIEN.ActiveXPoSHV3,
faz algumas configurações e fornece o objeto OLE. Agora lemos o código da linguagem .net, através do método ReadInclAsString, do include ZCODEINCLUDE, que contém o código em C#. Em seguida, lemos o código do PowerShell do include ZPSINCLUDE e o concatenamos com o código da linguagem .net na variável lv_PSCode. Estas foram as preparações para chamar agora qualquer método da classe C# dentro do ABAP.
Agora podemos concatenar lv_PSCode com qualquer possível chamada de método e executá-lo, aqui eu uso a variável lv_PSCodeExec.
Por último, lemos o buffer de saída em uma variável e limpamos o buffer de saída. Se você precisar de um resultado de uma chamada de método, deve usar este procedimento imediatamente após a chamada do método.
Como você pode ver, é muito fácil usar linguagens .NET, com todas as suas possibilidades do framework .net, dentro do ABAP. E se você armazenar a biblioteca através de
BinFile2ABAP
em seu servidor de aplicativos, você pode criar soluções fantásticas sem nenhum requisito especial para o servidor frontend, exceto os padrões habituais: Windows, framework .net e PowerShell.