Académique Documents
Professionnel Documents
Culture Documents
DATA:
lt_rgdir_all TYPE STANDARD TABLE OF pc261,
lt_results TYPE payin_result,
lt_wagetxt TYPE STANDARD TABLE OF t512t.
* Strectures
DATA:
ls_pa0185 TYPE pa0185,
ls_t005u TYPE t005u,
ls_pa0001 TYPE pa0001,
ls_dy_wages TYPE zst_tax_form.
* Variables
DATA:
lv_srtza TYPE srtza,
lv_pc261 TYPE pc261a,
lv_year TYPE char4,
lv_year1 TYPE char4,
lv_month TYPE fcltx,
lv_pay_begin TYPE begda,
lv_cluster TYPE relid_pcl,
lv_leaex TYPE pin_leaex,
lv_gryex TYPE pin_leaex,
lv_vrsex TYPE pin_leaex,
lv_projected_month TYPE char2,
lv_pay_end TYPE endda.
FIELD-SYMBOLS:
<fs_forperiod> LIKE LINE OF hrdata-dim_forperiod,
<fs_emp_sgroup> LIKE LINE OF hrdata-dim_employee_sgroup,
<fs_pers_area> LIKE LINE OF hrdata-dim_pers_area,
<fs_pay_result> LIKE LINE OF hrdata-star_pay_result,
<fs_rgdir> TYPE pc261,
<fs_crt> TYPE pc208,
<fs_ccode> LIKE LINE OF hrdata-dim_company_code,
<fs_employee> LIKE LINE OF hrdata-dim_employee.
*********************************************************************
*BREAK-POINT. "--santosh
SELECT mandt
sprsl
molga
lgart
lgtxt
kztxt
FROM t512t
INTO TABLE lt_wagetxt
WHERE sprsl = 'E' AND
molga = '40'.
* Assigning Year
lv_year = <fs_forperiod>-key-begin_date+0(4).
* Financial Year
IF lv_pay_begin+4(2) LT '04'.
CLEAR lv_year1.
lv_year1 = lv_year - 1.
CONCATENATE lv_year1 '-' lv_year INTO gv_financial_year.
ELSE.
CLEAR lv_year1.
lv_year1 = lv_year + 1.
CONCATENATE lv_year '-' lv_year1 INTO gv_financial_year.
ENDIF.
* Assessment Year
CLEAR lv_year1.
lv_year1 = ( gv_financial_year+5(4) + 1 ).
CONCATENATE gv_financial_year+5(4) '-' lv_year1 INTO gv_assessment_year.
* Projected Years
IF lv_pay_begin+4(2) EQ '04'.
lv_projected_month = '11'.
ELSEIF lv_pay_begin+4(2) EQ '05'.
lv_projected_month = '10'.
ELSEIF lv_pay_begin+4(2) EQ '06'.
lv_projected_month = '09'.
ELSEIF lv_pay_begin+4(2) EQ '07'.
lv_projected_month = '08'.
ELSEIF lv_pay_begin+4(2) EQ '08'.
lv_projected_month = '07'.
ELSEIF lv_pay_begin+4(2) EQ '09'.
lv_projected_month = '06'.
ELSEIF lv_pay_begin+4(2) EQ '10'.
lv_projected_month = '05'.
ELSEIF lv_pay_begin+4(2) EQ '11'.
lv_projected_month = '04'.
ELSEIF lv_pay_begin+4(2) EQ '12'.
lv_projected_month = '03'.
ELSEIF lv_pay_begin+4(2) EQ '01'.
lv_projected_month = '02'.
ELSEIF lv_pay_begin+4(2) EQ '02'.
lv_projected_month = '01'.
ENDIF.
ENDIF.
* Read
READ TABLE hrdata-dim_employee
ASSIGNING <fs_employee> INDEX 1.
IF sy-subrc EQ 0.
* Select
SELECT SINGLE *
FROM pa0185
INTO ls_pa0185
WHERE pernr EQ <fs_employee>-key-personnel_number
AND subty EQ '02'
AND endda GE lv_pay_end
AND begda LE lv_pay_begin.
* PAN Number
IF ls_pa0185-icnum IS NOT INITIAL.
gv_pan_num = ls_pa0185-icnum.
ENDIF.
* Sort
SORT hrdata-dim_employee_sgroup.
gv_emp_sgroup = <fs_emp_sgroup>-text.
ENDIF.
ENDIF.
* Sort
SORT hrdata-star_ity_pers_struct.
BREAK-POINT.
* Personnel Area Text
READ TABLE hrdata-dim_pers_area
ASSIGNING <fs_pers_area>
WITH KEY key-pers_area = ls_pa0001-werks
BINARY SEARCH.
IF sy-subrc EQ 0.
gv_pers_area = <fs_pers_area>-text.
ENDIF.
*--
ls_dy_wages-zwagetype = <fs_pay_result>-wagetype_key-wagetype.
ls_dy_wages-zcurrent = <fs_pay_result>-pay_amount.
ls_dy_wages-zprojected = ls_dy_wages-zcurrent * lv_projected_month.
ls_dy_wages-zwagetxt = <fs_wtxt>-lgtxt.
ENDIF.
**********************************************************************
****---------------------------------------------------------------------
*** Case <fs_pay_result>-wagetype_key-wagetype.
***
*** when '1010'.
*** IF <fs_pay_result>-pay_amount NE '0.00'.
*** gv_1010 = <fs_pay_result>-pay_amount. "Basic
*** gv_p1010 = gv_1010 * lv_projected_month.
***
*** endif.
*** when '1020'.
*** IF <fs_pay_result>-pay_amount NE '0.00'.
*** gv_1020 = <fs_pay_result>-pay_amount. "HRA
*** gv_p1020 = gv_1020 * lv_projected_month.
*** endif.
*** when '1030'.
*** IF <fs_pay_result>-pay_amount NE '0.00'.
*** gv_1030 = <fs_pay_result>-pay_amount. "Conveyance
*** gv_p1030 = gv_1030 * lv_projected_month.
*** endif.
*** when '1040'.
*** IF <fs_pay_result>-pay_amount NE '0.00'.
*** gv_1040 = <fs_pay_result>-pay_amount. "Medical
Reimbursement
*** gv_p1040 = gv_1040 * lv_projected_month.
*** endif.
*** when '1050'.
*** IF <fs_pay_result>-pay_amount NE '0.00'.
*** gv_1050 = <fs_pay_result>-pay_amount. "Leave Travel
Allowance
*** gv_p1050 = gv_1050 * lv_projected_month.
*** endif.
*** when '1060'.
*** IF <fs_pay_result>-pay_amount NE '0.00'.
*** gv_1060 = <fs_pay_result>-pay_amount. "Adhoc Allowance
*** gv_p1060 = gv_1060 * lv_projected_month.
*** endif.
*** when '2010'.
*** IF <fs_pay_result>-pay_amount NE '0.00'.
*** gv_2010 = <fs_pay_result>-pay_amount. "Location Allowance
*** endif.
*** when '2080'.
*** IF <fs_pay_result>-pay_amount NE '0.00'.
*** gv_2080 = <fs_pay_result>-pay_amount. "Leave Encashment
*** endif.
*** when '2200'.
*** IF <fs_pay_result>-pay_amount NE '0.00'.
*** gv_2200 = <fs_pay_result>-pay_amount. "Snacks - Out of
Payroll
*** endif.
*** when '2210'.
*** IF <fs_pay_result>-pay_amount NE '0.00'.
*** gv_2210 = <fs_pay_result>-pay_amount. "Conveyance - Out of
Payroll
*** endif.
*** when '2240'.
*** IF <fs_pay_result>-pay_amount NE '0.00'.
*** gv_2240 = <fs_pay_result>-pay_amount. "Performance Reward
*** endif.
*** when '/560'.
*** IF <fs_pay_result>-pay_amount NE '0.00'.
*** gv_0560 = <fs_pay_result>-pay_amount. "Total
*** endif.
***
*** ENDCASE.
****-------------------------------------------------------------------------------
---
ENDLOOP.
* Delete
* DELETE lt_rgdir_all WHERE srtza NE 'A' OR ----Pruthvi(18.2.2019)
* ( fpbeg NOT BETWEEN lv_pay_begin AND lv_pay_end AND
* fpend NOT BETWEEN lv_pay_begin AND lv_pay_end ). -----END.
**Getting Exact sequence noo**
IF lt_rgdir_all IS NOT INITIAL. "+++Pruthvi.
CLEAR : lv_srtza.
DO 3 TIMES.
IF sy-index EQ '1'.
lv_srtza = 'O'.
ELSEIF sy-index EQ '2'.
lv_srtza = 'P'.
ELSE.
lv_srtza = 'A'.
ENDIF.
CLEAR lv_pc261.
ENDDO.
ENdif. "++++END
* Payroll record
* LOOP AT lt_rgdir_all ASSIGNING <fs_rgdir>.
CASE <fs_rt>-lgart.
WHEN '/416' .
"gross salary
ls_dy_wages-ztotal = <fs_rt>-betrg.
WHEN '/418'. "Balance
ls_dy_wages-ztotal = <fs_rt>-betrg.
WHEN '/420'. "Std Deduction
ls_dy_wages-ztotal = <fs_rt>-betrg.
WHEN '/422'. "Empmnt tax (Prof Tax)
ls_dy_wages-ztotal = <fs_rt>-betrg.
WHEN '/424'. "Aggrg deduction
ls_dy_wages-ztotal = <fs_rt>-betrg.
WHEN '/426'. " Incm under Hd Salary
ls_dy_wages-ztotal = <fs_rt>-betrg.
WHEN '/430'. "Gross Tot Income
ls_dy_wages-ztotal = <fs_rt>-betrg.
WHEN '/432'. " Agg of Chapter VI
ls_dy_wages-ztotal = <fs_rt>-betrg.
WHEN '/434'. " Total Income
ls_dy_wages-ztotal = <fs_rt>-betrg.
WHEN '/436'. "Tax on total Income
ls_dy_wages-ztotal = <fs_rt>-betrg.
WHEN '/446'. "Tax payable
ls_dy_wages-ztotal = <fs_rt>-betrg.
WHEN '/450'. "Tax payable and surcharge
ls_dy_wages-ztotal = <fs_rt>-betrg.
WHEN '/456'. "Tax deducted so far
ls_dy_wages-ztotal = <fs_rt>-betrg.
WHEN '/460'. "Income Tax
ls_dy_wages-ztotal = <fs_rt>-betrg.
WHEN '/470'. "Total Tax deductible
ls_dy_wages-ztotal = <fs_rt>-betrg.
WHEN OTHERS.
CONTINUE.
ENDCASE.
ls_dy_wages-zwagetxt = <fs_wtxt>-lgtxt.
ENDIF.
APPEND ls_dy_wages TO gt_dy_wages.
CLEAR:ls_dy_wages.
ENDIF.
ENDLOOP.
**********************************************************************
**********************************************************************
ls_dy_wages-zwagetxt = <fs_wtxt>-lgtxt.
ENDIF.
CASE <fs_crt>-lgart.
WHEN '/4E1' OR '/4E2' OR '/4E3' OR '/4E4' OR '/4E5' OR '/4E6' OR
'/4E7' OR '/4E8'
OR '9200' OR '9220' OR '9210' OR '9230'.
ENDCASE.
ENDIF.
**********************************************************************
* ENDIF.
ENDLOOP.
ENDIF.
* ENDLOOP.
* Select
SELECT SUM( leaex )
SUM( gryex )
SUM( vrsex )
INTO ( lv_leaex, lv_gryex, lv_vrsex )
FROM pa0580
WHERE pernr EQ <fs_employee>-key-personnel_number
AND endda GE lv_pay_end
AND begda LE lv_pay_begin.
* Totals
gv_tbasic = gv_c1010 + gv_p1010.
gv_thra = gv_c1020 + gv_p1020.
gv_tconveyance = gv_c1030 + gv_p1030.
gv_tmedical = gv_c1040 + gv_p1040.
gv_tleave_travel = gv_c1050 + gv_p1050.
gv_tadhoc = gv_c1060 + gv_p1060.
ENDIF.
gv_string = 'image/bmp'.
IF <fs_ccode> IS ASSIGNED.
CASE <fs_ccode>-key.
WHEN '1000'." Kalyani Developers
lv_logoname = '1000_KD'.
lv_logoname = '3000_ktpl'.
ENDCASE.
IF <fs_ccode>-key = '2000'.
ENDIF.
ENDIF.