REPORT ydemo_test_alv_akt.
TABLES : wb2_v_vbak_vbap2,likp,t001w, kna1,vbak,mara, prcd_elements, vbap.
DATA: fieldcat TYPE slis_t_fieldcat_alv,
w_fieldcat TYPE LINE OF slis_t_fieldcat_alv,
layout TYPE slis_layout_alv,
sort TYPE slis_t_sortinfo_alv,
w_sort TYPE LINE OF slis_t_sortinfo_alv,
listheader TYPE slis_t_listheader,
w_listheader TYPE LINE OF slis_t_listheader.
TYPES :BEGIN OF ty_final,
vbeln TYPE vbak-vbeln,
vbeln1 TYPE vbak-vbeln,
posnr TYPE lips-posnr,
werks TYPE lips-werks,
vgbel TYPE lips-vgbel,
lfdat TYPE likp-lfdat,
vgpos TYPE lips-vgpos,
lfimg TYPE lips-lfimg,
orderqty TYPE lips-lfimg,
order_amount TYPE netwr, " 30-11-2023 ahsan
kbetr TYPE kbetr, " 15-02-2023 AHSAN
invoiceamt TYPE netwr,
invoiceqty TYPE lfimg,
invoiceno TYPE vbeln,
ntgew TYPE lips-ntgew,
auart TYPE vbak-auart,
vkorg TYPE vbak-vkorg,
bstkd_e TYPE vbkd-bstkd_e,
mblnr TYPE matdoc-mblnr,
maktx TYPE maktx,
matnr TYPE matdoc-matnr,
menge TYPE matdoc-menge,
vrkme TYPE vrkme,
meins TYPE matdoc-meins,
salk3 TYPE matdoc-salk3,
bwart TYPE matdoc-bwart,
budat TYPE matdoc-budat,
kunnr TYPE kna1-kunnr,
name1 TYPE kna1-name1,
stras TYPE stras_gp,
is_cancel(1) TYPE c,
is_invcan(1) TYPE c,
*******------- ahsan 04-02-2024 ---*****
order_unit_price TYPE prcd_elements-kbetr,
tr_type TYPE prcd_elements-kschl,
doc_condition TYPE vbak-knumv,
item TYPE vbap-posnr,
END OF ty_final.
TYPES: BEGIN OF ty_order,
orderno TYPE vbeln,
documentno TYPE knumv,
item TYPE posnr_va,
doctype TYPE auart,
orderamount TYPE netwr_ap,
material TYPE matnr,
orderqty TYPE kawrt,
unitprice TYPE kbetr,
plant TYPE werks_i,
lfimg TYPE lfimg,
fkimg TYPE fkimg,
netwr TYPE netwr,
* uom TYPE meins,
org TYPE vkorg,
deliveryno TYPE vbeln,
invoiceno TYPE vbeln,
kwmeng_i TYPE wb2_v_vbak_vbap2-kwmeng_i,
cmpre_i TYPE wb2_v_vbak_vbap2-cmpre_i,
uom TYPE vbap-meins,
ordval LIKE vbap-netwr, " order value
gasval LIKE vbap-netwr, ""gas sale
cylinderval LIKE vbap-netwr, "total cylinder value
cylinderrate LIKE vbap-netwr, "cylinder rate
discount_price LIKE prcd_elements-kwert,
kwert LIKE prcd_elements-kwert,
kwert2 LIKE prcd_elements-kwert,
tax_amount TYPE wb2_v_vbak_vbap2-mwsbp_i,
subtotal2 TYPE wb2_v_vbak_vbap2-kzwi2_i,
pstyv_i LIKE vbap-pstyv,
pstyv_t(12) TYPE c,
END OF ty_order.
TYPES: BEGIN OF ty_result,
vbeln TYPE vbak-vbeln,
kunnr TYPE vbak-kunnr,
order_date TYPE erdat, "new
order_types TYPE auart, "new
sales_org TYPE vkorg, "new VKORG
status(10),
openqty LIKE vbrp-fkimg,
name1 TYPE kna1-name1,
item TYPE posnr,
knumv TYPE vbak-knumv,
unit_price TYPE prcd_elements-kbetr,
order_type TYPE prcd_elements-kschl,
material TYPE matnr,
maktx TYPE makt-maktx,
order_qty TYPE vbap-kwmeng,
order_amount TYPE vbap-netwr,
lfimg TYPE lfimg,
fkimg TYPE fkimg,
netwr TYPE netwr,
* uom TYPE meins,
plant TYPE vbap-werks,
org TYPE vkorg,
deliveryno TYPE vbeln,
invoiceno TYPE vbeln,
tax_amount TYPE wb2_v_vbak_vbap2-mwsbp_i,
kwmeng_i TYPE wb2_v_vbak_vbap2-kwmeng_i,
cmpre_i TYPE wb2_v_vbak_vbap2-cmpre_i,
uom TYPE vbap-meins,
ordval LIKE vbap-netwr, " order value
gasval LIKE vbap-netwr, ""gas sale
cylinderval LIKE vbap-netwr, "total cylinder value
cylinderrate LIKE vbap-netwr, "cylinder rate
discount_price LIKE prcd_elements-kwert,
kwert LIKE prcd_elements-kwert,
kwert2 LIKE prcd_elements-kwert,
subtotal2 TYPE wb2_v_vbak_vbap2-kzwi2_i,
pstyv_i LIKE vbap-pstyv,
pstyv_t(12) TYPE c,
END OF ty_result.
DATA: it_summary_result TYPE TABLE OF ty_result,
wa_summary_result TYPE ty_result,
it_final_result TYPE TABLE OF ty_result,
wa_final_result TYPE ty_result,
it_details_result TYPE TABLE OF ty_result,
wa_details_result TYPE ty_result,
it_summary_final TYPE TABLE OF ty_result,
wa_summary_final TYPE ty_result.
TYPES: BEGIN OF ty_deliverys,
deliveryno TYPE vbeln,
lfimg TYPE lfimg,
posnr TYPE posnr,
END OF ty_deliverys.
DATA: it_delivery TYPE TABLE OF ty_deliverys,
wa_delivery TYPE ty_deliverys.
DATA: it_order TYPE TABLE OF ty_order.
DATA: wa_order TYPE ty_order.
TYPES: BEGIN OF ty_invoice,
invoiceno TYPE vbeln,
fkimg TYPE fkimg,
netwr TYPE netwr,
posnr TYPE posnr,
END OF ty_invoice.
DATA: it_invoice TYPE TABLE OF ty_invoice,
wa_invoice TYPE ty_invoice.
DATA: t_lfstk LIKE vbak-lfstk.
SELECTION-SCREEN: BEGIN OF BLOCK a1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS : s_lfdat FOR likp-lfdat OBLIGATORY . "
*PARAMETERS : s_vkorg LIKE likp-vkorg OBLIGATORY.
SELECT-OPTIONS : s_werks FOR t001w-werks .
SELECT-OPTIONS : s_kunnr FOR kna1-kunnr,
s_vbeln FOR vbak-vbeln.
* s_matnr FOR mara-matnr.
SELECTION-SCREEN: END OF BLOCK a1.
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-002.
PARAMETERS :p_rpt1 RADIOBUTTON GROUP rg1 DEFAULT 'X'.
PARAMETERS :p_rpt2 RADIOBUTTON GROUP rg1.
PARAMETERS :p_rpt3 RADIOBUTTON GROUP rg1.
PARAMETERS :p_rpt4 RADIOBUTTON GROUP rg1.
SELECTION-SCREEN: END OF BLOCK b1.
PARAMETERS:
rbp1 RADIOBUTTON GROUP a DEFAULT 'X' USER-COMMAND cm1,
rbp2 RADIOBUTTON GROUP a.
IF rbp1 = 'X' OR P_RPT4 = 'X'.
PERFORM getdata_for_details_alv.
PERFORM display_alv_details_report.
ELSE.
PERFORM getdata_for_summary_alv.
PERFORM display_alv_summary_report.
ENDIF.
FORM getdata_for_details_alv.
SELECT
vb~vbeln AS orderno,
vb~knumv AS documentno,
vb~posnr_i AS item,
vb~auart AS doctype,
vr~netwr AS orderamount,
vb~matnr_i AS material,
vb~mwsbp_i AS tax_amount,
vb~kzwi2_i AS subtotal2,
vr~kwmeng AS orderqty,
pr~kbetr AS unitprice,
vb~werks_i AS plant,
vr~meins AS uom
* vb~cmpre_i AS cmpre_i
* INTO TABLE @it_order
INTO CORRESPONDING FIELDS OF TABLE @it_order
FROM wb2_v_vbak_vbap2 AS vb
INNER JOIN vbap AS vr ON vb~vbeln = vr~vbeln AND vb~posnr_i = vr~posnr
LEFT JOIN prcd_elements AS pr
ON vb~knumv = pr~knumv AND vb~posnr_i = pr~kposn AND pr~kschl IN ('ZBM0', 'ZXSP', 'ZSRP', 'ZSIP', 'ZMRP', 'ZEP0', 'CS00', 'ZBM0', 'ZRG0', 'ZLP0' , 'ZLRE') "'ZPC0',
*'ZLRE',
WHERE
vb~audat GE @s_lfdat-low AND vb~audat LT @s_lfdat-high AND vb~vkorg = 1080 AND vb~werks_i
IN @s_werks AND vb~auart IN ('ZLCA', 'ZLCR', 'ZLBS') AND vb~kunnr IN @s_kunnr AND vb~vbeln IN @s_vbeln. " AND vb~matnr_i IN @s_matnr.
IF it_order IS NOT INITIAL.
LOOP AT it_order INTO wa_order.
wa_details_result-vbeln = wa_order-orderno.
wa_details_result-knumv = wa_order-documentno.
wa_details_result-order_amount = wa_order-orderamount + wa_order-tax_amount.
wa_details_result-gasval = wa_details_result-order_amount - wa_order-subtotal2.
wa_details_result-item = wa_order-item.
wa_details_result-material = wa_order-material.
wa_details_result-plant = wa_order-plant.
wa_details_result-uom = wa_order-uom.
wa_details_result-order_qty = wa_order-orderqty.
wa_details_result-unit_price = wa_order-unitprice.
SELECT SINGLE kunnr FROM vbak INTO wa_details_result-kunnr WHERE vbeln = wa_details_result-vbeln .
SELECT SINGLE erdat auart vkorg FROM vbak INTO (wa_details_result-order_date,
wa_details_result-order_types, wa_details_result-sales_org)
WHERE vbeln = wa_details_result-vbeln .
SELECT SINGLE name1 FROM kna1 INTO wa_details_result-name1 WHERE kunnr = wa_details_result-kunnr.
SELECT SINGLE maktx FROM makt INTO wa_details_result-maktx WHERE matnr = wa_details_result-material.
* SELECT SINGLE vrkme_i FROM wb2_v_vbak_vbap2 INTO wa_details_result-uom WHERE vbeln = wa_details_result-vbeln AND matnr_i = wa_details_result-material.
* SELECT SINGLE WERKS_I FROM wb2_v_vbak_vbap2 INTO wa_details_result-plant WHERE vbeln = wa_details_result-vbeln AND posnr_i = wa_details_result-item .
* SELECT SINGLE vkorg FROM wb2_v_vbak_vbap2 INTO wa_details_result-org WHERE vbeln = wa_details_result-vbeln .
SELECT SINGLE vkorg cmpre_i kwmeng_i pstyv_i FROM wb2_v_vbak_vbap2 INTO
( wa_details_result-org, wa_details_result-cmpre_i, wa_details_result-kwmeng_i , wa_details_result-pstyv_i )
WHERE vbeln = wa_details_result-vbeln AND matnr_i = wa_details_result-material AND posnr_i = wa_order-item .
IF wa_details_result-pstyv_i = 'ZREN'.
wa_details_result-pstyv_t = 'Empty Return'.
ENDIF.
IF wa_details_result-pstyv_i = 'ZRFL'.
wa_details_result-pstyv_t = 'Refill'.
ENDIF.
IF wa_details_result-pstyv_i = 'ZFRL'.
wa_details_result-pstyv_t = 'Free Refill'.
ENDIF.
IF wa_details_result-pstyv_i = 'ZPKG' OR wa_details_result-pstyv_i = 'ZPAC' OR wa_details_result-pstyv_i = 'ZPAG'.
wa_details_result-pstyv_t = 'Package'.
ENDIF.
IF wa_details_result-pstyv_i = 'ZFPK'.
wa_details_result-pstyv_t = 'Free Package'.
ENDIF.
IF wa_details_result-pstyv_i = 'ZBLK' OR wa_details_result-pstyv_i = 'ZBLG'.
wa_details_result-pstyv_t = 'Bulk'.
ENDIF.
****** check status
SELECT SINGLE lfstk FROM vbak INTO t_lfstk WHERE vbeln = wa_details_result-vbeln.
IF t_lfstk = 'A' OR t_lfstk = ''.
wa_details_result-status = 'Open'.
ELSEIF t_lfstk = 'B'.
wa_details_result-status = 'Partial'.
ELSEIF t_lfstk = 'C'.
wa_details_result-status = 'Completed'.
ENDIF.
" --------------------DISCOUNT PRICE ----------------------
SELECT kwert FROM prcd_elements WHERE knumv IN ( SELECT knumv FROM vbak WHERE vbeln = @wa_details_result-vbeln ) AND kschl = 'ZDIC' AND kposn = @wa_details_result-item INTO TABLE @DATA(it_kk).
LOOP AT it_kk INTO DATA(wa_kk).
wa_details_result-discount_price = wa_kk-kwert.
CLEAR wa_kk.
ENDLOOP.
FREE it_kk.
*** query for delevery qty.
SELECT vbeln AS deliveryno, lfimg, posnr
INTO TABLE @it_delivery
FROM lips
WHERE vgbel = @wa_order-orderno
AND matnr = @wa_order-material
AND vgpos = @wa_order-item.
IF sy-subrc = 0.
LOOP AT it_delivery INTO wa_delivery.
*******
wa_details_result-lfimg = wa_details_result-lfimg + wa_delivery-lfimg.
wa_details_result-deliveryno = wa_delivery-deliveryno.
ENDLOOP.
ENDIF.
* wa_details_result-lfimg = wa_order-lfimg.
*** query for invoice qty and amount .
SELECT vr~vbeln AS invoiceno, vr~fkimg AS fkimg, vr~netwr AS netwr, vr~posnr AS posnr
INTO CORRESPONDING FIELDS OF TABLE @it_invoice
FROM vbrp AS vr
INNER JOIN vbrk AS vk ON vr~vbeln = vk~vbeln AND vk~vf_status = 'A' AND vk~sfakn =''
WHERE vr~aubel = @wa_order-orderno AND vr~matnr = @wa_order-material AND vr~aupos = @wa_order-item.
* GROUP BY fkimg, netwr .
IF sy-subrc = 0.
LOOP AT it_invoice INTO wa_invoice.
wa_details_result-invoiceno = wa_invoice-invoiceno.
wa_details_result-fkimg = wa_details_result-fkimg + wa_invoice-fkimg.
wa_details_result-netwr = wa_details_result-netwr + wa_invoice-netwr.
ENDLOOP.
ENDIF.
wa_details_result-openqty = wa_details_result-lfimg - wa_details_result-fkimg.
SHIFT wa_details_result-vbeln LEFT DELETING LEADING '0'.
SHIFT wa_details_result-kunnr LEFT DELETING LEADING '0'.
SHIFT wa_details_result-material LEFT DELETING LEADING '0'.
SHIFT wa_details_result-deliveryno LEFT DELETING LEADING '0'.
SHIFT wa_details_result-invoiceno LEFT DELETING LEADING '0'.
APPEND wa_details_result TO it_details_result.
CLEAR wa_details_result.
ENDLOOP.
IF P_RPT4 = 'X'.
DELETE it_details_result WHERE pstyv_i <> 'ZREN'.
ENDIF.
ENDIF.
IF p_rpt1 = 'X'.
DELETE it_details_result WHERE status = 'Partial'.
DELETE it_details_result WHERE status = 'Completed'.
ELSEIF p_rpt2 = 'X'.
DELETE it_details_result WHERE status = 'Open'.
DELETE it_details_result WHERE status = 'Completed'.
* elseif p_rpt3 = 'X'.
* wa_final-status = 'Open'.
* wa_final-status = 'Partial'.
ENDIF.
ENDFORM.
FORM getdata_for_summary_alv.
SELECT
vb~vbeln AS orderno,
* vb~erdat AS order_date,
* vb~auart As order_type,
* vb~vkorg AS sales_org,
vb~knumv AS documentno,
vb~posnr_i AS item,
vb~auart AS doctype,
vr~netwr AS orderamount,
vb~matnr_i AS material,
vb~mwsbp_i AS tax_amount,
vb~kzwi2_i AS subtotal2,
vr~kwmeng AS orderqty,
* vr~werks AS plant,
* vb~vkorg AS org,
pr~kbetr AS unitprice,
vb~werks_i AS plant,
vr~meins AS uom
* vb~cmpre_i AS cmpre_i
* INTO TABLE @it_order
INTO CORRESPONDING FIELDS OF TABLE @it_order
FROM wb2_v_vbak_vbap2 AS vb
INNER JOIN vbap AS vr ON vb~vbeln = vr~vbeln AND vb~posnr_i = vr~posnr
LEFT JOIN prcd_elements AS pr
ON vb~knumv = pr~knumv AND vb~posnr_i = pr~kposn AND pr~kschl IN ('ZBM0', 'ZXSP', 'ZSRP', 'ZSIP', 'ZMRP', 'ZEP0', 'CS00', 'ZBM0', 'ZRG0', 'ZLP0' , 'ZLRE') "'ZPC0',
* 'ZLRE'
WHERE
vb~audat GE @s_lfdat-low AND vb~audat LT @s_lfdat-high AND vb~vkorg = 1080 AND vb~werks_i
IN @s_werks AND vb~auart IN ('ZLCA','ZLBS', 'ZLCR') AND vb~kunnr IN @s_kunnr AND vb~vbeln IN @s_vbeln. " AND vb~matnr_i IN @s_matnr.
IF it_order IS NOT INITIAL.
LOOP AT it_order INTO wa_order.
wa_summary_result-vbeln = wa_order-orderno.
wa_summary_result-knumv = wa_order-documentno.
wa_summary_result-order_amount = wa_order-orderamount + wa_order-tax_amount.
wa_summary_result-gasval = wa_summary_result-order_amount - wa_order-subtotal2.
wa_summary_result-item = wa_order-item.
wa_summary_result-material = wa_order-material.
wa_summary_result-plant = wa_order-plant.
wa_summary_result-uom = wa_order-uom.
wa_summary_result-order_qty = wa_order-orderqty.
wa_summary_result-unit_price = wa_order-unitprice.
SELECT SINGLE kunnr FROM vbak INTO wa_summary_result-kunnr WHERE vbeln = wa_summary_result-vbeln .
SELECT SINGLE erdat auart vkorg FROM vbak INTO (wa_summary_result-order_date,
wa_summary_result-order_types, wa_summary_result-sales_org)
WHERE vbeln = wa_summary_result-vbeln .
SELECT SINGLE name1 FROM kna1 INTO wa_summary_result-name1 WHERE kunnr = wa_summary_result-kunnr.
SELECT SINGLE maktx FROM makt INTO wa_summary_result-maktx WHERE matnr = wa_summary_result-material.
* SELECT SINGLE vrkme_i FROM wb2_v_vbak_vbap2 INTO wa_summary_result-uom WHERE vbeln = wa_summary_result-vbeln AND matnr_i = wa_summary_result-material.
* SELECT SINGLE WERKS_I FROM wb2_v_vbak_vbap2 INTO wa_summary_result-plant WHERE vbeln = wa_summary_result-vbeln AND posnr_i = wa_summary_result-item .
* SELECT SINGLE vkorg FROM wb2_v_vbak_vbap2 INTO wa_summary_result-org WHERE vbeln = wa_summary_result-vbeln .
SELECT SINGLE vkorg cmpre_i kwmeng_i pstyv_i FROM wb2_v_vbak_vbap2 INTO
( wa_summary_result-org, wa_summary_result-cmpre_i, wa_summary_result-kwmeng_i , wa_summary_result-pstyv_i )
WHERE vbeln = wa_summary_result-vbeln AND matnr_i = wa_summary_result-material AND posnr_i = wa_order-item .
IF wa_summary_result-pstyv_i = 'ZREN'.
wa_summary_result-pstyv_t = 'Empty Return'.
ENDIF.
IF wa_summary_result-pstyv_i = 'ZRFL'.
wa_summary_result-pstyv_t = 'Refill'.
ENDIF.
IF wa_summary_result-pstyv_i = 'ZFRL'.
wa_summary_result-pstyv_t = 'Free Refill'.
ENDIF.
IF wa_summary_result-pstyv_i = 'ZPKG' OR wa_summary_result-pstyv_i = 'ZPAC' OR wa_summary_result-pstyv_i = 'ZPAG'.
wa_summary_result-pstyv_t = 'Package'.
ENDIF.
IF wa_summary_result-pstyv_i = 'ZFPK'.
wa_summary_result-pstyv_t = 'Free Package'.
ENDIF.
IF wa_summary_result-pstyv_i = 'ZBLK' OR wa_summary_result-pstyv_i = 'ZBLG'.
wa_summary_result-pstyv_t = 'Bulk'.
ENDIF.
****** check status
SELECT SINGLE lfstk FROM vbak INTO t_lfstk WHERE vbeln = wa_summary_result-vbeln.
IF t_lfstk = 'A' OR t_lfstk = ''.
wa_summary_result-status = 'Open'.
ELSEIF t_lfstk = 'B'.
wa_summary_result-status = 'Partial'.
ELSEIF t_lfstk = 'C'.
wa_summary_result-status = 'Completed'.
ENDIF.
" --------------------DISCOUNT PRICE ----------------------
SELECT kwert FROM prcd_elements WHERE knumv IN ( SELECT knumv FROM vbak WHERE vbeln = @wa_summary_result-vbeln ) AND kschl = 'ZDIC' AND kposn = @wa_summary_result-item INTO TABLE @DATA(it_kk).
LOOP AT it_kk INTO DATA(wa_kk).
wa_summary_result-discount_price = wa_kk-kwert.
CLEAR wa_kk.
ENDLOOP.
FREE it_kk.
*** query for delevery qty.
SELECT vbeln AS deliveryno, lfimg, posnr
INTO TABLE @it_delivery
FROM lips
WHERE vgbel = @wa_order-orderno
AND matnr = @wa_order-material
AND vgpos = @wa_order-item.
IF sy-subrc = 0.
LOOP AT it_delivery INTO wa_delivery.
*******
wa_summary_result-lfimg = wa_summary_result-lfimg + wa_delivery-lfimg.
wa_summary_result-deliveryno = wa_delivery-deliveryno.
ENDLOOP.
ENDIF.
* wa_summary_result-lfimg = wa_order-lfimg.
*** query for invoice qty and amount .
SELECT vr~vbeln AS invoiceno, vr~fkimg AS fkimg, vr~netwr AS netwr, vr~posnr AS posnr
INTO CORRESPONDING FIELDS OF TABLE @it_invoice
FROM vbrp AS vr
INNER JOIN vbrk AS vk ON vr~vbeln = vk~vbeln AND vk~vf_status = 'A' AND vk~sfakn =''
WHERE vr~aubel = @wa_order-orderno AND vr~matnr = @wa_order-material AND vr~aupos = @wa_order-item.
* GROUP BY fkimg, netwr .
IF sy-subrc = 0.
LOOP AT it_invoice INTO wa_invoice.
wa_summary_result-invoiceno = wa_invoice-invoiceno.
wa_summary_result-fkimg = wa_summary_result-fkimg + wa_invoice-fkimg.
wa_summary_result-netwr = wa_summary_result-netwr + wa_invoice-netwr.
ENDLOOP.
ENDIF.
wa_summary_result-openqty = wa_summary_result-lfimg - wa_summary_result-fkimg.
SHIFT wa_summary_result-vbeln LEFT DELETING LEADING '0'.
SHIFT wa_summary_result-kunnr LEFT DELETING LEADING '0'.
SHIFT wa_summary_result-material LEFT DELETING LEADING '0'.
SHIFT wa_summary_result-deliveryno LEFT DELETING LEADING '0'.
SHIFT wa_summary_result-invoiceno LEFT DELETING LEADING '0'.
APPEND wa_summary_result TO it_summary_result.
CLEAR wa_summary_result.
ENDLOOP.
ENDIF.
IF p_rpt1 = 'X'.
DELETE it_summary_result WHERE status = 'Partial'.
DELETE it_summary_result WHERE status = 'Completed'.
ELSEIF p_rpt2 = 'X'.
DELETE it_summary_result WHERE status = 'Open'.
DELETE it_summary_result WHERE status = 'Completed'.
* elseif p_rpt3 = 'X'.
* wa_final-status = 'Open'.
* wa_final-status = 'Partial'.
ENDIF.
******************
LOOP AT it_summary_result INTO wa_summary_result .
** " Check if an entry already exists in the target internal table
READ TABLE it_summary_final INTO wa_summary_final WITH KEY vbeln = wa_summary_result-vbeln material = wa_summary_result-material unit_Price = wa_summary_result-unit_Price.
IF sy-subrc = 0. " Entry found, update fields
wa_summary_final-order_Amount = wa_summary_final-order_Amount + wa_summary_result-order_Amount. " Summing orderAmount
wa_summary_final-order_Qty = wa_summary_final-order_Qty + wa_summary_result-order_Qty. " Summing orderQty
wa_summary_final-lfimg = wa_summary_final-lfimg + wa_summary_result-lfimg. " Summing lfimg
wa_summary_final-fkimg = wa_summary_final-fkimg + wa_summary_result-fkimg. " Summing fkimg
wa_summary_final-netwr = wa_summary_final-netwr + wa_summary_result-netwr. " Summing netwr
MODIFY it_summary_final INDEX sy-tabix FROM wa_summary_final TRANSPORTING order_Qty order_Amount lfimg fkimg netwr.
ELSE. " Entry not found, append new entry
* SELECT SINGLE kunnr FROM vbak INTO wa_result-kunnr WHERE vbeln = wa_final-vbeln .
* SELECT SINGLE name1 FROM kna1 INTO wa_result-name1 WHERE kunnr = wa_result-kunnr.
* SELECT SINGLE maktx FROM makt INTO wa_final-maktx WHERE matnr = wa_final-material.
wa_summary_final = wa_summary_result. " Copy all fields from source to target
APPEND wa_summary_final TO it_summary_final.
ENDIF.
ENDLOOP.
********
ENDFORM.
FORM display_alv_details_report.
" Define field catalog
w_fieldcat-fieldname = 'VBELN'.
w_fieldcat-seltext_m = 'Order No'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'ORDER_DATE'.
w_fieldcat-seltext_m = 'Order Date'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'ORDER_TYPES'.
w_fieldcat-seltext_m = 'Order Type'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'SALES_ORG'.
w_fieldcat-seltext_m = 'Sales Organization'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'KUNNR'.
w_fieldcat-seltext_m = 'Customer'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'NAME1'.
w_fieldcat-seltext_m = 'Customer Name'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'PLANT'.
w_fieldcat-seltext_m = 'Plant'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'MATERIAL'.
w_fieldcat-seltext_m = 'Matarial'.
* w_fieldcat-emphasize = 'C410'.
* w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'PSTYV_T'.
w_fieldcat-seltext_m = 'Pakage/Refill'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'KWMENG_I'.
w_fieldcat-seltext_m = 'Quantity'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'UOM'.
w_fieldcat-seltext_m = 'Unit'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'DELIVERYNO'.
w_fieldcat-seltext_m = 'Delivery No'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'INVOICENO'.
w_fieldcat-seltext_m = 'Invoice No'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'ITEM'.
w_fieldcat-seltext_m = 'Item'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
* w_fieldcat-fieldname = 'PLANT'.
* w_fieldcat-seltext_m = 'Plant'.
* w_fieldcat-do_sum = 'x'.
* APPEND w_fieldcat TO fieldcat.
*
* w_fieldcat-fieldname = 'STATUS'.
* w_fieldcat-seltext_m = 'Order Status'.
* APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'CMPRE_I'.
w_fieldcat-seltext_m = 'Rate/Unit'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'STATUS'.
w_fieldcat-seltext_m = 'Order Status'.
w_fieldcat-emphasize = 'C510'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'ORG'.
w_fieldcat-seltext_m = 'Org'.
w_fieldcat-emphasize = 'C410'.
APPEND w_fieldcat TO fieldcat.
* w_fieldcat-fieldname = 'ORDER_TYPE'.
* w_fieldcat-seltext_m = 'Order type'.
* w_fieldcat-do_sum = 'x'.
* APPEND w_fieldcat TO fieldcat.
* w_fieldcat-fieldname = 'KNUMV'.
* w_fieldcat-seltext_m = 'Document No'.
* w_fieldcat-do_sum = 'x'.
* APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'MAKTX'.
w_fieldcat-seltext_m = 'Description'.
w_fieldcat-emphasize = 'C410'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'UNIT_PRICE'.
w_fieldcat-seltext_m = 'Unit Price'.
w_fieldcat-emphasize = 'C410'.
w_fieldcat-decimals_out = 2.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'ORDER_QTY'.
w_fieldcat-seltext_m = 'Order Qty'.
w_fieldcat-emphasize = 'C410'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'ORDER_AMOUNT'.
w_fieldcat-emphasize = 'C410'.
w_fieldcat-seltext_m = 'order Amount'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'GASVAL'.
* w_fieldcat-emphasize = ''GAS Sales'.
w_fieldcat-seltext_m = 'GAS Sales'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'DISCOUNT_PRICE'.
* w_fieldcat-emphasize = ''GAS Sales'.
w_fieldcat-seltext_m = 'Discount price'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'LFIMG'.
w_fieldcat-seltext_m = 'Delivery Qty'.
w_fieldcat-emphasize = 'C410'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
*
w_fieldcat-fieldname = 'FKIMG' .
w_fieldcat-seltext_m = 'Invoice Qty'.
w_fieldcat-emphasize = 'C410'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'NETWR'.
w_fieldcat-seltext_m = 'Invoice Amount'.
w_fieldcat-emphasize = 'C410'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'OPENQTY'.
w_fieldcat-seltext_m = 'Open QTY'.
w_fieldcat-emphasize = 'C410'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
* w_fieldcat-fieldname = 'UOM'.
* w_fieldcat-seltext_m = 'MOU'.
* w_fieldcat-datatype = 'UNIT'.
* w_fieldcat-do_sum = 'X'.
* APPEND w_fieldcat TO fieldcat.
* w_sort-spos = '3'.
* w_sort-fieldname = 'UOM'.
* w_sort-up = 'X'.
* w_sort-subtot = 'X'.
* APPEND w_sort TO sort.
*
*
* layout-colwidth_optimize = 'X'.
* layout-key_hotspot = 'X'.
* layout-zebra = 'X'.
* layout-totals_text = 'TOTAL'.
* layout-subtotals_text = 'SUB TOTALS'.
* layout-numc_sum = 'X'.
*
* layout-zebra = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_user_command = 'USER_COMMAND'
it_fieldcat = fieldcat
is_layout = layout
i_default = 'X'
i_save = 'U'
i_callback_top_of_page = 'TOP'
it_sort = sort[]
TABLES
t_outtab = it_details_result.
ENDFORM.
FORM display_alv_summary_report.
" Define field catalog
w_fieldcat-fieldname = 'VBELN'.
w_fieldcat-seltext_m = 'Order No'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'ORDER_DATE'.
w_fieldcat-seltext_m = 'Order Date'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'ORDER_TYPES'.
w_fieldcat-seltext_m = 'Order Type'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'SALES_ORG'.
w_fieldcat-seltext_m = 'Sales Organization'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'KUNNR'.
w_fieldcat-seltext_m = 'Customer'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'NAME1'.
w_fieldcat-seltext_m = 'Customer Name'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'PLANT'.
w_fieldcat-seltext_m = 'Plant'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'MATERIAL'.
w_fieldcat-seltext_m = 'Matarial'.
* w_fieldcat-emphasize = 'C410'.
* w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'PSTYV_T'.
w_fieldcat-seltext_m = 'Pakage/Refill'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'KWMENG_I'.
w_fieldcat-seltext_m = 'Quantity'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'UOM'.
w_fieldcat-seltext_m = 'Unit'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'DELIVERYNO'.
w_fieldcat-seltext_m = 'Delivery No'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'INVOICENO'.
w_fieldcat-seltext_m = 'Invoice No'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'ITEM'.
w_fieldcat-seltext_m = 'Item'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
* w_fieldcat-fieldname = 'PLANT'.
* w_fieldcat-seltext_m = 'Plant'.
* w_fieldcat-do_sum = 'x'.
* APPEND w_fieldcat TO fieldcat.
*
* w_fieldcat-fieldname = 'STATUS'.
* w_fieldcat-seltext_m = 'Order Status'.
* APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'CMPRE_I'.
w_fieldcat-seltext_m = 'Rate/Unit'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'STATUS'.
w_fieldcat-seltext_m = 'Order Status'.
w_fieldcat-emphasize = 'C510'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'ORG'.
w_fieldcat-seltext_m = 'Org'.
w_fieldcat-emphasize = 'C410'.
APPEND w_fieldcat TO fieldcat.
* w_fieldcat-fieldname = 'ORDER_TYPE'.
* w_fieldcat-seltext_m = 'Order type'.
* w_fieldcat-do_sum = 'x'.
* APPEND w_fieldcat TO fieldcat.
* w_fieldcat-fieldname = 'KNUMV'.
* w_fieldcat-seltext_m = 'Document No'.
* w_fieldcat-do_sum = 'x'.
* APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'MAKTX'.
w_fieldcat-seltext_m = 'Description'.
w_fieldcat-emphasize = 'C410'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'UNIT_PRICE'.
w_fieldcat-seltext_m = 'Unit Price'.
w_fieldcat-emphasize = 'C410'.
w_fieldcat-decimals_out = 2.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'ORDER_QTY'.
w_fieldcat-seltext_m = 'Order Qty'.
w_fieldcat-emphasize = 'C410'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'ORDER_AMOUNT'.
w_fieldcat-emphasize = 'C410'.
w_fieldcat-seltext_m = 'order Amount'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'GASVAL'.
* w_fieldcat-emphasize = ''GAS Sales'.
w_fieldcat-seltext_m = 'GAS Sales'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'DISCOUNT_PRICE'.
* w_fieldcat-emphasize = ''GAS Sales'.
w_fieldcat-seltext_m = 'Discount price'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'LFIMG'.
w_fieldcat-seltext_m = 'Delivery Qty'.
w_fieldcat-emphasize = 'C410'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
*
w_fieldcat-fieldname = 'FKIMG' .
w_fieldcat-seltext_m = 'Invoice Qty'.
w_fieldcat-emphasize = 'C410'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'NETWR'.
w_fieldcat-seltext_m = 'Invoice Amount'.
w_fieldcat-emphasize = 'C410'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
w_fieldcat-fieldname = 'OPENQTY'.
w_fieldcat-seltext_m = 'Open QTY'.
w_fieldcat-emphasize = 'C410'.
w_fieldcat-do_sum = 'x'.
APPEND w_fieldcat TO fieldcat.
* w_fieldcat-fieldname = 'UOM'.
* w_fieldcat-seltext_m = 'MOU'.
* w_fieldcat-datatype = 'UNIT'.
* w_fieldcat-do_sum = 'X'.
* APPEND w_fieldcat TO fieldcat.
* w_sort-spos = '3'.
* w_sort-fieldname = 'UOM'.
* w_sort-up = 'X'.
* w_sort-subtot = 'X'.
* APPEND w_sort TO sort.
*
*
* layout-colwidth_optimize = 'X'.
* layout-key_hotspot = 'X'.
* layout-zebra = 'X'.
* layout-totals_text = 'TOTAL'.
* layout-subtotals_text = 'SUB TOTALS'.
* layout-numc_sum = 'X'.
*
* layout-zebra = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_user_command = 'USER_COMMAND'
it_fieldcat = fieldcat
is_layout = layout
i_default = 'X'
i_save = 'U'
i_callback_top_of_page = 'TOP'
it_sort = sort[]
TABLES
t_outtab = it_summary_final.
ENDFORM.
FORM top.
DATA: head(120) TYPE c,
date1(10) TYPE c,
date2(10) TYPE c.
CONCATENATE s_lfdat-low+6(2) '-' s_lfdat-low+4(2) '-' s_lfdat-low+0(4) INTO date1.
CONCATENATE s_lfdat-high+6(2) '-' s_lfdat-high+4(2) '-' s_lfdat-high+0(4) INTO date2.
*DATE = SY-DATUM .
CLEAR listheader.
CONCATENATE 'LIST OF SALES ORDER : From ' date1 ' TO ' date2 INTO head SEPARATED BY space.
w_listheader-typ = 'H'.
w_listheader-info = head.
APPEND w_listheader TO listheader.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = listheader
* I_LOGO =
* I_END_OF_LIST_GRID =
* I_ALV_FORM =
.
ENDFORM.
FORM user_command USING ucomm LIKE sy-ucomm selfield TYPE slis_selfield .
READ TABLE it_summary_final INTO wa_summary_final INDEX selfield-tabindex.
SET PARAMETER ID 'AUN' FIELD wa_summary_final-vbeln.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDFORM.