Copiar/pegar en un ALV Grid

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Abapor
    Member
    • may
    • 34

    #1

    Copiar/pegar en un ALV Grid

    Hola, tengo un ALV Grid al que le quiero poner el icono de pegar. Lo que intento es copiar desde excel unos 400 registros y pegarlos a la vez para guardarlos despues .
    No se si me he explicado lo suficiente .
    muchas gracias de antemano
  • ibecerra

    #2
    Hola, no lo tengo muy claro, podrias explicarlo un poco mas.
    saludos

    Comentario

    • Abapor
      Member
      • may
      • 34

      #3
      Hola ibecerra,
      a ver si puedo explicar muy bien .
      tengo un ALG Grid , y tengo un fichero Excel donde hay casi 400 registros
      (los campos del AVL Grid son los mismos en el fichero Excel). lo que quiero hacer es , guardar todos los datos del Excel en mi ALV Grid , por eso necesito como puedo hacer un (" Select all "+ Copy) desde el Excel para pegar todos los registros a la vez en el ALV Grid.

      muchas gracias por tu respuesta
      Editado por última vez por Abapor; 04/06/2008, 07:48:04.

      Comentario

      • pmarinab
        Member
        • abr
        • 64

        #4
        Hola Abapor,

        no tengo ni idea de si eso que dices puede hacerse o no, pero no sería mucho más facil crear un boton en el ALV que te permita subir el fichero excel y que tú te encargues por programación de leerlo y copiar cada registro a la tabla interna de tú ALV??

        Yo pienso que es mucho más sencillo de hacer.

        Un saludo

        Comentario

        • Abapor
          Member
          • may
          • 34

          #5
          Hola pmarinab ,
          si tienes razon es mucho más facil subir el fichero excel ... pero si el usuario elegi solo unos registros ? en este caso todo depende de su selección .
          lo que intento hacer es usar el concepto de Ctrl + C / V.

          Comentario

          • robert_milan
            Senior Member
            • jun
            • 315

            #6
            hazlo en dos paso uno donde carguen el fichero de excel y lo vean y otro que seleccione cual quiere en el alv.
            Un Huevon No Inútil


            Solo di lo que piensas, a la mejor tienes la mejor respuesta....

            Si alguien ya lo hizo, copialo y cambiale las variables total es un codigo nuevo.....

            Si SAP lo hace se puede hacer, no me pidas hacer algo que SAP no ha hecho.....

            Consultor FI jr/ABAP Sr.

            Comentario

            • Jonathan Barrio Rodriguez
              Senior Member
              • oct
              • 199

              #7
              A Ver Si....

              BUENO, no te puedo ayudar, pero a ver si

              al construir el ALV , al hacer el catalogo
              se informa un campo que creo que se llama "EDIT"
              (compruebalo en la tabla "slis_t_fieldcat_alv")
              si lo marcas con una "X" este campo coge calidad imput,
              osea puedes escribir sobre él y luego -no me acueerdo como se hacía-
              se lo pasas a la tabla interna para que al volverse a mostrar el ALV, salga
              así, ya actualizado con los valores qeu le habías introducido. Luego ademas
              podrías hacer un UPDATE o INsert y pasarlos a una tabla Z o Standard.

              Lo que no sé es si al hacer ctr + v sobre la ALV, cogerá en cada campo el
              valor correspondiente o solo lo cogerá en la primera, pero prueba (al ira a pegar sobre el ALV) primero hacer ctr + y , seleccionar la ALV entera, y luego
              ctr + v.

              :S no sé si me sé explicar bien.... Te pegaría un ejemplo pero no lo encuentro
              :$, bueno, si lo pruebas, nos comentas si no te importa.

              Saludos

              FORM F_ALV_FIELD_CONFIGURATION.

              * For each column to be displayed in the reprot,
              * append a line in I_ALV_FIELDCAT *
              I_ALV_FIELDCAT-ROW_POS = '1'.
              I_ALV_FIELDCAT-COL_POS = '1'.
              I_ALV_FIELDCAT-TABNAME = 'IT_DATA'.
              I_ALV_FIELDCAT-FIELDNAME = 'CARRID'.
              I_ALV_FIELDCAT-REF_TABNAME = 'SBOOK'.
              I_ALV_FIELDCAT-REF_FIELDNAME = 'CARRID'.
              I_ALV_FIELDCAT-SELTEXT_L = 'X'. " Long text

              I_ALV_FIELDCAT-EDIT = "X".

              APPEND I_ALV_FIELDCAT.
              CLEAR I_ALV_FIELDCAT.
              Barrio Rodriguez, Jonathan.
              _____________________________________
              "No sigas a quien haya encontrado la verdad sino a quien la busque"

              Comentario

              • ibecerra

                #8
                hola como dice yonyxxl, habiliita los campos de tu alv grid con la sentencia
                1. gs_layout-edit = 'X'. osea q lo habilitas todos sin excepcion
                2. la otra seria q tengas un boton q habilita y deshabilidta los campos para copiar eso lo haces con objetos..
                ejemplo
                ls_celltab-fieldname = 'ICON'.
                ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
                INSERT ls_celltab INTO TABLE pt_celltab.
                ls_celltab-fieldname = 'ZUONR'.
                ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
                INSERT ls_celltab INTO TABLE pt_celltab.
                ls_celltab-fieldname = 'GJAHR'.
                ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
                INSERT ls_celltab INTO TABLE pt_celltab.

                Comentario

                • Jonathan Barrio Rodriguez
                  Senior Member
                  • oct
                  • 199

                  #9
                  1. gs_layout-edit = 'X'. osea q lo habilitas todos sin excepcion
                  2. la otra seria q tengas un boton q habilita y deshabilidta los campos para copiar eso lo haces con objetos..
                  ejemplo
                  ls_celltab-fieldname = 'ICON'.
                  ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
                  INSERT ls_celltab INTO TABLE pt_celltab.
                  ls_celltab-fieldname = 'ZUONR'.
                  ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
                  INSERT ls_celltab INTO TABLE pt_celltab.
                  ls_celltab-fieldname = 'GJAHR'.
                  ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
                  INSERT ls_celltab INTO TABLE pt_celltab.[/QUOTE]

                  SOLO POR CURIOSIDAD, la verdad que esto me queda muy grande,
                  podrías decirnos que tabla standard correspond "ls_celltab" (xq imagino que
                  esa es una tablaInterna creada con un LIKE), supongo que no es pt_celltab.

                  Y SI no es mucho molestar... que hace las sentencia
                  "cl_gui_alv_grid=>mc_style_disabled." pues no veo porqué así
                  el icono habilita o desahabilita,

                  Muchas gracias poir el aporte del gs_layout-edit = X.
                  Barrio Rodriguez, Jonathan.
                  _____________________________________
                  "No sigas a quien haya encontrado la verdad sino a quien la busque"

                  Comentario

                  • ibecerra

                    #10
                    ok, es un alv orientado a objetos , hay veces el codigo con objetos es medio marciano pero te acostumbraras.
                    te explico
                    ls_celltab = lvc_t_styl.

                    habilita y deshabilita las columnas de un grid.
                    cl_gui_alv_grid=>mc_style_disabled
                    cl_gui_alv_grid=>mc_style_enabled
                    te explico lo del icon(q vendria ser una columna mas)
                    , lo q pasa es q por defecto al inicio todos los campos estan habilidatos(disponibles para editar) , para luego deshabilitar y habilitar solo los campos q por configuracion(en forma dinamica) deseo modificar.
                    saludos.

                    Comentario

                    • Jonathan Barrio Rodriguez
                      Senior Member
                      • oct
                      • 199

                      #11
                      OK MUCHAS GRACIAS.

                      La verdad... que sí, esto del Orientado Objetos es un tedioso follon :S

                      Espero que tu profecía de que solo requiere tiempo se cumpla...

                      Gracias de nuevo
                      Barrio Rodriguez, Jonathan.
                      _____________________________________
                      "No sigas a quien haya encontrado la verdad sino a quien la busque"

                      Comentario

                      • Abapor
                        Member
                        • may
                        • 34

                        #12
                        hola y gracias amigos por vuestras respuestas,

                        tengo una idea pero no se si vas a funcionar , he encontrado un metodo en internet que te permite recupera lo que has copiado en el clipboard.


                        CALL METHOD cl_gui_frontend_services=>clipboard_import .

                        lo que voy a hacer es recuperar mi seleccion con este metodo y rellenar mi tabla interna con los datos ( antiguos y seleccionados desde el execl ) luego mostrar el ALV con la tabla interna actualizada .

                        que os parece

                        muchas gracias
                        Saludos.

                        Comentario

                        • Jonathan Barrio Rodriguez
                          Senior Member
                          • oct
                          • 199

                          #13
                          bUENO, había oido hablar de esa sentencia pero no sé como funciona.

                          Peró si que sería la solución, decirle mediante estatus que se ejecute
                          al presionar el boton, podrás recuperar esos datos por una tabla interna
                          que cree esa sentencia, y luego hacer insert o append en la tabla interna,
                          (para que no borre los anteriores).

                          Me parece una idea muy buena y limpia, ¿nos cuentas como va?
                          Barrio Rodriguez, Jonathan.
                          _____________________________________
                          "No sigas a quien haya encontrado la verdad sino a quien la busque"

                          Comentario

                          • pmarinab
                            Member
                            • abr
                            • 64

                            #14
                            De todas formas, cuando en un ALV OO al menos uno de los campos es modificable (campo edit = 'X' en el catalogo de campos), aparece en el boton de Pegar un listbox que te permite escoger entre pegar sobreescribiendo o pegar insertando. El funcionamiento es exactamente igual al de la SE16N cuando entras a una tabla con permisos de escritura.

                            No te sirve con eso??

                            Comentario

                            • ibecerra

                              #15
                              CALL METHOD cl_gui_frontend_services=>clipboard_import .
                              Interesante ,hazlo y nos avisas como te fue.. ahhh y no olvidar de pegar el codigo.

                              Comentario

                              Trabajando...