Anuncio

Colapsar
No hay anuncio todavía.

Listar tabla interna en SapScript

Colapsar
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes

  • Listar tabla interna en SapScript

    Hola.

    Tengo que hacer mi primer sapscript y me encuentro con un problema que espero alguien me pueda ayudar a resolver.

    El funcionamiento debe ser el siguiente:
    El formulario tiene que generar una carta, con unos textos fijos y una tabla con una cantidad, de 1 a N, de facturas que debe cada uno de los clientes que se procesan en ese momento, 1 a N.

    Ya tengo en dos tablas la información de los clientes y en otra la relación de cada cliente con las facturas que debe. Para generar una carta nueva por cada cliente recorro la tabla it_clientes y cada vez hago una llamada al formulario (open, write & close form) Es correcto? Hará lo que espero? Los textos y la cabecera está definidos en ventanas específicas y se escriben antes que la tabla, que está en la MAIN.

    El mayor problemo lo encuentro cuando quiero escribir la tabla ya que esta es variable. Cómo puedo dibujarla y pasar al formulario la información de it_facturas? Con un loop? Había pensado en poner, mas o menos, esto:

    * Escribo la cabecera de la tabla, que es fija.
    /: Obtengo la cantidad de registros para el cliente que trato ahora y así obtengo la longitud de la tabla.
    /: Loop at it_facturas
    /: "Defino las líneas superiores de las celdas.
    /: &IT_FACTURAS-VKONT& &IT_FACTURAS-***X& &IT_FACTURAS-***XX&
    /: "Defino las líneas inferiores de las celdas.
    /: endloop.

    Es correcto?

    Ah, y ahora que pienso... Como puedo controlar/hacer que la tabla si es demasiado grande, se corte y continúe en una segunda página? Creo la segunda página y digo que la primera continúe en la segunda e incluyo la ventana MAIN? El problema que en la MAIN está la creación de la cabecera, no la escribiría de nuevo y volvería a listar desde el principio?

    Muchas gracias de antemano y espero haberme explicado correctamente. Siento la cantidad de preguntas, pero la primera vez siempre es un mar de dudas :P

    Aleksei.

  • #2
    Hola Aleksei,

    eso que querés hacer no se puede, el loop lo tenés que hacer desde tu programa control, si tenés dudas en como se hace, avisanos que te ayudamos.

    Saludos!

    Comentario


    • #3
      Hola,

      La duda que tengo entonces es que si tengo que escribir por ej 10 filas y hago una única llamada al perform de mi programa de control, como hago para que pase 10 veces? Y si el loop lo hago en el prog. control, como hago para dibujar las celdas?

      Gracias de nuevo de antemano.
      Aleksei.

      Comentario


      • #4
        Originalmente publicado por Aleksei Ver Mensaje
        Hola,

        La duda que tengo entonces es que si tengo que escribir por ej 10 filas y hago una única llamada al perform de mi programa de control, como hago para que pase 10 veces? Y si el loop lo hago en el prog. control, como hago para dibujar las celdas?

        Gracias de nuevo de antemano.
        Aleksei.
        Y es obligatorio hacerlo con un sapscript? Yo creo que es más fácl utilizar smartforms. Si decides hacerlo así te puedo ayudar los sapscript me dan grima y por suerte solo he tenido que modificarlos.

        Saludos
        "Soy el señor Lobo, arreglo problemas"
        http://sapymas.blogspot.com/

        Comentario


        • #5
          Hola,

          El problema que el cliente tiene una versión 4.6B y no funciona muy bien esa parte. De hecho yo habia pensado hacerlo con smartforms y de paso así aprendía, que me parecen bastante mejores, pero lo he intentado y me daba un montón de fallos como si algo no estuviese bien.

          Muchas gracias de todas formas bisonye.
          Aleksei.

          Comentario


          • #6
            En el SAPScript tenes que poner el Write_form dentro del loop y listo, te va a escribir tantas lineas en el formulario como lineas tenga la tabla interna.

            El write form tiene que tener como parámetro la ventana y el elemento de texto donde lo vas a poner.

            Saludos y suerte!

            Comentario


            • #7
              Hola,

              Koken, no te entiendo muy bien. A ver, la tabla la voy a escribir en la ventana MAIN y ese write_form lo tengo que poner en el loop que hago a it_facturas en el programa de control?

              EDIT: Hola de nuevo. Ya he logrado que me muestre los registros uno debajo del otro. El problema que tengo ahora es que cuando dibuja la tabla, en la llamada a la MAIN se dibuja siempre en la misma posición. Como puedo indicar que se mueva? Es decir, teniendo este código en la MAIN:

              /: POSITION XORIGIN 20 MM YORIGIN 7 MM

              Como puedo hacer que la siguiente llamada a la MAIN tenga esto otro:

              POSITION XORIGIN &V_LINEAS& MM YORIGIN 12 MM

              He probado a intentarlo con variables, pero no lo admite el editor.

              Gracias de nuevo por la ayuda y siento ser tan pesado,
              Aleksei.
              Editado por última vez por Aleksei; 27/08/2008, 14:53:21.

              Comentario

              Trabajando...
              X