#1
|
|||
|
|||
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. |
#2
|
||||
|
||||
Hola prueba de esta forma:
__________________
David Carballido Córdova |
#3
|
|||
|
|||
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. |
#4
|
||||
|
||||
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. |
#5
|
|||
|
|||
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. |
#6
|
|||
|
|||
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. |
#7
|
|||
|
|||
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. |
#8
|
|||
|
|||
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. |
#9
|
|||
|
|||
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?
|
#10
|
||||
|
||||
__________________
------------------- ¿Dudas para descargar manuales? Ver este tema -> |
Herramientas | Buscar en Tema |
Desplegado | |
|
|