PDA

Ver la Versión Completa : Ayuda con Base De Datos Logica


bealoal
01/02/08, 08:34:23
Hola!
Estoy trabajando con la BD Lógica LMM que trabaja con las tablas MKPF y MSEG, al usar esta B.D me crea automaticamente el parametro Werks (Centro), y yo almaceno lo que me interesa en una tabla interna. El problema es que cuando no cumple los criterios de selección, logicamente en la tabla interna no me guarda nada, pero cómo puedo hacer yo para que me guarde en una vble p_werks el valor que introdujo el usuario por teclado si no es un parámetro que yo haya declarado si no que me lo da automaticamente la B.D Lógica?

No se si me he explicado bien, espero que si y que alguien pueda ayudarme.

Gracias.

dmgman
01/02/08, 09:50:08
No tengo mucha experiencia en BD Logicas, pero una solucion seria copiar la BD Logica hacia una Z y luego puedes modificar los parametros de entrada a tu antojo.

bealoal
01/02/08, 10:01:26
ah gracias, pero no lo tengo muy claro, pq luego tendría que cambiar el programa para que en vez de acceder a la B.D lógica para coger los datos accediese a una tabla de la B.D normal (la Z) y me ralentizaría mucho, ya que contiene mucha información.
¿Se te ocurre otra opción?

dmgman
01/02/08, 10:11:34
Para solucionar el problema que tenias con el parametro de WERKS te vale con eso, dentro puedes modificar pulsando en el boton selecciones excluyes este parametro y nada mas. Usa la BD tal como lo hacias sin tocar nada mas.

bealoal
01/02/08, 11:22:19
Creo que no me explique bien, pq si hago lo que tu me dices, yo en la variante de seleccion puedo ocultar uno de los centros, pero si el usuario por no verlo me lo deja en blanco, me quedo sin la información.

Lo que yo quiero es saber si existe una función o algo similar para acceder a los valores que tecleó el usuario en los parametros de selección que me crea la B.D Logica de forma automatica, aunque no haya resultados con esos criterios de selección.

Ejem:

werks: 1001
matnr: 93055

Dentro del programa con el GET mkpf y GET mseg no me da resultado pq no hay registrados movimientos con esos criterios, pero yo quiero que una vble me devuelva p_werks = 1001 (lo que seleccionó el usuario) ¿cómo accedo a ese dato????

Gracias

abapconsultoria
01/02/08, 13:29:55
si mal no recuerdo accedes con el mismo nombre de variable que lo definio el programador en la BDL.

En el caso de la BDL MML deberia ser esto (LM_WERKS)

* INCLUDE DBLMMSEL

SELECTION-SCREEN FIELD SELECTION FOR TABLE MKPF.
SELECTION-SCREEN FIELD SELECTION FOR TABLE MSEG.
SELECT-OPTIONS:
LM_MATNR FOR MSEG-MATNR MEMORY ID MAT MATCHCODE OBJECT MAT1,
LM_WERKS FOR MSEG-WERKS MEMORY ID WRK,
LM_LGORT FOR MSEG-LGORT MEMORY ID LAG,
LM_CHARG FOR MSEG-CHARG MEMORY ID CHA.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(79) TEXT-100 FOR TABLE MSEG
MODIF ID TXT.
SELECTION-SCREEN END OF LINE.
SELECT-OPTIONS:
LM_BWART FOR MSEG-BWART MEMORY ID BWA,
LM_VGART FOR MKPF-VGART.
PARAMETERS:
LM_SOBKZ LIKE MSEG-SOBKZ FOR TABLE MKPF.

Espero que te sirva de ayuda.

Saludos.

bealoal
01/02/08, 14:52:23
Hola, muchas gracias por vuestra ayuda, al final lo solucioné de una forma mas sencilla. Lo que hice fué acceder al valor del campo con un simple: d_werks = mseg-werks y así me coge el valor de lo que el usuario puso en la pantalla de selección.

Saludos

bealoal
20/02/08, 08:55:30
Hola otra vez,
efectivamente hay que acceder como LM_WERKS y concretamente LM_WERKS-LOW para que me cogiese los 4 digitos del centro, pq con MSEG-WERKS no funcionaba bien.

Gracias por la ayuda.