Insertar datos desde una tabla interna a una tabla Z

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • jk_hunter
    Junior Member
    • nov
    • 4

    #1

    Insertar datos desde una tabla interna a una tabla Z

    hola a todos... llevo aproximadamente un mes aprendiendo ABAP y ahora tengo una pequeña duda...

    como se hace para insertar datos desde una tabla interna a una tabla Z?

    espero me puedan ayudarm de antemano muchas gracias

    saludos
  • DavidXD_XD
    Moderator
    • ago
    • 1255

    #2
    Hola ... puedes hacerlo de la siguiente manera:

    Código:
    DATA: itab TYPE TABLE OF ztabla WITH HEADER LINE.
    
    [COLOR="blue"]* Llenar tabla interna[/COLOR]
    ...
    
    [COLOR="Blue"]* Insertando a la tabla de BD ZTABLA[/COLOR]
    INSERT ztabla FROM TABLE itab.
    PD: Deben tener los mismos campos incluido si es que tiene un campo mandante, el campo mandante se llena por default con la sentencia INSERT, MODIFY, DELETE, etc. No es necesario llenar ese campo
    David Carballido Córdova

    Comentario

    • Rodolfo Montiel Rivera
      Member
      • oct
      • 92

      #3
      Saludos complementando a David deberias de agregar un

      Commit Work ó en su defecto mandar ejecutar la BAPI_TRANSACTION_COMMIT y esto para que hagan efecto los cambios a tu tabla Z despues de tu INSERT o MODIFY

      algo asi

      MODIFY z_tablatransparente.

      COMMIT WORK.
      01010000
      01001010
      10011000
      10100001

      De Byte a Beat.

      Comentario

      • jk_hunter
        Junior Member
        • nov
        • 4

        #4
        muchas gracias,

        les comentare cuando lo tenga listo...

        saludos

        Comentario

        • DavidXD_XD
          Moderator
          • ago
          • 1255

          #5
          Hola Rodolfo, bueno personalmente no utilizo los COMMIT a menos que sea un caso super extremo, te comento la razon ...

          Supongamos que en la linea 10 de tu programa realizas un COMMIT y en la 9 la insercion de datos a una tabla Z, pero en la linea 12 por curiosidades de la vida tu programa se cae, entonces debido al COMMIT has realizado una grabacion pero el programa esta incompleto ...

          Para eso SAP siempre realiza un COMMIT por default despues de cada programa ejecutable, si o si habra un COMMIT pero depende de los casos utilizarlos ... un saludo para todos !
          David Carballido Córdova

          Comentario

          • gabriela_soria
            Junior Member
            • mar
            • 12

            #6
            Hola David.

            Que ocurre, si haces el insert, y tienes ya algun registro que habia sido insertado antes? a mi me da un dump. Cómo lo resuelves?

            Saludos!

            gabriela.
            ***********************
            Gabriela Soria
            Consultora ABAP
            Email: xfiles1973@gmail.com

            Comentario

            • mysmb2
              Senior Member
              • ene
              • 406

              #7
              hola gabriela
              es logico que te tire dump al ser un registro con clave duplicada, podrias primero verificar con un SELECT SINGLE si existe el registro antes de intentar realizar el INSERT. Otra alternativa es que uses el MODIFY en vez del insert(si el registro existe lo pisa y si no existe crea uno nuevo)
              saludos.
              Sebastián Chiavia
              http://www.programacionabap.com.ar

              Comentario

              • DavidXD_XD
                Moderator
                • ago
                • 1255

                #8
                Hola Gaby ... como nos comenta mysmb2 es por duplicado de llaves, pero si realizas un INSERT con un solo registro con la siguiente sentencia

                INSERT ztabla FROM gs_itab.

                T podras dar cuenta que no arroja un DUMP pero el sy-subrc nos dara 4, si insertamos un grupo de registros con la sentencia

                INSERT ztabla FROM TABLE gt_itab.

                Ese si nos dara un DUMP, para ese caso se puede utilizar un CATCH para agarrar la excepcion, y la forma mas sencilla como tbm nos comento mysmb2 es usando el MODIFY, ya q ese es una sentencia propia de SAP que nos permite insertar datos si no existen y modificar datos cuando el dato existe
                David Carballido Córdova

                Comentario

                Trabajando...