Iniciando en SapScript y SmartForms

Que tal Abapers,

Excelentes consejos para el debugging de un SmartForms de verdad que no sabía como hacerlo y me estaba volviendo loco con esto :dizzy_face: . Bueno les comento mi experiencia, revisando en el Debbug pude observar que los parámetros de Salida los estaba tomando como texto y es por ello me daba cero el valor de la variable v_alícuota.

Estuve probando con una función que me comentaron se usa para transformar textos en numéricos (RSDS_CONVERT_NUMBER) pero tampoco me funciono :pensive: . Así que decidí involucrarme con el programa impresor tomando en cuenta las recomendaciones que realizaron @miguelsap y @canuto a fin de capturar el valor de la alícuota en la tabla interna a la que finalmente se le hace el loop dentro del SmartFoms.

Conseguí la sección de código donde empiezan a llenar dicha tabla e inserte la nueva linea de programa con la formula que les mencione y esta funcionando correctamente :+1:.

Ahora les tengo otra consulta y tiene que ver con el tema de Transporte de estos SmartForms. Antes de tomar el caso, otro ABAP habia realizado cambios a nivel de forma en el formulario y cuando se ejecutan en ambiente calidad y desarrollo se notan las diferencias. El día de ayer genere una orden de transporte de dicho SmartForms al ambiente Calidad y luego de realizado, me percate que no hubo ningún cambio :scream: . Hay alguna particularidad en el transporte de SmartForms que deba tener en cuenta???

Un Abrazo!!!

1 me gusta

Hola @johnny282
Que bueno que ya resolviste lo del calculo, lo mejor es hacerlo como lo hiciste en el programa de control, a fin de que el Smartform reciba la data lo más limpia posible.


Respecto a lo que comentas sobre las diferencias del Smartform entre los ambientes de desarrollo y calidad, probablemente se debe a que hicieron las modificaciones, pero no las transportaron.

El proceso concerniente al transporte cuando se hacen modificaciones es el siguiente:

  1. Al realizar el primer guardado o activado de las modificaciones, el sistema te solicitará indicar la Orden de Transporte (OT) en la que se guardarán. Si ya tienes la orden, se la indicas, de lo contrario creas una nueva. Si no lo solicita es porque ya se han hecho modificaciones y hay una OT que no se ha liberado en donde se encuentran las mismas, en este caso los cambios que realices se guardarán también en dicha OT (Si quieres separarlos, debes liberar la OT actual a fin de poder guardar tus cambios en una nueva).
  2. Cuando termines los cambios y debas transportar, debes ir a la TX SE09 o SE10 (es igual) y allí buscar tu OT y liberarla.
  3. Por último para que los cambios estén disponibles en el ambiente de Calidad, se debe transportar la OT. Por lo general esto lo hace alguien del área BASIS, pero hay casos en que lo debe hacer uno mismo, depende de las normas del cliente.

Ahora bien, da la impresión de que ni los cambios que mencionas que realizó otro ABAP, ni los tuyos han sido transportados, y por eso hay diferencias entre los 2 ambientes. verifica esto, tal vez solo falta solicitar el transporte de la(s) OT

Deberías verificar también si tus cambios se guardaron en la misma orden que la del otro ABAP, o si están en ordenes separadas, y en este caso confirmar si debes transportar todo o solamente tus cambios.

Importante: :eyes: debes validar si tus cambios dependen de los otros, porque en ese caso deberás transportar todo, ya que de lo contrario no funcionará lo que hiciste.

4 Me gusta

Que tal Abapers!!!

Bueno les tengo que comentar que me devolvieron el cambio :pensive: por un tema que me tiene dando de cabezazos al escritorio. Les resumo para ver si me pueden ayudar:

  1. cuando ejecuto el programa impresor en el ambiente desarrollo, me desplega el formato en PDF directamente, es decir, no aparece el cuadro de dialogo de impresión. Según lo que he podido buscar en google, esto se logra cuando se utiliza la estructura de control SSFCTRLOP específicamente el componente NO_DIALOG = ‘X’. Revisando en el programa pude comprobar que efectivamente se esta usando de esta forma dentro de una rutina que se crea únicamente para la impresión
    DATA: w_ctrlop TYPE ssfctrlop,
    w_ctrlop-getotf = ‘X’.
    w_ctrlop-no_dialog = ‘X’.

  2. El problema radica en que cuando voy al ambiente Calidad después de transportar los cambios, y con mi usuario si aparece el cuadro de dialogo de impresión, cuando elijo el dispositivo LOCAL el PDF se ve de una forma y cuando escojo como dispositivo de salida otra impresora me sale de una forma totalmente distinta. Se los coloco en imagen para que me den su opinión.

    Formato Impresora LOCAL

Formato Impresora LOCAL2

Porque ocurre esto??? No debería el formato ser igual independientemente del tipo de dispositivo???

Espero puedan ayudarme.

Un abrazo a todos!!!

jajajajajajajaja yo que pensaba que a mi solo era el que le pasaban cosas locas !!!

Oye esto a mi solo me da a pensar que es algo con el estilo, el estilo lo guardaste en la misma orden que el smartforms ?? hasta donde yo se no debería cambiar el tipo de letra según el dispositivo de salida

ahhhh pero estas en calidad probando con 2 dispositivos diferentes ??? si es así, nada, olvídalo…el estilo ya esta en calidad

La verdad no se…si es por tema de dispositivos debería saberlo un basis, pero es algo muy raro !!

La imagen que mandaste en el dispositivo de salida en QAS que dices que si aparece la podrias comparar con la de desarrollo quítale la opción para que no aparezca y ejecútala seguramente tiene otros parámetros que en QAS

Creo que a todos los abaps nos pasan cosas locas como esas :smile: uno se va acostumbrando jajajajajajajajaja

Hola Chicos gracias por su pronta respuesta,

Bueno acabo de tener una mesa de trabajo con el equipo Basic y ya tengo una explicación de esta locura jajja. A ver si me explico bien:

  1. Mi usuario en la SU01 tiene un dispositivo por defecto que es la LOCAL2 es por ello que en desarrollo me aparece por defecto el formato que ya les envie como LOCAL2.
  2. En QAS mi usuario no tiene ningún dispositivo atado en la SU01 y es por ello que a pesar de que se usa el NO_DIALOG = ‘X’, si no tienes una impresora por defecto aparentemente esta instrucción no funciona (me corrijen si no es así).

Saludos…

Exacto era lo que te comentaba de que compararas parámetros lo que tienes que hacer es pasarle el dispositivo que deberá usar en este caso el LOCAL2 lo pasas de la siguiente manera

DATA: control TYPE ssfctrlop,
output_options TYPE ssfcompop.

control-preview = ‘X’. "Preview the output of Smartform "<--------
control-no_dialog = ‘X’. "Don’t show Dialog "<--------
output_options-tddest = ‘LOCAL2’. "Spool: Output device "<--------
output_options-tdnoprint = ’ '. "No printing from print preview

CALL FUNCTION fm_name
EXPORTING

  • ARCHIVE_INDEX              =
    
  • ARCHIVE_INDEX_TAB          =
    
  • ARCHIVE_PARAMETERS         =
    
    control_parameters = control "<--------
  • MAIL_APPL_OBJ              =
    
  • MAIL_RECIPIENT             =
    
  • MAIL_SENDER                =
    
    output_options = output_options "<--------
    user_settings = ‘X’ "<--------
  • IMPORTING
  • DOCUMENT_OUTPUT_INFO       =
    
  • JOB_OUTPUT_INFO            =
    
  • JOB_OUTPUT_OPTIONS         =
    
  • TABLES
    EXCEPTIONS
    formatting_error = 1
    internal_error = 2
    send_error = 3
    user_canceled = 4
    OTHERS = 5
1 me gusta

Ummmmm interesante…a mi eso nunca me había pasado ni habia visto nada de eso, pero el basis no puede atarte la misma configuración que tienes es desarrollo a calidad y en tal caso a productivo ??? porque cuando pases eso a productivo, van a tener que saber por cual dispositivo utilizar o dependiendo del usuario el mismo va a poder cambiar !! para mi es mas un tema de basis, todos deberían tener el mismo formato…sino imagínate, van a tener que crear un smartforms casi que haciendo hardcod con el dispositivo de salida !!

1 me gusta

Que tal @canuto!!!

La verdad si puede hacerlo, el tema es que se supone que el SmartForm se debería visualizar igual en cualquier dispositivo de salida porque para eso lo configuramos. No como en este caso que en un dispositivo unas letras se ven en negritas y en otro dispositivo se ve normal por ejemplo.

Saludos…

ummmmm bueno !!! si resolviste fino, por lo menos ya sabes como resolver pero para mi esto deberia solventarlo un basis !! porque me hace como un poco de ruido ese que en el codigo se este indicando el dispositivo…que pasa si lo ejecuta canuto y canuto no tiene acceso al dispositivo que esta en codigo ??? o siempre todos los usuarios pueden acceder a cualquier dispositivo ??

Estoy de acuerdo contigo, @canuto, ya que si bien es posible pasar el dispositivo en las opciones de salida como indica @jandreu, sería buena idea consultar con un BASIS puede realizar las configuraciones pertinentes, a fin de evitar estar harcodeando siempre el dispositivo. Cosa que de cara a futuros mantenimientos puede causar inconvenientes si modifican los dispositivos.

@johnny282 Sobre la forma en que se muestra en uno y otro dispositivo, creo esto puede depender del dispositivo en si, y de sus parametrizaciones, o que alguno de estos no es compatible con el tipo de letra del estilo y coloca un tipo de letra por defecto. Pero esto se sale de mi jurisdicción jeje :smile:

Realmente considero que los dispositivos de impresión tanto en SAP como fuera, y tanto físicos como virtuales, son un mundo aparte que aún no comprendo bien, me ha pasado con documentos guardados en Google Drive por ejemplo, que si los descargo utilizando la opción Imprimir y selecciono el PDF Creator en mi maquina, me sale distinto el formato de caracteres, o el espaciado, a como me sale el mismo documento si elijo la opción Descargar PDF

1 me gusta

Que tal Muchachos,

La verdad que me da como un poco de pena con este tema que ya lleva algo mas de 30 respuestas. Pero esto me ha ayudado a conocer en dos semanas un montón de cosas que eran nuevas para mí.

De verdad que les agradezco enormemente la paciencia y les pido disculpas, pero si no fuera por sus oportunas respuestas estaría al borde del colapso.

Saludos…

2 Me gusta

No vale, tranquilo !!! para eso estamos (que mas hubiese querido yo tener algo así cuando comencé jajajajajaja) pero si, a mi forma de ver este tema de la salida pasa mas por cosas basis que por programación !!!

Bueno seria que saliera algún basis de por acá para darnos mas luz al respecto…no hay grupo basis todavía ??? porque como te dije arriba (ojo, mi manera de pensar) y como comenta @viktorinoxx, hay como una especie de hardcod…no se !! igual esperemos a ver que mas dicen y ver si algún basis nos dice algo

Tranquilo @johnny282 para eso está el foro :smiley: lo importantes es que puedas aprender, y que luego también puedas compartir con otros tus conocimientos.

@canuto creo que @SidV mencionó hace poco que ya se creó el grupo BASIS, voy a ver si los unimos para que arrojen algo de luz sobre el asunto.

invocando a @basis para que den aqui su aporte

[quote=“canuto, post:34, topic:1598”]
Bueno seria que saliera algún basis de por acá para darnos mas luz al respecto…no hay grupo basis todavía ??? porque como te dije arriba (ojo, mi manera de pensar) y como comenta @viktorinoxx, hay como una especie de hardcod…no se !!
[/quote]Si @canuto creo que no es buena practica hacer ese Hardcod y ya lo comente en el codigo, por lo que voy a crear un nuevo STYLE para este formulario en particular y arreglar un poco la disposicion de la cabecera del documento y el pie.

Pero si me gustaría que involucraramos al grupo de Basis para ver que opinan :+1:

1 me gusta

Pues bien !! te invito a que marques alguna de las respuesta como solucion a fin de dar como resuelto el tema, yo cree este nuevo tema para ver si sale la ayuda del algun basis

Espero que @SidV, @smota, @Shadowdancer o @Salco, me ayuden con darle una mejor forma jajajajaja porque yo no soy muy estetico jajajajaja

el nuevo tema para la solucion basis es este http://foros.consultoria-sap.com/t/help-basis-dispositivo-de-salida-para-smartforms/1896

Yo no se si creando un nuevo estilo, des solución al problema !!! porque la lógica me dice que el dispositivo te va a seguir dando un formato que no quieres !! espera a ver que dicen los basis al respecto…yo he intentando invocar al grupo basis y creo que no existe todavía !!!

Yo tampoco se como usar los grupos, coloque @BASIS y no pasa nada, pero en el tema de grupos dice que ya está creado.

Tal vez solo se pueden usar al momento de crear el tema.