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
  #1  
Viejo 29/10/07, 13:40:14
Avatar de Driau
Driau Driau is offline
Senior Member
 
Fecha de Ingreso: ago 2007
Mensajes: 235
Código en SapScript?

Hola a todos. Tengo una dudilla:

Tengo un programa que actualmente puede imprimir etiquetas de caja (llamando al formulario ZWM_ETQCJ) o etiquetas de palet (llamando al formulario ZWM_ETQPL). Ahora quieren que ademas en la pantalla de selección haya un campo que cuando se marque escriba debajo de todo de la etiqueta "FOLLETO" independientemente de si es de caja o palet. Ésto me lleba a tener 4 tipos de etiquetas.

Mi pregunta es: Tengo que crear otros dos formularios SapScript de tipo etiqueta/Folleto i palet/Folleto? O puede meter código en los que estan creados para que elles mismo cjequeen si el campo folleto esta marcado y añadan la palabra folleto al final. És decir, un SapScript puede tener lógica?? Como podría implementar esto?? Seria un sencillo "IF"???

Muchas grácias a todos!
Responder Con Cita
  #2  
Viejo 29/10/07, 14:41:58
Jacampos Jacampos is offline
Member
 
Fecha de Ingreso: feb 2006
Localización: Barcelona
Mensajes: 70
Normalmente, la logica del un Sapscript la haces en un programa aparte, que debe esta asignado en la parametrizacion de este documento. Si habres el Sapscript podras ver que tiene llamadas del tipo :

Codigo en el SapScript:
Define &campo_retorno& = ''.
PERFORM Chequear_folleto IN PROGRAM ZTUPROGRAMA
CHANGING &campo_retorno&.
If &campo_retorno& is not initial.
Folleto
Endif.


El codigo que precede a esta linea lo tendrias que poner despues de mostrar los datos.

Miras el programa en el que tienes la lógica y ahí añades los que necesites chequear.

Espero que te sirva.
Saludos.
__________________
Quiero aprender, ayudando a aprender.
Responder Con Cita
  #3  
Viejo 29/10/07, 16:07:02
Avatar de Driau
Driau Driau is offline
Senior Member
 
Fecha de Ingreso: ago 2007
Mensajes: 235
No Puedo Hacer Ésto??

He visto lo que me has puesto..però..entonces ésto no seria correcto?

IF &P_FOLLE& EQ 'X'.
4911S0100520388P012P012&FOLLETO&
ENDIF.

Lo he puesto tal cual en el SAPScript...sin performs ni nada. Lo que no entiendo es que si el programa (en mi caso) ZIMPRIME_OF llama al Sapscript con el checkbox P_FOLLETO marcado, el Sapscript no sabe que el Checkbox P_FOLLETO está marcado???
Responder Con Cita
  #4  
Viejo 29/10/07, 17:29:32
Jacampos Jacampos is offline
Member
 
Fecha de Ingreso: feb 2006
Localización: Barcelona
Mensajes: 70
Depende si tu programa pasa esa variable al formulario. Si tu programa pasa esa variable al Sapscript. Los que has puesto es correcto. Pero, por el contrario si tu programa no pasa esa variable al formulario no hara nada.

Saludos.
__________________
Quiero aprender, ayudando a aprender.
Responder Con Cita
  #5  
Viejo 30/10/07, 07:41:06
Avatar de Driau
Driau Driau is offline
Senior Member
 
Fecha de Ingreso: ago 2007
Mensajes: 235
Wink oK..a ver si así lo finiquito!

A ver.. el código que he pusto en el Sapscript es el que tu me has proporcionado:

/: DEFINE &CAMPO_RETORNO& = ''.
/: PERFORM CHEQUEAR_FOLLETO IN PROGRAM ZIMPRESION_ETIQUETAS
/: CHANGING &CAMPO_RETORNO&.
/: IF &CAMPO_RETORNO& IS NOT INITIAL.
/ 4911S0100520368P012P012&FOLLETO&
/: ENDIF.


Y luego en mi report he hecho un form del siguiente estilo:

FORM CHEQUEAR_FOLLETO USING CAMPO_RETORNO.
IF P_FOLLE EQ 'X'.
CAMPO_RETORNO = 'X'.
ENDIF.
ENDFORM.


Las barras que van en el sapscript (/ / estan bién puestas??

Es decir...yo llamo al perform desde sapscript i le paso la variable CAMPO_RETORNO no? Luego el perform le assigna un valor 'X' o ' ' en funcion de si el checkbox P_FOLLE esta marcado y lo devuelve al sapscript no¿?
Nose si el código del form esta bien ya que esto del "CHANGING" me descoloca un poco.

Muchas gracias por la ayuda!!
Responder Con Cita
  #6  
Viejo 30/10/07, 09:33:41
Jacampos Jacampos is offline
Member
 
Fecha de Ingreso: feb 2006
Localización: Barcelona
Mensajes: 70
Necesitas el parametro CHANGING para poder devolverle el valor al formulario.

Y luego en mi report he hecho un form del siguiente estilo:

FORM CHEQUEAR_FOLLETO CHANGING CAMPO_RETORNO

IF P_FOLLE EQ 'X'.
CAMPO_RETORNO = 'X'.
ENDIF.
ENDFORM.


Codigo en el Sapcscript:

/: DEFINE &CAMPO_RETORNO& = ''.
/: PERFORM CHEQUEAR_FOLLETO IN PROGRAM ZIMPRESION_ETIQUETAS
/: CHANGING &CAMPO_RETORNO&.
/: IF &CAMPO_RETORNO& IS NOT INITIAL.
* 4911S0100520368P012P012 FOLLETO
/: ENDIF.

Saludos.
__________________
Quiero aprender, ayudando a aprender.
Responder Con Cita
  #7  
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
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 17:16:38.


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