MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Consultar un valor de campo en toda la BD (foro/showthread.php?t=80581)

Leonardo Carnicella 04/02/19 11:36:53

Consultar un valor de campo en toda la BD
 
Saludos expertos,

en esta ocasión tengo una duda, que le he hecho a muchos programadores ABAP, todos me han dicho que NO es posible, por ende pruebo dejar la consulta por aqui.

Es posible a través de algúna función, clase o de alguna manera, agregar en un report un parametro en el que el usuario escoja un dominio por ejemplo BUKRS, un valor del mismo por ejemplo BUKRS = 0001, y obtener de esta forma en que tablas transparentes de la BD se encuentra este registro BUKRS ? solo parea los campos bajo el dominio BUKRS.

Sé que es posible, conocer en que tablas esta el dominio, y con que nombres de campos y si son independientes de mandante y que tipo de tablas son, (Si transparentes, Pool, Cluster etc) pero, Es posible conocer en que tablas de la BD se encuentra un valor determinado para un dominio seleccionado ?

De antemano, mil gracias,

Leo

vanesamacri 05/02/19 14:18:13

Hola.

Sí, entiendo que es posible. La información de los campos de las tablas se encuentra almacenada en alguna tabla. A partir de allí, se podría obtener el listado de las tablas que contengan al campo relevante y consultarlas en forma dinámica, creando variables y tipos de datos en tiempo de ejecución en un reporte ejecutable.

En la teoría, sí, es posible. Lo que no me queda en claro es cómo pueda llegar a responder el sistema en cuestiones de performance.

Un saludo.
Iván

Leonardo Carnicella 05/02/19 14:55:27

Hola Ivan, gracias por tu respuesta.

Las tablas DD03L y DD02L son útiles para conocer en que tablas se deberá buscar el registro y cuales de esas tablas son transparentes, por ahi todo bien. Pero tienes alguna idea de como poder consultar las tablas por valor ? es decir, que mi report me diga todas las tablas que almacenan el BUKRS 0001, por ejemplo, siempre y cuando sean campos que pertenezcan obviamente al dominio BUKRS y que sean tablas transparentes.

Con respecto al Performance, tienes mucha razón para algunos dominios la consulta podría ser critica, sin embargo bien podría guardarse el resultado en alguna tabla Z y ejecutarse no online sino en Background

Gracias de nuevo

mialma 12/02/19 07:26:28

Algo asi
 
No te puede valer algo asi :

REPORT ZZZZZ.

parameters DOMNAME type DOMNAME.
parameters c(80).

data l_table type dd03l occurs 0 with header line.
data l_where(80).
data l_dd02l type dd02l.
data l_tab(80).

select * into table l_table
from DD03L
where domname = domname.


loop at l_table.
select single * into l_dd02l
from DD02L
where TABNAME = l_table-TABNAME and tabclass = 'TRANSP'.

check sy-subrc = 0.
concatenate l_table-fieldname '=' c into l_where separated by space.

select single (l_table-fieldname) into l_tab
from (l_table-TABNAME)
where (l_where).

if sy-subrc <> 0.
write :/ l_table-TABNAME.
endif.
endloop.

Leonardo Carnicella 13/02/19 12:45:05

Me ayuda mucho mialma. Gracias !!!

Lo que no entiendo es por que declaras C como parámetro ? que debería ingresar el usuario allí ? no debería ser más bien una variable ?
Segun entiendo con mis básicos conicimientos de ABAP, el Programa busca las tablas Transparentes asociados al Dominio que se guarda en el parametro de búsqueda, cierto ? o estoy dejando pasar algo?

Gracias una vez más

Saludos,

Leo

mialma 01/03/19 12:04:39

respuesta
 
C es el string a buscar y DOMNAME es el dominio .

Sacamos todas las tablas que tienen el dominio :

select * into table l_table
from DD03L
where domname = domname.

PAra cada tabla:

Comprobamos que es una tabla trasnparente:
select single * into l_dd02l
from DD02L
where TABNAME = l_table-TABNAME and tabclass = 'TRANSP'.


Montamos el where dinamico:
concatenate l_table-fieldname '=' c into l_where separated by space.

HAcemos una select:
select single (l_table-fieldname) into l_tab
from (l_table-TABNAME)
where (l_where).

si sy-subrc = 0 esta en la tabla, si no , no :-)


Husos Horarios son GMT. La hora en este momento es 08:53:27.

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