Read Table

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • ABellamy
    Member
    • dic
    • 44

    #1

    Read Table

    Buenas tardes, estoy haciendo un programita de prueba de entregas vs pedidos pero no se bien como linkear las llaves de mi read table. Cuando hago el join de la likp y lips se me trae datos mas sin embargo en el read no.
    Hasta ahorita, el código que llevo:

    *&---------------------------------------------------------------------*
    *& Include YPRUEBA1_TOP
    *&---------------------------------------------------------------------*
    TYPE-POOLS: slis.

    TABLES: vbak, "pedidos: cabecera.
    vbap, "pedidos: posiciones.
    likp, "factura: cabecera.
    lips, "factura: posiciones.
    kna1. "clientes.

    TYPES:
    BEGIN OF ty_pedido,
    vbeln LIKE vbak-vbeln, "pedido.
    posnr LIKE vbap-posnr, "posicion.
    erdat LIKE vbak-erdat, "fecha de creacion.
    auart LIKE vbak-auart, "clase doc. vtas.
    augru LIKE vbak-augru, "motivo de separacon.
    vkorg LIKE vbak-vkorg, "org. vtas.
    vtweg LIKE vbak-vtweg, "canal distrib.
    spart LIKE vbak-spart, "sector.
    netwr LIKE vbak-netwr, "valor neto.
    waerk LIKE vbak-waerk, "moneda.
    kunnr LIKE vbak-kunnr, "cliente.
    matnr LIKE vbap-matnr, "no. material.
    arktx LIKE vbap-arktx, "descrip. pedido.
    vrkme LIKE vbap-vrkme, "umv.
    END OF ty_pedido,

    BEGIN OF ty_cliente,
    kunnr LIKE kna1-kunnr, "cliente.
    land1 LIKE kna1-land1, "pais.
    name1 LIKE kna1-name1, "nombre 1.
    name2 LIKE kna1-name2, "nombre 2.
    ort01 LIKE kna1-ort01, "poblacion.
    pstlz LIKE kna1-pstlz, "c.p.
    END OF ty_cliente,

    BEGIN OF ty_entrega,
    vbeln1 LIKE likp-vbeln, "no. entrega.
    posnr1 LIKE lips-posnr, "posiciones.
    inco1 LIKE likp-inco1, "intercoms.
    route LIKE likp-route, "ruta.
    werks LIKE lips-werks, "moneda.
    lgort LIKE lips-lgort, "almacen.
    lfimg LIKE lips-lfimg, "cant. entregada en umv.
    vgbel LIKE lips-vgbel, "no. doc. del doc. modelo.
    vgpos LIKE lips-vgpos, "no. doc. de posicion modelo.
    END OF ty_entrega,

    BEGIN OF ty_salida,
    vbeln LIKE vbak-vbeln, "pedido.
    posnr LIKE vbap-posnr, "posición pedido.
    erdat LIKE vbak-erdat, "fecha de cración.
    auart LIKE vbak-auart, "clase doc.
    augru LIKE vbak-augru, "motivo de operación.
    vkorg LIKE vbak-vkorg, "org. vtas.
    vtweg LIKE vbak-vtweg, "canal de distribución.
    spart LIKE vbak-spart, "sector.
    netwr LIKE vbak-netwr, "valor neto.
    waerk LIKE vbak-waerk, "moneda.
    kunnr LIKE vbak-kunnr, "cliente.
    matnr LIKE vbap-matnr, "no. material.
    arktx LIKE vbap-arktx, "descrip. pedido.
    vrkme LIKE vbap-vrkme, "umv.
    * kunnr LIKE kna1-kunnr, "cliente.
    land1 LIKE kna1-land1, "país.
    name1 LIKE kna1-name1, "nombre 1.
    name2 LIKE kna1-name2, "nombre 2.
    ort01 LIKE kna1-ort01, "población.
    pstlz LIKE kna1-pstlz, "c.p.
    vbeln1 LIKE likp-vbeln, "no. entrega.
    posnr1 LIKE lips-posnr, "posición-entrega
    inco1 LIKE likp-inco1, "intercoms 1.
    route LIKE likp-route, "ruta.
    werks LIKE lips-werks, "centro.
    lgort LIKE lips-lgort, "almacén.
    lfimg LIKE lips-lfimg, "cantidad entregada en UMV.
    vgbel LIKE lips-vgbel, "no. doc. del doc. modelo.
    vgpos LIKE lips-vgpos, "no. doc. de posición modelo.
    END OF ty_salida.

    DATA: lt_pedido TYPE STANDARD TABLE OF ty_pedido WITH HEADER LINE.
    DATA: lt_cliente TYPE STANDARD TABLE OF ty_cliente WITH HEADER LINE.
    DATA: lt_entrega TYPE STANDARD TABLE OF ty_entrega WITH HEADER LINE.
    DATA: lt_salida TYPE STANDARD TABLE OF ty_salida WITH HEADER LINE.

    DATA: lt_catalog TYPE slis_t_fieldcat_alv,
    ls_catalog TYPE slis_fieldcat_alv,
    ls_layout TYPE slis_layout_alv,
    st_header TYPE slis_listheader,
    t_header TYPE slis_t_listheader,
    t_events TYPE slis_t_event.

    DATA: lv_meins LIKE mara-meins,
    lv_meins2 LIKE mara-meins, "umb
    lv_menge LIKE ekpo-menge,
    lv_menge2 LIKE ekpo-menge.

    SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS: so_vbeln FOR vbak-vbeln," DEFAULT '10',
    so_erdat FOR vbak-erdat,
    so_vkorg FOR vbak-vkorg,
    so_vtweg FOR vbak-vtweg,
    so_spart FOR vbak-spart,
    so_matnr FOR vbap-matnr.
    SELECTION-SCREEN: END OF BLOCK b1.

    *&---------------------------------------------------------------------*
    *& Include YPRUEBA1_FORMS
    *&---------------------------------------------------------------------*

    FORM obtener_datos .
    * Extracción de datos: pedidos.
    SELECT
    vbak~vbeln
    vbap~posnr
    vbak~erdat
    vbak~auart
    vbak~augru
    vbak~vkorg
    vbak~vtweg
    vbak~spart
    vbak~netwr
    vbak~waerk
    vbak~kunnr
    vbap~matnr
    vbap~arktx
    vbap~vrkme
    FROM vbak INNER JOIN vbap
    ON vbak~vbeln EQ vbap~vbeln
    INTO TABLE lt_pedido
    WHERE vbak~vbeln IN so_vbeln
    AND vbak~erdat IN so_erdat
    AND vbak~vkorg IN so_vkorg
    AND vbak~vtweg IN so_vtweg
    AND vbak~spart IN so_spart
    AND vbap~matnr IN so_matnr.

    IF lt_pedido[] IS NOT INITIAL.
    * Extracción de datos: cliente.
    SELECT kunnr
    land1
    name1
    name2
    ort01
    pstlz
    FROM kna1
    INTO TABLE lt_cliente
    FOR ALL ENTRIES IN lt_pedido
    WHERE kunnr EQ lt_pedido-kunnr.
    ENDIF.

    * Extracción de datos: entrega.
    * Add 07.04.2016
    SELECT likp~vbeln
    lips~posnr
    likp~inco1
    likp~route
    lips~werks
    lips~lgort
    lips~lfimg
    lips~vgbel
    lips~vgpos
    FROM likp INNER JOIN lips
    ON likp~vbeln EQ lips~vbeln
    INTO TABLE lt_entrega
    FOR ALL ENTRIES IN lt_pedido
    WHERE lips~vgbel EQ lt_pedido-vbeln
    AND lips~vgpos EQ lt_pedido-posnr
    AND likp~kunnr EQ lt_pedido-kunnr.
    * End 07.04.2016

    ENDFORM. " OBTENER_DATOS
    *&---------------------------------------------------------------------*
    *& Form IMPRIME_DATOS
    *&---------------------------------------------------------------------*
    FORM imprime_datos .

    LOOP AT lt_pedido.
    * Lectura de datos: pedido.
    MOVE-CORRESPONDING lt_pedido TO lt_salida. "07.04.2016.

    * Lectura de datos: cliente.
    READ TABLE lt_cliente WITH KEY kunnr = lt_salida-kunnr.
    IF sy-subrc EQ 0.
    lt_salida-land1 = lt_cliente-land1.
    lt_salida-name1 = lt_cliente-name1.
    lt_salida-name2 = lt_cliente-name2.
    lt_salida-ort01 = lt_cliente-ort01.
    lt_salida-pstlz = lt_cliente-pstlz.
    ENDIF.

    * Lectura de datos: entregas.

    READ TABLE lt_entrega WITH KEY vgbel = lt_pedido-vbeln
    vgpos = lt_pedido-posnr.
    lt_salida-vbeln1 = lt_entrega-vbeln1.
    lt_salida-posnr1 = lt_entrega-posnr1.
    lt_salida-inco1 = lt_entrega-inco1.
    lt_salida-route = lt_entrega-route.
    lt_salida-werks = lt_entrega-werks.
    lt_salida-lgort = lt_entrega-lgort.
    lt_salida-lfimg = lt_entrega-lfimg.
    APPEND lt_salida.
    ENDLOOP.
    ENDFORM. " IMPRIME_DATOS
    *&---------------------------------------------------------------------*

    ¿Alguna sugerencia, por favor?
    Saludos.
    Es más fácil encontrar el final del arcoíris que el de un estándar SAP.
Trabajando...