技术开发 频道

ABAP计算工资的程序

    【IT168 技术文章】

    关于工资薪金所得应交个人所得税的具体计算方法如下:

    应税所得=取得的收入-免税收入-费用扣除额

    应交的个税=应税所得*适用税率-速算扣除数。

    其中:

    1。免税收入包括有:个人按照规定交纳的社会保险金和住房公积金,等。

    2。费用扣除额(即平常所说的所谓的“起征点”)自2006年1月1日起,全国统一执行1 600元的标准。目前法定的费用扣除额为800元,但各地在执行中存在擅自提高的情况,因此各地实际的费用扣除额并不一样。

    3。税率为5%-45%九级超额累进税率。由于超额累进税率的计算较为复杂,因此转化为使用适用税率和速算扣除数的简化算法。具体适用税率和速算扣除数可查阅税率表:

    (应税所得、适用税率%、速算扣除数)

    0-500、5、0

    500-2 000、10、25

    2 000-5 000、15、125

    5 000-20 000、20、375

    20 000-40 000、25、1 375

    40 000-60 000、30、3 375

    60 000-80 000、35、6 375

    80 000-100 000、40、10 375

    100 000以上、45、15 375

    DATA : l_salary type f.

    PARAMETERS p_salary type string.

    TRY .

    l_salary = p_salary.

    CATCH cx_root.

    WRITE 'Error input' .

    exit.

    ENDTRY.

    DATA:

    l_sal_for_calc type p ,

    l_house_fund type f ,

    l_house_fund_p type p ,

    l_old_passion type p ,

    l_medicial type p ,

    l_unemployed type p ,

    l_tax type f.

    if l_salary > 6705 .

    l_sal_for_calc = 6705.

    endif.

    l_medicial = l_sal_for_calc / 100 * 2 .

    l_house_fund = l_salary / 100 * 7.

    if l_house_fund > 517 .

    l_house_fund = 517 .

    endif.

    l_old_passion = l_sal_for_calc / 100 * 8.

    l_unemployed = l_sal_for_calc / 100 * 1.

    WRITE : / , 'Medical: ' ,l_medicial,

    / , 'Unemployee: ' ,l_unemployed,

    / , 'Old Passion: ' ,l_old_passion,

    / , 'House Fund: ' ,l_house_fund .

    l_sal_for_calc = l_salary - l_medicial - l_unemployed - l_old_passion - l_house_fund.

    l_sal_for_calc = l_sal_for_calc - 1600 .

    DATA : l_tmp type f .

    if l_sal_for_calc < 0 .

    l_tax = 0 .

    else .

    l_tmp = l_sal_for_calc - 500 .

    if l_tmp < 0 .

    l_tax = l_tax + l_sal_for_calc * 5 / 100 .

    else .

    l_tax = l_tax + 500 * 5 / 100.

    l_sal_for_calc = l_sal_for_calc - 500 .

    l_tmp = l_sal_for_calc - 1500.

    if l_tmp < 0 .

    l_tax = l_tax + l_sal_for_calc * 10 / 100 .

    else.

    l_tax = l_tax + 1500 * 10 / 100.

    l_sal_for_calc = l_sal_for_calc - 1500 .

    l_tmp = l_sal_for_calc - 3000.

    if l_tmp < 0 .

    l_tax = l_tax + l_sal_for_calc * 15 / 100 .

    else.

    l_tax = l_tax + 3000 * 15 / 100.

    l_sal_for_calc = l_sal_for_calc - 3000 .

    l_tmp = l_sal_for_calc - 15000.

    if l_tmp < 0 .

    l_tax = l_tax + l_sal_for_calc * 20 / 100 .

    else.

    l_tax = l_tax + 15000 * 20 / 100.

    l_sal_for_calc = l_sal_for_calc - 15000 .

    endif.

    endif.

    endif.

    endif.

    l_sal_for_calc = l_sal_for_calc - 500.

    endif.

    NEW-LINE.

    WRITE :/ 'tax:' , l_tax.

  

0
相关文章