Saldos Acumulado en Columna

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Jarpi
    Senior Member
    • abr
    • 453

    #1

    Saldos Acumulado en Columna

    Buenos días para todos,

    Recurro a ustedes para ver si alguno me puede ayudar con algo que me está complicando la vida.

    Tengo armado un reporte que me muestra los pedidos de venta con sus respectivos remitos de salida, por ende, puede suceder que una línea de un pedido se repita más de una vez.

    Una de las columnas del reporte calcula el saldo pendiente de entrega, haciendo cantidad prevista en el pedido contra cantidad entregada en el remito.

    El problema que tengo que es no se como hacer para que en las columnas de saldo tome en cuenta todas las entregas para el mismo pedido, entonces el saldo está siempre mal.

    Alguno de ustedes sabrá como debo hacer? Qué código debo poner para que hga eso??

    Les pongo parte del código.

    REPORT Z_PED_SINR.

    DATA: Begin OF t_pedidos occurs 0,

    AUDAT TYPE VBAK-AUDAT, "Fecha de creación del pedido
    VBELN TYPE LIPS-VBELN, "Número del pedido
    KUNNR TYPE KNA1-KUNNR, "Número del deudor
    NAME1 TYPE KNA1-NAME1, "Descipción del deudor
    MATNR TYPE VBAP-MATNR, "Número del material
    ARKTX TYPE VBAP-ARKTX, "Descripción del material
    KWMENG TYPE VBAP-KWMENG, "Cantidad pedida
    NETPR TYPE VBAP-NETPR, "Precio por cantidad
    NETWR TYPE VBAP-NETWR, "Total por línea
    ERNAM TYPE VBAK-ERNAM, "Creador del pedido
    LFGSK TYPE VBUK-LFGSK, "Status del pedido
    LFIMG TYPE LIPS-LFIMG, "Cantidad entregada
    DIFER TYPE VBAP-KWMENG, "Cantidad pendiente
    VGBEL TYPE LIPS-VGBEL, "Número de remito
    ERDAT TYPE LIPS-ERDAT, "Fecha de creación del remito
    end OF t_pedidos.

    DATA: Begin OF t_pedidos1 occurs 0,

    ERDAT TYPE VBAK-ERDAT, "Fecha de creación del pedido
    VBELN TYPE VBAK-VBELN, "Número del pedido
    KUNNR TYPE KNA1-KUNNR, "Número del deudor
    NAME1 TYPE KNA1-NAME1, "Descipción del deudor
    MATNR TYPE VBAP-MATNR, "Número del material
    ARKTX TYPE VBAP-ARKTX, "Descripción del material
    KWMENG TYPE VBAP-KWMENG, "Cantidad pedida
    NETPR TYPE VBAP-NETPR, "Precio por cantidad
    NETWR TYPE VBAP-NETWR, "Total por línea
    ERNAM TYPE VBAK-ERNAM, "Creador del pedido
    LFGSK TYPE VBUK-LFGSK, "Status del pedido
    LFIMG TYPE LIPS-LFIMG, "Cantidad entregada
    DIFER TYPE VBAP-KWMENG, "Cantidad pendiente
    end OF t_pedidos1.



    * Variables

    DATA: wa_ped LIKE LINE OF t_pedidos.

    *================================================= =====================*
    * TYPE POOLS *
    *================================================= =====================*

    TYPE-POOLS: slis.

    * Tabla interna para armar catálogo

    DATA: t_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
    w_layout TYPE slis_layout_alv,
    w_grid TYPE lvc_s_glay.

    *================================================= =====================*
    * PARAMETROS DE SELECCION *
    *================================================= =====================*

    SELECTION-SCREEN SKIP.
    SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-t01.
    select-options: clien FOR wa_ped-kunnr,
    mater FOR wa_ped-matnr,
    fecha FOR wa_ped-audat,
    respo FOR wa_ped-ernam.
    SELECTION-SCREEN: END OF BLOCK b1.

    SELECTION-SCREEN: BEGIN OF BLOCK b2 WITH FRAME TITLE text-t02.
    PARAMETERS p_ped1 RADIOBUTTON GROUP g1 DEFAULT 'X'.
    PARAMETERS p_ped2 RADIOBUTTON GROUP g1.
    SELECTION-SCREEN: END OF BLOCK b2.

    INITIALIZATION.

    *================================================= =====================*
    * START OF SELECTION *
    *================================================= =====================*

    START-OF-SELECTION.

    IF p_ped1 EQ 'X'.
    * Busco los datos para mostrar en el reporte.
    PERFORM busco_datos1.

    * Armo el catálogo para el ALV
    PERFORM armar_catalogo1.

    * Armo el LAYOUT
    PERFORM armar_layout.

    * Muestro los datos requeridos en el ALV
    PERFORM mostrar_alv1.

    ELSEIF p_ped2 EQ 'X'.
    * Busco los datos para mostrar en el reporte.
    PERFORM busco_datos.

    * Armo el catálogo para el ALV
    PERFORM armar_catalogo.

    * Armo el LAYOUT
    PERFORM armar_layout.

    * Muestro los datos requeridos en el ALV
    PERFORM mostrar_alv.

    ENDIF.

    *----------------------------------------------------------------------*
    * Form busco_datos. Busca los datos para el reporte
    *----------------------------------------------------------------------*
    FORM busco_datos.

    SELECT vk~audat vk~vbeln vk~ernam k~kunnr k~name1 vp~matnr vp~arktx
    vp~kwmeng vp~netpr vp~netwr vu~lfgsk vk~kunnr lp~lfimg lp~vbeln
    lp~vgbel vp~posnr lp~posnr lp~erdat

    INTO CORRESPONDING FIELDS OF t_pedidos
    FROM vbak as vk
    inner join vbap as vp on vk~vbeln = vp~vbeln
    inner join vbuk as vu on vk~vbeln = vu~vbeln
    inner join kna1 as k on vk~kunnr = k~kunnr
    inner join lips as lp on vk~vbeln = lp~vgbel
    AND vp~matnr = lp~matnr
    AND vp~posnr = lp~posnr
    WHERE vk~audat IN fecha
    AND vk~ernam IN respo
    AND vk~kunnr IN clien
    AND vp~matnr IN mater
    AND vu~lfgsk EQ 'B'.

    t_pedidos-DIFER = t_pedidos-KWMENG - t_pedidos-LFIMG.

    APPEND t_pedidos.

    * Se ordena la t_pedidos que se muestra en el ALV alfabeticamente.
    SORT t_pedidos BY vgbel ASCENDING.

    ENDSELECT.

    ENDFORM. "busco_datos.

    *----------------------------------------------------------------------*
    * Form busco_datos1. Busca los datos para el reporte
    *----------------------------------------------------------------------*
    FORM busco_datos1.

    SELECT vk~erdat vk~vbeln vk~ernam k~kunnr k~name1 vp~matnr vp~arktx
    vp~kwmeng vp~netpr vp~netwr vu~lfgsk vk~kunnr

    INTO CORRESPONDING FIELDS OF t_pedidos1
    FROM vbak as vk
    inner join vbap as vp on vk~vbeln = vp~vbeln
    inner join vbuk as vu on vk~vbeln = vu~vbeln
    inner join kna1 as k on vk~kunnr = k~kunnr
    WHERE vk~erdat IN fecha
    AND vk~ernam IN respo
    AND vk~kunnr IN clien
    AND vp~matnr IN mater
    AND vu~lfgsk EQ 'A'.

    APPEND t_pedidos1.

    * Se ordena la t_pedidos1 que se muestra en el ALV alfabeticamente.
    SORT t_pedidos1 BY vbeln ASCENDING.

    ENDSELECT.

    ENDFORM. "busco_datos1.

    END-OF-SELECTION.

    *------------------------------------------------------------------------*

    Y también les adjunto un print del reporte para que se entienda lo que les comenté.

    Desde ya les agradezco mucho!

    Saludos.
    Archivos Adjuntos
Trabajando...