Pues sip @smota, creo que es una mala pasada que me hizo el editor, porque el diaa de ayer hice esto mismo que me recomendantes y me daba un error de utilización, lamentablemente no lo capture para enviarlo.
Pero bueno ya nuevamente declare los parámetros de entrada y me los acepto, ahora me quedo la duda con respecto a los cálculos ya que el valor esta arrojando Cero, cuando debería arrojarme 12. Adicionalmente me esta dando un Warning con respecto al uso del parámetro de entrada.
Que tal @canuto, cuando me refería a arrastrar es porque en esta pantalla se permite hacer Drag and Drop de objetos al igual que en la SE80 cuando quieres utilizar una subrutina ya creada dentro de otro programa, la tomas del menú de objeto y la arrastras hasta el editor.
Vas bien, el warning es porque la variable no tiene valores en su declaracion V_*
para tus variables locales que inicien con LC, y para las variabels generales GV_ es cosa de nomenclaturas, calro es sujetivo.
Ahora bien, el calculo que estas haciendo debe estar dando cero, para solventar ese caso.
dentro escribre
Break-Point Smota. el usuario coloca el tuyo de SAP. y ejecutalo para hagas un debug.
@johnny282 podrías debuguear el smartforms para ver porque sale cero, puede ser porque no estén llegando los valores en el numerador de la fórmula.
Deberías, dentro del smartform hacer clic en la herramienta de test (F8) y te sale una pantalla con el nombre del módulo de funciones que usa dicho smartfom. Visualiza esta función y busca (Ctrl+F) el string v_alicuota (con una búsqueda global) y te saldrá en que parte se encuentra tu sentencia de asignación. Le pones un breakpoint y ya puedes lanzar el smartform.
Excelentes consejos para el debugging de un SmartForms de verdad que no sabía como hacerlo y me estaba volviendo loco con esto . 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 . 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 .
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 . Hay alguna particularidad en el transporte de SmartForms que deba tener en cuenta???
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:
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).
Cuando termines los cambios y debas transportar, debes ir a la TX SE09 o SE10 (es igual) y allí buscar tu OT y liberarla.
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: 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.
Bueno les tengo que comentar que me devolvieron el cambio por un tema que me tiene dando de cabezazos al escritorio. Les resumo para ver si me pueden ayudar:
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’.
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.
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
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:
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.
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í).
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
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 !!
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.
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
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
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.
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
[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