#1
|
|||
|
|||
Salto de Pagina ---Sapscript
Hola amigos.
Tengo un programa control desde el cual hago un llamado al sapscript para imprimir un estado de cuenta. El programa es selectivo (parameter -un cliente a la vez). Me han pedido generar varios estados de cuenta (select-options) y para ello necesito que por cada cliente salte de página y se impriman sus encabezados (ventanas Header,Sociedad, Resumen). He puesto el llamado al formulario-sapscript dentro de un loop, con un at first y un at last (para abrir y cerrar el formulario solo una vez). Todo bien, pero cuando se trata de un nuevo cliente no se como manejar el salto de la pagina. A continuación parte del código: **La tablita interna tiene n códigos de cliente, a los cuales se les selecciona **partidas abiertas y compensadas del periodo de estado de cuenta y se car- **gan en otras tablitas que se usan para imprimir detalle (Ventana MAIN con **diferentes elementos). **>> ** ctab_kunnr ** 1) 25 ** 2) 47 ** 3) 84 ** .. ** .. ** N) NN **>> Loop at ctab. At first. ITCPO-TDPAGESLCT = SPACE. "Todas las páginas ITCPO-TDNEWID = 'X'. "Crea nuevo spool ITCPO-TDCOPIES = 1. "1 copia ITCPO-TDDEST = 'LOCL'. "Nombre de la impresora ITCPO-TDPREVIEW = SPACE. "No Preview ITCPO-TDCOVER = SPACE. "No portada ITCPO-TDIMMED = 'X'. "Imprime inmediatamente ITCPO-TDDELETE = 'X'. "Borra después de imprimir CALL FUNCTION 'OPEN_FORM' EXPORTING FORM = 'ZESTADO_CUENTA' LANGUAGE = SY-LANGU OPTIONS = ITCPO DEVICE = 'PRINTER' DIALOG = 'X' EXCEPTIONS OTHERS = 1. IF SY-SUBRC NE 0. WRITE /'error al abrir formulario'. STOP. ENDIF. Endat. move ctab-kunnr to w_kunnr. * Las ventanas header, sociedad y resumen se están imprimiendo solo para el *primer cliente. Las ventanas address, info y MAIN si se imprimen para los *diferentes clientes. CALL FUNCTION 'WRITE_FORM' EXPORTING WINDOW = 'HEADER' EXCEPTIONS OTHERS = 1. * Imprimimos la ventana Sociedad CALL FUNCTION 'WRITE_FORM' EXPORTING WINDOW = 'SOCIEDAD' EXCEPTIONS OTHERS = 1. * --- Imprimimos la ventana Address CALL FUNCTION 'WRITE_FORM' EXPORTING WINDOW = 'ADDRESS' EXCEPTIONS OTHERS = 1. * Imprimimos la ventana CABECERA CALL FUNCTION 'WRITE_FORM' EXPORTING WINDOW = 'INFO' ELEMENT = '503' EXCEPTIONS OTHERS = 1. * Imprimimos la ventana CABECERA CALL FUNCTION 'WRITE_FORM' EXPORTING WINDOW = 'INFO' ELEMENT = '505' EXCEPTIONS OTHERS = 1. * Imprimimos la ventana CABECERA CALL FUNCTION 'WRITE_FORM' EXPORTING WINDOW = 'RESUMEN' EXCEPTIONS OTHERS = 1. ** * --- Imprime Titulo de Pagos Realizados CALL FUNCTION 'WRITE_FORM' EXPORTING WINDOW = 'MAIN' ELEMENT = '522' EXCEPTIONS OTHERS = 1. * Imprimimos la ventana MAIN Pagos Realizados sort rtab by budat. loop at rtab where statu = 'PC'. CALL FUNCTION 'WRITE_FORM' EXPORTING WINDOW = 'MAIN' ELEMENT = '534' EXCEPTIONS OTHERS = 1. endloop. sort rtab by budat. loop at itab where statu = 'PC'. CALL FUNCTION 'WRITE_FORM' EXPORTING WINDOW = 'MAIN' ELEMENT = '535' EXCEPTIONS OTHERS = 1. endloop. ** ..... ..... ...... ...... ** AT LAST. IF l_error IS INITIAL. CALL FUNCTION 'CLOSE_FORM'. IF sy-subrc NE 0. l_error = 'X'. ENDIF. ENDIF. ENDAT. Ya he hecho el salto pero no con formulario sapscript si no con WRITE ** directamente, incluyendo un at new (gracias a la ayuda que recibí en este mismo foro). loop ctab. ... AT NEW kunnr new-page ENDAT. .. .. endloop. Agradecido infinitamente con la ayuda que me puedan brindar. Saludos y que estén muy bien. |
#2
|
|||
|
|||
Se las paginas son iguales para todos los clientes, és solo abrir y cerrar el formulario en el final del LOOP ( OPEN_FORM E CLOSE_FORM ). Puede también, crear un ELEMENTO DE DATOS "/E" con el comando "NEW-PAGE".
espero que ayude! Úlima edición por emerson.tosin fecha: 18/05/10 a las 11:58:20. |
#3
|
|||
|
|||
Gracias Emerson.
El tema es que si cololo el open-form y close-form por cliente, me va a mostrar la pantalla de pre-visualización por cada uno. Lo que estoy buscando es que haga el open y close form solo para el primer y último cliente respectivamente. Lo del comando new-page como elemento de texto, se lo incluí en la primera ventana de titulos (HEADER) y se comporta igual. A partir del segundo cliente me está omitiendo las ventanas HEADER, SOCIEDAD Y RESUMEN. La ventanas ADDRESS, INFO Y MAIN si las imprime pero de forma corrida no obedece el salto de pagina (new-page): CALL FUNCTION 'WRITE_FORM' EXPORTING WINDOW = 'HEADER' ELEMENT = 'NP' EXCEPTIONS OTHERS = 1. El Elemento de texto NP tiene el comando NEW-PAGE. Estaré haciendo algo mal seguramente, espero su valiosa ayuda..... Saludos. |
#4
|
|||
|
|||
Si funcionó como me dijo Emerson, incluyendo un elemento de texto con una linea comando NEW-PAGE.
... ... sort rtab by budat. loop at itab where statu = 'PC'. CALL FUNCTION 'WRITE_FORM' EXPORTING WINDOW = 'MAIN' ELEMENT = '535' EXCEPTIONS OTHERS = 1. endloop. ** ** ** Esto me provoca el salto a la proxima pagina. CALL FUNCTION 'WRITE_FORM' EXPORTING WINDOW = 'MAIN' ELEMENT = 'NP' EXCEPTIONS OTHERS = 1. Lo que me queda ahora es controlar el reseteo de contador de pagina por cada cliente. Amigos un millón de gracias y que esten muy bien.... |
Herramientas | Buscar en Tema |
Desplegado | |
|
|