SAP – Abap Javascript – CL_JAVA_SCRIPT – Get e Set – Abap

Publicado: 22 de abril de 2014 em Abap

Com a evolução dos meios de comunicação, a internet, a mobilidade de informação e novos dispositivos sendo criados, nos dias de hoje é essencial que uma linguagem de programação se adapte para continuar competitiva.  O Abap possui já há algum tempo uma integração com a poderosa e quase unanime linguagem de programação para web, o Javascript e apesar do Abap ainda não suportar as versões mais recentes da linguagem possui alguns recursos excelentes que ajudam na programação Abap Javascript, como por exemplo compilar uma linguagem que é interpretada, facilitando muito para o programador encontrar erros já que o Abap neste caso fica responsável pelas mensagens de erro desta compilação, que ao contrario dos Browsers, simplesmente ignoram uma instrução com erro deixando a cargo do programador descobrir o motivo que levou a não execução do script.

Abap JavaScript

Abap JavaScript

 

JavaScript  

É uma linguagem leve, interpretada e baseada em objetos com funções de primeira classe, mais conhecida como a linguagem de script para páginas Web, mas usada também em vários outros ambientes sem browser como node.js ou Apache CouchDB. É uma linguagem de script multi paradigma,  baseada em protótipo que é dinâmica, e suporta estilos de programação orientado a objetos, imperativo e funcional.

ABAP JavaScript

Programas ABAP JavaScript permitem executar e também permitem a transferência de dados entre ABAP e JavaScript.  A classe CL_JAVA_SCRIPT implementa uma API que pode ser usada em programas ABAP como um motor JavaScript (JS), implementado no kernel do SAP. A classe encapsula a API JavaScript C Engine e fornece ao programador ABAP métodos e atributos que podem ser usados ​​para executar programas em JavaScript no servidor de aplicativos do sistema R/3 no modo normal ou depuração (Scripting do lado do servidor). O motor de JavaScript em uso suporta JavaScript Versão 1.5. Variáveis ​​do script pode ser ligado a objetos de dados do programa ABAP (Bind).

Get

uma variável global do contexto JavaScript. A variável global pode ter sido criada anteriormente ou com o método SET ou executando um script do contexto. As propriedades de um objeto não pode ser acessados. A variável global deve ser uma propriedade do objeto raiz.

Set

Define uma variável global do contexto JavaScript para um valor. Se a variável ainda não está disponível, ela é criada com o nome especificado. A variável pode ser acessada enquanto todos os scripts compilados de um mesmo contexto estão sendo executados e com o método GET. Somente as propriedades do objeto raiz pode ser definida com SET.

Limitações

O Java Script é regulamentado pelo padrão ECMAScript. Desde 2012, todos os navegadores modernos possuem suporte total ao ECMAScript 5.1. Navegadores mais antigos suportam pelo menos ECMAScript 3. Existe uma 6ª versão do padrão sendo desenvolvida no momento. Sendo assim Abap JavaScript não suporta todos os recursos atuais como por exemplo alguns recursos de manipulação de arrays através do seu protótipo usando a instrução MAP incluída pelo ECMAScript 3, você encontra o seguinte erro:

Erro de execução de script: CL_JAVA_SCRIPT, Rcode: (   600 ), Type Error objeto.map is not a function.

Exemplo:

Neste exemplo criamos um objeto instanciado da classe cl_java_script e criamos um objeto Abap e um javascript em tempo execução e passamos e retornamos parâmetros para este script através do objeto Abap.

Abap

*&---------------------------------------------------------------------*
*& Report  ZJAVASCRIPT
*&
*&---------------------------------------------------------------------*
*& Desenvolvimento Aberto
*& Abap integrado com JavaScript
*&---------------------------------------------------------------------*

REPORT  ZJAVASCRIPT.

* Declara objetos javascript e scripts
DATA:  Get_valor TYPE string,
       JS_Objeto TYPE REF TO CL_JAVA_SCRIPT,
       MeuScript TYPE String.

* Cria Script
CONCATENATE
' function quadrado(x) { return x * x}; '
' var resultado = quadrado(mapa) '
INTO MEUSCRIPT SEPARATED BY  CL_ABAP_CHAR_UTILITIES=>CR_LF.

* Cria objeto javascript
JS_OBJETO = CL_JAVA_SCRIPT=>CREATE( ).

* Compila objeto javascript
JS_OBJETO->COMPILE(
  exporting
    SCRIPT_NAME = 'script.js'
    SCRIPT      = MEUSCRIPT ).

* Verifica compilação
if JS_OBJETO->LAST_CONDITION_CODE <> 0.
  write: / 'Erro de compilação de script',
           JS_OBJETO->LAST_ERROR_MESSAGE.
else.
  write / 'foi compilado com sucesso'.
endif.

skip.

* Define um valor de variavel atravez do ABAP
JS_OBJETO->SET( NAME = 'mapa' VALUE = '5' ).

* Executa Javascript
JS_Objeto->EXECUTE(
              exporting SCRIPT_NAME = 'script.js' ).

* Verifica se script foi executado
if JS_OBJETO->LAST_CONDITION_CODE <> 0.
  write: / 'Erro na execução de script',
           JS_OBJETO->LAST_ERROR_MESSAGE.
else.
  write / 'JavaScript foi executado com sucesso'.
endif.

skip.

* Retorna valor de script

GET_VALOR = JS_OBJETO->GET( NAME = 'resultado' ).

* Verifica se o objeto retornou um valor
if JS_OBJETO->LAST_CONDITION_CODE <> 0.
  write: / 'Erro em recuperar objeto javascript',
           JS_OBJETO->LAST_ERROR_MESSAGE.
else.
  write: / 'Valor do objeto :', GET_VALOR.
endif.

skip.
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s