* Opa pessoal, vou mostrar hoje uma técnica usado bastante em programas
* standards que é usar performs de outros programas como se fosse uma
* função, eu vou usar um simples pra vocês pegarem o conceito depois é
* só ir pro abraço, assim vc não vai precisar fazer a mesma rotina pra
* varios programas, a idéia é fazer em um programa e depois utilizar o
* mesmo perform pros outros programas.
*&---------------------------------------------------------------------*
*& Programa 1
*&---------------------------------------------------------------------*
REPORT zprogram_001.
DATA :
v_value(6) TYPE c.
v_value = '000123'.
BREAK-POINT.
PERFORM f_trata_numero CHANGING v_value.
*&---------------------------------------------------------------------*
*& Form f_trata_numero
*&---------------------------------------------------------------------*
FORM f_trata_numero CHANGING valor.
* Tratativa do valor.
PACK valor TO valor.
condense valor.
break-point.
ENDFORM. " f_trata_numero
*&---------------------------------------------------------------------*
*& Programa 2
*&---------------------------------------------------------------------*
REPORT zprogram_002.
DATA :
v_variavel(8) TYPE c.
v_variavel = '00000010'.
BREAK-POINT.
* Aqui que tá o pulo do gato.... reparem que o nome do programa 'DONO'
* do perform (zmauro), aparece do lado do perform (f_trata_numero).
* Outra coisa importante de perceber é que a variáveis são diferentes
* entre os programas mas mesmo assim funciona.
PERFORM f_trata_numero(zprogram_001) CHANGING v_variavel.
BREAK-POINT.
* Isso é dahora, mas não trabalhem com isso se não souberem bem o que
* estão fazendo, pois a rotina que você está pegando de outro programa
* pode retornar o que você quer mas no meio do processo ele pode
* modificar algo que não tem nada a ver com o que você está fazendo,
* portanto é melhor usar uma função mesmo, mas tá aí uma ferramenta
* legalzinha.
* standards que é usar performs de outros programas como se fosse uma
* função, eu vou usar um simples pra vocês pegarem o conceito depois é
* só ir pro abraço, assim vc não vai precisar fazer a mesma rotina pra
* varios programas, a idéia é fazer em um programa e depois utilizar o
* mesmo perform pros outros programas.
*&---------------------------------------------------------------------*
*& Programa 1
*&---------------------------------------------------------------------*
REPORT zprogram_001.
DATA :
v_value(6) TYPE c.
v_value = '000123'.
BREAK-POINT.
PERFORM f_trata_numero CHANGING v_value.
*&---------------------------------------------------------------------*
*& Form f_trata_numero
*&---------------------------------------------------------------------*
FORM f_trata_numero CHANGING valor.
* Tratativa do valor.
PACK valor TO valor.
condense valor.
break-point.
ENDFORM. " f_trata_numero
*&---------------------------------------------------------------------*
*& Programa 2
*&---------------------------------------------------------------------*
REPORT zprogram_002.
DATA :
v_variavel(8) TYPE c.
v_variavel = '00000010'.
BREAK-POINT.
* Aqui que tá o pulo do gato.... reparem que o nome do programa 'DONO'
* do perform (zmauro), aparece do lado do perform (f_trata_numero).
* Outra coisa importante de perceber é que a variáveis são diferentes
* entre os programas mas mesmo assim funciona.
PERFORM f_trata_numero(zprogram_001) CHANGING v_variavel.
BREAK-POINT.
* Isso é dahora, mas não trabalhem com isso se não souberem bem o que
* estão fazendo, pois a rotina que você está pegando de outro programa
* pode retornar o que você quer mas no meio do processo ele pode
* modificar algo que não tem nada a ver com o que você está fazendo,
* portanto é melhor usar uma função mesmo, mas tá aí uma ferramenta
* legalzinha.