Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
Ponteiro de Memória
Maurício Mião
Consultor BC
Mauricio.miao@procwork.com.br
/conversion/tmp/scratch/414228802.doc Pág. 1
PONTEIRO DE MEMÓRIA
DEFINIÇÃO.......................................................................................................................................................3
IMPLEMENTAÇÃO.........................................................................................................................................3
EXEMPLO BÁSICO..........................................................................................................................................4
EXEMPLO DE UTILIZAÇÃO.........................................................................................................................4
EXERCÍCIO.......................................................................................................................................................5
/conversion/tmp/scratch/414228802.doc Pág. 2
PONTEIRO DE MEMÓRIA
Definição
Ponteiros de memória são estruturas de dados que armazenam endereços de
memória. O valor de um ponteiro é uma posição de memória, enquanto que, por
exemplo, a de um inteiro é um número.
Variável
Ponteiro
valor
e e
Implementação
Pode ser implementado em várias linguagens de programação:
ABAP
FIELD-SYMBOLS <nome> type <tipo>
ASSIGN var to <nome>
Pascal ou Delphi
Var nome ^integer
^nome = @var ( @ = & em C)
/conversion/tmp/scratch/414228802.doc Pág. 3
PONTEIRO DE MEMÓRIA
Exemplo básico
DATA: variavel(10) type c value ‘básico.
FIELD-SYMBOLS <ponteiro> type c.
Exemplo de utilização
DATA:
contador(01) TYPE n VALUE ‘1’.
variavel1(10) TYPE c VALUE ‘UMA’,
variavel2(10) TYPE c VALUE ‘UTILIZAÇÃO’,
nome(09) TYPE c.
FIELD-SYMBOLS <ponteiro> type c.
DO 2 TIMES.
CONCATENATE ‘variavel’ contador INTO nome.
ASSIGN (nome) TO <ponteiro>.
WRITE <ponteiro>.
ADD 1 TO contador.
ENDDO.
Resultado:
UMA UTILIZAÇÃO
/conversion/tmp/scratch/414228802.doc Pág. 4
PONTEIRO DE MEMÓRIA
Caso o nome da variável não exista, o ponteiro é definido como tipo char de 4
posições.
Exercício
Gerar um relatório com base na transação MM03.
Extrair os dados de consumo da visão de Previsão do material, botão Valores de
consumo e imprimi-los de acordo com a seleção do usuário.
Exemplos de seleção :
Período inicial 01.2000 Saída: Consumo de Janeiro, Fevereiro e Março
Tela de seleção:
Material ________
Centro _____
Período inicial ______ (MM.AAAA)
Lay-out do relatório
Nº material
Mês Consumo
01 2,000-
02 0,000
03 1.000,000
/conversion/tmp/scratch/414228802.doc Pág. 5
PONTEIRO DE MEMÓRIA
Exemplo de Resolução
REPORT ZCONSUMO.
DATA:
C_ERRO_START(01) TYPE C.
"- Eventos--------------------------------------------------------------
START-OF-SELECTION.
PERFORM SELECIONA_CONSUMO.
END-OF-SELECTION.
PERFORM VERIFICA_ERRO_START.
PERFORM IMPRIME_RELATORIO.
SELECT *
FROM MVER
UP TO 1 ROWS
WHERE MATNR = P_MATNR AND
WERKS = P_WERKS AND
GJAHR = P_INICIO+0(04).
ENDSELECT.
IF SY-SUBRC <> '0'.
MESSAGE S398(00) WITH 'Dados não encontrados para a seleção'.
MOVE 'X' TO C_ERRO_START.
STOP.
ENDIF.
ENDFORM. " SELECIONA_CONSUMO
/conversion/tmp/scratch/414228802.doc Pág. 6
PONTEIRO DE MEMÓRIA
*&---------------------------------------------------------------------*
*& Form VERIFICA_ERRO_START
*&---------------------------------------------------------------------*
FORM VERIFICA_ERRO_START.
DATA:
N_MES(02) TYPE N,
C_NOME_CAMPO(30) TYPE C.
FIELD-SYMBOLS: <PONTEIRO>.
WRITE / P_MATNR.
ULINE.
MOVE P_INICIO+4(02) TO N_MES.
DO 3 TIMES.
CONCATENATE 'MVER-GSV' N_MES INTO C_NOME_CAMPO.
ASSIGN (C_NOME_CAMPO) TO <PONTEIRO>.
/conversion/tmp/scratch/414228802.doc Pág. 7