MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 30/08/07, 10:52:02
jonono jonono is offline
Junior Member
 
Fecha de Ingreso: abr 2006
Mensajes: 6
Error al generar tabla dinámica

Hola a todos:

Soy nuevo en esto y me han pedido que genere una tabla dinámica para después pasarla a formato XML. Leyendo en el foro (por cierto, enhorabuena a los que lo hacen posible) he encontrado un post de diciembre del 2006 de LUISGB y contestado por CROUNLY donde explica como hacerlo:

Escribo el código testualmente:

DATA: pv_tabla TYPE dd02l-tabname,
generic_table TYPE REF TO data,
generic_line TYPE REF TO data.

FIELD-SYMBOLS: <table> TYPE ANY TABLE,
<wa> TYPE ANY,
<field> TYPE ANY.

pv_tabla = 'spfli'.

CREATE DATA generic_table TYPE STANDARD TABLE OF (pv_tabla).
ASSIGN generic_table->* TO <table>.

CREATE DATA generic_line TYPE (pv_tabla).
ASSIGN generic_line->* TO <wa>.

SELECT * INTO CORRESPONDING FIELDS OF TABLE <table> FROM (pv_tabla).

LOOP AT <table> INTO <wa>.
DO.
ASSIGN COMPONENT sy-index OF STRUCTURE <wa> TO <field>.
IF sy-subrc <> 0.
EXIT.
ENDIF.
WRITE <field>.
ENDDO.
NEW-LINE.
ENDLOOP.



He subido el código a SAP Y el problema que tengo es que al verificarlo aparece este mensaje de error:

Unable to interpret "TABLE". Possible causes of error: Incorrect
spelling or comma error.

(Al clickear se coloca en la linea: CREATE DATA generic_table TYPE STANDARD TABLE OF (pv_tabla)"

Si quito la palabra STANDARD aparece otro error:

The type specification of "TABLE" is incomplete

¿podeís echarme una manita?

Muchas gracias
Responder Con Cita
  #2  
Viejo 30/08/07, 12:16:27
ballan ballan is offline
Senior Member
 
Fecha de Ingreso: oct 2006
Mensajes: 671
De esta manera te limitas a poder crear tablas dinamicas referentes a elementos creados en el diccionario ABAP, para poder crear tablas internas dinamicas con los campos que desees puedes hacerlo de esta manera:

REPORT zpruebatabladinamica.

DATA: ls_prueba TYPE REF TO cl_rs_struc,
lo_data TYPE REF TO data.

*se tiene que declarar un fs para la cabecera y otro para el contenido de la tabla
*asi mismo para acceder a los campos necesitamos otro fs
FIELD-SYMBOLS: <tabla> TYPE STANDARD TABLE,
<linea> TYPE ANY,
<campo> TYPE ANY.

*creas el objeto para la estructura dinamica
CREATE OBJECT ls_prueba.

*vas añadiendo los campos (referentes a elementos de datos)
CALL METHOD ls_prueba->add_element
EXPORTING
i_sconame = 'VBELN'
i_type = 'VBELN'.

CALL METHOD ls_prueba->add_element
EXPORTING
i_sconame = 'POSNR'
i_type = 'POSNR'.

CALL METHOD ls_prueba->add_element
EXPORTING
i_sconame = 'MATNR'
i_type = 'MATNR'.

*creas la estructura
CALL METHOD ls_prueba->create
EXPORTING
i_dynamic = rs_c_false
RECEIVING
r_r_data = lo_data
EXCEPTIONS
wrong_struc_definition = 1
no_struc_definition = 2
OTHERS = 3.

* la variable lo_data lleva un numerajo que es el handle para manejar ese objeto
* por lo que tenemos que utilizar el operador ->* para referenciar al contenido
* de ese objeto, en este caso una estructura
ASSIGN lo_data->* TO <linea>.

* previamente hemos creado una wa ahora crearemos la tabla del tipo de esa misma wa
CREATE DATA lo_data LIKE TABLE OF <linea>.

* la asignamos a otro fieldsymbol
ASSIGN lo_data->* TO <tabla>.

*esto es para rellenar valores e introducir un registro y hacer un loop
DO.

ASSIGN COMPONENT sy-index OF STRUCTURE <linea> TO <campo>.

IF sy-subrc <> 0.
EXIT.
ENDIF.

<campo> = '123'.

ENDDO.

APPEND <linea> TO <tabla>.

LOOP AT <tabla> INTO <linea>.

ENDLOOP.
Responder Con Cita
  #3  
Viejo 31/08/07, 07:32:54
jonono jonono is offline
Junior Member
 
Fecha de Ingreso: abr 2006
Mensajes: 6
Unhappy Error al verificar

Hola:

He subido tu programita para ver como funciona y me da un error al verificarlo. Se para en la linea:
DATA: ls_prueba TYPE REF TO cl_rs_struc.

Por que cl_rs_struc no existe.

El error concretamente es: The type "CL_RS_STRUC" is unknown.

La versión de R/3 con la que trabajo es la 4.6C

Gracias
Responder Con Cita
  #4  
Viejo 07/09/07, 08:55:06
Chispi Chispi is offline
Junior Member
 
Fecha de Ingreso: sep 2007
Mensajes: 4
Esto te puede ayudar, pero es complicado

A ver jonono. La respuesta es chunga para un principiante, pues tienes q crear código ABAP dinamicamente, y hacer un global assign para obtener la referencia a la tabla q deseas crear dinamicamente.

Las preguntas q te tienes q hacer son:

1- ¿Cómo defino la tabla q necesito de forma estática con ABAP?
2- Escribo el código ABAP de la respuesta de la pregunta 1 en una tabla interna cuyo tipo es carácter de longitud 72.
3- Amplía el código ABAP de la tabla interna, para q sea una declaración de tipo/datos global. Define también en dicha tabla interna una variable global del tipo recién definido y crea además una subrutina de momento vacía.
4- Échale un vistazo a la ayuda de la instrucción GENERATE SUBROUTINE POOL. Ahora mismo no recuerdo si está disponible en 4.6C. Verás un ejemplo chulo en dicha ayuda.
5-Llamas a la subrutina del reporte q acabas de generar
6-Obtienes con global assign un field symbol q apunte a dicha variable global q has definido en tu reporte dinámico
7- Échale un vistazo a la ayuda de la instrucción CREATE DATA ... LIKE, porque ahora tienes una variable de donde dicha instrucción puede sacar la información del tipo en tiempo de ejecución.
8- Si te funciona lo de 7, te falta un ASSIGN dataref->* TO <field_symbol> y ya puedes usar tu tabla dinámica.

Lo de pasarlo a XML... lo tienes chungo, pues te tienes q construir tu mismo el stream XML. Sólo a partir de Basis 4.7 tienes instrucciones ABAP para generar un stream XML a partir de una variable ABAP.

Suerte
Responder Con Cita
  #5  
Viejo 07/09/07, 11:56:05
Avatar de darona
darona darona is offline
Member
 
Fecha de Ingreso: jun 2006
Localización: Valencia, Spain
Mensajes: 44
Lo de hacer las tablas dinamicas es un poco complicado de ver a la primera, pero no es muy dificil cuando le pillas el tranquillo, no te preocupes.

Pon tu mail y te mando un ejemplo de un programa que hice yo en el que está comentado todo el proceso.
Si tienes problemas, create una cuenta de Skype y hablamos...
Responder Con Cita
  #6  
Viejo 29/10/07, 09:29:45
karasap karasap is offline
Junior Member
 
Fecha de Ingreso: jun 2007
Mensajes: 10
Hola, buenas. He empezado hace poco en este mundo y ahora ando con lo de las tablas dinamicas. He visto que dices que tienes un ejemplo de un programa sobre la creacion de tablas dinamicas que me interesa. Si puedes mandamelo a . Muchas gracias.
Responder Con Cita
  #7  
Viejo 20/08/08, 18:15:47
kats13 kats13 is offline
Junior Member
 
Fecha de Ingreso: ago 2008
Mensajes: 1
Hola, Soy nueva en el mundo sap, necesito crear tablas dinamicas. Darona dijiste que tienes un ejemplo podrías enviarlo a mi correo, es .
Muchas gracias.
Responder Con Cita
  #8  
Viejo 20/08/08, 19:49:10
Avatar de DavidXD_XD
DavidXD_XD DavidXD_XD is offline
Moderator
 
Fecha de Ingreso: ago 2006
Localización: Lima - Perú
Mensajes: 1,251
Aver si este post sirve:

__________________
David Carballido Córdova
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 18:52:14.


www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web