Atribuir resultado SELECT para campo-símbolo

votos
2

Eu sou novo para ABAPcodificação e estou confuso a respeito de porque a consulta comentada não funciona.


REPORT  z_hello_world_local.

TYPES:  BEGIN OF bkpf_type,
          xblnr          TYPE bkpf-xblnr,
        END OF bkpf_type.

DATA: t_bkpf                 TYPE TABLE OF bkpf_type.

FIELD-SYMBOLS:  <bkpf>        TYPE bkpf_type.


*This query does not work?
*SELECT xblnr
*      INTO CORRESPONDING FIELDS OF <bkpf> UP TO 1 ROWS
*      FROM bkpf
*      WHERE belnr = '1800001017'.
*    ENDSELECT.
*
DATA: t_xblnr TYPE bkpf-xblnr.

*This query works and in my head it is roughly the same thing.
SELECT SINGLE xblnr
      INTO t_xblnr
      FROM bkpf
      WHERE belnr = '1800001017'.


write 'Done'.

Se eu executar a consulta comentada eu recebo o erro:

Erros de tempo de execução Data GETWA_NOT_ASSIGNED e Time
08/26/2009 19:54:19

símbolo curto campo de texto ainda não foi atribuído.

Qualquer ajuda seria apreciada.

Publicado 27/08/2009 em 01:59
fonte usuário
Em outras línguas...                            


1 respostas

votos
5

Eu acho que o site está escondendo qualquer código que encontra entre <>. Parece que você já declarou um símbolo de campo, mas não posso realmente ver o que você é chamado.

Presumo (com base no erro e as partes do código que eu não posso realmente ver) que você está tentando selecionar dados diretamente em um símbolo de campo. Você não pode fazer isso. Um símbolo de campo não é uma área de memória, é (basicamente) um ponteiro.

Você poderia fazer um dos seguintes procedimentos:

data: wa_bkpf type bkpf_type.

select xblnr
  into corresponding fields of wa_xblnr
  up to 1 rows
  from bkpf
  where xblnr = '1800001017'.
endselect.

ou

field-symbols: < bkpf > type bkpf_type.
append initial line to t_bkpf assigning < bkpf >.
select xlbnr
  into corresponding fields < bkpf >
  up to 1 rows
  from bkpf
  where xblnr = '1800001017'.
endselect.

Neste caso, você está apontando o símbolo campo para uma nova linha que você adicionou à tabela interna.

ou

select xblnr
  into corresponding fields of table t_bkpf
  from bkpf
  where xlbnr = '1800001017'.

Neste caso, você irá recuperar todos os documentos que correspondem e colocá-los diretamente em sua tabela interna.

Respondeu 27/08/2009 em 13:40
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more