Llenar una tabla Z pediendo lo datos al usuario

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • andresf02
    Senior Member
    • nov
    • 190

    #1

    Llenar una tabla Z pediendo lo datos al usuario

    Buenos Dias

    Estoy dando mis primeros pasos en ABAP. He tenido experiencia con queries (creandolos o consultandolos) y ya puedo programar mis queries desde abap.

    Pero ahora quiero crear mis propias tablas y poder hacer queries y joins sobre ellas. Ya se como crear mis tablas y activarlas pero quisiera saber como poder llenarlas con datos

    Es decir, por ejemplo:

    Tabla: Zusuarios
    Campos: Numero, Nombre, Apellido

    Lo que quiero hacer es poder ingresar un registro en dicha tabla como por ejemplo:

    14709678 --- Andres --- Velasco

    para hacer esto quisiera poder hacerlo de 3 formas (o almenos cualquiera de ellas)

    1) Desde una transaccion en SAP (aclaro que uso minisap y no tengo se16n)

    2) Desde codigo ABAP (supongo que con el comando INSERT)

    3) creando una interfaz donde el usuario vaya ingresando los datos y al final
    con un boton que diga GUARDAR, se almacenen directamente los datos en la tabla.



    Me interesan mucho las 2 ultimas opciones.


    Por favor cualquier idea o solucion se los agradeceria muchisimo para continuar aprendiendo y poder generar solucion en mi trabajo.

    Muchas Gracias!
  • kreuzigen
    Member
    • feb
    • 53

    #2
    Hola, que bueno que hayas entrado al mundo de SAP, es bastante interesante y la programación lo es mas.

    1 Si quieres darle mantenimiento a tu tabla, puedes crear una vista de mantenimiento, esto lo haces desde la transaccion SE11. Cuando la hayas creado, puedes ejecutar tu vista con la Tx. SM30.

    2 DATA scarr_wa TYPE scarr.

    scarr_wa-carrid = 'FF'.
    scarr_wa-carrname = 'Funny Flyers'.
    scarr_wa-currcode = 'EUR'.
    scarr_wa-url = 'http://www.funnyfly.com'.

    INSERT INTO scarr VALUES scarr_wa.

    3 Es mas complejo, tienes que diseñar una transaccion y dynpro
    Si no sabes desarrollarte a ti mismo, nadie lo hara por ti....

    SAP Certified ABAP Developer

    Comentario

    • andresf02
      Senior Member
      • nov
      • 190

      #3
      kreuzigen,
      mil gracias por su colaboracion, fue de enorme ayuda para mi ya que me aclaró muchas dudas.

      Le comento que para el punto 3) de crear una pantalla para pedirle datos al usuario para llenar la tabla lo solucione gracias a su concejo de crear la vista de mantenimineto. Lo que hice fue crear una transaccion por la se93 y le puse que llamara a la transaccion sm30 en modo de UPDATE omitiendo la pantalla inicial y logre lo que necesisitaba.

      Respecto a la programacion en abap, quisiera preguntarle es si existe alguna forma de crear una especie de ciclo que le vaya pidiendo al usuario en campos los datos necesarios. como por ejemplo cuando uno define un parametro y al ejecutar el programa de una pide al usuario dicho parametro. Quisiera saber si se podria hacer de igual manera un campo que cuando el usuario digite un valor, el programa lo almacene en alguna variable para luego hacer la asignacion al campo de la tabla tal cual como usted lo explico.

      obviamente esto lo hago porque quiero conocer ya que con la creacion de la transaccion Z que llama a la SM30 solucione el problema.

      Muchas gracias!!

      Comentario

      • MetalGod
        Senior Member
        • jun
        • 110

        #4
        Hola, muy buena tu pregunta, yo tambien recien me inicio y quiero saber como llenar una tabla con tadotos que el usuario ingresa, es buena tu solucion, pero me gustaria practicar haciendo yo una transaccion y una pantalla, alguien tendria un tutorial o me explica cuaales son los pasos a seguir para realizar esto? dese ya muchas gracias

        Comentario

        • AlexFrias
          Junior Member
          • jun
          • 9

          #5
          Una forma muy sencilla es desde la transacción SE38, para crear tu programa ABAP. Ahí:

          parameters:
          p_numero type zusuarios-numero,
          p_nombre type zusuarios-nombre,
          p_apellido type zusuarios-apellido.

          wa_zusuarios type zusuarios.

          wa_zusuarios-numero = p_numero.
          wa_zusuarios-nombre = p_nombre.
          wa_zusuarios-apellido = p_apellido.

          * ACTUALIZACIÓN DE LA TABLA DE FORMA DIRECTA
          INSERT INTO zusuarios VALUES wa_zusuarios.

          Comentario

          • MetalGod
            Senior Member
            • jun
            • 110

            #6
            muchas gracias, habia hecho algo parecido, con lo que me dijiste me lo pude terminar, muchas gracias.

            Comentario

            • lucia7272
              Junior Member
              • ago
              • 6

              #7
              ayuda para llenar una tabla

              Originalmente publicado por MetalGod
              Hola, muy buena tu pregunta, yo tambien recien me inicio y quiero saber como llenar una tabla con tadotos que el usuario ingresa, es buena tu solucion, pero me gustaria practicar haciendo yo una transaccion y una pantalla, alguien tendria un tutorial o me explica cuaales son los pasos a seguir para realizar esto? dese ya muchas gracias
              Hola a todos, recien me inicio en esto de sap, tengo que llenar una tabla por medio de un loop con un append a gt_alv que es donde tengo mi estructura del alv, realmente estoy bastante perdida con esto, enviare parte de mi código quiza alguien que me pueda ayudar, esto tiene fecha de entrega y estoy muy presionada

              Method search_data.

              Data: lt_lfa1 type table of lfa1,
              lt_bkpf type table of bkpf,
              lt_rbkp type table of rbkp,
              lt_t001 type table of t001,
              lt_vbsegk type table of vbsegk,
              lt_rseg type table of rseg,
              lt_gjahr type bkpf-gjahr,
              lt_zt1_pagos type table of zt1_pagos.



              Field-symbols: <wa_bkpf> like lt_bkpf,
              <lf> like line of lt_lfa1,
              <vb> like line of lt_vbsegk,
              <zp> like line of lt_zt1_pagos,
              <bk> like line of lt_bkpf,
              <rb> like line of lt_rbkp.


              Data:lt_budat type table of bkpf.

              Field-symbols: <wa_budat> like line of gs_param-budat.

              *Tabla del ALV.

              Data: lt_data type table of zstr_alv_pagos.
              Field-symbols: <wa_data> type zstr_alv_pagos.

              *Para el id de contraseña

              Data: NI(10) type N,
              NE(10) TYPE C.


              READ TABLE gs_param-budat ASSIGNING <wa_budat> INDEX 1.
              *ASSIGN gs_param-budat to <wa_budat>.

              if sy-subrc = 0.

              if <wa_budat>-low is not initial.
              lt_gjahr = <wa_budat>-low(4).
              ELSEIF
              <wa_budat>-high is not initial.
              lt_gjahr = <wa_budat>-high(4).
              endif.

              endif.

              CLEAR: lt_lfa1, lt_bkpf, lt_t001, lt_vbsegk.


              *Para bkpf:

              select *
              into table lt_bkpf
              from bkpf
              where bukrs EQ gs_param-bukrs and
              budat in gs_param-budat and
              gjahr EQ lt_gjahr and
              belnr in gs_param-belnr and "factura
              ( bstat = 'V' or bstat = 'W' or bstat = 'Z').


              *Para rbkp:
              select *
              into table lt_rbkp
              from rbkp
              where budat in gs_param-budat and
              gjahr EQ lt_gjahr and
              belnr in gs_param-belnr and "factura
              ( rbstat = 'A' or rbstat = 'B' or rbstat = 'C' or
              rbstat = 'D' or rbstat = 'E').


              *Para vbsegk:
              SELECT *
              INTO TABLE lt_vbsegk
              FROM vbsegk
              FOR ALL ENTRIES IN lt_rbkp
              WHERE vbsegk~belnr EQ lt_rbkp-belnr AND
              vbsegk~gjahr EQ lt_rbkp-gjahr AND
              bukrs EQ gs_param-bukrs AND
              belnr IN gs_param-belnr AND
              Lifnr IN gs_param-lifnr.


              *Para rseg:

              SELECT *
              INTO TABLE lt_rseg
              FROM rseg
              FOR ALL ENTRIES IN lt_rbkp
              WHERE rseg~belnr EQ lt_rbkp-belnr AND
              rseg~Gjahr EQ lt_rbkp-gjahr AND
              Lifnr IN gs_param-lifnr.


              *Acreedor
              LOOP AT lt_lfa1 ASSIGNING <lf>.

              write: / <lf>-lifnr.

              ENDLOOP.


              * Nombre del acreedor

              SELECT lifnr name1 INTO CORRESPONDING FIELDS OF TABLE lt_lfa1
              FROM lfa1
              FOR ALL ENTRIES IN lt_VBSEGK
              WHERE lifnr = lt_VBSEGK-lifnr.

              *Numero del Documento

              SELECT lifnr belnr INTO CORRESPONDING FIELDS OF TABLE lt_rbkp
              FROM rbkp
              FOR ALL ENTRIES IN lt_vbsegk
              WHERE lifnr = lt_VBSEGK-lifnr.

              *Referencia

              SELECT bukrs xblnr INTO CORRESPONDING FIELDS OF TABLE lt_bkpf
              FROM bkpf
              FOR ALL ENTRIES IN lt_rbkp
              WHERE bukrs = lt_rbkp-bukrs.

              "posicion

              LOOP AT lt_vbsegk ASSIGNING <vb>.

              write: / <vb>-sgtxt.

              ENDLOOP.

              *Numero Interno

              SELECT MAX( NUM_I ) into NI from zt2_pagos
              where zt2_pagos~sociedad = gs_param-BUKRS.

              ni = ni + 1.

              en este parte de aca iniciaría mi loop con un append a la gt_alv porfavor si me dan una idea de como continuar

              Comentario

              • AlexFrias
                Junior Member
                • jun
                • 9

                #8
                Pero... qué es exactamente lo que tienes que mostrar en tu ALV?, cuál es la estructura de zstr_alv_pagos?

                Comentario

                Trabajando...