SAP – Temporary Subroutines – Special Techniques – Abap

Publicado: 11 de maio de 2014 em Abap

Em ABAP existem técnicas especiais que permitem criar além de programas dinâmicos como vimos no post anterior como também sub-rotinas temporárias. Você pode usar a instrução GENERATE SUBROUTINE POOL para criar sub-rotinas temporárias.

Esta declaração cria um pool de sub-rotina na área de memória principal do programa em execução. Você passa o código fonte do pool de sub-rotina para a tabela interna. A instrução retorna o nome do pool de sub-rotina gerada em um campo <prog> que deve ter tipo C. Você usa o nome contido em <prog> para chamar as sub-rotinas externas definidas na tabela interna através de chamadas de sub-rotinas dinâmicas.

Código Dinâmico

Código Dinâmico

Exemplo:

Neste exemplo criamos uma sub-rotina temporária na memoria do programa em execução.

Abap

*&---------------------------------------------------------------------*
*& Report  ZDINAMIC_INCLUDE
*&
*&---------------------------------------------------------------------*
*& Desenvolvimento Aberto
*& Sub-rotinas Temporarias
*& Procedimento Dinamico - Tecnicas Especiais ABAP
*&---------------------------------------------------------------------*

REPORT  ZDINAMIC_INCLUDE.

* Cria variavel para rotina
DATA Codigo(72) OCCURS 11.

* cria variaveis para menssagem
DATA : Programa(16),
       Menssagem(150),
       Linha(3),
       Palavra(10),
       Desvio(3).

* Cria código dinamico
APPEND '* Desenvolvimento Aberto' TO CODIGO.
APPEND '* ----------------------' TO CODIGO.
APPEND '* ABAP Special Techniques ' TO CODIGO.
APPEND '*' TO CODIGO.
APPEND '* Subrotina temporaria' TO CODIGO.
APPEND '' TO CODIGO.
APPEND 'PROGRAM SUBROTINA.' TO CODIGO.
APPEND 'FORM MINHASUB.' TO CODIGO.
APPEND 'WRITE : / ''Está é minha subrotina temporaria'' COLOR 6.' TO CODIGO.
APPEND 'ENDFORM.' TO CODIGO.

* Gera subrotina
GENERATE SUBROUTINE POOL CODIGO
                    NAME PROGRAMA
                    MESSAGE MENSSAGEM
                    LINE LINHA
                    WORD PALAVRA
                    OFFSET DESVIO.

* Verifica retorno
IF SY-SUBRC <> 0.

* Se houver erro:
 WRITE: / 'ERRO na geração da linha', LINHA,
        / MENSSAGEM,
        / 'Word:', PALAVRA, 'at offset', DESVIO.
ELSE.

*  Se houver sucesso:
 WRITE: / 'Técnicas Especiais ABAP - Sub-rotinas temporarias'.
 SKIP 1.
 WRITE: / 'O nome da sub rotina é ' COLOR 3, PROGRAMA COLOR 5.
 SKIP 2.
 PERFORM MINHASUB IN PROGRAM (PROGRAMA).

ENDIF.
Publicidade

Deixe um comentário

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

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. 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