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
  #11  
Viejo 30/10/07, 11:09:10
ballan ballan is offline
Senior Member
 
Fecha de Ingreso: oct 2006
Mensajes: 671

El problema lo tienes en el form de tu report, los parametros no se pasan como si fueran parametros normales, aqui te dejo un ejemplo

FORM calcular_descuento_linea TABLES in_par STRUCTURE itcsy
out_par STRUCTURE itcsy.

DATA: lv_ebeln LIKE ekko-ebeln,
lv_ebelp LIKE ekpo-ebelp,
lv_aux LIKE konp-kbetr,
lv_bruto(17),
lv_descu(17).

DATA: BEGIN OF lt_konp OCCURS 0,

kschl LIKE konp-kschl,
kbetr LIKE konp-kbetr,
konwa LIKE konp-konwa,
kpein LIKE konp-kpein,
kmein LIKE konp-kmein,

END OF lt_konp.

CLEAR in_par.

READ TABLE in_par INDEX 1.
lv_ebeln = in_par-value.

READ TABLE in_par INDEX 2.
lv_ebelp = in_par-value.

SELECT SINGLE *
INTO a016
FROM a016
WHERE kappl = gc_m
AND kschl = gc_pb00
AND evrtn = lv_ebeln
AND evrtp = lv_ebelp.

IF sy-subrc = 0.

SELECT kschl kbetr konwa kpein kmein
INTO TABLE lt_konp
FROM konp
WHERE knumh = a016-knumh.

READ TABLE lt_konp WITH KEY kschl = gc_pb00.

IF sy-subrc = 0.
lv_aux = lt_konp-kbetr.
ENDIF.

WRITE lv_aux TO lv_bruto.

READ TABLE lt_konp WITH KEY kschl = gc_ra01.

IF sy-subrc = 0.
lv_aux = lt_konp-kbetr / 10.
ENDIF.

WRITE lv_aux TO lv_descu NO-SIGN.



CLEAR out_par.

LOOP AT out_par WHERE name = 'BRUTO'.
out_par-value = lv_bruto.
MODIFY out_par INDEX sy-tabix.
EXIT.
ENDLOOP.

CLEAR out_par.

LOOP AT out_par WHERE name = 'DESCUENTO'.
out_par-value = lv_descu.
MODIFY out_par INDEX sy-tabix..
EXIT.
ENDLOOP.

ENDIF.

ENDFORM. " calcular_descuento_linea

La manera de llamarlo en tu sapsript es:

/: DEFINE &FORM& = 'CALCULAR_DESCUENTO_LINEA'
/: DEFINE &PROGRAMA& = 'ZMEDRUCK_PEDAB'
/: DEFINE &DESCUENTO& = ''
/: DEFINE &BRUTO& = ''
/: DEFINE &SIMBOLO& = '%'
/: PERFORM &FORM& IN PROGRAM &PROGRAMA&
/: USING &EKKO-EBELN&
/: USING &EKPO-EBELP&
/: CHANGING &DESCUENTO&
/: CHANGING &BRUTO&
/: ENDPERFORM
Responder Con Cita
  #12  
Viejo 30/10/07, 14:48:23
Jacampos Jacampos is offline
Member
 
Fecha de Ingreso: feb 2006
Localización: Barcelona
Mensajes: 70
Hola de nuevo:

1º Se puede debugar un SapScript. Entras en la transaccion Se71 --> Menu Utilidades --> Activar debugger.

2º. ¿Donde tienes el Checkbox declarado?
- Si lo tienes en ZIMPRESION_ETIQUETAS asegurate de que le pasas la variable [tu_checkbox] al formulario. Antes de la llamada del formulario, en la funcion CALL FUNCTION 'WRITE_FORM'.

Me imagino que le pasas una tabla, pues incorporale ese campo a la tabla, y en tu formulario haces:

/: IF &P_FOLLETO& IS NOT INITIAL.
/ 4911S0100520368P012P012 FOLLETO
/:ELSE
/ 4911S0100520368P012P012
/: ENDIF.

Olvidate de los mensajes anteriores. Si necesitas algo mas puedes contactar directamente conmigo en
Saludos.
__________________
Quiero aprender, ayudando a aprender.
Responder Con Cita
  #13  
Viejo 31/10/07, 07:51:56
Avatar de Driau
Driau Driau is offline
Senior Member
 
Fecha de Ingreso: ago 2007
Mensajes: 235
Las coss están así...

Para poder "solucionar el problema temporalmente" he creado otro par de formularios de caja y palet con la palabra folleto y luego posteriormente en el código del report ZIMPRESION_ETIQUETAS he hecho un simple IF...si P_FOLLE está marcado llamo a un sapscript sino...llamo al otro.

Lo que pasa es que probando el código del que estuvimos hablando pude comprobar que en cierta manera funciona. És decir, el sapscript entra en el IF &P_FOLLETO& IS NO INITIAL i me imprime FOLLETO. El único problema es que lo hace siempre...marque la casilla P_FOLLE en la pantalla de selección del report o no.

Lo que si es seguro (leyndo tu anterior post) es que justo antes de la llamada del CALL FUNCTION 'WRITE_FORM' no le paso el valor de P_FOLLE al Sapscript...estoy seguro porque no se como hacerlo ;-)

El código que le puse al REPORT es este:


*FORM CHEQUEAR_FOLLETO TABLES INPUT1 STRUCTURE ITCSY OUTPUT1 STRUCTURE ITCSY.
*
* IF P_FOLLE EQ 'X'.
* REFRESH OUTPUT1.
* OUTPUT1-NAME = '&CAMPO_RETORNO&'.
* OUTPUT1-VALUE = 'X'.
* APPEND OUTPUT1.
* ELSE.
* REFRESH OUTPUT1.
* OUTPUT1-NAME = '&CAMPO_RETORNO&'.
* OUTPUT1-VALUE = ''.
* APPEND OUTPUT1.
* ENDIF.
*ENDFORM. "CHEQUEAR_FOLLETO


A pesar de no necesitar mandar datos del sapscript al report, tuve que declarar la tabla input en el report porque sino me petaba. He debuggeado y el report entra en el FORM CHEQUEAR_FOLLETO y evalua bien las condiciones..pero algo debe faltar para que acabe de funcionar todo bien.

Nose que te parece....
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 12:10:50.


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