Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Problem with alv in background

Former Member
0 Kudos

hi,

i have an alv list with 17 columns .when i execute it in foreground the alv o/p appears perfect,but when executed in background the alv o/p appears distorted in the spool.

in the code i have used line-size 1023.

any comments friends.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi

How u have declared the fields in alv??? where u have executed this alv in background???

Check this sample report

 ******************************
* tables
******************************

TABLES: ekko,ekbe,ekpo,ekkn,konh,konv,esll,ekbz,rseg,lfa1,j_1ipart1,
j_1igrxref.
TYPE-POOLS: slis.

******************
*data definituon
*******************

DATA:
      wa_ekko LIKE ekko,
      wa_ekbe LIKE ekbe,
      wa_ekkn LIKE ekkn,
      wa_konp LIKE konp,
      wa_ekpo LIKE ekpo,
      wa_rbkp LIKE rbkp,
      wa_j_1ipart1 LIKE j_1ipart1,
      wa_j_1igrxref LIKE j_1igrxref,
      wa_rseg LIKE rseg OCCURS 0 WITH HEADER LINE.

DATA: ws_vakey LIKE konh-vakey,
      ws_kbetr LIKE konp-kbetr,
      ws_kbetr1 LIKE konp-kbetr,
      ws_kbetr2 LIKE konp-kbetr,
      ws_ecs LIKE j_1igrxref-ecs,
      ws_ebelp LIKE ekbz-ebelp,
      ws_ebeln LIKE ekko-ebeln,
      ws_belnr LIKE ekbe-belnr,
      ws_beznk LIKE  rbkp-beznk,
      ws_wrbtr_f LIKE ekbz-wrbtr,
      ws_rmwwr LIKE rbkp-rmwwr,
      ws_rbkp_benz.

**********************************
*internal tables
*********************************

DATA: BEGIN OF int_outtab OCCURS 0,
      lifnr      LIKE ekko-lifnr,               " vend no
      name1      LIKE lfa1-name1,               " vend name
      werks      LIKE ekpo-werks,               "  plant
      ebeln      LIKE ekko-ebeln,               " po no
      knumv      LIKE ekko-knumv,
      ebelp      LIKE ekbe-ebelp,
      matnr      LIKE ekpo-matnr,               " mat no
      txz01      LIKE ekpo-txz01,               " mat desceiption
      kostl      LIKE ekkn-kostl,               " cost center
      ps_psp_pnr LIKE ekkn-ps_psp_pnr,          " WBS element
      netwr      LIKE ekpo-netwr,
      " basic value           (po)
      kbetr      LIKE konp-kbetr,
      " excise value          (po)
      kwert_i    LIKE konv-kwert,
      " insurance value       (po)
      kwert_f    LIKE konv-kwert,
      " frieght value         (po)
      kwert_t    LIKE konv-kwert,
      " vat/tax value         (po)
      kwert_o    LIKE konv-kwert,
      " others                (po)
      kwert_total LIKE konv-kwert,
      " total                 (po)
      ecs        LIKE j_1igrxref-ecs,
      " excise                (ap)
      wmwst1     LIKE   rbkp-wmwst1,
      " tax amount            (ap)
      wrbtr_f       TYPE ekbz-wrbtr,
      " freight               (ap)
      wrbtr       TYPE ekbz-wrbtr,
      beznk      LIKE    rbkp-beznk,
      " Unplanned cost        (ap)
      refwr_g    TYPE  ekbe-refwr,
      " gross                 (ap)
      rmwwr   LIKE  rbkp-rmwwr,
      "  Actual Invoice Total (ap)
      buzei      LIKE ekbz-buzei,               "item for material doc
      gjahr      LIKE ekbe-gjahr,
      tax        LIKE ekbe-wrbtr,                " tax (ap)
      actual_total LIKE ekbe-wrbtr,
*      belnr      LIKE rseg-belnr,
       belnr     LIKE ekbe-belnr,
      vakey      LIKE konh-vakey,
      cpudt      LIKE ekbe-cpudt,
      budat      LIKE ekbz-budat,
      belnr_ekbz LIKE ekbz-belnr,              "to get excise value
*      aedat     LIKE ekpo-aedat,
      bedat   LIKE ekko-bedat,
      waers     LIKE lfm1-waers,               " currency
      END OF int_outtab.

DATA:   int_konv LIKE konv OCCURS 0 WITH HEADER LINE,
*        int_ekbe LIKE ekbe OCCURS 0 WITH HEADER LINE,
        int_ekbz LIKE ekbz OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF int_konh OCCURS 0,
      knumh LIKE konh-knumh,
      kschl LIKE konh-kschl,
      vakey LIKE konh-vakey,
      END OF int_konh.

DATA: BEGIN OF int_konp OCCURS 0,
      knumh LIKE konp-knumh,
      kschl LIKE konp-kschl,
      kbetr LIKE konp-kbetr,
      END OF int_konp.
DATA: BEGIN OF int_ekkn OCCURS 0,
      ebeln      LIKE ekkn-ebeln,
      ebelp      LIKE ekkn-ebelp,
      kostl      LIKE ekkn-kostl,
      ps_psp_pnr LIKE ekkn-ps_psp_pnr,
      END OF int_ekkn.
DATA: BEGIN OF int_outtab1 OCCURS 0,
      exbed      LIKE j_1igrxref-exbed,
      ecs        LIKE j_1igrxref-ecs,

      END OF int_outtab1.
DATA: BEGIN OF int_ekbe OCCURS 0,
      ebelp LIKE ekbe-ebelp,
      refwr LIKE ekbe-refwr,
      wrbtr LIKE ekbe-wrbtr,
      shkzg LIKE ekbe-shkzg,
      END OF int_ekbe.
DATA: BEGIN OF int_total OCCURS 0,
      ebeln LIKE ekko-ebeln,
      ebelp LIKE ekbe-ebelp,
      actual_total LIKE ekbe-wrbtr,
      END OF int_total.
DATA: BEGIN OF int_excise OCCURS 0,
      ebeln      LIKE ekko-ebeln,
      kbetr      LIKE konp-kbetr,
      END OF int_excise.
DATA: BEGIN OF int_rseg OCCURS 0,
      ebeln LIKE rseg-ebeln,
      ebelp LIKE rseg-ebelp,
      lfbnr LIKE rseg-lfbnr,
      matnr LIKE rseg-matnr,
      lfgja LIKE rseg-lfgja,
      belnr LIKE rseg-belnr,
      ecs LIKE j_1igrxref-ecs,
      beznk      LIKE    rbkp-beznk,
      wrbtr_f    LIKE  ekbz-wrbtr,
      rmwwr LIKE rbkp-rmwwr,
      END OF int_rseg.
DATA: BEGIN OF int_rbkp OCCURS 0,
      belnr LIKE  rbkp-belnr,
      beznk      LIKE    rbkp-beznk,
      rmwwr      LIKE    rbkp-rmwwr,
      tcode  LIKE rbkp-tcode,
      END OF int_rbkp.

**************************
****ALV list definintion
*************************
DATA: ws_cat TYPE slis_t_fieldcat_alv ,
      int_cat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
DATA: g_container TYPE scrfname VALUE 'BCALV_GRID_DEMO_0100_CONT1',
      g_custom_container TYPE REF TO cl_gui_custom_container.

*****************
*selection-screen
******************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 19(23) text-002.
SELECT-OPTIONS: s_lifnr FOR ekko-lifnr obligatory.
*PARAMETERS:p_lifnr LIKE ekko-lifnr  .
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 25(17) text-006.
*PARAMETERS:p_ebeln LIKE ekko-ebeln obligatory.
SELECT-OPTIONS:s_ebeln FOR ekko-ebeln .
SELECTION-SCREEN END OF LINE.

*SELECTION-SCREEN BEGIN OF LINE.
*SELECTION-SCREEN COMMENT 25(23) text-003.
*PARAMETERS:p_ekorg LIKE ekko-ekorg.
*SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
*SELECTION-SCREEN COMMENT 25(20) text-004.
*PARAMETERS:p_werks LIKE ekpo-werks obligatory.
*SELECT-OPTIONS: S_werks FOR ekpo-werks obligatory.
SELECTION-SCREEN END OF LINE.


*SELECTION-SCREEN BEGIN OF LINE.
*SELECTION-SCREEN COMMENT 25(23) text-005.
*SELECT-OPTIONS:s_bedat FOR ekko-bedat.
*SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK b1.

START-OF-SELECTION.
  PERFORM get_data.
  PERFORM field_catalog.
  PERFORM display_data.

END-OF-SELECTION.


*&---------------------------------------------------------------------*
*&      Form  get_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM get_data.
*************************
* start of Vender details
*************************


***vender no, vender name, po no,service/mat no, service/mat description

  SELECT  ekko~lifnr ekko~ebeln ekko~knumv ekko~bedat
          ekpo~werks ekpo~matnr ekpo~txz01 ekpo~werks
          ekpo~netwr
*          ekpo~aedat
          ekbe~ebelp  ekbe~belnr
          lfa1~name1
  INTO    CORRESPONDING   FIELDS OF  TABLE int_outtab

  FROM ( ( ( ekko

           JOIN ekbe ON  ekbe~ebeln = ekko~ebeln AND
                         ekbe~vgabe = '2'       )
           JOIN ekpo ON ekpo~ebeln = ekko~ebeln   AND
                        ekpo~ebelp = ekbe~ebelp )
           JOIN lfa1 ON lfa1~lifnr = ekko~lifnr )
  WHERE
*  ekko~lifnr  =  P_lifnr  AND
*         ekko~ebeln IN  S_ebeln  AND
**         ekpo~werks IN  S_werks AND
         ekbe~vgabe = '2'.

***WBS/Cost center
  SELECT  ebeln ebelp kostl ps_psp_pnr  FROM ekkn INTO int_ekkn
  FOR ALL ENTRIES IN int_outtab
  WHERE ebeln = int_outtab-ebeln AND
        ebelp = int_outtab-ebelp.
    APPEND int_ekkn.
  ENDSELECT.

  LOOP AT int_outtab.
    ON CHANGE OF int_outtab-ebeln OR int_outtab-ebelp.
      LOOP AT int_ekkn WHERE ebeln = int_outtab-ebeln AND
                             ebelp = int_outtab-ebelp.
        IF  int_ekkn-kostl <> ' '.
          MOVE int_ekkn-kostl TO int_outtab-kostl.
        ELSE.
          MOVE int_ekkn-ps_psp_pnr TO int_outtab-kostl.
          " int_outtab-ps_psp_pnr.
        ENDIF.
      ENDLOOP.
      MODIFY int_outtab.
    ENDON.
  ENDLOOP.


***************************
*end of Vender details*****
***************************


*********************************
*******Start of calculation of PO
*********************************


*****Excise calculation of po
  LOOP AT int_outtab.
    CONCATENATE int_outtab-werks int_outtab-lifnr int_outtab-matnr INTO
    ws_vakey.
    MOVE ws_vakey TO int_outtab-vakey.
    MODIFY int_outtab.
  ENDLOOP.
  LOOP AT int_outtab.
*    ON CHANGE OF int_outtab-ebeln OR int_outtab-vakey.
    ON CHANGE OF int_outtab-ebelp.
      SELECT knumh kschl vakey FROM konh INTO int_konh
*        FOR ALL ENTRIES IN int_outtab
        WHERE vakey = int_outtab-vakey AND
              datab <= int_outtab-bedat AND
              datbi > int_outtab-bedat AND
             ( kschl = 'JMOP' OR kschl = 'JEC1' ).
        SELECT knumh kschl kbetr FROM konp INTO int_konp
        WHERE  knumh = int_konh-knumh .
          IF  int_konp-kschl = 'JMOP'.
            ws_kbetr = int_konp-kbetr / 1000 * int_outtab-netwr.
            ws_kbetr1 = ws_kbetr.
          ENDIF.
          IF int_konp-kschl = 'JEC1'.
            ws_kbetr2 = int_konp-kbetr / 1000 * ws_kbetr1.
          ENDIF.
          ws_kbetr = ws_kbetr + ws_kbetr2.
        ENDSELECT.
      ENDSELECT.
    ENDON.
*    ENDON.
    MOVE ws_kbetr TO int_outtab-kbetr.
    MODIFY int_outtab.
    CLEAR: ws_kbetr, ws_kbetr1, ws_kbetr2.
  ENDLOOP.
  LOOP AT int_outtab.
*    ON CHANGE OF int_outtab-ebeln OR int_outtab-vakey.
    int_excise-kbetr =  int_outtab-kbetr.
    int_excise-ebeln =  int_outtab-ebeln.
    APPEND int_excise.
*    ENDON.
  ENDLOOP.
  LOOP AT int_outtab.
    ON CHANGE OF int_outtab-ebeln.
      LOOP AT int_excise WHERE ebeln = int_outtab-ebeln.
        ws_kbetr = ws_kbetr + int_excise-kbetr.
      ENDLOOP.
    ENDON.
    int_outtab-kbetr = ws_kbetr.
    MODIFY int_outtab.
    CLEAR ws_kbetr.
  ENDLOOP.

***** Insurance, Freight,Vat/ST, Other, Total***********
  LOOP AT int_outtab.
    ON CHANGE OF int_outtab-ebelp OR int_outtab-ebeln.
      CLEAR int_konv.
      SELECT * FROM konv INTO CORRESPONDING FIELDS OF int_konv
      WHERE knumv = int_outtab-knumv AND
            kposn = int_outtab-ebelp AND
          ( ( kschl <> 'RA00' )
             AND ( kschl <> 'RA01' ) AND ( kschl <>  'RB00' )
             AND ( kschl <> 'PBXX' ) AND ( kschl <>  'PB00' )
             AND ( kschl <> 'RC00' ) AND ( kschl <>  'RL01' )
             AND ( kschl <> 'ZC00' ) AND ( kschl <>  'ZA00' )
             AND ( kschl <> 'ZA01' ) AND ( kschl <>  'HB01' )
             AND ( kschl <> 'ZBED' ) AND ( kschl <>  'ZAED' )
             AND ( kschl <> 'ZSED' ) AND ( kschl <>  'ZAE1' )
             AND ( kschl <> 'ZSE1' ) AND ( kschl <>  'ZCEX' )
             AND ( kschl <> 'ZPRO' ) AND ( kschl <>  'ZTRD' )
             AND ( kschl <> 'ZPK4' ) AND ( kschl <>  'ZSTX' )
             AND ( kschl <> 'ZASS' ) AND ( kschl <>  'ZJCD' )
             AND ( kschl <>  'HB00') ).

        APPEND int_konv.
      ENDSELECT.
    ENDON.
  ENDLOOP.

  LOOP AT int_outtab.
    ON CHANGE OF int_outtab-ebelp OR int_outtab-knumv.
      LOOP AT int_konv WHERE kposn = int_outtab-ebelp AND
                             knumv = int_outtab-knumv.
*                             lifnr = int_outtab-lifnr.
***** tax
        IF  ( ( int_konv-kschl = 'NAVS' ) OR ( int_konv-kschl = 'NAVM' )
        ).
          int_outtab-kwert_t = int_outtab-kwert_t + int_konv-kwert.
        ELSE.
*****freight
          IF ( ( int_konv-kschl = 'FRA1' ) OR ( int_konv-kschl = 'FRB1'
          )
                                          OR  ( int_konv-kschl = 'FRC1'
                                          ) ).
            int_outtab-kwert_f = int_outtab-kwert_f + int_konv-kwert.
          ELSE.
*****insurance
            IF ( ( int_konv-kschl = 'ZGIN' )  OR ( int_konv-kschl =
            'ZIN2' ) ).
              int_outtab-kwert_i =  int_outtab-kwert_i + int_konv-kwert.
            ELSE.
****others
              IF NOT (    ( int_konv-kschl = 'NAVS' ) OR (
              int_konv-kschl = 'NAVM' )
                       OR ( int_konv-kschl = 'FRA1' ) OR (
                       int_konv-kschl = 'FRB1' )
                       OR ( int_konv-kschl = 'FRC1' ) OR (
                       int_konv-kschl = 'ZGIN' )
                       OR ( int_konv-kschl = 'ZIN2' ) OR (
                       int_konv-kschl = 'RA00' )
                       OR ( int_konv-kschl = 'RA01' ) OR (
                       int_konv-kschl = 'RB00' )
                       OR ( int_konv-kschl = 'PBXX' ) OR (
                       int_konv-kschl = 'PB00' )
                       OR ( int_konv-kschl = 'RC00' ) OR (
                       int_konv-kschl = 'RL01' ) ).
                int_outtab-kwert_o =   int_outtab-kwert_o  +
                int_konv-kwert.
              ENDIF.
            ENDIF.
          ENDIF.
        ENDIF.
      ENDLOOP.
****total
      int_outtab-kwert_total =  int_outtab-kwert_t
                                + int_outtab-kwert_f
                                + int_outtab-kwert_i
                                + int_outtab-kwert_o
                              + int_outtab-netwr.
    ENDON.
    MODIFY int_outtab.
  ENDLOOP.
*********************************
******End of calculation of PO
*********************************




*********************************************
*start of calculation for actual payment
*********************************************

*****Excise
 sort int_outtab by ebelp ebeln.
  LOOP AT int_outtab.
    ON CHANGE OF int_outtab-ebelp OR int_outtab-ebeln.
      SELECT * FROM rseg INTO CORRESPONDING FIELDS OF int_rseg
*          FOR ALL ENTRIES IN int_outtab
             WHERE ebeln = int_outtab-ebeln AND
                   ebelp = int_outtab-ebelp.
        APPEND int_rseg.
      ENDSELECT.
    ENDON.
  ENDLOOP.
  sort int_rseg by ebelp lfbnr matnr.
  LOOP AT int_rseg.
    ON CHANGE OF int_outtab-ebelp OR int_rseg-lfbnr OR int_rseg-matnr OR
    int_rseg-lfgja.
      SELECT * FROM j_1ipart1 INTO wa_j_1ipart1
      WHERE mblnr = int_rseg-lfbnr AND
            mjahr = int_rseg-lfgja AND
            matnr = int_rseg-matnr.

        ON CHANGE OF wa_j_1ipart1-mblnr OR wa_j_1ipart1-zeile.
          SELECT * FROM j_1igrxref INTO wa_j_1igrxref
           WHERE mblnr = wa_j_1ipart1-mblnr AND
                 zeile = wa_j_1ipart1-zeile.
            IF sy-subrc EQ 0.
              ws_ecs = ws_ecs + wa_j_1igrxref-exbed + wa_j_1igrxref-ecs.
            ENDIF.
          ENDSELECT.
        ENDON.
      ENDSELECT.
    ENDON.

    MOVE ws_ecs TO int_rseg-ecs.
    MODIFY int_rseg TRANSPORTING ecs.
    CLEAR: ws_ecs.
  ENDLOOP.

  LOOP AT int_outtab.
    ON CHANGE OF int_outtab-ebeln.
      LOOP AT int_rseg WHERE ebeln = int_outtab-ebeln.
        ws_ecs = ws_ecs + int_rseg-ecs.
      ENDLOOP.
    ENDON.
    MOVE ws_ecs TO int_outtab-ecs.
    MODIFY int_outtab TRANSPORTING ecs.
    CLEAR ws_ecs.
  ENDLOOP.

******unplanned costs and actual_invoice_total
  SORT int_rseg BY belnr.
  LOOP AT int_rseg .
    ON CHANGE OF int_rseg-belnr.
      SELECT  belnr beznk rmwwr tcode FROM rbkp INTO int_rbkp
      WHERE   belnr  = int_rseg-belnr .
        APPEND int_rbkp.
      ENDSELECT.
    ENDON.
  ENDLOOP.

  SORT int_rseg BY belnr.
  SORT int_rbkp BY belnr.

  LOOP AT int_rseg.
    ON CHANGE OF int_rseg-ebeln OR int_rseg-belnr.
      LOOP AT int_rbkp WHERE belnr = int_rseg-belnr.
        IF int_rbkp-tcode = 'MR8M'.
          int_rbkp-rmwwr = int_rbkp-rmwwr * ( - 1 ).
          int_rbkp-beznk = int_rbkp-beznk * ( - 1 ).
        ENDIF.
        ws_beznk =  ws_beznk + int_rbkp-beznk.
        ws_rmwwr =  ws_rmwwr + int_rbkp-rmwwr.
      ENDLOOP.
    ENDON.
    MOVE ws_beznk TO int_rseg-beznk.
    MOVE ws_rmwwr TO int_rseg-rmwwr.
    MODIFY int_rseg.
    CLEAR: ws_rmwwr, ws_beznk.
  ENDLOOP.

  LOOP AT int_outtab.
    ON CHANGE OF int_outtab-ebeln.
      LOOP AT int_rseg WHERE ebeln = int_rseg-ebeln.
        ws_beznk =  ws_beznk + int_rseg-beznk.
        ws_rmwwr =  ws_rmwwr + int_rseg-rmwwr.
      ENDLOOP.
    ENDON.
    MOVE ws_beznk TO int_outtab-beznk.
    MOVE ws_rmwwr TO int_outtab-rmwwr.

    MODIFY int_outtab.
    CLEAR: ws_rmwwr, ws_beznk.
  ENDLOOP.


*freight of actual payment
  sort int_rseg by belnr ebelp.
  LOOP AT int_rseg.
    ON CHANGE OF  int_rseg-belnr or int_rseg-ebelp..
      SELECT * FROM ekbz INTO CORRESPONDING FIELDS OF int_ekbz
      WHERE ebeln = int_rseg-ebeln AND
            belnr = int_rseg-belnr AND
            ebelp = int_rseg-ebelp AND
            vgabe = '2' .
        IF int_ekbz-shkzg = 'H'.
          int_ekbz-wrbtr = int_ekbz-wrbtr  * ( - 1 ).
        ENDIF.
        int_rseg-wrbtr_f = int_rseg-wrbtr_f + int_ekbz-wrbtr.
      ENDSELECT.
    ENDON.
    MODIFY int_rseg.
    CLEAR int_rseg-wrbtr_f.
  ENDLOOP.
  sort int_rseg by ebelp.
  LOOP AT int_outtab.
    ON CHANGE OF int_outtab-ebeln OR int_outtab-ebelp.
      LOOP AT int_rseg WHERE ebeln = int_outtab-ebeln AND
                             ebelp = int_outtab-ebelp.
        ws_wrbtr_f = ws_wrbtr_f + int_rseg-wrbtr_f.
      ENDLOOP.
    ENDON.
    MOVE ws_wrbtr_f TO int_outtab-wrbtr_f.
    MODIFY int_outtab TRANSPORTING wrbtr_f.
    CLEAR ws_wrbtr_f.
  ENDLOOP.

**tax and gross amt of actual payment
  LOOP AT int_outtab.
    ON CHANGE OF int_outtab-ebelp OR int_outtab-ebeln.
    " or int_outtab-belnr.
      SELECT ebelp refwr wrbtr shkzg FROM ekbe INTO int_ekbe
      WHERE ebelp = int_outtab-ebelp AND
            ebeln = int_outtab-ebeln AND
            vgabe = '2' .
        IF int_ekbe-shkzg = 'H'.
          int_ekbe-refwr  = int_ekbe-refwr * ( - 1 ).
          int_ekbe-wrbtr  = int_ekbe-wrbtr * ( - 1 ).
        ENDIF.
        int_outtab-refwr_g = int_outtab-refwr_g +  int_ekbe-refwr.
        int_outtab-tax =  int_outtab-tax + ( int_ekbe-wrbtr -
        int_ekbe-refwr ).
      ENDSELECT.
    ENDON.
    MODIFY int_outtab.
    CLEAR int_outtab-refwr_g.
    CLEAR int_outtab-tax.
  ENDLOOP.

****total
  LOOP AT int_outtab.
    ON CHANGE OF int_outtab-ebelp  OR int_outtab-ebeln.
      int_outtab-actual_total =  int_outtab-actual_total
                                 + int_outtab-ecs
                                 + int_outtab-wrbtr_f
                                 + int_outtab-tax
                                 + int_outtab-beznk
                                 + int_outtab-refwr_g.
      int_total-actual_total =  int_outtab-actual_total.
      int_total-ebelp        = int_outtab-ebelp.
      int_total-ebeln        = int_outtab-ebeln.
      APPEND int_total.
    ENDON.
  ENDLOOP.




***************************************
*end of calculation for actaul payment
****************************************


*************Modification in internal table*****

  LOOP AT int_outtab.
    IF int_outtab-ebelp = ws_ebelp AND
       int_outtab-ebeln = ws_ebeln.
      int_outtab-netwr = 0.
      MODIFY int_outtab.
    ENDIF.
    ws_ebelp = int_outtab-ebelp.
    ws_ebeln = int_outtab-ebeln.
  ENDLOOP.
  LOOP AT int_outtab.
    IF int_outtab-netwr IS INITIAL.
      DELETE int_outtab INDEX sy-tabix.
    ENDIF.
  ENDLOOP.
  LOOP AT int_outtab.
    ON CHANGE OF int_outtab-ebeln.
      LOOP AT int_total WHERE ebeln = int_outtab-ebeln.
        int_outtab-actual_total =  int_outtab-actual_total
                                   + int_total-actual_total.
      ENDLOOP.
    ENDON.
    MODIFY int_outtab.
  ENDLOOP.
  LOOP AT int_outtab.
    SELECT SINGLE * FROM lfm1 INTO CORRESPONDING FIELDS OF int_outtab
    WHERE lifnr = int_outtab-lifnr.
    MODIFY int_outtab.
  ENDLOOP.


********** end of modification*********





ENDFORM.                    "get_data

*&---------------------------------------------------------------------*
*&      Form  field_catalog
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM field_catalog.

***vender no
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'LIFNR'.
  int_cat-reptext_ddic  = 'Vender No'.
  APPEND int_cat TO ws_cat.

*vender name
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'NAME1'.
  int_cat-reptext_ddic  = 'Vender Name'.
  APPEND int_cat TO ws_cat.

** PO No
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'EBELN'.
  int_cat-reptext_ddic  = 'PO No'.
  APPEND int_cat TO ws_cat.

** Mat No
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'MATNR'.
  int_cat-reptext_ddic  = 'Mat No'.
  APPEND int_cat TO ws_cat.

** Matdescription
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'TXZ01'.
  int_cat-reptext_ddic  = 'Mat description'.
  APPEND int_cat TO ws_cat.

**WBS/Cost center
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'KOSTL'.
  int_cat-reptext_ddic  = 'WBS/Cost center'.
  APPEND int_cat TO ws_cat.

**Currency
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'WAERS'.
  int_cat-reptext_ddic  = 'Currency'.
  APPEND int_cat TO ws_cat.


**Basic
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'NETWR'.
  int_cat-reptext_ddic  = 'Basic'.
  APPEND int_cat TO ws_cat.
**Excise
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'KBETR'.
  int_cat-reptext_ddic  = 'Excise'.
  APPEND int_cat TO ws_cat.
**Insurance
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'KWERT_I'.
  int_cat-reptext_ddic  = 'Insurance'.
  APPEND int_cat TO ws_cat.
**Frieght
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'KWERT_F'.
  int_cat-reptext_ddic  = 'Frieght'.
  APPEND int_cat TO ws_cat.
**VAT/ST
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'KWERT_T'.
  int_cat-reptext_ddic  = 'VAT/ST'.
  APPEND int_cat TO ws_cat.
**Other
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'KWERT_O'.
  int_cat-reptext_ddic  = 'Others'.
  APPEND int_cat TO ws_cat.
**Total
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'KWERT_TOTAL'.
  int_cat-reptext_ddic  = 'Total'.
  APPEND int_cat TO ws_cat.
***Excise
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'ECS'.
  int_cat-reptext_ddic  = 'Excise'.
  APPEND int_cat TO ws_cat.
*****Freight
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'WRBTR_F'.
  int_cat-reptext_ddic  = 'Freight'.
  APPEND int_cat TO ws_cat.
*****Tax
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     =  'TAX'.
  int_cat-reptext_ddic  =  'Tax'.
  APPEND int_cat TO ws_cat.
***Unplanned Del Cost
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'BEZNK'.
  int_cat-reptext_ddic  = 'Unplanned Del Cost'.
  APPEND int_cat TO ws_cat.
****Gross
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'REFWR_G'.
  int_cat-reptext_ddic  = 'Gross'.
  APPEND int_cat TO ws_cat.

**Total
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'ACTUAL_TOTAL'.
  int_cat-reptext_ddic  = 'Total'.
  APPEND int_cat TO ws_cat.

**Actual Invoice Total
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'RMWWR'.
  int_cat-reptext_ddic  = 'Actual Invoice Total'.
  APPEND int_cat TO ws_cat.




ENDFORM.                    "field_catalog

*&---------------------------------------------------------------------*
*&      Form  display_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM display_data.

  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
      i_callback_program = 'ZPAVAN1'
      it_fieldcat        = ws_cat[]
    TABLES
      t_outtab           = int_outtab
    EXCEPTIONS
      program_error      = 1
      OTHERS             = 2.
ENDFORM.                    "display_data

Regards

Pavan

1 REPLY 1

Former Member
0 Kudos

Hi

How u have declared the fields in alv??? where u have executed this alv in background???

Check this sample report

 ******************************
* tables
******************************

TABLES: ekko,ekbe,ekpo,ekkn,konh,konv,esll,ekbz,rseg,lfa1,j_1ipart1,
j_1igrxref.
TYPE-POOLS: slis.

******************
*data definituon
*******************

DATA:
      wa_ekko LIKE ekko,
      wa_ekbe LIKE ekbe,
      wa_ekkn LIKE ekkn,
      wa_konp LIKE konp,
      wa_ekpo LIKE ekpo,
      wa_rbkp LIKE rbkp,
      wa_j_1ipart1 LIKE j_1ipart1,
      wa_j_1igrxref LIKE j_1igrxref,
      wa_rseg LIKE rseg OCCURS 0 WITH HEADER LINE.

DATA: ws_vakey LIKE konh-vakey,
      ws_kbetr LIKE konp-kbetr,
      ws_kbetr1 LIKE konp-kbetr,
      ws_kbetr2 LIKE konp-kbetr,
      ws_ecs LIKE j_1igrxref-ecs,
      ws_ebelp LIKE ekbz-ebelp,
      ws_ebeln LIKE ekko-ebeln,
      ws_belnr LIKE ekbe-belnr,
      ws_beznk LIKE  rbkp-beznk,
      ws_wrbtr_f LIKE ekbz-wrbtr,
      ws_rmwwr LIKE rbkp-rmwwr,
      ws_rbkp_benz.

**********************************
*internal tables
*********************************

DATA: BEGIN OF int_outtab OCCURS 0,
      lifnr      LIKE ekko-lifnr,               " vend no
      name1      LIKE lfa1-name1,               " vend name
      werks      LIKE ekpo-werks,               "  plant
      ebeln      LIKE ekko-ebeln,               " po no
      knumv      LIKE ekko-knumv,
      ebelp      LIKE ekbe-ebelp,
      matnr      LIKE ekpo-matnr,               " mat no
      txz01      LIKE ekpo-txz01,               " mat desceiption
      kostl      LIKE ekkn-kostl,               " cost center
      ps_psp_pnr LIKE ekkn-ps_psp_pnr,          " WBS element
      netwr      LIKE ekpo-netwr,
      " basic value           (po)
      kbetr      LIKE konp-kbetr,
      " excise value          (po)
      kwert_i    LIKE konv-kwert,
      " insurance value       (po)
      kwert_f    LIKE konv-kwert,
      " frieght value         (po)
      kwert_t    LIKE konv-kwert,
      " vat/tax value         (po)
      kwert_o    LIKE konv-kwert,
      " others                (po)
      kwert_total LIKE konv-kwert,
      " total                 (po)
      ecs        LIKE j_1igrxref-ecs,
      " excise                (ap)
      wmwst1     LIKE   rbkp-wmwst1,
      " tax amount            (ap)
      wrbtr_f       TYPE ekbz-wrbtr,
      " freight               (ap)
      wrbtr       TYPE ekbz-wrbtr,
      beznk      LIKE    rbkp-beznk,
      " Unplanned cost        (ap)
      refwr_g    TYPE  ekbe-refwr,
      " gross                 (ap)
      rmwwr   LIKE  rbkp-rmwwr,
      "  Actual Invoice Total (ap)
      buzei      LIKE ekbz-buzei,               "item for material doc
      gjahr      LIKE ekbe-gjahr,
      tax        LIKE ekbe-wrbtr,                " tax (ap)
      actual_total LIKE ekbe-wrbtr,
*      belnr      LIKE rseg-belnr,
       belnr     LIKE ekbe-belnr,
      vakey      LIKE konh-vakey,
      cpudt      LIKE ekbe-cpudt,
      budat      LIKE ekbz-budat,
      belnr_ekbz LIKE ekbz-belnr,              "to get excise value
*      aedat     LIKE ekpo-aedat,
      bedat   LIKE ekko-bedat,
      waers     LIKE lfm1-waers,               " currency
      END OF int_outtab.

DATA:   int_konv LIKE konv OCCURS 0 WITH HEADER LINE,
*        int_ekbe LIKE ekbe OCCURS 0 WITH HEADER LINE,
        int_ekbz LIKE ekbz OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF int_konh OCCURS 0,
      knumh LIKE konh-knumh,
      kschl LIKE konh-kschl,
      vakey LIKE konh-vakey,
      END OF int_konh.

DATA: BEGIN OF int_konp OCCURS 0,
      knumh LIKE konp-knumh,
      kschl LIKE konp-kschl,
      kbetr LIKE konp-kbetr,
      END OF int_konp.
DATA: BEGIN OF int_ekkn OCCURS 0,
      ebeln      LIKE ekkn-ebeln,
      ebelp      LIKE ekkn-ebelp,
      kostl      LIKE ekkn-kostl,
      ps_psp_pnr LIKE ekkn-ps_psp_pnr,
      END OF int_ekkn.
DATA: BEGIN OF int_outtab1 OCCURS 0,
      exbed      LIKE j_1igrxref-exbed,
      ecs        LIKE j_1igrxref-ecs,

      END OF int_outtab1.
DATA: BEGIN OF int_ekbe OCCURS 0,
      ebelp LIKE ekbe-ebelp,
      refwr LIKE ekbe-refwr,
      wrbtr LIKE ekbe-wrbtr,
      shkzg LIKE ekbe-shkzg,
      END OF int_ekbe.
DATA: BEGIN OF int_total OCCURS 0,
      ebeln LIKE ekko-ebeln,
      ebelp LIKE ekbe-ebelp,
      actual_total LIKE ekbe-wrbtr,
      END OF int_total.
DATA: BEGIN OF int_excise OCCURS 0,
      ebeln      LIKE ekko-ebeln,
      kbetr      LIKE konp-kbetr,
      END OF int_excise.
DATA: BEGIN OF int_rseg OCCURS 0,
      ebeln LIKE rseg-ebeln,
      ebelp LIKE rseg-ebelp,
      lfbnr LIKE rseg-lfbnr,
      matnr LIKE rseg-matnr,
      lfgja LIKE rseg-lfgja,
      belnr LIKE rseg-belnr,
      ecs LIKE j_1igrxref-ecs,
      beznk      LIKE    rbkp-beznk,
      wrbtr_f    LIKE  ekbz-wrbtr,
      rmwwr LIKE rbkp-rmwwr,
      END OF int_rseg.
DATA: BEGIN OF int_rbkp OCCURS 0,
      belnr LIKE  rbkp-belnr,
      beznk      LIKE    rbkp-beznk,
      rmwwr      LIKE    rbkp-rmwwr,
      tcode  LIKE rbkp-tcode,
      END OF int_rbkp.

**************************
****ALV list definintion
*************************
DATA: ws_cat TYPE slis_t_fieldcat_alv ,
      int_cat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
DATA: g_container TYPE scrfname VALUE 'BCALV_GRID_DEMO_0100_CONT1',
      g_custom_container TYPE REF TO cl_gui_custom_container.

*****************
*selection-screen
******************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 19(23) text-002.
SELECT-OPTIONS: s_lifnr FOR ekko-lifnr obligatory.
*PARAMETERS:p_lifnr LIKE ekko-lifnr  .
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 25(17) text-006.
*PARAMETERS:p_ebeln LIKE ekko-ebeln obligatory.
SELECT-OPTIONS:s_ebeln FOR ekko-ebeln .
SELECTION-SCREEN END OF LINE.

*SELECTION-SCREEN BEGIN OF LINE.
*SELECTION-SCREEN COMMENT 25(23) text-003.
*PARAMETERS:p_ekorg LIKE ekko-ekorg.
*SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
*SELECTION-SCREEN COMMENT 25(20) text-004.
*PARAMETERS:p_werks LIKE ekpo-werks obligatory.
*SELECT-OPTIONS: S_werks FOR ekpo-werks obligatory.
SELECTION-SCREEN END OF LINE.


*SELECTION-SCREEN BEGIN OF LINE.
*SELECTION-SCREEN COMMENT 25(23) text-005.
*SELECT-OPTIONS:s_bedat FOR ekko-bedat.
*SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK b1.

START-OF-SELECTION.
  PERFORM get_data.
  PERFORM field_catalog.
  PERFORM display_data.

END-OF-SELECTION.


*&---------------------------------------------------------------------*
*&      Form  get_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM get_data.
*************************
* start of Vender details
*************************


***vender no, vender name, po no,service/mat no, service/mat description

  SELECT  ekko~lifnr ekko~ebeln ekko~knumv ekko~bedat
          ekpo~werks ekpo~matnr ekpo~txz01 ekpo~werks
          ekpo~netwr
*          ekpo~aedat
          ekbe~ebelp  ekbe~belnr
          lfa1~name1
  INTO    CORRESPONDING   FIELDS OF  TABLE int_outtab

  FROM ( ( ( ekko

           JOIN ekbe ON  ekbe~ebeln = ekko~ebeln AND
                         ekbe~vgabe = '2'       )
           JOIN ekpo ON ekpo~ebeln = ekko~ebeln   AND
                        ekpo~ebelp = ekbe~ebelp )
           JOIN lfa1 ON lfa1~lifnr = ekko~lifnr )
  WHERE
*  ekko~lifnr  =  P_lifnr  AND
*         ekko~ebeln IN  S_ebeln  AND
**         ekpo~werks IN  S_werks AND
         ekbe~vgabe = '2'.

***WBS/Cost center
  SELECT  ebeln ebelp kostl ps_psp_pnr  FROM ekkn INTO int_ekkn
  FOR ALL ENTRIES IN int_outtab
  WHERE ebeln = int_outtab-ebeln AND
        ebelp = int_outtab-ebelp.
    APPEND int_ekkn.
  ENDSELECT.

  LOOP AT int_outtab.
    ON CHANGE OF int_outtab-ebeln OR int_outtab-ebelp.
      LOOP AT int_ekkn WHERE ebeln = int_outtab-ebeln AND
                             ebelp = int_outtab-ebelp.
        IF  int_ekkn-kostl <> ' '.
          MOVE int_ekkn-kostl TO int_outtab-kostl.
        ELSE.
          MOVE int_ekkn-ps_psp_pnr TO int_outtab-kostl.
          " int_outtab-ps_psp_pnr.
        ENDIF.
      ENDLOOP.
      MODIFY int_outtab.
    ENDON.
  ENDLOOP.


***************************
*end of Vender details*****
***************************


*********************************
*******Start of calculation of PO
*********************************


*****Excise calculation of po
  LOOP AT int_outtab.
    CONCATENATE int_outtab-werks int_outtab-lifnr int_outtab-matnr INTO
    ws_vakey.
    MOVE ws_vakey TO int_outtab-vakey.
    MODIFY int_outtab.
  ENDLOOP.
  LOOP AT int_outtab.
*    ON CHANGE OF int_outtab-ebeln OR int_outtab-vakey.
    ON CHANGE OF int_outtab-ebelp.
      SELECT knumh kschl vakey FROM konh INTO int_konh
*        FOR ALL ENTRIES IN int_outtab
        WHERE vakey = int_outtab-vakey AND
              datab <= int_outtab-bedat AND
              datbi > int_outtab-bedat AND
             ( kschl = 'JMOP' OR kschl = 'JEC1' ).
        SELECT knumh kschl kbetr FROM konp INTO int_konp
        WHERE  knumh = int_konh-knumh .
          IF  int_konp-kschl = 'JMOP'.
            ws_kbetr = int_konp-kbetr / 1000 * int_outtab-netwr.
            ws_kbetr1 = ws_kbetr.
          ENDIF.
          IF int_konp-kschl = 'JEC1'.
            ws_kbetr2 = int_konp-kbetr / 1000 * ws_kbetr1.
          ENDIF.
          ws_kbetr = ws_kbetr + ws_kbetr2.
        ENDSELECT.
      ENDSELECT.
    ENDON.
*    ENDON.
    MOVE ws_kbetr TO int_outtab-kbetr.
    MODIFY int_outtab.
    CLEAR: ws_kbetr, ws_kbetr1, ws_kbetr2.
  ENDLOOP.
  LOOP AT int_outtab.
*    ON CHANGE OF int_outtab-ebeln OR int_outtab-vakey.
    int_excise-kbetr =  int_outtab-kbetr.
    int_excise-ebeln =  int_outtab-ebeln.
    APPEND int_excise.
*    ENDON.
  ENDLOOP.
  LOOP AT int_outtab.
    ON CHANGE OF int_outtab-ebeln.
      LOOP AT int_excise WHERE ebeln = int_outtab-ebeln.
        ws_kbetr = ws_kbetr + int_excise-kbetr.
      ENDLOOP.
    ENDON.
    int_outtab-kbetr = ws_kbetr.
    MODIFY int_outtab.
    CLEAR ws_kbetr.
  ENDLOOP.

***** Insurance, Freight,Vat/ST, Other, Total***********
  LOOP AT int_outtab.
    ON CHANGE OF int_outtab-ebelp OR int_outtab-ebeln.
      CLEAR int_konv.
      SELECT * FROM konv INTO CORRESPONDING FIELDS OF int_konv
      WHERE knumv = int_outtab-knumv AND
            kposn = int_outtab-ebelp AND
          ( ( kschl <> 'RA00' )
             AND ( kschl <> 'RA01' ) AND ( kschl <>  'RB00' )
             AND ( kschl <> 'PBXX' ) AND ( kschl <>  'PB00' )
             AND ( kschl <> 'RC00' ) AND ( kschl <>  'RL01' )
             AND ( kschl <> 'ZC00' ) AND ( kschl <>  'ZA00' )
             AND ( kschl <> 'ZA01' ) AND ( kschl <>  'HB01' )
             AND ( kschl <> 'ZBED' ) AND ( kschl <>  'ZAED' )
             AND ( kschl <> 'ZSED' ) AND ( kschl <>  'ZAE1' )
             AND ( kschl <> 'ZSE1' ) AND ( kschl <>  'ZCEX' )
             AND ( kschl <> 'ZPRO' ) AND ( kschl <>  'ZTRD' )
             AND ( kschl <> 'ZPK4' ) AND ( kschl <>  'ZSTX' )
             AND ( kschl <> 'ZASS' ) AND ( kschl <>  'ZJCD' )
             AND ( kschl <>  'HB00') ).

        APPEND int_konv.
      ENDSELECT.
    ENDON.
  ENDLOOP.

  LOOP AT int_outtab.
    ON CHANGE OF int_outtab-ebelp OR int_outtab-knumv.
      LOOP AT int_konv WHERE kposn = int_outtab-ebelp AND
                             knumv = int_outtab-knumv.
*                             lifnr = int_outtab-lifnr.
***** tax
        IF  ( ( int_konv-kschl = 'NAVS' ) OR ( int_konv-kschl = 'NAVM' )
        ).
          int_outtab-kwert_t = int_outtab-kwert_t + int_konv-kwert.
        ELSE.
*****freight
          IF ( ( int_konv-kschl = 'FRA1' ) OR ( int_konv-kschl = 'FRB1'
          )
                                          OR  ( int_konv-kschl = 'FRC1'
                                          ) ).
            int_outtab-kwert_f = int_outtab-kwert_f + int_konv-kwert.
          ELSE.
*****insurance
            IF ( ( int_konv-kschl = 'ZGIN' )  OR ( int_konv-kschl =
            'ZIN2' ) ).
              int_outtab-kwert_i =  int_outtab-kwert_i + int_konv-kwert.
            ELSE.
****others
              IF NOT (    ( int_konv-kschl = 'NAVS' ) OR (
              int_konv-kschl = 'NAVM' )
                       OR ( int_konv-kschl = 'FRA1' ) OR (
                       int_konv-kschl = 'FRB1' )
                       OR ( int_konv-kschl = 'FRC1' ) OR (
                       int_konv-kschl = 'ZGIN' )
                       OR ( int_konv-kschl = 'ZIN2' ) OR (
                       int_konv-kschl = 'RA00' )
                       OR ( int_konv-kschl = 'RA01' ) OR (
                       int_konv-kschl = 'RB00' )
                       OR ( int_konv-kschl = 'PBXX' ) OR (
                       int_konv-kschl = 'PB00' )
                       OR ( int_konv-kschl = 'RC00' ) OR (
                       int_konv-kschl = 'RL01' ) ).
                int_outtab-kwert_o =   int_outtab-kwert_o  +
                int_konv-kwert.
              ENDIF.
            ENDIF.
          ENDIF.
        ENDIF.
      ENDLOOP.
****total
      int_outtab-kwert_total =  int_outtab-kwert_t
                                + int_outtab-kwert_f
                                + int_outtab-kwert_i
                                + int_outtab-kwert_o
                              + int_outtab-netwr.
    ENDON.
    MODIFY int_outtab.
  ENDLOOP.
*********************************
******End of calculation of PO
*********************************




*********************************************
*start of calculation for actual payment
*********************************************

*****Excise
 sort int_outtab by ebelp ebeln.
  LOOP AT int_outtab.
    ON CHANGE OF int_outtab-ebelp OR int_outtab-ebeln.
      SELECT * FROM rseg INTO CORRESPONDING FIELDS OF int_rseg
*          FOR ALL ENTRIES IN int_outtab
             WHERE ebeln = int_outtab-ebeln AND
                   ebelp = int_outtab-ebelp.
        APPEND int_rseg.
      ENDSELECT.
    ENDON.
  ENDLOOP.
  sort int_rseg by ebelp lfbnr matnr.
  LOOP AT int_rseg.
    ON CHANGE OF int_outtab-ebelp OR int_rseg-lfbnr OR int_rseg-matnr OR
    int_rseg-lfgja.
      SELECT * FROM j_1ipart1 INTO wa_j_1ipart1
      WHERE mblnr = int_rseg-lfbnr AND
            mjahr = int_rseg-lfgja AND
            matnr = int_rseg-matnr.

        ON CHANGE OF wa_j_1ipart1-mblnr OR wa_j_1ipart1-zeile.
          SELECT * FROM j_1igrxref INTO wa_j_1igrxref
           WHERE mblnr = wa_j_1ipart1-mblnr AND
                 zeile = wa_j_1ipart1-zeile.
            IF sy-subrc EQ 0.
              ws_ecs = ws_ecs + wa_j_1igrxref-exbed + wa_j_1igrxref-ecs.
            ENDIF.
          ENDSELECT.
        ENDON.
      ENDSELECT.
    ENDON.

    MOVE ws_ecs TO int_rseg-ecs.
    MODIFY int_rseg TRANSPORTING ecs.
    CLEAR: ws_ecs.
  ENDLOOP.

  LOOP AT int_outtab.
    ON CHANGE OF int_outtab-ebeln.
      LOOP AT int_rseg WHERE ebeln = int_outtab-ebeln.
        ws_ecs = ws_ecs + int_rseg-ecs.
      ENDLOOP.
    ENDON.
    MOVE ws_ecs TO int_outtab-ecs.
    MODIFY int_outtab TRANSPORTING ecs.
    CLEAR ws_ecs.
  ENDLOOP.

******unplanned costs and actual_invoice_total
  SORT int_rseg BY belnr.
  LOOP AT int_rseg .
    ON CHANGE OF int_rseg-belnr.
      SELECT  belnr beznk rmwwr tcode FROM rbkp INTO int_rbkp
      WHERE   belnr  = int_rseg-belnr .
        APPEND int_rbkp.
      ENDSELECT.
    ENDON.
  ENDLOOP.

  SORT int_rseg BY belnr.
  SORT int_rbkp BY belnr.

  LOOP AT int_rseg.
    ON CHANGE OF int_rseg-ebeln OR int_rseg-belnr.
      LOOP AT int_rbkp WHERE belnr = int_rseg-belnr.
        IF int_rbkp-tcode = 'MR8M'.
          int_rbkp-rmwwr = int_rbkp-rmwwr * ( - 1 ).
          int_rbkp-beznk = int_rbkp-beznk * ( - 1 ).
        ENDIF.
        ws_beznk =  ws_beznk + int_rbkp-beznk.
        ws_rmwwr =  ws_rmwwr + int_rbkp-rmwwr.
      ENDLOOP.
    ENDON.
    MOVE ws_beznk TO int_rseg-beznk.
    MOVE ws_rmwwr TO int_rseg-rmwwr.
    MODIFY int_rseg.
    CLEAR: ws_rmwwr, ws_beznk.
  ENDLOOP.

  LOOP AT int_outtab.
    ON CHANGE OF int_outtab-ebeln.
      LOOP AT int_rseg WHERE ebeln = int_rseg-ebeln.
        ws_beznk =  ws_beznk + int_rseg-beznk.
        ws_rmwwr =  ws_rmwwr + int_rseg-rmwwr.
      ENDLOOP.
    ENDON.
    MOVE ws_beznk TO int_outtab-beznk.
    MOVE ws_rmwwr TO int_outtab-rmwwr.

    MODIFY int_outtab.
    CLEAR: ws_rmwwr, ws_beznk.
  ENDLOOP.


*freight of actual payment
  sort int_rseg by belnr ebelp.
  LOOP AT int_rseg.
    ON CHANGE OF  int_rseg-belnr or int_rseg-ebelp..
      SELECT * FROM ekbz INTO CORRESPONDING FIELDS OF int_ekbz
      WHERE ebeln = int_rseg-ebeln AND
            belnr = int_rseg-belnr AND
            ebelp = int_rseg-ebelp AND
            vgabe = '2' .
        IF int_ekbz-shkzg = 'H'.
          int_ekbz-wrbtr = int_ekbz-wrbtr  * ( - 1 ).
        ENDIF.
        int_rseg-wrbtr_f = int_rseg-wrbtr_f + int_ekbz-wrbtr.
      ENDSELECT.
    ENDON.
    MODIFY int_rseg.
    CLEAR int_rseg-wrbtr_f.
  ENDLOOP.
  sort int_rseg by ebelp.
  LOOP AT int_outtab.
    ON CHANGE OF int_outtab-ebeln OR int_outtab-ebelp.
      LOOP AT int_rseg WHERE ebeln = int_outtab-ebeln AND
                             ebelp = int_outtab-ebelp.
        ws_wrbtr_f = ws_wrbtr_f + int_rseg-wrbtr_f.
      ENDLOOP.
    ENDON.
    MOVE ws_wrbtr_f TO int_outtab-wrbtr_f.
    MODIFY int_outtab TRANSPORTING wrbtr_f.
    CLEAR ws_wrbtr_f.
  ENDLOOP.

**tax and gross amt of actual payment
  LOOP AT int_outtab.
    ON CHANGE OF int_outtab-ebelp OR int_outtab-ebeln.
    " or int_outtab-belnr.
      SELECT ebelp refwr wrbtr shkzg FROM ekbe INTO int_ekbe
      WHERE ebelp = int_outtab-ebelp AND
            ebeln = int_outtab-ebeln AND
            vgabe = '2' .
        IF int_ekbe-shkzg = 'H'.
          int_ekbe-refwr  = int_ekbe-refwr * ( - 1 ).
          int_ekbe-wrbtr  = int_ekbe-wrbtr * ( - 1 ).
        ENDIF.
        int_outtab-refwr_g = int_outtab-refwr_g +  int_ekbe-refwr.
        int_outtab-tax =  int_outtab-tax + ( int_ekbe-wrbtr -
        int_ekbe-refwr ).
      ENDSELECT.
    ENDON.
    MODIFY int_outtab.
    CLEAR int_outtab-refwr_g.
    CLEAR int_outtab-tax.
  ENDLOOP.

****total
  LOOP AT int_outtab.
    ON CHANGE OF int_outtab-ebelp  OR int_outtab-ebeln.
      int_outtab-actual_total =  int_outtab-actual_total
                                 + int_outtab-ecs
                                 + int_outtab-wrbtr_f
                                 + int_outtab-tax
                                 + int_outtab-beznk
                                 + int_outtab-refwr_g.
      int_total-actual_total =  int_outtab-actual_total.
      int_total-ebelp        = int_outtab-ebelp.
      int_total-ebeln        = int_outtab-ebeln.
      APPEND int_total.
    ENDON.
  ENDLOOP.




***************************************
*end of calculation for actaul payment
****************************************


*************Modification in internal table*****

  LOOP AT int_outtab.
    IF int_outtab-ebelp = ws_ebelp AND
       int_outtab-ebeln = ws_ebeln.
      int_outtab-netwr = 0.
      MODIFY int_outtab.
    ENDIF.
    ws_ebelp = int_outtab-ebelp.
    ws_ebeln = int_outtab-ebeln.
  ENDLOOP.
  LOOP AT int_outtab.
    IF int_outtab-netwr IS INITIAL.
      DELETE int_outtab INDEX sy-tabix.
    ENDIF.
  ENDLOOP.
  LOOP AT int_outtab.
    ON CHANGE OF int_outtab-ebeln.
      LOOP AT int_total WHERE ebeln = int_outtab-ebeln.
        int_outtab-actual_total =  int_outtab-actual_total
                                   + int_total-actual_total.
      ENDLOOP.
    ENDON.
    MODIFY int_outtab.
  ENDLOOP.
  LOOP AT int_outtab.
    SELECT SINGLE * FROM lfm1 INTO CORRESPONDING FIELDS OF int_outtab
    WHERE lifnr = int_outtab-lifnr.
    MODIFY int_outtab.
  ENDLOOP.


********** end of modification*********





ENDFORM.                    "get_data

*&---------------------------------------------------------------------*
*&      Form  field_catalog
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM field_catalog.

***vender no
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'LIFNR'.
  int_cat-reptext_ddic  = 'Vender No'.
  APPEND int_cat TO ws_cat.

*vender name
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'NAME1'.
  int_cat-reptext_ddic  = 'Vender Name'.
  APPEND int_cat TO ws_cat.

** PO No
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'EBELN'.
  int_cat-reptext_ddic  = 'PO No'.
  APPEND int_cat TO ws_cat.

** Mat No
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'MATNR'.
  int_cat-reptext_ddic  = 'Mat No'.
  APPEND int_cat TO ws_cat.

** Matdescription
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'TXZ01'.
  int_cat-reptext_ddic  = 'Mat description'.
  APPEND int_cat TO ws_cat.

**WBS/Cost center
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'KOSTL'.
  int_cat-reptext_ddic  = 'WBS/Cost center'.
  APPEND int_cat TO ws_cat.

**Currency
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'WAERS'.
  int_cat-reptext_ddic  = 'Currency'.
  APPEND int_cat TO ws_cat.


**Basic
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'NETWR'.
  int_cat-reptext_ddic  = 'Basic'.
  APPEND int_cat TO ws_cat.
**Excise
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'KBETR'.
  int_cat-reptext_ddic  = 'Excise'.
  APPEND int_cat TO ws_cat.
**Insurance
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'KWERT_I'.
  int_cat-reptext_ddic  = 'Insurance'.
  APPEND int_cat TO ws_cat.
**Frieght
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'KWERT_F'.
  int_cat-reptext_ddic  = 'Frieght'.
  APPEND int_cat TO ws_cat.
**VAT/ST
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'KWERT_T'.
  int_cat-reptext_ddic  = 'VAT/ST'.
  APPEND int_cat TO ws_cat.
**Other
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'KWERT_O'.
  int_cat-reptext_ddic  = 'Others'.
  APPEND int_cat TO ws_cat.
**Total
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'KWERT_TOTAL'.
  int_cat-reptext_ddic  = 'Total'.
  APPEND int_cat TO ws_cat.
***Excise
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'ECS'.
  int_cat-reptext_ddic  = 'Excise'.
  APPEND int_cat TO ws_cat.
*****Freight
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'WRBTR_F'.
  int_cat-reptext_ddic  = 'Freight'.
  APPEND int_cat TO ws_cat.
*****Tax
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     =  'TAX'.
  int_cat-reptext_ddic  =  'Tax'.
  APPEND int_cat TO ws_cat.
***Unplanned Del Cost
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'BEZNK'.
  int_cat-reptext_ddic  = 'Unplanned Del Cost'.
  APPEND int_cat TO ws_cat.
****Gross
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'REFWR_G'.
  int_cat-reptext_ddic  = 'Gross'.
  APPEND int_cat TO ws_cat.

**Total
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'ACTUAL_TOTAL'.
  int_cat-reptext_ddic  = 'Total'.
  APPEND int_cat TO ws_cat.

**Actual Invoice Total
  int_cat-tabname       = 'INT_OUTTAB'.
  int_cat-fieldname     = 'RMWWR'.
  int_cat-reptext_ddic  = 'Actual Invoice Total'.
  APPEND int_cat TO ws_cat.




ENDFORM.                    "field_catalog

*&---------------------------------------------------------------------*
*&      Form  display_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM display_data.

  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
      i_callback_program = 'ZPAVAN1'
      it_fieldcat        = ws_cat[]
    TABLES
      t_outtab           = int_outtab
    EXCEPTIONS
      program_error      = 1
      OTHERS             = 2.
ENDFORM.                    "display_data

Regards

Pavan