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 17/03/10, 09:03:40
ABPdelCerro ABPdelCerro is offline
Junior Member
 
Fecha de Ingreso: ene 2008
Mensajes: 21
Nombre de campo a variable

Hola.

Necesito tener de forma dinámica el nombre de un campo en una variable. Es decir, algo como:

TABLES: BSEG.
DATA: CAMPO(15) TYPE C.

* Aquí asignar de alguna manera (es lo que pregunto), por ejemplo, BSEG-
* BELNR a CAMPO. No me vale hacer un MOVE 'BSEG-BELNR' TO CAMPO, esa * solución ya la tengo, pero quiero evitarla.

WRITE:
/ 'Valor:', campo.

Y que el resultado sea:

Valor: BSEG-BELNR.

Gracias.
Responder Con Cita
  #2  
Viejo 17/03/10, 13:51:07
Avatar de DavidXD_XD
DavidXD_XD DavidXD_XD is offline
Moderator
 
Fecha de Ingreso: ago 2006
Localización: Lima - Perú
Mensajes: 1,251
Hola prueba de esta forma:

__________________
David Carballido Córdova
Responder Con Cita
  #3  
Viejo 17/03/10, 14:42:44
ABPdelCerro ABPdelCerro is offline
Junior Member
 
Fecha de Ingreso: ene 2008
Mensajes: 21
Gracias.
Pero no es algo tan sencillo.
Se trata de no poner el nombre como literal en ningún momento.
Además, no quiero que se cargue en "campo" el valor de BSEG-BELNR sino el nombre 'BSEG-BELNR'.
Gracias de nuevo, siento no haberme explicado suficientemente.
Responder Con Cita
  #4  
Viejo 18/03/10, 13:59:19
Avatar de Alfredosite
Alfredosite Alfredosite is offline
Senior Member
 
Fecha de Ingreso: jul 2007
Localización: Lima-Perú
Mensajes: 135
Lightbulb

Según te entiendo:

Hola si deseas contatenar o obtener el valor de:

TABLA-CAMPO en una variable y si esa "TABLA" esta definida o creada en el diccionario de datos puedes leer la tabla DD03L Campos de una tabla. O si gustas puedes usar la Función ISB_TABLE_READ_FIELDS para obtener los campos de una tabla.

Y concatenar los campos TABNAME y FIELDNAME y guardarlo en una variable o tipo de datos.
Ejm:

Data: gv_tabname type DD03L-TABNAME,
Gv_tabla_campo(50) type char.
data: gt_tabla_fields TYPE STANDARD TABLE OF DD03L.
FIELD-SYMBOLS: <fs_tabla_fields> type DD03L.
gv_tabname = 'Nombre tabla'.

CALL FUNCTION 'ISB_TABLE_READ_FIELDS'
EXPORTING
tab_name = gv_tabname
tables
table_fields = gt_tabla_fields.

LOOP AT gt_tabla_fields ASSIGNING <fs_tabla_fields>.
CONCATENATE <fs_tabla_fields>-tabname '-' <fs_tabla_fields>-fieldname INTO Gv_tabla_campo.
ENDLOOP.

Del cual Gv_tabla_campo tendría el valor TABLA-CAMPO si gustas en vez de variable podrias guardarlo en una tabla interna.
O lo otro que se me ocurre si en caso la tabla no esta en la tabla de diccionario, podrias crear una tabla Z donde crees dos campos nombre de tabla y campos los lees de dicha tabla Z y concatenas dentro de tu programa ambos campos y los guardas en alguna variable.

Nose si eso es lo que deseas ojala te de una idea.

Saludos.

Alfredo Pastor Avendaño.
__________________
Saludos Cordiales,
Alfredo Pastor Avendaño
SAP - Consultant HCM

Úlima edición por Alfredosite fecha: 18/03/10 a las 14:21:16.
Responder Con Cita
  #5  
Viejo 18/03/10, 21:09:41
ABPdelCerro ABPdelCerro is offline
Junior Member
 
Fecha de Ingreso: ene 2008
Mensajes: 21
Muchas gracias.
Creo que tampoco es lo que necesito (ahora mismo no tengo acceso a SAP y no puedo ver si haciendo alguna variación sobre tu idea llego a lo que busco; en cuanto tenga acceso lo comprobaré).
Digo que no es lo que necesito porque mi primera premisa es utilizar el campo, no un literal que contenga el campo (entendiendo por campo tanto el campo como la tabla). Para obtener la estructura mediante el módulo de función, tengo que pasarle el nombre de la tabla como un literal y eso "no me está permitido". Si obviamos eso aún me queda la segunda parte: la función devuelve todos los componentes de la estructura ya como contenido de campos de la estructura; todos, no sólo el que quiero utilizar con lo que no puedo seleccionar uno si no es comparando el contenido con un literal ¿no?

Me sirva o no, les doy las gracias por sus aportaciones.

Saludos.
Responder Con Cita
  #6  
Viejo 19/03/10, 18:58:15
RCASTELO RCASTELO is offline
Junior Member
 
Fecha de Ingreso: jul 2007
Mensajes: 14
Es muy dificil evitar el hardcode en lo que intentas hacer, porque justamente es muy rigido, cuentas con muy pocos datos y es muy puntual lo que neceistas.
Lo que se me ocurre es usar la opción que te plantearon de traer todos los campos de una tabla y cruzar dicha información con una tabla Z de parametrización. En esta tabla que podria tener la estructura TABLA - CAMPO, podrias parametrizarla con los campos de las tablas que deseas tener en cuenta en tu programa, y solo a esos es a los que tendrias en cuenta de todos los recuperados anteriormente.

Slds.
Responder Con Cita
  #7  
Viejo 22/03/10, 07:02:27
ABPdelCerro ABPdelCerro is offline
Junior Member
 
Fecha de Ingreso: ene 2008
Mensajes: 21
Gracias a todos por su interés y sus respuestas.

La verdad es que ya me temía que no había forma de hacer lo que queremos, tal como queremos, pero quise consultar por si alguien tenía la solución "mágica". Lo mantendremos como hardcode que el alcance de la petición que nos han hecho no contempla creación de nuevas tablas ni otros objetos adicionales.

De nuevo muchas gracias a todos.
Responder Con Cita
  #8  
Viejo 08/07/11, 12:24:14
stratoween stratoween is offline
Junior Member
 
Fecha de Ingreso: jun 2006
Mensajes: 2
Buenos días, estoy necesitando algo al estilo de la función que nombraron acá: 'ISB_TABLE_READ_FIELDS'

Pero necesito obtener los nombres de los campos de una tabla interna y no una del diccionario como trabaja dicha función.

la idea es hacer un select dinamico, y para esto necesito saber que campos seleccionar de la tabla interna que debo cargar. ya tengo la forma de poner todo menos los campos dinamicamente. OJO, si puedo leer los campos q posee la tabla si lo se hacer, ya que despues del select se debe pasar una tabla del tipo string.

* Busco los datos dinamicamente
SELECT *
INTO CORRESPONDING FIELDS OF TABLE <fs_t>
FROM (p_from)
WHERE (wt_where).


Si alguien sabe como poder obtener estos campos les agradecería.

Saludos.
Responder Con Cita
  #9  
Viejo 11/07/11, 16:58:53
ABPdelCerro ABPdelCerro is offline
Junior Member
 
Fecha de Ingreso: ene 2008
Mensajes: 21
Por lo que yo se, no es posible recuperar la estructura de una tabla interna. De todas formas, ¿cómo tienes pensado definir esa tabla interna?
Responder Con Cita
  #10  
Viejo 11/07/11, 21:05:49
Avatar de DCErick
DCErick DCErick is offline
Moderator
 
Fecha de Ingreso: mar 2006
Localización: Monterrey
Mensajes: 1,090



__________________
-------------------
¿Dudas para descargar manuales? Ver este tema ->
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 06:38:59.


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