#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. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|