Bueno continuando con el tema de SmartForms, les comento que ya culmine mi primera correccion y los resultados fueron exitosos. Les agradezco enormemente el apoyo y la paciencia que tuvieron con este tema.
Entrando en Materia, les hago una consulta!.
En el comprobante que venia trabajando, surgió una posible mejora aunque no la formalizaron como tal en un nuevo requerimiento, pero me gustaría desarrollarla aunque sea en el objeto Local.
El tema es el siguiente: En el Comprobante de retención de ISLR, existen Proveedores que poseen mas de un indicador de retención, es decir, tienen conceptos distintos en el comprobante, se los envío en imagenes.
Lo que se quiere es “Unificar” en un mismo PDF todos los conceptos y no que por cada indicador se genere una pagina nueva. Me parece que es un tema de configuración en el área principal, pero la verdad se me ha hecho esquivo.
Si, eso se puede…con una tabla, esa tabla debería contener cuantos conceptos vaya a tener una persona !! y esa pasarla al smartforms…en el main, si no me equivoco vas a crear esa logica, con un loop !!
Ahora bien, yo hice eso una vez y lo hice hace tiempoooooo, es algo fastidioso pero si se puede y no es nada del otro mundo !! yo no guarde el desarrollo ni nada, hay una pagina que es muy bien y explica eso pero @SidV ya me ha regañado mucho y esta que me bota de aca, entonces no se si pueda recomendartela aqui mismo…no se, para explicartelo con un ejemplo tendria que hacer como una mini guia o al menos que uno mas del grupo de abap lo tengo por ahi fresco o algun desarrollo donde te pueda pasar eso.
Pero si se puede, tranquilo que no es nada del otro mundo.
Es un desarrollo el que se encarga de realizar la llamada a ese SmartForm?
Si es así, me imagino que le está enviando los datos en una tabla interna lo único que antes de enviarla está iterando por cuantas retenciones diferentes tenga. Lo que debes hacer es enviarle todas las retenciones en la misma tabla interna y si todo sale bien, no tendrás que realizar ninguna modificación al SmartForm como tal.
Buenas, pues a mi parecer es como ya han dicho canuto y romaldyminaya. Deberías pasar una tabla con los contenidos de cada fila así en el smartform pintaría el comprobante de retención y la tabla de la descripción. Además el smartform podría paginar si se llenara la tabla para crear otra página.
Ahora leyendo lo que dice @Salco y @romaldyminaya, me surgió la duda…sera que yo entendí mal ???
Yo entendí que el en el programa llena una tabla interna con todos los conceptos que tiene el empleado (que pueden ser 2, 4 o 10) y eso lo va a pasar al smartforms, la cosa es como en el smartforms dejas el espacio en el template o en donde el lo haya puesto si no sabe cuantos conceptos van a venir, me explico ?? es manejar ese espacio de una forma dinámica…no es así @johnny282 !! sino ps disculpen, es que soy medio lento jajajajajajaja
Lo que necesito efectivamente es hacer un Loop de la tabla interna en el SmartForm que me permita identificar cuantos conceptos existen por documento y adicionalmente crear la lógica para realizar el salto de pagina por documento si el usuario coloca mas de uno en el programa impresor, pero de verdad aquí me estanque .
Bueno esa parte que dice salco, hay que hacer algo en el main, tener una ventana primaria y una secundia, donde la primaria va a llamar a la segundaria y la secuandiria a ella misma, si no me equivoco y no recuerdo si hice algo con un comando !! la cosa es que no me acuerdo como lo hice porque fue hace tiempo, ando buscando en la pagina que te comente a ver si lo consigo o ver si alguien lo tiene fresco y te da la respuesta
Es cierto @canuto, yo había entendido mal. Entonces la solución es más fácil todavía, pasa en una estructura los datos de cabecera y luego una tabla con los indicadores.
Disculpen la demora pero estuve fuera de la ciudad y hasta ahora estoy revisando sus comentarios.
Pana @canuto lo reviso y te comento.[quote=“romaldyminaya, post:9, topic:2010”]
El programa que se encarga de imprimir dicho SmartForm es un “zeta” ?
[/quote]
Epale @romaldyminaya efectivamente es un Z y llena una tabla interna que contiene la información de las retenciones con sus montos. Manejo dos WorkAreas una para manejar la cabecera y otra para manejar los datos dentro del área principal.
Que tal @Salco justamente es lo que se esta haciendo, pero hay justamente es donde esta el salto de pagina cuando existe mas de un concepto de retención.
Que tal @canuto!!, ando en eso, lo que me enviaste me servio para futuros desarrollos pero en este caso en particular no lo pude aplicar para no afectar el desarrollo que ya se tenía previo en el formulario.
Pero tengo una sesión de trabajo con otro ABAP al final de la tarde, para validar el tema de agrupar los conceptos por documento pero desde el programar impresor, hice la prueba con un loop desde el SmartForms pero no agrupaba los conceptos por documento, es decir, colocaba la información de forma lineal (colocaba conceptos que no correspondían con el numero de documento).
Ya pudimos observar cual puede ser el problema y según me comento el FreeLance, la mejor forma es trabajar en el impresor y ordenar los conceptos desde la tabla interna ( o eso fue lo que le entendí) y desde este punto ya no se tendría que hacer mas ajustes al Smart.
De igual forma les comento una vez que tenga la solución, se las coloco por aquí.
Yo lo que entiendo ahi es que van a tratar de hacer una tabla (un registro por concepto) y luego mandarla al smartforms !!
Ahi entiendo que estabas pasando una tabla al smartforms pero el loop lo hace es una sola celda del templete o en un texto algo asi, porque la liga de que salte cada vez de pagina lo va a ser un una tabla dentro del smartforms o con main que le hagas es logica !! pero si ustedes que son los que estan cerca y viendo todo en real consigues una solucion mas practica, la comentas para por lo menos yo aprende algo mas jajajajaja !!
Finalmente y luego de muchas horas de esfuerzo, se solvento la situación con el paginado de los SmartForms. Procedo a explicarles lo que se hizo para corregir el tema:
Adicionales a las WA que ya estaban declarados para manejar los datos de cabecera como lo datos en el MAIN, se declararon datos globales nuevos para controlar los datos por comprobantes
Luego en la Cabecera del PAGE se creo una linea de código para filtrar los números de documentos dependiendo de la selección realizada desde el programa impresor.
Luego en el MAIN se creo un Loop Nuevo para manejar los datos de documentos desde la tabla BKPF. A partir de esta, ya tenemos control de cuales son los comprobantes que se deben imprimir y cuales son los conceptos de retención que están relacionados con cada documento.
Adicionalmente dentro del Loop se creo otra linea de código para controlar el paginado desde el PDF de los conceptos por documento y posterior en el manejo de los datos (TABLE) se genera un nuevo loop para finalmente garantizar que cada pagina por comprobante maneje los conceptos que están relacionados con el mismo
SI básicamente era eso, el problema es que antes se estaba generando una pagina por jugador y no se quería eso, si no tal cual como lo explicaste en tu ejemplo.