SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

ФМ для получения суммы НДС



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
Лазарев
Участник
Участник



Joined: 26 Sep 2007
Posts: 22

PostPosted: Tue Oct 02, 2007 6:51 pm    Post subject: ФМ для получения суммы НДС Reply with quote

Привет!
Существует ли функциональный модуль для получения суммы налога НДС по коду налога и сумме для России?
С примерчиком если можно,
заранее спасибо.
Back to top
View user's profile Send private message
Lord
Профессионал
Профессионал



Joined: 10 Sep 2007
Posts: 168

PostPosted: Wed Oct 03, 2007 1:28 pm    Post subject: Reply with quote

CALCULATE_TAX_FROM_GROSSAMOUNT
Code:

DATA: i_MWDAT like RTAX1U15 occurs 1.
CALL FUNCTION 'CALCULATE_TAX_FROM_GROSSAMOUNT'                   
        EXPORTING                                                           
          I_BUKRS                       = s_block-bukrs                     
          I_MWSKZ                       = s_alv_list-mwskz                 
*         I_TXJCD                       = ' '                           
          I_WAERS                       = s_block-bwaer                     
          I_WRBTR                       = v_difer                           
*         I_ZBD1P                       = 0                             
*         I_PRSDT                       =                               
*         I_PROTOKOLL                   =                               
*         I_TAXPS                       =                               
*         I_ACCNT_EXT                   =                               
        IMPORTING                                                           
*         E_FWNAV                       =                               
*         E_FWNVV                       =                               
*         E_FWSTE                       =                               
          E_FWAST                       = v_dfiva                           
        TABLES                                                             
          T_MWDAT                       = i_mwdat                           
       EXCEPTIONS                                                           
         BUKRS_NOT_FOUND               = 1                                 
         COUNTRY_NOT_FOUND             = 2                                 
         MWSKZ_NOT_DEFINED             = 3                                 
         MWSKZ_NOT_VALID               = 4                                 
         ACCOUNT_NOT_FOUND             = 5                                 
         DIFFERENT_DISCOUNT_BASE       = 6                                 
         DIFFERENT_TAX_BASE            = 7                                 
         TXJCD_NOT_VALID               = 8                                 
         NOT_FOUND                     = 9                                 
         KTOSL_NOT_FOUND               = 10                                 
         KALSM_NOT_FOUND               = 11                                 
         PARAMETER_ERROR               = 12                                 
         KNUMH_NOT_FOUND               = 13                                 
         KSCHL_NOT_FOUND               = 14                                 
         UNKNOWN_ERROR                 = 15                                 
         OTHERS                        = 16                                 
                .                                                           
                                                                           
                                 
  v_dfimp = abs( v_difer - v_dfiva ).                               

CALCULATE_TAX_FROM_NET_AMOUNT
Code:

* ACCOUNTTAX
  PERFORM calculate_vat_amount USING t_notilus-comp_code
                                     t_notilus-vat_cod
                                     t_notilus-amt_doccur
                            CHANGING p_tax_amount
                                     accounttax-tax_code
                                     accounttax-tax_rate
                                     accounttax-acct_key
                                     accounttax-gl_account
                                     accounttax-cond_key.
  accounttax-tax_date   = sy-datum.
  accounttax-itemno_acc = p_compt.
  accounttax-itemno_tax = p_compt - 1.
  APPEND accounttax.
 
*&---------------------------------------------------------------------*
*&      Form  calculate_vat_amount
*&---------------------------------------------------------------------*
FORM calculate_vat_amount  USING    p_comp_code
                                    p_vat_cod
                                    p_amount
                           CHANGING tax_amount
                                    w_vat_cod
                                    w_msatz
                                    w_ktosl
                                    w_hkont
                                    w_kschl.
 
  DATA : BEGIN OF t_mwdat OCCURS 0.
          INCLUDE STRUCTURE rtax1u15.
  DATA : END OF t_mwdat.
 
  DATA : w_ttc LIKE bseg-wrbtr.
  w_ttc = p_amount.
 
  CALL FUNCTION 'CALCULATE_TAX_FROM_NET_AMOUNT'
    EXPORTING
      i_bukrs           = p_comp_code
      i_mwskz           = p_vat_cod
      i_waers           = 'EUR'
      i_wrbtr           = w_ttc
    TABLES
      t_mwdat           = t_mwdat
    EXCEPTIONS
      bukrs_not_found   = 1
      country_not_found = 2
      mwskz_not_defined = 3
      mwskz_not_valid   = 4
      ktosl_not_found   = 5
      kalsm_not_found   = 6
      parameter_error   = 7
      knumh_not_found   = 8
      kschl_not_found   = 9
      unknown_error     = 10
      account_not_found = 11
      txjcd_not_valid   = 12
      OTHERS            = 13.
 
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
 
  CLEAR t_mwdat.
  READ TABLE t_mwdat INDEX 1. "INTO s_mwdat
* w_tax_amount = t_mwdat-WMWST.
  w_tax_amount = t_notilus-vat_amount.
  w_ktosl      = t_mwdat-ktosl.
  w_hkont      = t_mwdat-hkont.
  w_kschl      = t_mwdat-kschl.
  w_msatz      = t_mwdat-msatz.
  w_vat_cod    = p_vat_cod.
 
 
ENDFORM.                    " calculate_vat_amount




CALCULATE_TAX_ITEM

Еще может быть полезны:
GET_TAX_PERCENTAGE

Code:
DATA: BEGIN OF it_persent OCCURS 2.
    INCLUDE STRUCTURE ftaxp.
DATA: END OF it_persent.

CALL FUNCTION 'GET_TAX_PERCENTAGE'
           EXPORTING
                ALAND   = itab_res-lan11
                DATAB   = sy-datum
                MWSKZ  = itab_res-mwskz
                TXJCD   = ' '
           TABLES
                T_FTAXP = it_persent
           EXCEPTIONS
                OTHERS  = 1.

LOOP AT PERCENT.
*  IF   it_persent-kschl = 'MWVS'              " ПредварительныйНДС
*      OR it_persent-kschl = 'MWAS'           " Исходящий налог
*      OR it_persent-kschl = 'MWR1'  "RUN-corrections " Исх.НДС       (РФ)
*      OR it_persent-kschl = 'MW1Z'
*      OR it_persent-kschl = 'MWVZ'.
  itab_res-wsatz = it_persent-kbetr / 10.
  itab_res-wmwst1 = itab_res-wrbtr * itab_res-wsatz / 100.
  EXIT.
*  ENDIF.
ENDLOOP.



Example is extracting PO Conditions and tax rates w.r.t a PO.

Code:
PARAMETERS: P_EBELN LIKE BAPIEKKO-PO_NUMBER OBLIGATORY.
DATA: L_LAND1 LIKE T001-LAND1,
L_KALSM LIKE T005-KALSM.
DATA: L_KBETR LIKE BSET-KBETR.

DATA: POHEAD LIKE BAPIEKKOL,
POITEM LIKE BAPIEKPO OCCURS 0 WITH HEADER LINE,
IT_KONV LIKE KONV OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF IT_TAX_RATE OCCURS 0,
KSCHL LIKE KONV-KSCHL,
MWSK1 LIKE KONV-MWSK1,
KBETR LIKE KONV-KBETR,
END OF IT_TAX_RATE.

CALL FUNCTION 'BAPI_PO_GETDETAIL'
EXPORTING
PURCHASEORDER = P_EBELN
IMPORTING
PO_HEADER = POHEAD
TABLES
PO_ITEMS = POITEM.

CALL FUNCTION 'MRM_DBTAB_KONV_READ'
EXPORTING
I_KNUMVE = POHEAD-DOC_COND
I_KNUMVL = POHEAD-DOC_COND
TABLES
T_KONV = IT_KONV.

SORT IT_KONV BY KNUMV KPOSN STUNR.
DELETE ADJACENT DUPLICATES FROM IT_KONV.

SELECT SINGLE LAND1 INTO L_LAND1 FROM T001
WHERE BUKRS EQ POHEAD-CO_CODE.
SELECT SINGLE KALSM INTO L_KALSM FROM T005 WHERE LAND1 = L_LAND1.
LOOP AT IT_KONV WHERE NOT MWSK1 IS INITIAL.
CALL FUNCTION 'FI_TAX_GET_CONDITION'
EXPORTING
I_BUKRS = POHEAD-CO_CODE
I_LAND1 = L_LAND1
I_KALSM = L_KALSM
I_MWSKZ = IT_KONV-MWSK1
I_TXJCD = ' '
I_KSCHL = IT_KONV-KSCHL
I_KTOSL = ' '
I_TDATE = SY-DATUM
IMPORTING
E_KBETR = L_KBETR
EXCEPTIONS
INPUT_PARAM_INVALID = 1
BUKRS_INVALID = 2
COUNTRY_INVALID = 3
TXJCD_INVALID = 4
CONDITION_NOT_FOUND = 5
OTHERS = 6.

IT_TAX_RATE-KSCHL = IT_KONV-KSCHL.
IT_TAX_RATE-MWSK1 = IT_KONV-MWSK1.
IT_TAX_RATE-KBETR = L_KBETR / 10.
APPEND IT_TAX_RATE.
ENDLOOP.
SORT IT_TAX_RATE BY KSCHL MWSK1.
DELETE ADJACENT DUPLICATES FROM IT_TAX_RATE.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.