Create SAP ABAB ALV Report

 



REPORT ydemo_test_alv_akt.


TABLES wb2_v_vbak_vbap2,likp,t001wkna1,vbak,maraprcd_elementsvbap.

DATAfieldcat     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.

TYPESBEGIN 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.

TYPESBEGIN 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.

DATAit_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.

TYPESBEGIN OF ty_deliverys,
         deliveryno TYPE vbeln,
         lfimg      TYPE lfimg,
         posnr      TYPE posnr,
       END OF ty_deliverys.

DATAit_delivery TYPE TABLE OF ty_deliverys,
      wa_delivery TYPE ty_deliverys.

DATAit_order TYPE TABLE OF ty_order.
DATA:       wa_order TYPE ty_order.

TYPESBEGIN OF ty_invoice,
         invoiceno TYPE vbeln,
         fkimg     TYPE fkimg,
         netwr     TYPE netwr,
         posnr     TYPE posnr,
       END OF ty_invoice.

DATAit_invoice TYPE TABLE OF ty_invoice,
      wa_invoice TYPE ty_invoice.

DATAt_lfstk LIKE vbak-lfstk.


SELECTION-SCREENBEGIN 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-SCREENEND OF BLOCK a1.

SELECTION-SCREENBEGIN 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-SCREENEND OF BLOCK b1.


PARAMETERS:
  rbp1 RADIOBUTTON GROUP 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_typeswa_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-orgwa_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 deliverynolfimgposnr
              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 fkimgvr~netwr  AS netwrvr~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_typeswa_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-orgwa_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 deliverynolfimgposnr
              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 fkimgvr~netwr  AS netwrvr~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.
  DATAhead(120TYPE c,
        date1(10TYPE c,
        date2(10TYPE c.

  CONCATENATE s_lfdat-low+6(2'-' s_lfdat-low+4(2'-' s_lfdat-low+0(4INTO date1.
  CONCATENATE s_lfdat-high+6(2'-' s_lfdat-high+4(2'-' s_lfdat-high+0(4INTO 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.

Post a Comment

Thank you

Previous Post Next Post