"
Apoiado por

O estranho caso da estrutura parcialmente protegida

Estava a tentar actualizar uma linha de uma SORTED TABLE e não estava a conseguir.

Tudo parecia estar certo porque eu não estava a tentar alterar nenhum campo da chave.
Mesmo assim não funcionava.

Porquê?

O código rezava assim:


DATA: t_t001 TYPE SORTED TABLE OF t001 WITH UNIQUE KEY bukrs.
FIELD-SYMBOLS:  LIKE LINE OF t_t001.

SELECT * FROM T001 INTO TABLE t_t001.

READ TABLE t_t001 ASSIGNING  INDEX 1.

faz_algo( CHANGING cs_t001 =   ).

O resultado? Um enorme DUMP!

Primeiro fiquei baralhado mas depois decidi ler com cuidado a explicação detalhada do dump e falava lá claramente em estruturas parcialmente protegidas, como é o caso de ponteiros (vulgo field-symbols) para tabelas SORTED.

Interessante, não?

Então tive esta ideia:


READ TABLE t_data ASSIGNING  INDEX 1.

s_data = .        " <<-------- Faço uma cópia dos dados

faz_algo( CHANGING cs_data = s_data ). <--- mando a cópia

DELETE TABLE t_data FROM  USING KEY primary_key.  <- apago o original da tabela

INSERT s_data INTO TABLE t_data. <- insiro a cópia actualizada

Reconheço que não é a coisa mais bonita e eficiente do mundo. Mas que funcionou, funcionou.

Felizmente não precisei de usar esta solução feia e obtusa porque reorganizei o código à sua volta e estes dados foram encapsulados de forma a já não terem de ser passados desta forma.

Mesmo assim, o lado bom de ter esbarrado com isto foi ter ficado familizariado com este conceito de estruturas parcialmente protegidas. E agora tu, querido leitor, também estás.

O Abapinho saúda-vos.

Deixe um comentário


Acerca do Abapinho
O Abapinho é suportado pelo WordPress
Artigos (RSS) e Comentários (RSS).