Calculation of Output VAT in Russia (MWST, MWR1) / pricing procedure RVAARU

When trying to find an SAP template for a Russian pricing procedure I got three different results for pricing procedure "RVAARU standard - Russia":
1. IDES calculates MWST and MWS1 mandatory plus some further manual MWR* conditions.
2. SAP standard provides MWST and MWS1 as mandatory and none of those MWR* conditions.
3. SAP standard after implementing the "SAP Russian add-on" shows no MWST at all (!!), but MWS1 mandatory and even more manual MWR* conditions, one of which - MWR1 - is suddenly called "Output tax (VAT)".
Which of the three pricing procedures is correct?
I had assumed the Russian add-on provides all necessary entries for Russia, but can it be true that a legal VAT tax line is NOT calculated automatically but maintained as manual condition? If so, do I still have to maintain condition records in order to determine the correct tax code for the percentage and the FI posting?
And no MWST at all, although in customer and material master the tax classification is still determined by MWST?
Who has experience with Russian calculation procedures in SAP and could give me some hints?
Thanks
Christine

hi
  In pricing procedure MWST is a tax category.this tax categort reflected in both masters. this tax category linked to the tax code. for the tax category , u will maintain the condition records.
for eg. country, region ,cus tax classification ,material tax classification and tax code
so this combination linked to tax code ( for eg if u will maintain  A1 Taxcode means ) A1 for VAT Same % Tax code.the system automatically values take from tax code.

Similar Messages

  • Condition type MWST in Pricing procedure US

    Hi ,
    I have added the MWST condtion type in pricing procedure for US .This condition type is not appearing in pricing procedure.This condition type has an access sequence MWST.Can anybody guide me on this how to correct this
    Thanks in advance
    Regards,
    Nitin Amritkar

    HI,
    The MWST condition typeeither  has 'manual tick ' in the pricing procedure.If that has u have to enter the condition type by F4 selection only.Otherwise u remove that tick and ckeck u can get MWST condition type automatically in all condition types.
    Regards,
    Andra

  • Advance output VAT configuration problem, FTXP

    I have a problem with configuration of outgoing down payment tax code.
    In transaction FTXP I've created tax code with following configuration:
    TAX TYPE ,       ACCT KEY,    %,    LEVEL, COND. TYPE,  ACCOUNT
    Output tax (VAT)      , MWS, 10 ,    140,      MWR1,        1960000
    OutputTax-DebitClear, ZUD,            ,    150,      MWR2,        9119000
    OutputTax-CredtClear, ZUK,            ,    160,      MWR3,        9010000
    Tax type - A,  Output tax
    Check - switched on
    EU Code, Target code, Tgt tax code: Output and Input   are   empty.
    When I try to post invoice (transaction FB01) in SAP R3 automaticaly generates additional line item for account 1960000 but no item generates for accounts 9119000 and 9010000 (i.e. for tax type ZUD & ZUK).
    Tax category for accounts 9119000 and 9010000 is set to + (only output tax allowed).
    Could you give me guidence what have I missed with tax configuation..
    Thanx.

    The problem has been solved.
    We have problem with 901-requirement witch used in tax calculation procedure. Accordingly to russian legislation requirements SAP deliver configured tax calculation procedure - taxru. To avoid error message FF 731 - "Tax code may only contain one rate" tax calculation procedure uses 901 requirement for zud and zuk. 901 requirement should has condition text (VOFM transaction -> menu requirements -> Pricing):
    check: ( sy-dynnr = '0312' and
                  sy-cprog = 'SAPMF05A' and
                  sy-tcode = 'FB01') or
      sy-cprog = 'RFUMSV25'  or
            sy-cprog = 'J_3RFUM25'.
            sy-subrc = 4.
    In my case this text was changed by some one and my calculation procedure did not work.
    Thank you all for assistance !!!!

  • WRONG CALCULATION OF ADDITIONAL VAT IN MIRO

    HI FRIENDS ,
    I HAVE A SERIOUS ISSUE
    Recently Additonal Vat was introduced in gujarat.
    Additional vat is calculated on, total value of the amount.
    A new condition type for additional vat is created.
    We have the following scenario
    Total PO Value Rs. 10000
    Vat: 4% - Rs. 400
    Additonal Vat 1% - Rs. 100
    Total PO Value: Rs. 10500
    In normal circumstances the entries will be as follows:
    When MIGO is done:
    Stock A/c Dr 10000
    GR/IR 10000
    When MIRO is done:
    Vendor A/c 10500
    GR/IR: 10000
    Vat:  400
    Add Vat 100
    This scenario is running correctly in normal circumstances.  However when the excise is included in rate we get the following entries
    PO: Rate: Rs. 10000 (Excise of Rs. 200 includes in rate)
    Vat: Rs. 400
    Additional Vat Rs 100
    Total PO Value: 10500
    When MIGO is done: - here we tick the mrp indicator
    Stock A/c dr. 9800
    GR/IR 9800
    When J1iex is done
    Cenvat input 200
    to cenvat clearing 200
    When MIRO is done
    Vendor: Rs. 10500
    GR/IR: 9800
    Cenvat clearing 200
    Vat: Rs. 400
    Additional Vat: Rs. 98   ( Should be Rs. 100)
    Scenario is working perfectly if there is no excise or excise is extra, problem only comes when excise is including in the rate.
    We had raised an OSS with SAP.  They have given us an user Exit ' J_1I17_USEREXIT_PROCESS_TKOMV'
    how to work with this erxit they told us to redetrmine the additional vat here & its to be called after the fn mod  : j_1i4_tax_conditions .they r the part of the class cl_im_india_tax_conditions
    KINDLY ANY BODY HELP ME WITH DETAILED STEPS
                                             thanks in advance
    REGARDS
    digvijay rai

    hi
      In pricing procedure MWST is a tax category.this tax categort reflected in both masters. this tax category linked to the tax code. for the tax category , u will maintain the condition records.
    for eg. country, region ,cus tax classification ,material tax classification and tax code
    so this combination linked to tax code ( for eg if u will maintain  A1 Taxcode means ) A1 for VAT Same % Tax code.the system automatically values take from tax code.

  • Pricing procedure - vat calculation on freight charge

    HI,
    Pls tell me, how to activate in pricing procedure, VAT should calculate frm the freight charge  and  how to link pricing procedure and tax procedure?? . give me solution..

    Hi Pankaj,
    I have gone through your reply. I want to calculate VAT on Frieght. Following is the Scenario which i am using for the caluclation of VAT on Frieght.
    In Condition Tab I am Getting the following information     
    PBXX     Gross Price               949.6
         Net value incl. disc          949.6
    NAVS     Non-Deductible Tax          0
         Net value incl. tax          949.6
    ZFCD     Freight/Quantity Ded          575
    SKTO     Cash Discount          0
         Actual price               1,524.60
    In Invoice Tab I am geeting the following information
    BASB     Base Amount                               949.6          
         Calculated Call     0.95     INR     949.6          
         Sub total     0.95     INR     949.6          
    JMOP     IN: BED setoff %     8     %     75.97          
    JMX1     IN: A/P BED setoff     100     %     75.97          
         Total excise duty     0.08     INR     75.97          
    JEC1     A/P Ecess for Setoff     2     %       1.52          
    JSEP     IN:A/P SECess Setoff     1     %         0.76          
    ZFRI     FREIGHT-TESTING     0     INR            0          
         Copy Net Price     0.95     INR     949.6          
         Excise Duty     0.08     INR     75.97          
    JEX1     A/P Ecess for Invent     100     %     1.52          
    JHX1     IN: A/P SECess SOTot     100     %     0.76          
         Copy AED     0     INR     0          
         Price + Excise + AED     1.03     INR     1,027.85     
    JVCS     A/P CST Non deductib     0     %     0          
    JVRD     A/P VAT RM Deductibl     5     %     51.39     
    JVRN     A/P VAT RM Non-Deduc     0     %     0          
    JVSD     A/P Surcharge on VAT     10     %     5.14     
                         Net Price + ED +ST     1.08     INR     1,084.38
    But i Would Require the Following Calucaltions i.e (JVRD = JVRD + (ZFCD*0.05)) That i have mention in my below screen shot.                    
    BASB     Base Amount                               949.6
         Calculated Call     0.95     INR     949.6
         Sub total     0.95     INR     949.6
    JMOP     IN: BED setoff %     8     %     75.97
    JMX1     IN: A/P BED setoff     100     %     75.97
         Total excise duty     0.08     INR     75.97
    JEC1     A/P Ecess for Setoff     2     %     1.52
    JSEP     IN:A/P SECess Setoff     1     %     0.76
    ZFRI     FREIGHT-TESTING     0     INR     0
         Copy Net Price     0.95     INR     949.6
         Excise Duty     0.08     INR     75.97
    JEX1     A/P Ecess for Invent     100     %     1.52
    JHX1     IN: A/P SECess SOTot     100     %     0.76
         Copy AED     0     INR     0
         Price + Excise + AED     1.03     INR     1,027.85
    JVCS     A/P CST Non deductib     0     %     0
    JVRD     A/P VAT RM Deductibl     5     %     80.14
    JVRN     A/P VAT RM Non-Deduc     0     %     
    JVSD     A/P Surcharge on VAT     10     %     8.015
         Net Price + ED +ST     1.08     INR     1,116.01
    PBXX     Gross Price               949.6          
         Net value incl. disc               949.6          
    NAVS     Non-Deductible Tax               0          
         Net value incl. tax               949.6          
    ZFCD     Freight/Quantity Ded               575          
    SKTO     Cash Discount               0          
         Actual price               1,524.60          
    Dinesh

  • Input and Output VAT

    Dear Friends,
    One advise needed.
    I have created 2 VAT G/L Accounts via FS00 i.e.
    Input VAT ( which is updated in Purchase Process at the time of MIRO )
    (ii) Output VAT( which is updated in Sales Process at the time of VF01 )
    Both are balanace Sheet accounts.
    Now, I have one doubt,
    I have created Input VAT G/L with category "ASSETS"
    and Output VAT G/L with category "LIABILITIES"
    Is this OK from Concept ? Will it cause any error at the time of period closing ?
    Please reply.
    Reward Points assured.
    Thanks.
    Regards,
    Gaurav Raghav.
    Is this OK

    Hello Mr.Gourav
    Its absolutely fine.it will work.But it should have been only balancesheet grou , insted of both assets and liability separetly.
    u can directly go for both as liablity also.
    where the Debits and the Credits will automaticaaly setoff.
    and the balance will be relfected in the balance sheet
    but if ur going to do them separeelt as assts and saparetely as liablity then adjustment need to be done at the time of preparing the financial staement version
    Hope it will cleare u
    Regards
    Anup

  • VAT calculation through Pricing Procedure of MM

    Hello gurus,
    I have a doubt can we calculate and post the vat thru purchase condition type in pricing procedure, for excise and cess we are using Tax code with tax procedure TAXINJ, we are trying hard for it., we have even created new transactiion key and assign GL account to it, but still it is not posting at the time of MIGO.
    your urgent help required,
    Anand

    Hi Anand
    I too develop a new condition type for Vat in mm pricing procedure.
    Our business process is as follows
    We r transferring material to one depot to another to UK. we are doing STO through SD route. i created a vat condition type which is non inventorised and subsequently  refund will be received.
    Problem is that Accounting entries are not generating after doing PGI. Plese give your inputs on this.
    I created a new gl accouts and assigned to posting keys.
    Thanks
    sitaram

  • Pricing procedure for the calculation of VAT

    Dear all,
    We require one new tax structure.
    Assessable value + service tax & VAT for the sum of Assessable value + service tax.
    Kindly give us the pricing procedure for the above requirement.
    Regards
    Mahalingam sarathi

    >
    Mahalingam Sarathi wrote:
    > Dear all,
    >
    > We require one new tax structure.
    >
    > Assessable value + service tax & VAT for the sum of Assessable value + service tax.
    >
    > Kindly give us the pricing procedure for the above requirement.
    >
    > Regards
    >
    > Mahalingam sarathi
    Let me try to fit in this requirement for you (with a small demonstration, you will also have to use the appropriate accounting keys)
    400           assessable value  350 390 
    410 JSRT  Service tax            400
    420 JEC3  ECEss on Srv tax   410
    430 JSE3  Secess on SrvTax 410
    440           ***. val + Srv Tax 400  430
    450 JIVP   VAT                        440

  • VAT in Purchase Pricing Procedure

    Hi All,
    How can i use MWST condition type in my pricing.
    Like scenario is as below.
    CIF- 100.00
    Duty- 50.00
    Vat (110*x CIF+ Duty) * 15% - 24.75
    here i need to maintain this VAT, but i cannot with tax code through TAX Procedure because freight, insurance, duty are defined in Pricing procedure.
    if i maintain through TAX Procedure the above calculation cannot be acheived.
    How can i post VAT amount through Purchasing Pricing Procedure.
    Advise in this regard is really helpful & highly appreciated.
    Regards
    Ashok

    Hi Anand
    I too develop a new condition type for Vat in mm pricing procedure.
    Our business process is as follows
    We r transferring material to one depot to another to UK. we are doing STO through SD route. i created a vat condition type which is non inventorised and subsequently  refund will be received.
    Problem is that Accounting entries are not generating after doing PGI. Plese give your inputs on this.
    I created a new gl accouts and assigned to posting keys.
    Thanks
    sitaram

  • Function module to pricing procedure calculation

    hi,
    I want to know whether any function modules available to get as I see in  Invoice ->
    select item level conditions.
    Where i can see the basic price ,discount, etc as defined in the corresponding pricing procedure.
    i have tried with
    RV_INVOICE_PRICE_PBO
    PRICING_SUBSCREEN_SET_DATA
    here i get only the records which have condition type,
    similarly for P.O. we have
    ME_SWP_SIC_GET_PRICING_INFO
    regards,
    Prabhu
    Points assured.

    REPORT  zmm_pvr.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                     TYPE-POOLS                                          *
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    TYPE-POOLS slis.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                       TABLES                                            *
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    TABLES: mara,                         " General Material Data
            marc,                         " Plant Data for Material
            ekko,                         " Purchasing Document Header
            ekpo,                         " Purchasing Document Item
            lfa1,                         " Vendor Master (General Section)
            konv,                         " Conditions (Transaction Data)
            mbew,                         " Material Valuation
            makt.                         " Material Descriptions
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                    DATA DECLARATION                                     *
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    DATA: BEGIN OF i_mat OCCURS 1,
            matnr LIKE mara-matnr,
            mtart LIKE mara-mtart,
            werks LIKE marc-werks,
            abcin LIKE marc-abcin,
          END OF i_mat.
    DATA: BEGIN OF itab OCCURS 1,
            ebeln LIKE ekko-ebeln,
            bedat LIKE ekko-bedat,
            lifnr LIKE ekko-lifnr,
            waers LIKE ekko-waers,
            bukrs LIKE ekko-bukrs,
            ekorg LIKE ekko-ekorg,
            name1 LIKE lfa1-name1,
            werks LIKE ekpo-werks,
            menge LIKE ekpo-menge,
            meins LIKE ekpo-meins,
            netpr LIKE ekpo-netpr,
            netwr LIKE ekpo-netwr,
            menge1(16),
            netpr1(16),
            menge2  TYPE string,
            netpr2 TYPE string,
            lrate TYPE p DECIMALS 2,
            stax LIKE ekpo-netwr,
            exbed LIKE ekpo-netwr,
            dcost LIKE konv-kwert,
            nomvl LIKE ekpo-netwr,
            nomrt LIKE ekpo-netwr,
            zplp1 LIKE mbew-zplp1,
            verpr LIKE mbew-verpr,
            bgval LIKE ekpo-netwr,
            varnc LIKE ekpo-netwr,
            maktx LIKE makt-maktx,
            knumv LIKE ekko-knumv,
            ebelp LIKE ekpo-ebelp,
            matnr LIKE ekpo-matnr,
            matkl LIKE ekpo-matkl,
            mtart LIKE ekpo-mtart,
            bprme LIKE ekpo-bprme,
            txz01 LIKE ekpo-txz01,
            mwskz LIKE ekpo-mwskz,
            prdat LIKE ekpo-prdat,
          END OF itab.
    DATA: wtab LIKE itab.
    DATA: v_steuc TYPE marc-steuc.
    DATA: v_brsch TYPE lfa1-brsch.
    DATA: wa_komk TYPE komk.
    DATA: wa_komp TYPE komp.
    DATA: it_komv TYPE TABLE OF komv.
    DATA: wa_komv TYPE komv.
    DATA : wa_fieldcat TYPE  slis_fieldcat_alv,
           gt_fieldcat TYPE  slis_t_fieldcat_alv,
           wa_layout   TYPE  slis_layout_alv,
           lt_sort     TYPE  slis_t_sortinfo_alv,
           i LIKE sy-tabix.
    DATA: gt_events     TYPE slis_t_event.
    DATA: gd_prntparams TYPE slis_print_alv.
    DATA: it_color TYPE   slis_t_specialcol_alv.
    DATA: wa_color TYPE   slis_specialcol_alv.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          Begin Of Selection Screen                      *
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    SELECTION-SCREEN BEGIN OF BLOCK pas WITH FRAME TITLE text-001.
    SELECT-OPTIONS s_matnr FOR  ekpo-matnr.
    SELECT-OPTIONS s_werks FOR  ekpo-werks.
    SELECT-OPTIONS s_bedat FOR  ekko-bedat.
    PARAMETERS     p_abcin LIKE marc-abcin OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK pas.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                           INITIALIZATION                                *
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    INITIALIZATION.
      IF sy-datum+4(2) GE 4.
        s_bedat-low+6(2) = 01.
        s_bedat-low+4(2) = 04.
        s_bedat-low(4) = sy-datum(4).
      ENDIF.
      IF sy-datum+4(2) LT 4.
        s_bedat-low+6(2) = 01.
        s_bedat-low+4(2) = 04.
        s_bedat-low(4) = sy-datum(4) - 1.
      ENDIF.
      s_bedat-high   = sy-datum.
      APPEND s_bedat.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                        AT Selection Screen Output                       *
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    AT SELECTION-SCREEN.
    Check for Material Type
      SELECT amatnr amtart bwerks babcin INTO CORRESPONDING FIELDS OF TABLE i_mat
      FROM mara AS a INNER JOIN marc AS b
           ON amatnr = bmatnr
      WHERE a~matnr IN s_matnr
        AND ( amtart = 'IRAM' OR amtart = 'IPAM' OR amtart = 'PRAM' OR amtart = 'PPAM' )
        AND b~werks IN s_werks
        AND b~abcin = p_abcin.
      SORT i_mat BY matnr werks.
      CHECK NOT i_mat[] IS INITIAL.
      READ TABLE i_mat INDEX 1.
      IF sy-subrc <> 0.
        MESSAGE e006(zmm).
        LEAVE LIST-PROCESSING.
      ENDIF.
    Check for Date
      IF ( s_bedat-low IS INITIAL AND s_bedat-high IS INITIAL ).
        s_bedat-sign   = 'I'.
        s_bedat-option = 'BT'.
        IF sy-datum+4(2) GE 4.
          s_bedat-low+6(2) = 01.
          s_bedat-low+4(2) = 04.
          s_bedat-low(4) = sy-datum(4).
        ENDIF.
        IF sy-datum+4(2) LT 4.
          s_bedat-low+6(2) = 01.
          s_bedat-low+4(2) = 04.
          s_bedat-low(4) = sy-datum(4) - 1.
        ENDIF.
        s_bedat-high   = sy-datum.
      ELSEIF ( s_bedat-low IS NOT INITIAL AND s_bedat-high IS INITIAL ).
        s_bedat-low6(2) = s_bedat-low6(2).
        s_bedat-low4(2) = s_bedat-low4(2).
        s_bedat-low(4)   = s_bedat-low(4).
      ELSEIF ( s_bedat-low IS NOT INITIAL AND s_bedat-high IS NOT INITIAL ).
        s_bedat-sign   = 'I'.
        s_bedat-option = 'BT'.
        s_bedat-low6(2) = s_bedat-low6(2).
        s_bedat-low4(2) = s_bedat-low4(2).
        s_bedat-low(4)   = s_bedat-low(4).
        s_bedat-high6(2) = s_bedat-high6(2).
        s_bedat-high4(2) = s_bedat-high4(2).
        s_bedat-high(4)   = s_bedat-high(4).
      ENDIF.
      APPEND s_bedat.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                            START OF SELECTION                           *
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    START-OF-SELECTION.
    *----- Get all PO for given selection criteria.
    LOOP AT i_mat.
      SELECT
        aebeln abedat alifnr aknumv awaers abukrs a~ekorg
        bebelp bmatnr bmatkl bnetpr bbprme btxz01 bwerks bmenge bmeins bnetwr bmtart bmwskz b~prdat
      FROM ( ekko AS a INNER JOIN ekpo AS b ON  amandt = bmandt AND aebeln = bebeln )
      INTO CORRESPONDING FIELDS OF TABLE itab
      FOR ALL ENTRIES IN i_mat
      WHERE a~bedat IN s_bedat
       AND  a~loekz = ''
       AND  b~matnr = i_mat-matnr
       AND  b~werks = i_mat-werks
       AND  b~loekz = ''
       AND  b~pstyp = '0'
       AND  b~bstyp = 'F'
       AND  b~knttp = ''.
    ENDLOOP.            " END OF i_mat
      CHECK NOT itab[] IS INITIAL.
      SORT itab BY ebeln ebelp.
    *----- Calculating The DCOST -- Delivery Cost
      DATA: BEGIN OF i_konv OCCURS 0,
             knumv LIKE konv-knumv,
             kposn LIKE konv-kposn,
             stunr LIKE konv-stunr,
             zaehk LIKE konv-zaehk,
             kschl LIKE konv-kschl,
             kbetr LIKE konv-kbetr,
             kwert LIKE konv-kwert,
           END OF i_konv.
      SELECT knumv kposn stunr zaehk kschl kbetr kwert
      FROM konv
      INTO CORRESPONDING FIELDS OF TABLE i_konv
      FOR ALL ENTRIES IN itab
      WHERE knumv = itab-knumv
       AND kposn = itab-ebelp
        AND ( kschl   = 'ZFC3' OR kschl   = 'ZQIQ'
           OR kschl   = 'ZQIV' OR kschl   = 'ZFA3'
           OR kschl   = 'ZFB3' OR kschl   = 'ZPF2'
           OR kschl   = 'ZPQ2' OR kschl   = 'ZPV2'
           OR kschl   = 'ZOCP' OR kschl   = 'ZOCQ'
           OR kschl   = 'ZOCV' OR kschl   = 'ZMT1'
           OR kschl   = 'ZIN2' OR kschl   = 'ZIQ2'
           OR kschl   = 'ZIV2' OR kschl   = 'ZBK1'
           OR kschl   = 'ZBKQ' OR kschl   = 'ZBKV' ).
      SORT i_konv BY knumv kposn stunr zaehk kschl .
      DELETE ADJACENT DUPLICATES FROM i_konv.
      DELETE i_konv WHERE kbetr = 0.
      DATA: BEGIN OF i_knumv OCCURS 0,
              knumv LIKE konv-knumv,
              kwert LIKE konv-kwert,
            END OF i_knumv.
      LOOP AT i_konv.
        MOVE i_konv-knumv TO i_knumv-knumv.
        MOVE i_konv-kwert TO i_knumv-kwert.
        COLLECT i_knumv.
      ENDLOOP.
      CLEAR i_konv.
      CLEAR i_knumv.
      LOOP AT itab INTO wtab.
        READ TABLE i_knumv WITH KEY knumv = wtab-knumv.
        IF sy-subrc = 0.
          wtab-dcost = i_knumv-kwert.
          MODIFY itab FROM wtab.
        ENDIF.
      ENDLOOP.
      CLEAR i_knumv.
      CLEAR itab.
    *----- Get the vendor name.
      LOOP AT itab.
        SELECT SINGLE name1 FROM lfa1 INTO itab-name1
                                        WHERE lifnr = itab-lifnr.
        MODIFY itab INDEX sy-tabix TRANSPORTING name1.
      ENDLOOP.
    *----- Calculate Excise Duty, Educat. cess, Sec edu. cess, sales tax
      CLEAR: wa_komk, wa_komp.
    Selecting The Value Of STEUC (Controlling Code)
      CLEAR itab.
      LOOP AT itab.
        SELECT SINGLE steuc
          FROM marc
          INTO v_steuc
         WHERE matnr = itab-matnr
           AND werks = itab-werks.
    Selecting The Value Of BRSCH (Industry key)
        SELECT SINGLE brsch
          FROM lfa1
          INTO v_brsch
         WHERE lifnr = itab-lifnr.
    Filling KOMK (Header Structure)
        wa_komk-kappl     = 'TX'.
        wa_komk-kalsm     = 'TAXINN'.
        wa_komk-lifnr     = itab-lifnr.
        wa_komk-waerk     = itab-waers.
        wa_komk-aland     = 'IN'.
        wa_komk-hwaer     = 'INR'.
        wa_komk-bukrs     = itab-bukrs.
        wa_komk-brsch     = v_brsch.
        wa_komk-prsdt     = itab-bedat.
        wa_komk-ekorg     = itab-ekorg.
        wa_komk-mwskz     = itab-mwskz.
    Filling KOMP (Details Structure)
        wa_komp-kposn     = itab-ebelp.
        wa_komp-matnr     = itab-matnr.
        wa_komp-werks     = itab-werks.
        wa_komp-matkl     = itab-matkl.
        wa_komp-meins     = itab-meins.
        wa_komp-vrkme     = itab-bprme.
        wa_komp-netwr     = itab-netwr.
        wa_komp-wrbtr     = itab-netwr.
        wa_komp-mwskz     = itab-mwskz.
        wa_komp-netpr     = itab-netpr.
        wa_komp-mtart     = itab-mtart.
        wa_komp-kursk_dat = itab-prdat.
        wa_komp-steuc     = v_steuc.
        wa_komp-mgame     = itab-menge.
        wa_komp-mglme     = itab-menge.
        FREE it_komv.
    Calling The Pricing Function To Get GR EXCISE, GR ECES, GR VAT/CST
        CALL FUNCTION 'PRICING'
          EXPORTING
            calculation_type = 'B'
            comm_head_i      = wa_komk
            comm_item_i      = wa_komp
          TABLES
            tkomv            = it_komv.
    Calculating The Excise --excise duty
        DATA: l_kbetr        TYPE komv-kbetr.
        DATA: l_gr_excise    TYPE ekpo-brtwr.
        DATA: l_basic_gr_val TYPE ekpo-netpr.
        l_basic_gr_val = itab-netwr.
        CLEAR: l_kbetr, l_gr_excise.
        LOOP AT it_komv INTO wa_komv WHERE kschl = 'JMOP'
                                        OR kschl = 'JAOP'
                                        OR kschl = 'JMIP'
                                        OR kschl = 'JAOQ'.
          l_kbetr     = ( wa_komv-kbetr / 10 ).
          l_gr_excise = ( l_kbetr * l_basic_gr_val ) / 100.
        ENDLOOP.
        LOOP AT it_komv INTO wa_komv WHERE kschl = 'JAIP'
                                        OR kschl = 'JAIQ'
                                        OR kschl = 'JMIQ'
                                        OR kschl = 'JMOQ'.
          l_gr_excise = ( wa_komv-kbetr * l_basic_gr_val ).
        ENDLOOP.
    Calculating The ECES -- Educational Cess
        DATA l_gr_eces      TYPE ekpo-netpr.
        CLEAR: l_kbetr, l_gr_eces.
        LOOP AT it_komv INTO wa_komv WHERE kschl = 'ZECE'
                                        OR kschl = 'ZECN'.
          l_kbetr     = ( wa_komv-kbetr / 10 ).
          l_gr_eces   = ( l_kbetr * l_gr_excise ) / 100.
        ENDLOOP.
    Calculating The SECES -- Sec. Educational Cess
        DATA l_gr_secs      TYPE ekpo-netpr.
        CLEAR: l_kbetr, l_gr_secs.
        LOOP AT it_komv INTO wa_komv WHERE kschl = 'JSEP'
                                        OR kschl = 'JSEI'.
          l_kbetr     = ( wa_komv-kbetr / 10 ).
          l_gr_secs   = ( l_kbetr * l_gr_excise ) / 100.
        ENDLOOP.
    Calculating The VAT/CST --Sales Tax
        DATA l_gr_vatcst    TYPE ekpo-netpr.
        CLEAR: l_kbetr, l_gr_vatcst.
        LOOP AT it_komv INTO wa_komv WHERE kschl = 'JVRN'
                                        OR kschl = 'JVRD'
                                        OR kschl = 'JVCS'
                                        OR kschl = 'JVCD'
                                        OR kschl = 'JVCN'
                                        OR kschl = 'JIPS'
                                        OR kschl = 'JIPC'
                                        OR kschl = 'JIPL'.
          l_kbetr     = ( wa_komv-kbetr / 10 ).
          l_gr_vatcst = ( ( l_basic_gr_val + l_gr_excise + l_gr_eces + l_gr_secs ) * l_kbetr ) / 100.
        ENDLOOP.
    Calculating The NOMVL & NOMVR -- NOM Value (Setoff / Inventory ) & NOM Rate
        DATA: l_netpr TYPE ekpo-netpr,
              l_menge TYPE ekpo-menge,
              l_dcost TYPE ekpo-netwr,
              l_nomvl TYPE ekpo-netwr,
              l_nomrt TYPE ekpo-netwr.
        l_netpr = itab-netpr.
        l_menge = itab-menge.
        l_dcost = itab-dcost.
        CLEAR: l_nomvl, l_nomrt.
        LOOP AT it_komv INTO wa_komv WHERE kschl = 'JMOP'                        "------setoff
                                        OR kschl = 'ZECE'
                                        OR kschl = 'JSEP'.
          l_nomvl = ( l_netpr * l_menge ) + l_gr_vatcst + l_dcost - ( l_gr_excise + l_gr_eces + l_gr_secs ).
          l_nomrt =  l_nomvl / l_menge.
        ENDLOOP.
        LOOP AT it_komv INTO wa_komv WHERE kschl = 'JMIP'                        "-------inventory
                                        OR kschl = 'ZECN'
                                        OR kschl = 'JSEI'.
          l_nomvl = ( l_netpr * l_menge ) + l_gr_vatcst + l_dcost.
          l_nomrt =  l_nomvl / l_menge.
        ENDLOOP.
        itab-exbed = l_gr_excise + l_gr_eces + l_gr_secs.
        itab-stax  = l_gr_vatcst.
        itab-nomvl = l_nomvl.
        itab-nomrt = l_nomrt.
        MODIFY itab .
        CLEAR itab.
      ENDLOOP.           " end of itab
      LOOP AT itab WHERE exbed = 0.
        itab-nomvl = ( itab-netpr * itab-menge ) + itab-stax + itab-dcost.
        itab-nomrt = itab-nomvl / itab-menge.
        MODIFY itab INDEX sy-tabix TRANSPORTING nomvl nomrt.
      ENDLOOP.
    *----- Calculating The Budget Rate, Moving Average Price, Landed Rate & Material Description
      DATA: verp(15).
      DATA: matdes(40).
      LOOP AT itab.
        SELECT SINGLE zplp1 FROM mbew INTO itab-zplp1
                                        WHERE matnr = itab-matnr AND bwkey = itab-werks.
        SELECT SINGLE verpr FROM mbew INTO itab-verpr
                                        WHERE matnr = itab-matnr AND bwkey = itab-werks.
        itab-lrate = itab-netwr / itab-menge.
        SELECT SINGLE maktx FROM makt INTO itab-maktx
                                        WHERE matnr = itab-matnr AND spras = 'EN'.
        MODIFY itab INDEX sy-tabix TRANSPORTING zplp1 verpr lrate maktx.
        verp = itab-verpr.
        matdes = itab-maktx.
      ENDLOOP.
    *----- Calculating The Budget Value & Variance
      LOOP AT itab.
        itab-bgval = itab-zplp1 * itab-menge.
        itab-varnc = itab-bgval - itab-nomvl.
        MODIFY itab INDEX sy-tabix TRANSPORTING bgval varnc.
      ENDLOOP.
    *------ Calculating Total of Quantity
      DATA: BEGIN OF i_quan OCCURS 1,
               quant LIKE ekpo-menge,
               unit LIKE ekpo-meins,
               nomvl LIKE ekpo-netwr,
               curr LIKE ekko-waers,
               varnc LIKE ekpo-netwr,
               bgval LIKE ekpo-netwr,
             END OF i_quan.
      LOOP AT itab.
        MOVE itab-menge TO i_quan-quant.
        MOVE itab-meins TO i_quan-unit.
        MOVE itab-nomvl TO i_quan-nomvl.
        MOVE itab-waers TO i_quan-curr.
        MOVE itab-varnc TO i_quan-varnc.
        MOVE itab-bgval TO i_quan-bgval.
        COLLECT i_quan.
      ENDLOOP.
      CLEAR itab.
      CLEAR i_quan.
      DATA: qty(15).
      DATA: unt(3).
      DATA: wtd TYPE p DECIMALS 2.
      DATA: wtd2(15).
      DATA: cur(3).
      DATA: var(15).
      DATA: nomvl(15).
      DATA: bgval(15).
      DATA: bgv TYPE p DECIMALS 2.
      DATA: bgv2(15).
      LOOP AT i_quan.
        qty = i_quan-quant.
        unt = i_quan-unit.
        cur = i_quan-curr.
        var = i_quan-varnc.
        bgval = i_quan-bgval.
        nomvl = i_quan-nomvl.
        wtd = nomvl / qty.
        bgv = bgval / qty.
      ENDLOOP.
      CLEAR i_quan.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          DATA DISPLAY                                   *
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      wa_fieldcat-fieldname  = 'EBELN'.
      wa_fieldcat-seltext_l  = 'Purchase Order'.
      wa_fieldcat-tabname    = 'ITAB'.
      wa_fieldcat-row_pos    = 1.
      wa_fieldcat-col_pos    = 1.
      APPEND wa_fieldcat TO gt_fieldcat.
      wa_fieldcat-fieldname  = 'BEDAT'.
      wa_fieldcat-seltext_l  = 'PO Date'.
      wa_fieldcat-tabname    = 'ITAB'.
      wa_fieldcat-row_pos    = 1.
      wa_fieldcat-col_pos    = 2.
      APPEND wa_fieldcat TO gt_fieldcat.
      wa_fieldcat-fieldname  = 'NAME1'.
      wa_fieldcat-seltext_l  = 'Vendor Name'.
      wa_fieldcat-tabname    = 'ITAB'.
      wa_fieldcat-row_pos    = 1.
      wa_fieldcat-col_pos    = 3.
      APPEND wa_fieldcat TO gt_fieldcat.
      wa_fieldcat-fieldname  = 'WERKS'.
      wa_fieldcat-seltext_l  = 'Plant'.
      wa_fieldcat-tabname    = 'ITAB'.
      wa_fieldcat-row_pos    = 1.
      wa_fieldcat-col_pos    = 4.
      APPEND wa_fieldcat TO gt_fieldcat.
    wa_fieldcat-fieldname  = 'MENGE2'.
      wa_fieldcat-fieldname  = 'MENGE'.
      wa_fieldcat-seltext_l  = 'Quantity'.
      wa_fieldcat-tabname    = 'ITAB'.
      wa_fieldcat-row_pos    = 1.
      wa_fieldcat-col_pos    = 5.
      wa_fieldcat-do_sum     = 'X'.
      APPEND wa_fieldcat TO gt_fieldcat.
    wa_fieldcat-fieldname  = 'NETPR2'.
      wa_fieldcat-fieldname  = 'NETPR'.
      wa_fieldcat-seltext_l  = 'Basic Rate'.
      wa_fieldcat-tabname    = 'ITAB'.
      wa_fieldcat-row_pos    = 1.
      wa_fieldcat-col_pos    = 6.
      wa_fieldcat-do_sum     = ' '.
      APPEND wa_fieldcat TO gt_fieldcat.
    wa_fieldcat-fieldname  = 'EXBED'.
    wa_fieldcat-seltext_l  = 'Excise'.
    wa_fieldcat-tabname    = 'ITAB'.
    wa_fieldcat-row_pos    = 1.
    wa_fieldcat-col_pos    = 7.
    APPEND wa_fieldcat TO gt_fieldcat.
      wa_fieldcat-fieldname  = 'STAX'.
      wa_fieldcat-seltext_l  = 'Sale Tax'.
      wa_fieldcat-tabname    = 'ITAB'.
      wa_fieldcat-row_pos    = 1.
      wa_fieldcat-col_pos    = 7.
      APPEND wa_fieldcat TO gt_fieldcat.
      wa_fieldcat-fieldname  = 'DCOST'.
      wa_fieldcat-seltext_l  = 'Delivery Cost'.
      wa_fieldcat-tabname    = 'ITAB'.
      wa_fieldcat-row_pos    = 1.
      wa_fieldcat-col_pos    = 8.
      APPEND wa_fieldcat TO gt_fieldcat.
      wa_fieldcat-fieldname  = 'NETWR'.
      wa_fieldcat-seltext_l  = 'Landed Value'.
      wa_fieldcat-tabname    = 'ITAB'.
      wa_fieldcat-row_pos    = 1.
      wa_fieldcat-col_pos    = 9.
      wa_fieldcat-do_sum     = 'X'.
      APPEND wa_fieldcat TO gt_fieldcat.
      wa_fieldcat-fieldname  = 'LRATE'.
      wa_fieldcat-seltext_l  = 'Landed Rate'.
      wa_fieldcat-tabname    = 'ITAB'.
      wa_fieldcat-row_pos    = 1.
      wa_fieldcat-col_pos    = 10.
      wa_fieldcat-do_sum     = ' '.
      APPEND wa_fieldcat TO gt_fieldcat.
    wa_fieldcat-fieldname  = 'NOMVL'.
    wa_fieldcat-seltext_l  = 'NOM Value'.
    wa_fieldcat-tabname    = 'ITAB'.
    wa_fieldcat-row_pos    = 1.
    wa_fieldcat-col_pos    = 12.
    wa_fieldcat-do_sum     = 'X'.
    APPEND wa_fieldcat TO gt_fieldcat.
    wa_fieldcat-fieldname  = 'NOMRT'.
    wa_fieldcat-seltext_l  = 'NOM Rate'.
    wa_fieldcat-tabname    = 'ITAB'.
    wa_fieldcat-row_pos    = 1.
    wa_fieldcat-col_pos    = 13.
    wa_fieldcat-do_sum     = ' '.
    APPEND wa_fieldcat TO gt_fieldcat.
      wa_fieldcat-fieldname  = 'BGVAL'.
      wa_fieldcat-seltext_l  = 'Budget Value'.
      wa_fieldcat-tabname    = 'ITAB'.
      wa_fieldcat-row_pos    = 1.
      wa_fieldcat-col_pos    = 11.
      wa_fieldcat-do_sum     = 'X'.
      APPEND wa_fieldcat TO gt_fieldcat.
      wa_fieldcat-fieldname  = 'ZPLP1'.
      wa_fieldcat-seltext_l  = 'Budget Rate'.
      wa_fieldcat-tabname    = 'ITAB'.
      wa_fieldcat-row_pos    = 1.
      wa_fieldcat-col_pos    = 12.
      wa_fieldcat-do_sum     = ' '.
      APPEND wa_fieldcat TO gt_fieldcat.
      wa_fieldcat-fieldname  = 'VARNC'.
      wa_fieldcat-seltext_l  = 'Variance'.
      wa_fieldcat-tabname    = 'ITAB'.
      wa_fieldcat-row_pos    = 1.
      wa_fieldcat-col_pos    = 13.
      wa_fieldcat-do_sum     = 'X'.
      APPEND wa_fieldcat TO gt_fieldcat.
      wa_layout-colwidth_optimize = 'X'.
      wa_layout-zebra = ' '.
      DATA: ls_event TYPE slis_alv_event.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type = 0
        IMPORTING
          et_events   = gt_events[].
      READ TABLE gt_events WITH KEY name =  slis_ev_end_of_page
                               INTO ls_event.
      IF sy-subrc = 0.
        MOVE 'END_OF_PAGE' TO ls_event-form.
        APPEND ls_event TO gt_events.
      ENDIF.
      READ TABLE gt_events WITH KEY name =  slis_ev_end_of_list
                             INTO ls_event.
      IF sy-subrc = 0.
        MOVE 'END_OF_LIST' TO ls_event-form.
        APPEND ls_event TO gt_events.
      ENDIF.
      gd_prntparams-reserve_lines = '7'.   "Lines reserved for footer
      gd_prntparams-no_coverpage = 'X'.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
                i_callback_program        = sy-repid
      I_CALLBACK_PF_STATUS_SET          = ' '
      I_CALLBACK_USER_COMMAND           = ' '
           i_callback_top_of_page            = 'TOP-OF-PAGE'
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      i_callback_html_end_of_list           = 'END_OF_LIST_HTML'
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
      I_GRID_TITLE                      =
      I_GRID_SETTINGS                   =
                is_layout                 = wa_layout
                it_fieldcat               = gt_fieldcat
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
             i_default                    = 'X'
             i_save                       = 'X'
      IS_VARIANT                        =
       it_events                         = gt_events
      IT_EVENT_EXIT                     =
      is_print                          = gd_prntparams
      IS_REPREP_ID                      =
      I_SCREEN_START_COLUMN             = 0
      I_SCREEN_START_LINE               = 0
      I_SCREEN_END_COLUMN               = 0
      I_SCREEN_END_LINE                 = 0
      I_HTML_HEIGHT_TOP                 = 0
      I_HTML_HEIGHT_END                 = 0
      IT_ALV_GRAPHICS                   =
      IT_HYPERLINK                      =
      IT_ADD_FIELDCAT                   =
      IT_EXCEPT_QINFO                   =
      IR_SALV_FULLSCREEN_ADAPTER        =
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           =
      ES_EXIT_CAUSED_BY_USER            =
        TABLES
          t_outtab                          = itab
       EXCEPTIONS
         program_error                     = 1
         OTHERS                            = 2
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    *&      Form  top-of-page
          text
    -->  p1        text
    <--  p2        text
    FORM top-of-page .
    ALV Header Declarations
      DATA: t_header TYPE slis_t_listheader,
            wa_header  TYPE slis_listheader,
           wa_header1 TYPE slis_listheader,
           wa_header2 TYPE slis_listheader,
           wa_header3 TYPE slis_listheader,
            wa_header4 TYPE slis_listheader.
    Title
      wa_header-typ = 'H'.
      wa_header-info = 'Purchase Variance Report'.
      APPEND wa_header TO t_header.
      CLEAR wa_header.
    Material
    SHIFT p_matnr LEFT DELETING LEADING '0'.
    wa_header1-typ = 'S'.
    wa_header1-info = ' '.
    CONCATENATE 'Material : ' p_matnr matdes INTO wa_header1-info SEPARATED BY space.
    APPEND wa_header1 TO t_header.
    CLEAR wa_header1.
    Plant
    IF ( s_werks-low IS NOT INITIAL AND s_werks-high IS NOT INITIAL ).
       wa_header2-typ = 'S'.
       wa_header2-info = ' '.
       CONCATENATE 'Plant : ' s_werks-low 'to' s_werks-high INTO wa_header2-info SEPARATED BY space.
       APPEND wa_header2 TO t_header.
       CLEAR wa_header2.
    ELSEIF ( s_werks-low IS NOT INITIAL AND s_werks-high IS INITIAL ).
       wa_header2-typ = 'S'.
       wa_header2-info = ' '.
       CONCATENATE 'Plant : ' s_werks-low INTO wa_header2-info SEPARATED BY space.
       APPEND wa_header2 TO t_header.
       CLEAR wa_header2.
    ELSEIF ( s_werks-low IS INITIAL AND s_werks-high IS INITIAL ).
       EXIT.
    ENDIF.
    Period
      IF ( s_bedat-low IS NOT INITIAL AND s_bedat-high IS INITIAL ).
        wa_header4-typ = 'S'.
        wa_header4-info = ' '.
        CONCATENATE 'Period : '
                    s_bedat-low+6(2) '.'
                    s_bedat-low+4(2) '.'
                    s_bedat-low(4) INTO wa_header4-info SEPARATED BY space.
        APPEND wa_header4 TO t_header.
        CLEAR wa_header4.
      ELSE.
    IF ( s_bedat-low IS INITIAL AND s_bedat-high IS INITIAL ).
        wa_header4-typ = 'S'.
        wa_header4-info = ' '.
        CONCATENATE 'Period : '
                    s_bedat-low+6(2) '.'
                    s_bedat-low+4(2) '.'
                    s_bedat-low(4)
                    'to'
                    s_bedat-high+6(2) '.'
                    s_bedat-high+4(2) '.'
                    s_bedat-high(4) INTO wa_header4-info SEPARATED BY space.
        APPEND wa_header4 TO t_header.
        CLEAR wa_header4.
      ENDIF.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = t_header.
      I_LOGO                   =
      I_END_OF_LIST_GRID       =
      I_ALV_FORM               =
    ENDFORM.                    " top-of-page
    *&      Form  end_of_list_html
          output at the end of the list - not in printed output       *
    FORM end_of_list_html USING end TYPE REF TO cl_dd_document.
      DATA: ls_text TYPE sdydo_text_element,
            l_grid     TYPE REF TO cl_gui_alv_grid,
            f(14) TYPE c VALUE 'SET_ROW_HEIGHT'.
      DATA: qty1 TYPE sdydo_text_element.
      DATA: unt1 TYPE sdydo_text_element.
      DATA: wtd1 TYPE sdydo_text_element.
      DATA: cur1 TYPE sdydo_text_element.
      DATA: var1 TYPE sdydo_text_element.
      DATA: verp1 TYPE sdydo_text_element.
      DATA: bgv1 TYPE sdydo_text_element.
      qty1 = qty.
      unt1 = unt.
      wtd1 = wtd.
      cur1 = cur.
      var1 = var.
      verp1 = verp.
      bgv1 = bgv.
      ls_text = 'SUMMARY'.
      CALL METHOD end->add_text
        EXPORTING
          text         = ls_text
          sap_emphasis = 'strong'.
    Total Qty Bought (start new line)
      CALL METHOD end->new_line.
      CALL METHOD end->add_text
        EXPORTING
          text = 'Total Qty Bought : '.
      CALL METHOD end->add_text
        EXPORTING
          text = qty1.
      CALL METHOD end->add_text
        EXPORTING
          text = unt1.
    Wtd. Avg. Purchase Rate
      CALL METHOD end->new_line.
      CALL METHOD end->add_text
        EXPORTING
          text = 'Wtd. Avg. Purchase Rate : '.
      CALL METHOD end->add_text
        EXPORTING
          text = cur1.
      CALL METHOD end->add_text
        EXPORTING
          text = wtd1.
    Wtd. Avg. Budget Rate
      CALL METHOD end->new_line.
      CALL METHOD end->add_text
        EXPORTING
          text = 'Wtd. Avg. Budget Rate : '.
      CALL METHOD end->add_text
        EXPORTING
          text = cur1.
      CALL METHOD end->add_text
        EXPORTING
          text = bgv1.
    Gain / Loss
      CALL METHOD end->new_line.
      CALL METHOD end->add_text
        EXPORTING
          text = 'Gain / Loss : '.
      CALL METHOD end->add_text
        EXPORTING
          text = cur1.
      CALL METHOD end->add_text
        EXPORTING
          text = var1.
    MAP ( Moving Average Price )
      CALL METHOD end->new_line.
      CALL METHOD end->add_text
        EXPORTING
          text = 'Mov Avg Price : '.
      CALL METHOD end->add_text
        EXPORTING
          text = cur1.
      CALL METHOD end->add_text
        EXPORTING
          text = verp1.
    ENDFORM. "end_of_list_html.
    *&      Form  END_OF_PAGE
    FORM end_of_page.
      DATA: listwidth TYPE i,
            ld_pagepos(10) TYPE c,
            ld_page(10)    TYPE c.
      wtd2 = wtd.
      bgv2 = bgv.
      CONDENSE qty.
      CONDENSE unt.
      CONDENSE wtd2.
      CONDENSE bgv2.
      CONDENSE var.
      CONDENSE verp.
      SKIP.
      WRITE:/ 'SUMMARY:'.
    write:/ sy-uline(7).
      WRITE:/ 'Total Qty Bought        : ', qty, unt.
      WRITE:/ 'Wtd. Avg. Purchase Rate : ', wtd2, cur.
      WRITE:/ 'Wtd. Avg. Budget Rate   : ', bgv2, cur.
      WRITE:/ 'Gain / Loss             : ', var, cur.
      WRITE:/ 'Mov Avg Price           : ', verp, cur.
    ENDFORM.                    "END_OF_PAGE
    *&      Form  END_OF_LIST
    FORM end_of_list.
      DATA: listwidth TYPE i,
            ld_pagepos(10) TYPE c,
            ld_page(10)    TYPE c.
      wtd2 = wtd.
      bgv2 = bgv.
      CONDENSE qty.
      CONDENSE unt.
      CONDENSE wtd2.
      CONDENSE bgv2.
      CONDENSE var.
      CONDENSE verp.
      SKIP.
      WRITE:/ 'SUMMARY:'.
    write:/ sy-uline(7).
      WRITE:/ 'Total Qty Bought        : ', qty, unt.
      WRITE:/ 'Wtd. Avg. Purchase Rate : ', wtd2, cur.
      WRITE:/ 'Wtd. Avg. Budget Rate   : ', bgv2, cur.
      WRITE:/ 'Gain / Loss             : ', var, cur.
      WRITE:/ 'Mov Avg Price           : ', verp, cur.

  • Tax calculation in CRM using R/3 pricing procedure

    Hello Experts
    We are using R/3 pricing procedure to calculate list prices in CRM.
    The condition record for Taxes are maintained for condition type UTXJ in SD which is calling for tax procedure TAXUSJ and condition type JR1. 
    The records are maintained in FTXP.  This is the SAP Standard way of maintaining taxes if external tax software is not used.
    We have downloaded the condition records and condition types in CRM.  The tables have all the required records downloaded from R/3.
    When creating an order in Webshop the tax is not getting calculated.
    The pricing analysis shows that the condition record for UTXJ condtion type is met, but it is not showing the tax maintained for condition type JR1. 
    Have we missed any settings here? 
    If we are using R/3 billling does the TTE needs to be activated for calculating taxes in the webshop?
    If TTE needed to be used for calculating taxes, what are the settings needed to be configured?
    Thanks in advance for the valuable advice.
    Sastri

    Hi Sastri,
    I am facing this problem with TAX Condition Records: Pricing error: Mandatory condition MWST is missing. I am using a R/3 pricing procedure correctly downloaded to CRM.
    You say that you have downloaded the condition records and condition types in CRM. SAP Library says 'Prerrequisites: You have downloaded the tax condition records from SAP ECC'.
    I don't know If my problem is caused because I haven't downloaded any Tax Condition Records. The fact is that I cannot determine which one is the Condition Object to download in R3AS.
    I would really appreciate if you or anyone could tell me which object you did use.
    thanks in advance,
    Pablo
    Edited by: Pablo Rodríguez Mateos on Sep 30, 2009 12:30 PM
    Edited by: Pablo Rodríguez Mateos on Sep 30, 2009 8:59 PM
    Solved!

  • Pricing procedure mm Packing and forwarding to be calculated on Basic price

    Hi experts
    we are having one pricing procedure where in details are as follows.
    basic price                                                 100
    excise                                                           12.36
    total                                                             112.36
    P & F 2 %  0n (112.36)                                   2.24
    total                                                             114.60
    Vat 5 % 0n (114.60)                                       5.73
    Grand total                                                   120.33
    Now we require new pricing procedure wherein  Packing & forwarding to be calculated on basic price & not on basic + excise
    so can we change in same pricing procedure or we have to create new ?
    Can you elaborate with the  configuration steps ?  Any changes required in Tax procedure also or not ?
    Thanks in advance
    regards

    Hi,
    No need you can add the condition type to the pricing procedure at spro--mm---purchasing--pricing procedure ---calculation schema with proper calculation to get the percentage on base price and add to the total .
    Regards,

  • PRICING PROCEDURE-CALCULATION SCHEMA

    Dear All,
    There are some queries regarding pricing procedure calculation schema.Please help me out:
    1) What is the use of the "Requirement" column in calculation schema in real time scenario?
    2) What is meant by "Alternative calculation type" and "Alternative base value" column?What is its use in real time scenario?
    3) In the Print column if we place "X",it says "Printing at item level (previous procedure)".What does this actually means?
    4) What is the use of "Accurals" and what effect does it have in the pricing procedure and pricing calculation?
    For all the above queries  some real time scenario example willbe highly appreciable.
    Regards,
    Indranil

    1) What is the use of the "Requirement" column in calculation schema in real time scenario?
    Requirement
    Use
        If the requirement is fulfilled (SY-SUBRC = 0), then output
        determination also takes into consideration output type or the access
        sequence, for which the requirement has been specified.
    Examples
        A possible requirement would be, for example, that a difference shoul
        be made between document currency and local currency .
    Definition
         Number of a subroutine (= form routine), that checks a requirement at a
         specific time.
    Use
         The standard SAP system contains some standard routines for checking
         requirements when copying. You can also define your own routines
         according to the needs of your company.
    Example
         If you copy a quotation to a sales order, the system can check every
         quotation item to ensure that the customer had not rejected them for any
         reason.
    2) What is meant by "Alternative calculation type" and "Alternative base value" column?What is its use in real time scenario?
    If you are using any Formula to Derive the Condition Type then you can use  Alternative formula to the formula in the standard system that
    determines a condition.
    Alternative formula for condition base value
         Formula for determining the condition basis as an alternative to t
         standard.
    Example
         An absolute header discount is, for example, distributed in the st
         system according to the cumulative value of the items.
         If the system, however, distributes the absolute header discount
         according to volume, a header discount of $30 results in the follo
         discounts:
         Item       Value  Volume              Discount
                                      Stand. disc.   Volume disc.
           1        $1000  2 cbm         $20             $10
           2        $500   4 cbm         $10             $20
    3) In the Print column if we place "X",it says "Printing at item level (previous procedure)".What does this actually means?
    If you Put 'X" , it will be shown in the Print Output..
    Print ID for condition lines
         Controls issue of condition lines when printing documents such as order
         confirmations or invoices.
    Use
         In releases previous to 4.0, the following print indicators are
         available :
         o   ' ' : Condition line is not printed
         o   'X' : Condition line is printed at item level
         o   'S' : Condition line is printed in totals block
         The following standard logic is set out for these printing indicators:

  • Pricing Procedure- Handling of VAT

    Hello All
    Need help for designing IMPORT pricing procedure for a specific case (Thailand).
    Our client applies VAT - 7% on total value of the Import PO i.e. at the end.
    Their Pricing Structure is like:
    1 Basic Price
    2 Freight
    3 Insurance
    4 Custom Duty
    5 Surcharge
    6 Excise
    7 Internal Duty
    Net value = (1234567)
    and then
    8 VAT on this Net Value.i.e 7% of (1234567).
    They are paying this 7% directly to government and not to the Foregin Supplier.
    Now this VAT amount is deductable as they are having a VAT return report submitted to the government each month.
    i don't know how to handle this case..so request you all if anybody have idea please help me.
    It is vey urgent...
    Regards
    Yogesh

    Hi Yogesh,
    In our case the requirement is simple.We have defined a tax procedure for african country which only has input and out put conditions on the base amount.
    In PO, we have several conditions (header) for additional costs like freight,demurage,port charges etc and which we have defined as fright conditions.
    The accrual indicator has been ticked and so is the Vendor GR checkbox.
    The reason is that while GR, ALL THESE CONDITIONS WILL BE LOADED ON MATERIAL SO TO HAVE a LANDED COST.
    Now,the requirement in this country is that whatever they receive vide PO incurrs certain % of VAT on basic price of an item + all the additional costs(freight,demurage,port charges).
    As per the tax procedure, it calculates VAT on the BASE amount which does not consider the net price in PO.It considers gross price entered against the material.
    This is the problem.
    If I remove the accrual tick in PO pricing procedure for all the conditions for freight,port charges etc, then those conditions will get added on the basic cost of the material and thus the net price will change accordingly.VAT can then be calculated on this.
    But the problem in this is that the FREIGHT tab at the time of GR does not appear  which does not allow me to consider all these costs at the time of GR.
    I hope you understand our requirement clearly now.
    There is some additional requirement but that can be thought of later.The requirement is that the VAT will differ in % depending on the material in a PO.It means a PO can have items with different VAT %
    Thanks in advance.I hope someone must have tried out this earlier.
    Thanks in advance.
    Regards,
    manOO

  • Reverse Calculation in Pricing Procedure

    Hi All,
    My client requirement is to calculate the PR00 from the TOTAL and TAX
    i.e. If we enter the TOTAL some amount and TAX 12.5% VAT in the Pricing Condition then it should calculate the d Basic Price PR00 .
    Tanks and regards,
    Bala

    Hi
    Thanks for understanding the explanation given earlier and this an interesting qn
    I am giving herewith a document on MRP pricing procedure (you need to understand this and make the settings)
    This is same as your requirement but additionally it has an discount which you can ignore for yours
    Go through the following:
    I will brief your requirement in short
    MRP = 1012.5/-
    VAT = (1012.5/1.125) = 900/-
    so price before discount will be = 900/-
    discount given at the rate of 10% = 100/-
    Initial Price = 1000/-.
    1. Create condition types as below:
    ZR00 for price
    Condition class = B
    Calculation type = C
    Plus/minus = A
    ZSET for settlement (to knock off the effect of ZR00)
    Condition class = A
    Calculation type = C
    Plus/minus = X
    ZWST for tax
    Condition class = A
    Calculation type = H
    Condition category = D
    Plus/minus = X
    Z007 for discount
    Condition class = A
    Calculation type = H
    Plus/minus = A
    ZDUM for net price
    Condition class = A
    Calculation type = A
    Plus/minus = A
    YWST for tax (to knock of the previous effect - to be used for posting to G/L)
    Condition class = A
    Calculation type = A
    Plus/minus = X
    YOO7 for discount (to knock of the previous effect - to be used for posting to G/L)
    Condition class = A
    Calculation type = A
    Plus/minus = X
    2. The following will be the pricing procedure configuration:
    Step......No........Cond Type........... From.........to..........Man.........Req........Sta................Acc Key
    10........0..............ZR00..................--..........--..........-...........-........---.................ZDU
    20........0..............ZWST..................10............19...........----.............X............X...................
    30........0.............text.......................10...........29...........---...........----.........X
    40........0.............Z007.....................30...........39...........-----.............X............X
    50........0..............text.....................30............49...........---...........-----.........X
    60........0............ZSET.....................10...........19...........----............X............--.................ZDU
    70........0............ZDUM....................50...........59...........----............X............---...............ERL
    80........0............Y007.....................40...........49...........----.............X...........---...............ERS
    90.......0..............YWST..................20...........29...........-----............X...........---................ZWS
    ZDU - dummy account key for posting extra not required items.
    ERL - account key for price
    ERS - account key for discount
    ZWS - account key for tax.
    3. Condition records in VK11
    Condition type----
    Condition record.......
    ZR00........................................1012.5.....................INR will be positive
    ZSET.......................................100%...............................will be negative
    ZWST.......................................10%................................will be negative
    Z007.........................................12.5%.............................will be positive
    ZDUM.......................................100%..............................will be positive
    Y007.........................................100%.............................will be negative
    YWST.......................................100%.............................will be negative
    Condition records for Z007 & ZWST will be decided as per the conversion required. You will first have to manually calculate the amount for the condition type.
    4. I create a sales order for single quantity for an item & the pricing will be as under:
    ZR00 = 1012.5 (dummy account) - positive
    ZSET = 1012.5- (dummy account) - negative will knock off effect of ZR00
    ZWST = 112.5- (negative & no posting)
    Z007 = 100 (positive & no posting)
    ZDUM = 1012.5 (positive & posting)
    Y007 = 100-(negative & posting)
    YWST = 112.5 (positive & posting)
    If still your scenario is not getting mapped then you can go to your ABAPer and he will develop a alternate base value formula  to correct the calculations
    Regards
    Raja

Maybe you are looking for

  • How do I transfer an itunes card from an old apple id to my new apple id?

    I recently had to update my apple id and password because I no longer have that account. I had an itunes card on the old apple id and after changing my id it's not there anymore...can I transfer this? Does this also affect my purchases?

  • Pacman -Syu -- error: failed to commit transaction (conflicting files)

    Hi! I'm upgrading my system after a lot of time, but I have this error: sudo pacman -Syu [sudo] password for elrengo: :: Synchronizing package databases... core 121,3 KiB 90,8K/s 00:01 [################################################################

  • R60 shouts at me when pressing [ctrl+alt+backspace] in openSUSE

    Whenever I try to restart the X server in openSUSE 11.3, as I like to do with the [ctrl+alt+backspace]-shortcut, I just get a loud *beep* from the onboard speaker and nothing happens. I tried booting into Windows and pressing the key combination, sam

  • Cannot run quicktime

    I downloaded Quicktime 7 (latest version I believe) straight from the Apple website (http://www.apple.com/quicktime/download/), installed it with no problems, and whenever I try to run the .exe I would get this error: "Quicktime player has encountere

  • Which DVD format plays on all domestic DVD players?

    Hi guys As a Mac user for many years, I've had issues in the past deciding if I should burn to DVD-R or DVD+R formats. In my experience (Wedding videography), I opted for DVD-R because of it's wider compatibility (as it seemed at the time) with domes