#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. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|