#1
|
|||
|
|||
Problema con ALV ayuda
sALUDOS A TODOS ESTOY HACIENDO UN REPORTE CON ALV ,PERO TENGO UN PROBLEMA YA QUE AGREGUE 2 CAMPOS EXTRAS A MI TABLA INTERNA DONDE UNO DEPENDE DEL OTRO , ES DECIR DEL VALOR QUE TENGA UNO EN ESTE CASO (PA9111-ITRIBEN ) VOY A COLOCAR UN TEXTO (EFECITO O CHEQUE ) EN UN CAMPO QUE YO INVENTE EN MI TABLA TPT TYPE C.
AHORA UNA VEZ QUE HAGO MI CONSULTA A LAS TABLAS EL CAMPO TPT ME QUEDA VACIO PORQUE DEBO CONSULTAR PRIMERO A MI CAMPO ITRIBEN PARA SABER QUE VALOR VA , PERO CUANDO TRATO DE HACER UN LOOP PARA RECORRER LA TABLA INTERNA ME DICE QUE NO SE PUEDE QUE DEBE IR ACOMPAÑADO DE UN INTO O DE UN ASSSIGN , ES LA PRIMERA VEZ QUE HAGO UN ALV Y DE VERDAD QUE ME ESTA COSTANDO MUCHO ESA TONTERIA , ESPERO ME PUEDAN AYUDAR. |
#2
|
||||
|
||||
ese mensaje te debe salir porque tu tabla interna no la has declarado con cabecera:
DATA: IT_tabla TYPE STANDARD TABLE OF ...... WITH HEADER LINE. O en todo caso puede declarar un área de trabajo ó trabajar con field-symbol
__________________
Luis Lipa
|
#3
|
|||
|
|||
Este Es El Codigo De La Parte Donde Creo Que Hay Problema
report .
*========================== Global definitions ====================* ** * Data Types ** type-pools: slis. types: begin of tp_data , pernr like pa9111-pernr, perfil like pa9111-perfil, finimedemb like pa9111-finimedemb, mtunico like pa9111-mtunico, porsmn like pa9111-porsmn, cibenfr like pa9111-cibenfr, nbbenfr like pa9111-nbbenfr, tribunal like pa9111-tribunal, numofic like pa9111-numofic, fofc like pa9111-fofc, numofcsup like pa9111-numofcsup, status like pa9111-status, bukrs like pa0001-bukrs, abkrs like pa0001-abkrs, ename like pa0001-ename, icnum like pa0185-icnum, intereses like zint_eval-intereses, dsmotemb like z9hrmotemb-dsmotemb, tstatus like z9hrtstemb-tstatus, itriben LIKE pa9111-itriben, tpt TYPE c, end of tp_data, tp_tbl_data type standard table of tp_data . ** * Constants ** ** * Data objects (variable declarations and definitions) ** * Report data to be shown. data: it_data type standard table of tp_data . * Heading of the report. data: t_heading type slis_t_listheader. *======================= Selection Screen ==========================* selection-screen: begin of block b1 with frame title text-t01. DATA: w_aux_bukrs like pa0001-bukrs. SELECT-OPTIONS s_bukrs for w_aux_bukrs OBLIGATORY . DATA: w_aux_abkrs like pa0001-abkrs. SELECT-OPTIONS s_abkrs for w_aux_abkrs OBLIGATORY . DATA: w_aux_pernr like pa9111-pernr. SELECT-OPTIONS s_pernr for w_aux_pernr . DATA: w_aux_begda like pa9111-begda. SELECT-OPTIONS s_begda for w_aux_begda . DATA: w_aux_finimedemb like pa9111-finimedemb. SELECT-OPTIONS s_fini03 for w_aux_finimedemb . DATA: w_aux_status like pa9111-status. SELECT-OPTIONS s_status for w_aux_status . DATA: w_aux_codmotivo like pa9111-codmotivo. SELECT-OPTIONS s_codm05 for w_aux_codmotivo . DATA: w_aux_fofc like pa9111-fofc. SELECT-OPTIONS s_fofc for w_aux_fofc . DATA: w_aux_numofic like pa9111-numofic. SELECT-OPTIONS s_numo07 for w_aux_numofic . DATA: w_aux_tribunal like pa9111-tribunal. SELECT-OPTIONS s_trib08 for w_aux_tribunal . selection-screen: end of block b1. *======================== Event Blocks =============================* at selection-screen. start-of-selection. perform get_data using it_data . end-of-selection. perform build_alv using it_data t_heading. *======================== Subroutines ==============================* *&------------------------------------------------------------------* *& Form get_data *&------------------------------------------------------------------* * Gets the information to be shown in the report. *-------------------------------------------------------------------* form get_data using t_data TYPE tp_tbl_data . *DATA:t_data TYPE tp_tbl_data WITH HEADER LINE. SELECT pa0001~bukrs pa0001~abkrs zint_eval~intereses pa9111~pernr pa0185~icnum pa0001~ename pa9111~perfil pa9111~finimedemb pa9111~mtunico pa9111~porsmn z9hrmotemb~dsmotemb z9hrtstemb~tstatus pa9111~cibenfr pa9111~nbbenfr pa9111~tribunal pa9111~numofic pa9111~fofc pa9111~status pa9111~numofcsup pa9111~itriben INTO CORRESPONDING FIELDS OF TABLE t_data FROM pa9111 as pa9111 inner join pa0001 as pa0001 on pa9111~pernr = pa0001~pernr inner join pa0185 as pa0185 on pa9111~pernr = pa0185~pernr inner join zint_eval as zint_eval on pa9111~pernr = zint_eval~empleado inner join z9hrmotemb as z9hrmotemb on pa9111~codmotivo = z9hrmotemb~codmotivo inner join z9hrtstemb as z9hrtstemb on pa9111~status = z9hrtstemb~status WHERE pa9111~pernr in s_pernr AND pa9111~begda in s_begda and pa9111~endda in s_begda AND pa9111~finimedemb in s_fini03 AND pa9111~status in s_status AND pa9111~codmotivo in s_codm05 AND pa9111~fofc in s_fofc AND pa9111~numofic in s_numo07 AND pa9111~tribunal in s_trib08 AND pa0001~bukrs in s_bukrs AND pa0001~abkrs in s_abkrs . DELETE ADJACENT DUPLICATES FROM t_data. * AQUI ES DONDE QUIERO AGREGAR EL LOOP PARA ACTUALIZAR T_DATA endform. " get_data |
#4
|
|||
|
|||
Como te comenta Luis999 si quieres hacer un loop para tratar las variables debes de crearte una tabla con un workarea o un workarea a parte o utilizar un fieldsymbol.
Lo más rápido sería que en la declaración de la tabla uses: * Report data to be shown. data: it_data type standard table of tp_data WITH HEADER LINE. También podrías declararte un workarea independiente de esta forma: data: wa_data LIKE LINE OF it_data. Un saludo. |
#5
|
|||
|
|||
Podrian Explicarme Un Poco Mas Como Deberia Trabajarlo , Les Agradezco Mucho , Lo Que Me Interesa Es Que T_data Quede Con Los Datos Como Me Interesa Para Que El Proceso No Cambien , Osea Usa Wa_data ( Si Es El Caso ) Como Respostorio Para Agregar El Dato Al Campo Que Esta Vacio Y Luego Regresarlo A T_data. Espero Me Entiendan.
|
#6
|
||||
|
||||
Para que puedas recorrer tu tabla interna , debes declararla de la siguiente forma:
types: begin of t_tabla, campo1 like .... campo2 like..... end of t_tabla. DATA: IT_tabla TYPE STANDARD TABLE OF t_tabla WITH HEADER LINE. Espero que con esto te quede claro
__________________
Luis Lipa
|
#7
|
|||
|
|||
que tal, vos declaraste la tabla que queres recorrer de la siguiente forma (según lo que vi)
data: it_data type standard table of tp_data . El error que te aparece se da porque tu tabla no tiene cabecera o porque no la estas "loopeando" dentro de una estructura. Cuando vos recorres la tabla los datos deberán pasar a una estructura que tiene que tener exactamente los mismos campos y la misma distribución que la tabla. Para esto tenes que crearte una estructura, primero el tipo de estructura types: begin of ty_data, aca ban los campos de la tabla en el mismo orden (campo type tabla-campo,) end of ty_data. Luego debes crear la estructura data: wa_data type ty_data. (del tipo que creaste recién). Si todo está bien tenés una estructura que contiene los mismos campos que la tabla, ahora debés realizar el LOOP. Para esto debes hacer el LOOP tutabla into wa_data. (La estructura que creaste). Cada registro de la tabla pasará a la estructura y si tenes que trabajar con los datos trabajas directamente con la estructura, se entiende? Salduos |
#8
|
||||
|
||||
Presisamente ANICO antes de hacer el SELECT tienes comentada (*) una linea de como se debe declarar una tabla con linea de cabecera para que te permita hacer un Loop, asi es como se debe declarar la tabla
form get_data using t_data TYPE tp_tbl_data . *DATA:t_data TYPE tp_tbl_data WITH HEADER LINE. SELECT pa0001~bukrs .... saludos |
Herramientas | Buscar en Tema |
Desplegado | |
|
|