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 12/12/06, 15:50:28
luisgb luisgb is offline
Junior Member
 
Fecha de Ingreso: nov 2006
Mensajes: 10
Tabla Interna Dinamica

Amig@s necesito saber como puedo declarar... y me refiero a dinamica en el hecho que el numero de campos es variable
Gracias

Luis G.

Úlima edición por luisgb fecha: 12/12/06 a las 16:16:15.
Responder Con Cita
  #2  
Viejo 13/12/06, 13:21:15
SPlNeTe SPlNeTe is offline
Junior Member
 
Fecha de Ingreso: jul 2006
Mensajes: 7
Haber si te vale esto.

DATA: PV_TABLA TYPE DD02L-TABNAME,
GENERIC_TABLE_WA TYPE REF TO DATA.
FIELD-SYMBOLS: <WA> TYPE ANY,
<FIELD>.

CREATE DATA GENERIC_TABLE_WA TYPE (PV_TABLA).
ASSIGN GENERIC_TABLE_WA->* TO <WA>.

....
ASSIGN COMPONENT LV_COMPONENT OF STRUCTURE <WA> TO <FIELD>.
MODIFY (PV_TABLA) FROM <WA>.
....

Si tienes alguna duda sobre el codigo pregunta.

Saludos.
Responder Con Cita
  #3  
Viejo 13/12/06, 14:37:42
Avatar de crounly
crounly crounly is offline
Senior Member
 
Fecha de Ingreso: nov 2006
Localización: Zaragoza, España
Mensajes: 227
Una duda...

Este codigo serviria si ya existiese la tabla en el diccionario, no?

Por Ejemplo, digamos que necesito una tabla interna con la estructura de una tabla del diccionario, pero no se que tabla sera hasta que se ejecute el programa

Seria algo asi:
DATA: PV_TABLA TYPE DD02L-TABNAME,
GENERIC_TABLE_WA TYPE REF TO DATA.
FIELD-SYMBOLS: <WA> TYPE ANY,
<FIELD>.

DATA: MI_TABLA TYPE STANDARD TABLE OF MARA
WITH HEADER LINE.

PV_TABLA = 'MI_TABLA'.
CREATE DATA GENERIC_TABLE_WA TYPE (PV_TABLA).
ASSIGN GENERIC_TABLE_WA->* TO <WA>.

o serviria para crear cualquier tabla interna sin que exista en el diccionario?

Úlima edición por crounly fecha: 13/12/06 a las 14:51:28.
Responder Con Cita
  #4  
Viejo 13/12/06, 14:49:55
SPlNeTe SPlNeTe is offline
Junior Member
 
Fecha de Ingreso: jul 2006
Mensajes: 7
crounly tu ejemplo estaria bien salvo por esto:

CREATE DATA GENERIC_TABLE_WA TYPE (PV_TABLA).
que seria
CREATE DATA GENERIC_TABLE_WA LIKE (PV_TABLA).

Este ejemplo sirve para crear una tabla interna de forma dinamica con la estructura de cualquier tabla del diccionario de datos o de otra tabla interna, solo conociendo el nombre de la tabla.

Saludos.
Responder Con Cita
  #5  
Viejo 13/12/06, 15:01:50
Avatar de crounly
crounly crounly is offline
Senior Member
 
Fecha de Ingreso: nov 2006
Localización: Zaragoza, España
Mensajes: 227
okas, gracias SPINeTe

Lo que me gustaria probar seria lo contrario, mas o menos... crear una tabla interna en tiempo de ejecucion que no tenga reflejo en el diccionario o que coja tipos de campos de tablas del diccionario diferentes.

Estaba pensando en un programa de prueba que por ejemplo te deje seleccionar un numero de tablas del diccionario y dentro de cada tabla algunos campos de la misma para despues crear una tabla interna que aglutine los campos seleccionados.
Responder Con Cita
  #6  
Viejo 13/12/06, 15:49:11
SPlNeTe SPlNeTe is offline
Junior Member
 
Fecha de Ingreso: jul 2006
Mensajes: 7
La unica solucion que veo a eso que comentas es crear codigo dinamico.

DATA: CODE TYPE TABLE OF RSSOURCE-LINE,
LINEA LIKE RSSOURCE-LINE.

DATA: VARIABLE(10). "ESTA VARIABLE LLEVA EL NOMBRE DE LA TABLA.

VARIABLE = 'ZAPR'.

CLEAR LINEA.
CONCATENATE 'TABLES: ' VARIABLE INTO LINEA SEPARATED BY SPACE.
CONCATENATE LINEA '.' INTO LINEA.
APPEND LINEA TO CODE.

CLEAR LINEA.
CONCATENATE 'DATA TI_' VARIABLE INTO LINEA.
CONCATENATE LINEA 'LIKE' VARIABLE INTO LINEA SEPARATED BY SPACE.
CONCATENATE LINEA 'OCCURS 0 WITH HEADER LINE.' INTO LINEA SEPARATED BY
SPACE..
APPEND LINEA TO CODE.

INSERT REPORT 'ZREPORTDINAMICHR' FROM CODE.

Este es un ejemplo que puso un compañero en otro hilo.

Espero que te "ilumine".

Saludos.
Responder Con Cita
  #7  
Viejo 14/12/06, 11:17:56
Avatar de crounly
crounly crounly is offline
Senior Member
 
Fecha de Ingreso: nov 2006
Localización: Zaragoza, España
Mensajes: 227
La linea

CREATE DATA GENERIC_TABLE_WA LIKE (PV_TABLA).

da un fallo de sintaxis, y con el TYPE, lo que crea dinamicamente es un campo estructurado, no una tabla interna que es el objetivo.

Rebuscando en la ayuda de SAP encontre que hay una opcion para CREATE DATA que se utiliza para variables referenciadas a tablas

Al final necesitamos 2 variables referenciadas y dos field-symbols, 1 variable sera la tabla y otra la cabecera.

Despues de secuencia 'Prueba y Error" ha quedado el siguiente codigo:

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.

si cambias spfli por mara o otra tabla del diccionario creara una tabla interna identica y mostrara su contenido por pantalla.

Gracias por el codigo SPINete, mas o menos veo la luz, probara a ver que sale.
Responder Con Cita
  #8  
Viejo 28/02/12, 16:15:51
vstarke vstarke is offline
Member
 
Fecha de Ingreso: feb 2010
Mensajes: 60
el código correcto para tabla interna dinámica es el siguiente....

IMPORTANTE: EL NOMBRE DE LA TABLA INTERNA DEBERÁ ESTAR CON CORCHETE -> []... LO QUE HICE FUE HACER UNA RUTINA QUE RECIBE EL NOMBRE DE LA TABLA INTERNA.

FIELD-SYMBOLS: <FS_TABLE> TYPE ANY TABLE,
<FS_WA> TYPE ANY,
<FS_FIELD> TYPE ANY.

P_TABLE = P_NAMETAB.

ASSIGN (P_TABLE) TO <FS_TABLE>.

LOOP AT <FS_TABLE> ASSIGNING <FS_WA>.
.
.
.
.
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 22:00:22.


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