MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Problema con una exit (foro/showthread.php?t=16223)

miguel.fernandez@panalon 09/09/08 14:03:16

Problema con una exit
 
Buenas tardes a todos,

Antes que nada decir que no soy programador y estoy más perdido que una cabra en un garaje con los case when if endif...

He creado un FORM en la ZRGGBS000 añadiendo el siguiente código:

*&---------------------------------------------------------------------*
*& Form u962 Bloquear facturas con fecha inferior a fecha vencimiento
*&---------------------------------------------------------------------*

FORM u962.

TABLES:LFB1.

IF ( lfb1-cerdt < bseg-zfbdt ) AND ( BSEG-LIFNR = LFB1-LIFNR ).
bseg-zlspr = 'A'.
ENDIF.

ENDFORM. "u962

Mi idea es que cuando contabilice una factura y en el maestro de proveedor el campo CERDT (fecha certificación) sea inferior a ZFBDT (vencimiento de la factura le ponga una A al campo ZLSPR (bloqueo de pago de la factura).

Por favor help me un poquito.

Muchas gracias

smontenegro 09/09/08 14:49:46

Ese codigo lo pusiste en el exit de una sustitución?
Si es asi me parece que el problema que tenes es que estas queriendo escribir un campo de la BSEG cuando en realidad no estoy seguro que el exit la esté utilizando.
Estas son las tablas que utiliza un exit de sustitucion:

Estructura AFVC Operación de orden
Estructura AUFKV Generated Table for View AUFKV
Estructura CAUFV Generated Table for View CAUFV
Estructura CBPRV Proceso empresarial: CBPR + CBPT
Estructura CKPHV Vista para CKPH + texto + datos de control...
Estructura COBK Objeto CO: Cabecera de documento
Estructura COBL Bloque de imputación
Estructura CSKSV Indicador de control del registro maestro de CeCo
Estructura PRPS Elemento PEP (elem.de plan estruct.proyecto) datos maestros
Estructura SYST Campos sistema ABAP
Estructura VBAK Documento de ventas: Datos de cabecera
Estructura VBAP Documento de ventas: Datos de posición

argelio007 09/09/08 14:51:43

Me imagino q antes de ese if ya tienes toda tus variables llenas, lo que debes hacer es pasar a enteros la fecha, ¿como? simplemente pasalas a una variable tipo I creo q era sino busca una funcion:D , luego haces el if variable1 < variable2 AND BSEG-LIFNR = LFB1-LIFNR.
bseg-zlspr = 'A'.
ENDIF.

ibecerra 11/09/08 21:58:15

hola ante todo la pregunta del millon, cuando le pones un break point y ejecutas tu proceso se queda hay o no,

miguel.fernandez@panalon 12/09/08 08:05:52


Hola a todos y gracias por las respuestas,

La verdad es que no tengo ni idea de dónde puedo encontrar la sentencia donde le tengo que marcar el Break Point porque empiezo a contabilizar por la FB60, voy a Debugging Dynpro pero a partir de ahí me pierdo muchísisisimo.

He hecho el paso a paso entero y me he quedado igual. Si me puedes dar alguna pista de dónde le tengo que poner el breakpoint te lo agradeceré mucho.

Un saludo y muchas gracias de nuevo.

ibecerra 12/09/08 13:10:01

hola en la sentencia

iF ( lfb1-cerdt < bseg-zfbdt ) AND ( BSEG-LIFNR = LFB1-LIFNR ).
break-point.


* marca la linea y le das click al boton rojo que dice stop

Promethevs 12/09/08 14:33:33

De hecho..también tienes que tener mucho ojo con las variables que estás modificando...porque no me hace ningún sentido que modifiques directamente la BSEG, seguramente existe alguna tabla interna o estructura que guarda los datos mientras se procesa la transacción y luego son guardados.

ibecerra 12/09/08 14:38:37


hola Promethevs, te comento que el tema de sustituciones que lo puedes ver en la
transaccion obbh, no actualizas directamente ninguna tabla estandar solo sustituyes valores en los campos de la bseg o bkp(como ejemplo) en memoria.
mas adelante por otro codigo estandard sap actualiza las tablas
Saludos

miguel.fernandez@panalon 16/09/08 06:50:54

Problema con una exit pero aprendiendo mucho...
 
Buenas otra vez,

Le he puesto el Breakpoint y lo que pasa es que los campos de la LFB1 no los rellena al contabilizar la factura. Es como si no encontrara el LFB1-CERDT ni el LFB1-LIFNR.

¿Sabéis a qué se puede deber esto?.

Un saludo y muchas gracias otra vez

miguel.fernandez@panalon 16/09/08 07:44:24

Problemas con exit
 
1 Adjunto(s)
Os adjunto la pantalla en la que estoy para que tengáis más información-

Un saludo y gracias de nuevo::)

ibecerra 16/09/08 13:23:34

hola, no entiendo porque comparas lfb1 con bseg , sino has buscado primero en lfb1

lo que deberias de hacer es lo siguiente:

TABLES:LFB1.

select single cerdt into lfb1-cerdt from lfb1 where lifnr eq BSEG-LIFNR
if sy-subrc eq 0.
IF lfb1-cerdt < bseg-zfbdt .
bseg-zlspr = 'A'.
ENDIF.
endif.

ibecerra 16/09/08 13:25:01

ah falto algo mas
select single cerdt into lfb1-cerdt from lfb1 where
lifnr eq BSEG-LIFNR and
bukrs eq BSEG-bukr.

miguel.fernandez@panalon 16/09/08 15:29:44



Muchísimas gracias por tu inestimable ayuda pero no me funciona, le he vuelto a poner el breakpoint pero no trae a la transacción el campo LFB1-CERDT.

Seguiré investigando y aprendiendo.

Un saludo y gracias de nuevo

Ariel-StaFe 09/08/11 13:13:25

Respta y consulta
 
Miguel.
Respondo
Probá haciendo un select a la tabla lfb1 con el dato del cliente de la bseg.
Y pregunto
Yo tengo que hacer lo inverso. Desbloquear.
Pero tengo ZGGBS000 en lugar de ZRGGBS000 como tenes vos.
(eso debe ser solo por decision de quien creó ese Z. estimo)
Y creé un form U240 para eso, pero es como que al Seleccionar partidas
y Tratar partidas, No pasa por el FORM.

Si.. pasa por
FORM get_exit_titles TABLES etab.

exits-name = 'U240'.
exits-param = c_exit_param_field.
exits-title = 'Bloqueo de Pago'. "
APPEND exits.

Pero no pasa por
FORM u240 USING desbloqueo.
DATA: desb(1) VALUE ' '.
desbloqueo = desb.
ENDFORM. "u240

Me podrias dar una idea de que me puede faltar para asignar, crear, para que pase por el FORM U240 ?

Desde ya muchas Gracias
Ss

Ariel-StaFe 09/08/11 13:26:48

Miguel.
Lo que te pasó ibecerra deberia funcionarte.
Fijate si el proveedor con el que estas probando realmente tiene cargado algun valor en ese campo.
Y de ultima traé el valor en otro campo variable
ej. DATA: v_cerdt LIKE LFB1-CERDT.
y hace el SELECT into v_cerdt

select single cerdt into v_cerdt from lfb1 where
lifnr eq BSEG-LIFNR and
bukrs eq BSEG-bukrs.

Si me podes responder lo otro te lo agradezco.
Ss

Ariel-StaFe 13/08/11 14:36:23

Solucionado
 
Ya pude resolverlo. Gracias de todos modos.
Saludos


Husos Horarios son GMT. La hora en este momento es 04:36:23.

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