PDA

Ver la Versión Completa : CATALOGO ALV OO sin crear TABLA Z EN EL DICCIONARIO


Jonathan Barrio
05/11/09, 08:07:18
Buenos Días,
un placer volver por estos fueros ( sobre todo si es para ver si me pueden echar una mano ). CONSULTA:

¿ Cómo creo el CATALOGO de un ALV por OBJETOS sin hacer referencia a un OBJETO DEL DICCIONARIO DE DATOS ? -Ej, referenciar a tabla interna, sería una solución.

No puedo usar la siguiente funcion porque el cliente no permite hacer tablas ásí como así, solo si está ampliamente justificado :confused:

Introduciendole el parametro "i_internal_tabname " no me funciona y me devuelve el mensaje "No se ha podido definier catálogio" (cuando no un dump )
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
* i_structure_name = 'EABLG'
i_internal_tabname = 'LI_STDR_ML10'
i_buffer_active = 'X'
* i_bypassing_buffer = 'X'
CHANGING
ct_fieldcat = g_fieldcatalog
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.

Para colmo... me he dado cuenta que no se debe usar esta función, no está liberada como podeis ver en la imagen adjunta :eek:
http://www.mundosap.com/foro/images/attach/jpg.gif

Vaya jarro de agua fr'ia!! Llevo mucho tiempo usandola.

ballan
05/11/09, 09:36:14
No necesitas crear una tabla, tan solo tienes que crear una estructura con los campos y luego a la LVC_FIELDCATALOG_MERGE pasarle el nombre de la estructura en el parametro I_STRUCTURE_NAME

DavidXD_XD
05/11/09, 13:56:54
Hola doc .. como dice Ballan puedes crear la estructura Z y desde ahi jalarla, siempre q he querido poner una tabla interna en esa funcion nunca me ha botado el catalogo (tal vez tbm lo toy haciendo mal), creo q es xq nunca me pide como parametro el nombre del programa y no hay como saber d donde sacar esa tabla interna, el que si lo hace bien es la funcion REUSE_ALV_FIELDCATALOG_MERGE, ahi colocas el nombre del programa y la tabla interna y te botara el catalogo, pero ese catalogo es con referencia a la libreria SLIS que sirve para crear el ALV pero con las funciones REUSE*, podrias hacer eso y luego realizar un MOVE-CORRESPONDING hacia el catalogo del tipo lvc_t_fcat.

PD: Creo q no tiene nada q ver la fecha de liberación, hay otras funciones q tampoco tienen fecha de liberación y funcionan perfectamente :D

diegoalejo
05/11/09, 15:16:32
Hombre te cuento que yo siempre trabajo mis reportes ALV con ALV OM.
ALV OM es más rápido, mejor mantenimiento, más natural....
te recomiendo le des una mirada a estos DEMO de Sap para las ALV OM...

NOTA: deberías empezar en este Orden...

SALV_DEMO_TABLE_REAL_SIMPLE
SALV_DEMO_TABLE_SIMPLE
SALV_DEMO_TABLE_SELECTIONS
SALV_DEMO_TABLE_POPUP
SALV_DEMO_TABLE_COLUMNS
SALV_DEMO_TABLE_EVENTS
SALV_DEMO_TABLE_FORM_EVENTS
SALV_DEMO_TABLE_FUNCTIONS
SALV_DEMO_TABLE_REFRESH
SALV_DEMO_LAYOUT_SERVICE
SALV_DEMO_METADATA
SALV_DEMO_TABLE_LAYOUT
SALV_DEMO_TABLE_RECURSION
SALV_DEMO_COMPLICATED_DATATYPE
SALV_DEMO_HIERSEQ_COLUMN
SALV_DEMO_HIERSEQ_EVENTS
SALV_DEMO_HIERSEQ_FORM_EVENTS
SALV_DEMO_HIERSEQ_FUNCTIONS
SALV_DEMO_HIERSEQ_LAYOUT
SALV_DEMO_HIERSEQ_POPUP
SALV_DEMO_HIERSEQ_RECURSION
SALV_DEMO_HIERSEQ_REFRESH
SALV_DEMO_HIERSEQ_SELECTIONS
SALV_DEMO_HIERSEQ_SIMPLE
SALV_DEMO_TREE_DATA_UPDATE
SALV_DEMO_TREE_EVENTS
SALV_DEMO_TREE_FUNCTIONS
SALV_DEMO_TREE_METADATA
SALV_DEMO_TREE_SELECTIONS
SALV_DEMO_TREE_SETTINGS
SALV_DEMO_TREE_SIMPLE

Por mundo Abap orientado a Objetos.
Si tienes alguna inquietud no dudes en preguntar...

Jonathan Barrio
08/11/09, 19:08:44
Lo primero, muchas gracias por vuestra ayuda. Leí las repuestas pero no he podido postear hasta ahora. Igual os hace gracia como termino las cosa... :p

Ballan:
No necesitas crear una tabla, tan solo tienes que crear una estructura con los campos y luego a la LVC_FIELDCATALOG_MERGE pasarle el nombre de la estructura en el parametro I_STRUCTURE_NAME

Intenté hacerlo mediante TipoTabla... no me acordaba que era Estructura también lo que se podía referenciar. De todos modos como puese en la pregunta, sin hacer referencia al Diccionario de Datos. Gracias por recordarmelo y consultaré para la proxima si es posible crear Estructuras, gracias ;).


Davidxd_xd:
REUSE_ALV_FIELDCATALOG_MERGE, ahi colocas el nombre del programa y la tabla interna y te botara el catalogo, pero ese catalogo es con referencia a la libreria SLIS que sirve para crear el ALV pero con las funciones REUSE*, podrias hacer eso y luego realizar un MOVE-CORRESPONDING hacia el catalogo del tipo lvc_t_fcat.

Eres un crack... seguramente esa sea la mejor solución que hay. Había mirado el catalogo que llevan los objetos y me parecía complicadisimo y tedioso rellenarlo a mano... pero con el move-corresponding seguramente funcione. A ver si lo pruebo y os comento.

Davidxd_xd:
siempre q he querido poner una tabla interna en esa funcion nunca me ha botado el catalogo

Pues también lo intenté unas cuantas veces y sí... debugueando ví que había un momento qwu le faltaban datos en una tabla interna que buscaba concatenando valores sobre una variable, pero luego creo que la pasaba al diccionario... los valores creo recordar que eran algo como '003' 'SAPL' (003 es el mandante). A ver si tengo tiempo y lo miro mejor.

Davodxd_xd_
PD: Creo q no tiene nada q ver la fecha de liberación, hay otras funciones q tampoco tienen fecha de liberación y funcionan perfectamente

En este caso, me refería que según la optimización de código no se debería usar. Pero bueno... ni siquiera sé qué inconvenientes tiene que no esté liberada, supongo que para futuras versiones.

Diegoalejo:
te recomiendo le des una mirada a estos DEMO de Sap para las ALV OM...:

Ey!!racias a toda esta info... A ver si busco la transacción dónde se miraban los ejemplos de R3 y puedo mirarlos.

Bueno... y al final.. la solución fué hacer el ALV no objetos, con la función de toda la vida, no por la tabla... sino porque era para información de la tabla EABL, que es enorme, bueno no tanto, unos 3 millones de registros :D, y como teniamos que lanzarlo en fondo... :rolleyes: pues se cancelaban los JOB, ucando iban a mostrar el ALV... un día de trabajo perdido para nada...

Me comentó algún compañero que en el ALV OO, para mostrarlo... parte de los objetos residen en el SAP GUI, osea en el cliente... y por ello.. no se pueden lanzar en fondo... En fín...!!!

Gracias a todos por la ayuda.