Problemas con CALL FUNCTION 'SAVE_TEXT'

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • BY_MY
    Senior Member
    • nov
    • 130

    #1

    Problemas con CALL FUNCTION 'SAVE_TEXT'

    Buenos dias a todos compañeros.

    Se que sobre este tema se ha hablado por el foro y lo he mirado pero no consigo hacer lo que pretendo.

    Yo trabajo en el modulo PS y necesitaria incorporar unos textos largos a los objetos que creo (pep's, cabeceras de Grafo, operaciones de Grafo, etc). Para ello si no me equivoco se usa la funcion CALL FUNCTION 'SAVE_TEXT'.

    El caso es que he debbugeado el codigo y parece que el standart lo hace asi pero yo pongo los mismos campos o similares y aunque no da errores no modifica el texto que yo quiero. ¿Alguien sabe porque, alguna sugerencia o manual?.


    mi codigo es:



    DATA: header TYPE TABLE OF thead WITH HEADER LINE.
    DATA: lines TYPE TABLE OF tline WITH HEADER LINE.



    header-TDOBJECT = 'PMS'.
    header-TDNAME = 'E00003732'.
    header-TDID = 'LTXT'.
    header-TDSPRAS = 'S'.
    *TDTITLE
    *header-TDFORM = 'SYSTEM'.
    *TDSTYLE
    header-TDVERSION = 00001.
    header-TDFUSER = 'IBM14'.
    header-TDFRELES = 700.
    header-TDFDATE = 20080708.
    *TDFTIME
    *TDLUSER
    *TDLRELES
    *TDLDATE
    header-TDLTIME = 095235.
    header-TDLINESIZE = 072.
    header-TDTXTLINES = 00004.
    *TDHYPHENAT
    *TDOSPRAS
    header-MANDT = SY-MANDT.
    append header.
    lines-TDFORMAT = '*'.
    lines-TDLINE = 'AAAAAAAAAAAAAAABBBBBBBBBBBBCCCCCC'.
    append lines.
    lines-TDFORMAT = '*'.
    lines-TDLINE = 'AAAAAAAAAAAAAAABBBBBBBBBBBBCCC'.
    append lines.
    lines-TDFORMAT = '*'.
    lines-TDLINE = 'AAAAAAAAAAAAAAABBBBBBBBBBBBCCCCC'.
    append lines.
    lines-TDFORMAT = '*'.
    lines-TDLINE = 'AAAAAAAAAAAAAAABBBBBBBBBBBBCCCCCCCCCCCCCCCCCD'.
    append lines.

    CALL FUNCTION 'SAVE_TEXT'
    EXPORTING
    CLIENT = SY-MANDT
    HEADER = HEADER
    INSERT = ' I '
    SAVEMODE_DIRECT = ' X '
    OWNER_SPECIFIED = ' SAPUSER '


    LOCAL_CAT = ' '
    IMPORTING
    *FUNCTION =
    NEWHEADER = HEADER
    TABLES
    LINES = LINES
    EXCEPTIONS
    ID = 1
    LANGUAGE = 2
    NAME = 3
    OBJECT = 4
    OTHERS = 5
    .
    IF SY-SUBRC <> 0.

    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

    COMMIT WORK.









    Un saludo y gracias de antemano.
  • chivi82
    Member
    • mar
    • 64

    #2
    Save_text

    ¿Has probado a llamar al módulo de función COMMIT_TEXT después de hacer el SAVE_TEXT?

    Comentario

    • BY_MY
      Senior Member
      • nov
      • 130

      #3
      Es cierto, era eso. Lo que pasa es que no habia dicho que lo solucione, gracias. Ahora el problema va a ser leer textos planos sin un limite de caracteres ni de lineas pero supongo que habra alguna funcion o manera de hacerlo.


      un saludo y gracias. ;-)

      Comentario

      • aldape
        Senior Member
        • dic
        • 204

        #4
        pues, creo que seria con la funcion READ_TEXT...

        no pense que hubiera una funcion SAVE_TEXT jeje...
        la ultima vez que quice agregar un texto a un objeto, hice un batch-input que lo agregaba, :P... voy a investigar esta funcion

        Saludos!

        Comentario

        • BY_MY
          Senior Member
          • nov
          • 130

          #5
          Problema con Activacion de textos

          Buenas a todos.

          Seguimos con la funcion SAVE_TEXT. El caso es que cuando en el pep (es el modulo PS) se ha modificado el texto mediante el standart pues luego lanzo mi report y me modifica los textos perfectamente, hata aqui todo correcto pero.... El problema viene cuando creo el pep y voy a insertar el texto (que realmente es lo que necesito) pues no me lo genera, le pongo el campo 'insert' y me devuelve error al intentar abrirlo, por lo que intuyo que es algun bloqueo que pueda tener que al entrar por el standart a mano desbloquea y ya no necesita mas.


          ¿Alguien sabe Algo de esto? podrian echarme una mano, ahora si me corre prisa.

          Muchas gracias.

          Comentario

          • ibecerra

            #6
            Al parecer hay campos que no estas llenando correctamente
            por ejemplo
            SPAN {font-family: "Courier New";font-size: 10pt;color: #000000;background: #FFFFFF;}LS_THEAD-TDNAME = XLIPS-VBELN. --> aquie deberia ir el nuevo codigo que se ha generado en este caso estoy poniendo el nro de pedido

            te paso el codigo que tengo que funciona bien cuando creo o modificio una entrega , guardo un texto.
            SPAN {font-family: "Courier New";font-size: 10pt;color: #000000;background: #FFFFFF;}.L0S32 {color: #3399FF;}.L0S33 {color: #4DA619;}.L0S52 {color: #0000FF;}LS_THEAD-TDOBJECT = 'VBBK'.
            LS_THEAD-TDNAME = XLIPS-VBELN.
            LS_THEAD-TDID = '0001'.
            LS_THEAD-TDSPRAS = SY-LANGU.
            LS_THEAD-TDFORM = 'SYSTEM'.
            LS_THEAD-TDVERSION = '00001'.
            LS_THEAD-TDFUSER = SY-UNAME.
            LS_THEAD-TDFRELES = SY-SAPRL.
            LS_THEAD-TDFDATE = SY-DATUM.
            LS_THEAD-TDFTIME = SY-UZEIT.
            LS_THEAD-TDLUSER = SY-UNAME.
            LS_THEAD-TDLRELES = SY-SAPRL.
            LS_THEAD-TDLDATE = SY-DATUM.
            LS_THEAD-TDLTIME = SY-UZEIT.
            LS_THEAD-TDLINESIZE = '072'.
            LS_THEAD-TDTXTLINES = '00001'.
            LS_THEAD-TDMACODE1 = 'VL02SAPMV50A'.
            LS_THEAD-MANDT = SY-MANDT.
            CALL FUNCTION 'SAVE_TEXT'
            EXPORTING
            HEADER = LS_THEAD
            IMPORTING
            NEWHEADER = LS_THEAD
            TABLES
            LINES = TLINETAB
            EXCEPTIONS
            ID = 1
            LANGUAGE = 2
            NAME = 3
            OBJECT = 4
            OTHERS = 5.

            Comentario

            • BY_MY
              Senior Member
              • nov
              • 130

              #7
              Hola Ibecerra.

              Revisare lo que me cuentas pero creo que no es cuestion de campos ya que esta sacado del standar y funcionan pero como intente explicar solo funciona si antes modifico el texto por la transaccion cj20n a mano y a partir de ahi va perfecto.

              Este modulo el PS creo que en eso es algo peculiar ya que a la hora de llamar ha bapis hay que inicializarlas en algunas ocasiones, etc.

              Intullo que es como si necesitara generar el texto antes de modificarlo ya que aunque visualmente parezca creado me da la sensacion de que no es asi.

              Alguna sugerencia? Como digo una vez hecha una modificacion a mano del texto en la cj20n, la bapi funciona perfectamente pero hasta entonces no.

              De hecho si fuerzo el insert al intentar hacer la funcion commit me dice que no puede abrirlo.


              saludos y gracias por todo, agradezco cualquier ayuda porque me corre mucha prisa.

              Comentario

              • bisonye
                Senior Member
                • ago
                • 635

                #8
                Prueba con la funcion CREATE_TEXT. Es muy parecida, la utilicé hace mucho (No en PS) y me funcionó.

                Saludos
                http://sapymas.blogspot.com/

                Comentario

                • BY_MY
                  Senior Member
                  • nov
                  • 130

                  #9
                  YA HE PROBADO Y TAMPOCO FUNCIONA.

                  La verdad espiezo a desesperar un poco porque debe ser alguna tonteria pero se me escapa ahora mismo. Tambien es cierto que parece propio PS.

                  SAludos y gracias por el interes.

                  Comentario

                  • bisonye
                    Senior Member
                    • ago
                    • 635

                    #10
                    ¿Has probado a meter el texto directamente desde la se37?
                    Yo le pasaría solo los estos campos de cabecera :
                    Código:
                    header-TDOBJECT = 'PMS'.
                    header-TDNAME = 'E00003732'.
                    header-TDID = 'LTXT'.
                    header-TDSPRAS = 'S'.
                    ¿Estas seguro que el tdname es correcto?
                    Si te dice esto:
                    Intullo que es como si necesitara generar el texto antes de modificarlo ya que aunque visualmente parezca creado me da la sensacion de que no es asi.
                    yo utilizaría la función create_text, el save creo que es para modificar.

                    A ver si sacamos algo en claro.

                    Saludos
                    http://sapymas.blogspot.com/

                    Comentario

                    • BY_MY
                      Senior Member
                      • nov
                      • 130

                      #11
                      He intentado utilizar la funcion create test, por supuesto sin exito. La verdad es que una unica diferencia aparente es que hace un init_text antes del Save_text. Yo pense lo mismo que el create me lo solucionaria pero no. Por otra parte los datos son correctos porque ya digo... cuando entro en la cj20n y modifico el texto a mano y grabo... acto seguido me empieza a funcionar el report y me coje los cambios. Esto no me vale porque estoy generando un proceso automatico para crear pep y necesitaria meter el texto justo despues de crearlo sin intervencion manual.


                      De todas maneras revisare lo del create pero ya digo que lo probe con los mismos datos del SAve_text y nada.


                      Saludos y gracias a ver si podemos sacar algo y en cuanto sepa la solucion la posteare si nadie la posteo antes.

                      Comentario

                      • bisonye
                        Senior Member
                        • ago
                        • 635

                        #12
                        A ver que me entere.

                        Estas creando un pep (no se lo que es pero me imagino que será algún tipo de documento de PS). Cuando creas este pepe le quieres meter el texto extendido. Igual el problema que tienes es que el documento no está completamente creado (no se ha hecho el commit a la BD) y no puede crear el texto con el número de documento.

                        Es una idea, a ver si por ahí van los tiros.

                        Saludos
                        http://sapymas.blogspot.com/

                        Comentario

                        • BY_MY
                          Senior Member
                          • nov
                          • 130

                          #13
                          Un pep es un objeto de PS (tampoco se mucho de ello) el caso es que graficamente hay una estructura de pep's y otros elementos, tipo arbol de programacion. El elemento generado esta porque aparece y no es cuestion de tiempo sino de algo que se cree o active con referencia al texto. La verdad es que me sorprende que el create tampoco funcione aunque el Save_Text tambien tiene una opcion insert que se comporta igual y ocurre lo mismo que contaba antes.




                          Saludos.

                          Comentario

                          • bisonye
                            Senior Member
                            • ago
                            • 635

                            #14
                            Si el elemento esta creado y puedes crear a "mano" el texto yo iría a la se37 a crear el texto mediante la función (sacandolo del report) a ver que pasa. Si sigue sin crearlo ni da mensaje de error haz un debug a la función a ver que está pasando.

                            Suerte.
                            http://sapymas.blogspot.com/

                            Comentario

                            • BY_MY
                              Senior Member
                              • nov
                              • 130

                              #15
                              Eso que me dices ya lo he hecho y sigue sin funcionar. He debuggeado la funcion standar, sobre todo el save_text y dependiendo de lo que intente hacer asi me da resultado, en uno de los casos el insert devolvia sy-subrc = 4 y de ahi el fallo. cambiando insert por el parametro modify otra cosa.


                              El caso es que hay algo que hace el standar de la cj20n que la funcion no.


                              Saludos y agradezco el interes.

                              Comentario

                              Trabajando...