" Com o código abaixo conseguiremos trabalha num select comparando dois
" campos com tipos diferentes, kona-knuma é do tipo char10 e o campo
" cdhdr-objectid tem o tipo char90 portanto na hora de fazer a comparação
" e vc apertar Ctrl+f2 ( espero que vcs façam isso toda hora) irá aparecer
" este erro...
" Para que não aconteça isso vc deverá alimentar a primeira tabela e depois
" jogar os dados pra dentro de uma tabela auxiliar onde o campo que vc irá
" usar no select será do mesmo tipo da tabela que vc que pegar os novos dados,
" parece dificil mas é sussa. Debuga este programa e conseguiram ver.
" Espero que vcs tenham dados na tabela KONA, na proxima eu uso outras tabelas.
REPORT zmj_fields_ne.
TYPES :
" Estipulações ...
BEGIN OF ty_kona,
knuma TYPE kona-knuma ," Estipulação
vkorg TYPE kona-vkorg ," Organização de Vendas
vtweg TYPE kona-vtweg ," Canal Distribuição
END OF ty_kona,
" Estipulações aux para comparar tipo no select OBjectid/knuma
BEGIN OF ty_kona_aux,
knuma TYPE cdhdr-objectid," Estipulação
vkorg TYPE kona-vkorg , "Organização de Vendas
vtweg TYPE kona-vtweg , "Canal Distribuição
END OF ty_kona_aux,
" Cabeçalho do documento de modificação
BEGIN OF ty_cdhdr,
objectclas TYPE cdhdr-objectclas, " Classe de objetos
objectid TYPE cdhdr-objectid, " Valor do objeto
changenr TYPE cdhdr-changenr, " Nº modificação do documento
END OF ty_cdhdr
.
" Tabelas Internas ....
DATA : it_kona TYPE TABLE OF ty_kona,
it_kona_aux TYPE TABLE OF ty_kona_aux,
it_cdhdr TYPE TABLE OF ty_cdhdr
.
" Estruturas ...
DATA : st_kona TYPE ty_kona,
st_kona_aux TYPE ty_kona_aux,
st_cdhdr TYPE ty_cdhdr
.
START-OF-SELECTION.
PERFORM : z_seleciona_dados,
z_mostra_dados
.
*&---------------------------------------------------------------------*
*& Form Z_SELECIONA_DADOS
*&---------------------------------------------------------------------*
* Seleciona os dados da tabela
*----------------------------------------------------------------------*
FORM z_seleciona_dados .
" Seleção tabela KONA
SELECT knuma
vkorg
vtweg
FROM kona
INTO TABLE it_kona
.
" Aki tah o pulo do gato ... olhem no form o comentário...
PERFORM z_trata_it_kona_aux.
" Seleção tabela CDHDR conforme dados da tabela IT_KONA_AUX
SELECT objectclas
objectid
changenr
FROM cdhdr
INTO TABLE it_cdhdr
FOR ALL ENTRIES IN it_kona_aux
WHERE objectid = it_kona_aux-knuma.
ENDFORM. " Z_SELECIONA_DADOS
*&---------------------------------------------------------------------*
*& Form Z_TRATA_IT_KONA_AUX
*&---------------------------------------------------------------------*
* Passa os dados da tabela it_kona para a it_kona_aux com tipo do
" campo knuma modificado assim conseguindo compará-los no select.
*----------------------------------------------------------------------*
FORM z_trata_it_kona_aux .
LOOP AT it_kona INTO st_kona.
MOVE-CORRESPONDING st_kona TO st_kona_aux.
st_kona_aux-knuma = st_kona-knuma.
APPEND st_kona_aux TO it_kona_aux.
ENDLOOP.
ENDFORM. " Z_TRATA_IT_KONA_AUX
*&---------------------------------------------------------------------*
*& Form Z_MOSTRA_DADOS
*&---------------------------------------------------------------------*
* Axibe os dados.
*----------------------------------------------------------------------*
FORM z_mostra_dados .
LOOP AT it_cdhdr INTO st_cdhdr.
WRITE st_cdhdr.
ENDLOOP.
ENDFORM. " Z_MOSTRA_DADOS