[SAP ABAP] Get PO Tax






FUNCTION zfm_mmods_po_get_tax.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     REFERENCE(I_EBELN) LIKE  EKPO-EBELN
*"     REFERENCE(I_EBELP) LIKE  EKPO-EBELP
*"  EXPORTING
*"     REFERENCE(E_TAXCOM) TYPE  TAXCOM
*"  TABLES
*"      T_KOMV STRUCTURE  KOMV
*"----------------------------------------------------------------------
  DATA lw_ekko LIKE ekko,
         lw_ekpo LIKE ekpo,
         lw_lfa1 LIKE lfa1.

  SELECT SINGLE INTO lw_ekko
  FROM ekko
  WHERE ebeln i_ebeln.

  IF lw_ekko IS NOT INITIAL.
    SELECT SINGLE INTO lw_ekpo
    FROM ekpo
    WHERE ebeln i_ebeln AND
          ebelp i_ebelp.

    SELECT SINGLE INTO lw_lfa1
    FROM lfa1
    WHERE lifnr lw_ekko-lifnr.
  ELSE.
    EXIT.
  ENDIF.

  CHECK lw_ekpo IS NOT INITIAL.

  DATAli_tax TYPE j_1b_taxcom ,
        li_taxcom  TYPE taxcom ,
        l_wa_t001    TYPE t001,
*        e_taxcom  TYPE taxcom ,
        l_wa_komv TYPE komv ,
        l_gv_amount TYPE netwr ,
        l_unitprice TYPE netwr,
        l_ipiamount TYPE netwr,
        l_total_ipi TYPE netwr,
        l_total  TYPE netwr  ,
        l_taxamount TYPE netwr.

  SELECT SINGLE FROM t001
                  INTO l_wa_t001
                  WHERE bukrs EQ lw_ekko-bukrs.

* Fill tax fields relevant for PO
  li_tax-txreg_sf lw_lfa1-txjcd.
  li_tax-txreg_st lw_ekpo-txjcd.
  li_tax-taxbs    lw_lfa1-taxbs.
  li_tax-ipisp    lw_lfa1-ipisp.
  li_tax-brsch    lw_lfa1-brsch.
  li_tax-mtuse    lw_ekpo-j_1bmatuse.
  li_tax-mtorg    lw_ekpo-j_1bmatorg.
  li_tax-ownpr    lw_ekpo-j_1bownpro.
  li_tax-steuc    lw_ekpo-j_1bnbm.
  li_tax-matkl    lw_ekpo-matkl.
  li_tax-vrkme    lw_ekpo-meins.
  li_tax-mgame    lw_ekpo-menge.

* ISS Calculation with 2-level tax jurisdiction code
* To get the ISS Tax Condtions, need to pass the Following Parameters
  li_tax-loc_se lw_lfa1-txjcd.
  li_tax-loc_sr lw_lfa1-txjcd.
* if you don't pass the above parameters and if your PO has ISS Tax conditions,
* you don't see them in the Result


* Location of service provider = Tax Jur. Code of
* vendor:
  li_tax-loc_pr   lw_lfa1-txjcd.
* Location of service = Tax Jur. Code of delivery address

*Populate fields based on country
  CALL FUNCTION 'J_1B_SAVE_TAX_FIELDS'
    EXPORTING
      i_taxcom li_tax.

  CLEAR li_taxcom.
  li_taxcom-bukrs lw_ekpo-bukrs.
  li_taxcom-budat lw_ekko-bedat.
  li_taxcom-waers lw_ekko-waers.
  li_taxcom-kposn lw_ekpo-ebelp.
  li_taxcom-mwskz lw_ekpo-mwskz.
  li_taxcom-txjcd lw_ekpo-txjcd.
  li_taxcom-shkzg 'H'.
  li_taxcom-xmwst 'X'.
  IF lw_ekko-bstyp EQ 'F'.
    li_taxcom-wrbtr lw_ekpo-netwr.
  ELSE.
    li_taxcom-wrbtr lw_ekpo-zwert.
  ENDIF.
  li_taxcom-lifnr lw_ekko-lifnr.
  li_taxcom-land1 lw_ekko-lands"WIA
  li_taxcom-ekorg lw_ekko-ekorg.
  li_taxcom-hwaer l_wa_t001-waers.
  li_taxcom-llief lw_ekko-llief.
  li_taxcom-bldat lw_ekko-bedat.
  li_taxcom-matnr lw_ekpo-matnr"HTN-Abwicklung
  li_taxcom-werks lw_ekpo-werks.
  li_taxcom-bwtar lw_ekpo-bwtar.
  li_taxcom-matkl lw_ekpo-matkl.
  li_taxcom-meins lw_ekpo-meins.
  IF lw_ekko-bstyp EQ 'F'.
    li_taxcom-mglme lw_ekpo-menge.
  ELSE.
    IF lw_ekko-bstyp EQ 'K' AND lw_ekpo-abmng GT 0.
      li_taxcom-mglme lw_ekpo-abmng.
    ELSE.
      li_taxcom-mglme lw_ekpo-ktmng.
    ENDIF.
  ENDIF.
  IF li_taxcom-mglme EQ 0.
    li_taxcom-mglme 1000.
  ENDIF.
  li_taxcom-mtart lw_ekpo-mtart.

*Calculation of TAX

  CALL FUNCTION 'CALCULATE_TAX_ITEM'
    EXPORTING
      dialog       ' '
      display_only ' '
      i_taxcom     li_taxcom
    IMPORTING
      e_taxcom     e_taxcom
    TABLES
      t_xkomv      t_komv.




ENDFUNCTION.

Comments