‎2007 May 22 8:14 AM
Hi All,
Now one more query. While SUBMITing a Z program1 from Z program2, I want to debug the Z program1. Even when I keep a break point in Z program1, it is not triggering there. Any help would be appreciated.
Regards,
Balaji
‎2007 Jun 01 12:01 PM
Dear Balaji,
Please try the below:
<b>** VIA JOB p_job
NUMBER l_jobcount</b>
If you comment out the above 2 lines and also
set a dynamic break-point in called
program ZPR022_INNCOMETAX_REPORT_COPY.
You will be able to DEBUG successfully,
Works for me in my sample ABAP report.
<b> SUBMIT zpr022_inncometax_report_copy
WITH pnptimr6 = 'X'
WITH pnpbegda = period-low
WITH pnpendda = period-high
WITH pnppernr-low = pernr-low
WITH pnpabkrs-low = 'IN'
<u>** VIA JOB p_job {Commented Out only for debugging}
NUMBER l_jobcount {Commented Out only for debugging} </u>
TO SAP-SPOOL WITHOUT SPOOL DYNPRO
SPOOL PARAMETERS ls_params
WITH immediately = 'X'
AND RETURN.</b>
<b>Expecting 10/10 points..... :-D</b>
Thanks and Regards,
Aby Jacob, Bangalore
‎2007 May 22 8:17 AM
Go to the program execution of first program. Execute /h in the command prompt. Now execute the program. Control will go to first program. After the execution of the submit command of first program, control will go to second program.
‎2007 May 22 8:21 AM
Hi,
Actually it is not going to the START-OF-SELECTION of the program. any help?
Regards,
Balaji
‎2007 May 22 8:23 AM
‎2007 May 22 8:25 AM
Put a break point in the submit statement of your program and see why it is not triggering start-of-selection event.
Maybe you have to use the submit with statement if there are any obligatory select-options or parameters in the calling program.
Kostas
‎2007 May 22 8:28 AM
Hi All,
Please find the code below. Also there are no obligatory fields in the called program using SUBMIT.
LOOP AT pernr.
CLEAR p_job.
p_stim = p_stim + 120.
CONCATENATE'ITSlip' pernr-low p_job sy-datum INTO p_job SEPARATED BY
space.
CALL FUNCTION 'JOB_OPEN'
EXPORTING
jobname = p_job
sdlstrtdt = p_sdat
sdlstrttm = p_stim
IMPORTING
jobcount = l_jobcount.
SUBMIT zpr022_inncometax_report_copy1
WITH pnptimr6 = 'X'
WITH pnpbegda = period-low
WITH pnpendda = period-high
WITH pnppernr-low = pernr-low
WITH pnpabkrs-low = 'IN'
VIA JOB p_job
NUMBER l_jobcount
TO SAP-SPOOL WITHOUT SPOOL DYNPRO
SPOOL PARAMETERS ls_params
WITH immediately = space
KEEP IN SPOOL = 'X'
AND RETURN.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobcount = l_jobcount
jobname = p_job
strtimmed = 'X'
PRDMINS = 2.
sdlstrtdt = p_sdat
sdlstrttm = p_stim.
ENDLOOP.
‎2007 May 22 8:40 AM
Try to submit the report without the job open and job close statements and see if it running correctly. When the report triggers the submit statement what sy-subrc is returning?
try like this
SUBMIT zpr022_inncometax_report_copy1
WITH pnptimr6 = 'X'
WITH pnpbegda = period-low
WITH pnpendda = period-high
WITH pnppernr-low = pernr-low
WITH pnpabkrs-low = 'IN'
*VIA JOB p_job
*NUMBER l_jobcount
*TO SAP-SPOOL WITHOUT SPOOL DYNPRO
*SPOOL PARAMETERS ls_params
*WITH immediately = space
KEEP IN SPOOL = 'X'
AND RETURN.
‎2007 May 22 8:45 AM
1. Please do not submit within loop , if possible.
2. Check if the Program2 is Active .
‎2007 May 22 8:18 AM
>Even when I keep a break point in Z program1, it is not triggering there
Try to put a break-point to program2.
Also check if it's not a system program. If so, you have to go to system debugging (/hs).
Peter
‎2007 May 22 8:27 AM
Hi balaji
put a breakpoint just above of select statement and check whether ur code is entering into ur select statement or not
Rewards if helpfull
Regards
Pavan
‎2007 May 22 9:46 AM
Hi all,
thanks for all your replies. But still it is not triggering. If I put INITIALIZATION in the called (SUBMITed) program, it is triggering there, but immediately it s coming out of it and not breaking at start-of-selection. Also I need JOB_OPEN and JOB_CLOSE to be there for creating the job.
I want to know one thing, since we are submitting the program using JOB and SPOOL, does this prevents debugging the called (SUBMITed) program?
Regards,
Balaji
‎2007 May 22 10:10 AM
Ok then post ur full code so that it may be helpfull to solve us ur problem
Regards
Pavan
‎2007 May 22 11:53 AM
Hi all,
Please find the full code. I want to debug the sub routine PERFORM send_mail.
1. The main program.
REPORT Z_ITSLIP_MAIL .
TABLES : pa0000, pa0001. .
SELECT-OPTIONS : pernr FOR pa0000-pernr NO INTERVALS.
DATA : count LIKE tbtcjob-jobcount.
DATA : released LIKE btch0000-char1.
DATA:
l_valid,
ls_params LIKE pri_params,
l_jobcount LIKE tbtcjob-jobcount.
PARAMETERS: p_job TYPE tbtcjob-jobname NO-DISPLAY.
PARAMETERS: p_prog(30) TYPE c NO-DISPLAY..
PARAMETERS: p_sdat LIKE sy-datum DEFAULT sy-datum .
PARAMETERS: p_stim TYPE sy-uzeit DEFAULT sy-uzeit .
PARAMETERS : payroll LIKE qppnp-xabkr OBLIGATORY.
*PARAMETERS : period LIKE qppnp-pabrp OBLIGATORY.
*PARAMETERS : year LIKE qppnp-pabrj OBLIGATORY.
select-options : Period for sy-datum.
DATA : BEGIN OF it_p0001 OCCURS 0,
pernr LIKE pa0001-pernr,
END OF it_p0001.
p_sdat = p_sdat + 1.
*Get Print Parameters
CALL FUNCTION 'GET_PRINT_PARAMETERS'
EXPORTING
no_dialog = 'X'
IMPORTING
valid = l_valid
out_parameters = ls_params.
IF pernr[] IS INITIAL.
SELECT pernr
INTO TABLE it_p0001
FROM pa0001.
SORT it_p0001 BY pernr.
DELETE ADJACENT DUPLICATES FROM it_p0001.
LOOP AT it_p0001.
MOVE it_p0001-pernr TO pernr-low.
APPEND pernr.
CLEAR pernr.
ENDLOOP.
ENDIF.
LOOP AT pernr.
CLEAR p_job.
p_stim = p_stim + 120.
CONCATENATE'ITSlip' pernr-low p_job sy-datum INTO p_job SEPARATED BY
space.
CALL FUNCTION 'JOB_OPEN'
EXPORTING
jobname = p_job
IMPORTING
jobcount = l_jobcount.
SUBMIT ZPR022_INNCOMETAX_REPORT_copy
WITH PNPTIMR6 = 'X'
WITH PNPBEGDA = period-low
WITH PNPENDDA = period-high
WITH PNPPERNR-LOW = PERNR-LOW
WITH PNPABKRS-LOW = 'IN'
VIA JOB p_job
NUMBER l_jobcount
TO SAP-SPOOL WITHOUT SPOOL DYNPRO
SPOOL PARAMETERS ls_params
WITH immediately = space
AND RETURN.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobcount = l_jobcount
jobname = p_job
strtimmed = 'X'
PRDMINS = 2.
sdlstrtdt = p_sdat
sdlstrttm = p_stim.
ENDLOOP.
2. The called program.
REPORT zpr022_inncometax_report_copy NO STANDARD PAGE HEADING LINE-SIZE
89.
TABLES : pernr, t512e, t512t,pa0105.
***----
Infotypes
***----
INFOTYPES : 0000, 0001, 0008, 0580.
***----
Types Begin with TY_
***----
DATA : BEGIN OF wa_lgart,
lgart TYPE t512e-lgart,
windo TYPE t512e-windo,
slart TYPE t512e-slart,
lgtxt TYPE t512t-lgtxt,
kztxt TYPE t512t-kztxt,
END OF wa_lgart.
DATA : BEGIN OF wa_income,
particular(24) TYPE c,
lgart TYPE lgart,
cumm(13) TYPE p DECIMALS 2,
proj(13) TYPE p DECIMALS 2,
exem(13) TYPE p DECIMALS 2,
annu(13) TYPE p DECIMALS 2,
END OF wa_income.
DATA : BEGIN OF wa_income1,
particular(24) TYPE c,
lgart TYPE lgart,
cumm(13) TYPE c,
proj(13) TYPE c,
exem(13) TYPE c,
annu(13) TYPE c,
END OF wa_income1.
DATA : BEGIN OF wa_invest,
particular(40) TYPE c,
betrg(13) TYPE p DECIMALS 2,
END OF wa_invest.
DATA : BEGIN OF wa_invest1,
particular(40) TYPE c,
betrg(13) TYPE c,
END OF wa_invest1.
DATA : BEGIN OF wa_deduct,
particular(40) TYPE c,
sbs TYPE pin_sbsec,
betrg(13) TYPE p DECIMALS 2,
END OF wa_deduct.
DATA : BEGIN OF wa_deduct1,
particular(40) TYPE c,
sbs TYPE c,
betrg(13) TYPE c,
END OF wa_deduct1.
DATA: BEGIN OF cocd OCCURS 10.
INCLUDE STRUCTURE pincc.
DATA: END OF cocd.
DATA: BEGIN OF f16 OCCURS 10.
INCLUDE STRUCTURE pin16.
DATA: END OF f16.
***----
Constants Begin with C_
***----
***----
Data Begin with W_
***----
DATA : w_clstrid TYPE t500l-relid, "Cluster ID
w_molga TYPE t500p-molga, "Country Code
w_period(6) TYPE c,
w_var(2) TYPE n,
w_pr_from1 TYPE t569v-pabrj, "year
w_pr_to1 TYPE t569v-pabrp, "period
w_fpper-low1 TYPE pc261-fpper,
w_year(4) TYPE n,
w_ltaexe(13) TYPE p DECIMALS 2,
w_cumm(13) TYPE p DECIMALS 2,
w_lgtxt(20) TYPE c,
w_lgart TYPE lgart,
w_amount(13) TYPE p DECIMALS 2,
w_wage(4) TYPE c,
w_flag(1) TYPE c,
w_total(13) TYPE p DECIMALS 2,
w_start TYPE sy-datum,
w_end TYPE sy-datum,
w_date TYPE sy-datum,
w_index(2) TYPE n VALUE 00,
w_investnm(40),
w_investnm1(40),
w_ded0585(13) TYPE p DECIMALS 2,
w_itext TYPE t7ini3-itext,
w_dtext TYPE t7ini8-sbdds,
w_inprvemp(13) TYPE p DECIMALS 2,
w_nettaxin(13) TYPE p DECIMALS 2,
w_ptaxprvemp(13) TYPE p DECIMALS 2,
w_ptaxcremp(13) TYPE p DECIMALS 2,
w_othtaxin(13) TYPE p DECIMALS 2,
w_gssin(13) TYPE p DECIMALS 2,
w_dedtot(13) TYPE p DECIMALS 2,
w_invtot(13) TYPE p DECIMALS 2,
w_inchrtax(13) TYPE p DECIMALS 2,
w_nettaxpay(13) TYPE p DECIMALS 2,
w_surchr(13) TYPE p DECIMALS 2,
w_cess(13) TYPE p DECIMALS 2,
w_totintax(13) TYPE p DECIMALS 2,
w_tdsothin(13) TYPE p DECIMALS 2,
w_cessrec(13) TYPE p DECIMALS 2,
w_prvemp(13) TYPE p DECIMALS 2,
w_tottaxpay(13) TYPE p DECIMALS 2,
w_var1(13) TYPE p DECIMALS 2,
w_var2(13) TYPE p DECIMALS 2,
w_balit(13) TYPE p DECIMALS 2,
w_avgmon(13) TYPE p DECIMALS 2,
w_remmon(2) TYPE n,
w_profund(13) TYPE p DECIMALS 2,
w_pf(13) TYPE p DECIMALS 2,
w_dept(25) TYPE c,
w_desig(25) TYPE c,
w_join TYPE sy-datum,
w_annperk(13) TYPE p DECIMALS 2,
w_percent TYPE pin_txexm,
w_limit TYPE pin_sdvlt,
w_st0008 TYPE sy-datum,
w_en0008 TYPE sy-datum.
DATA: w_cmonth(2) TYPE n,
w_cyear(4) TYPE n,
w_cdate LIKE sy-datum,
w_ldate LIKE sy-datum.
***----
***----
Internal tables Begin with IT_
***----
DATA : it_0001 TYPE STANDARD TABLE OF pa0001,
it_data TYPE STANDARD TABLE OF pa0001,
it_0000 TYPE STANDARD TABLE OF pa0000,
it_lgart LIKE STANDARD TABLE OF wa_lgart,
it_pc261 TYPE STANDARD TABLE OF pc261,
it_payrt_result TYPE payin_result,
it_income LIKE STANDARD TABLE OF wa_income,
it_income1 LIKE STANDARD TABLE OF wa_income1,
it_wage LIKE it_income,
it_invest LIKE STANDARD TABLE OF wa_invest,
it_invest1 LIKE STANDARD TABLE OF wa_invest1,
it_deduct LIKE STANDARD TABLE OF wa_deduct,
it_deduct1 LIKE STANDARD TABLE OF wa_deduct1,
it_0586 TYPE STANDARD TABLE OF pa0586,
it_0580 TYPE STANDARD TABLE OF pa0580,
it_0584 TYPE STANDARD TABLE OF pa0584,
it_0585 TYPE STANDARD TABLE OF pa0585,
it_t7ini3 TYPE STANDARD TABLE OF t7ini3,
it_info TYPE STANDARD TABLE OF zpt011_fep_pay,
it_0008 TYPE STANDARD TABLE OF pa0008,
it_rt TYPE STANDARD TABLE OF pbwla WITH HEADER LINE.
DATA : p_email1 LIKE somlreci1-receiver,
DEFAULT 'tripti_lalvani@mindtree.com'
*,
p_sender LIKE somlreci1-receiver.
DEFAULT 'test123@sapdev.co.uk',
*DATA DECLARATION
DATA: gd_recsize TYPE i.
data: date like sy-datum.
Spool IDs
TYPES: BEGIN OF t_tbtcp.
INCLUDE STRUCTURE tbtcp.
TYPES: END OF t_tbtcp.
DATA: it_tbtcp TYPE STANDARD TABLE OF t_tbtcp INITIAL SIZE 0,
wa_tbtcp TYPE t_tbtcp.
Job Runtime Parameters
DATA: gd_eventid LIKE tbtcm-eventid,
gd_eventparm LIKE tbtcm-eventparm,
gd_external_program_active LIKE tbtcm-xpgactive,
gd_jobcount LIKE tbtcm-jobcount,
gd_jobname LIKE tbtcm-jobname,
gd_stepcount LIKE tbtcm-stepcount,
gd_error TYPE sy-subrc,
gd_reciever TYPE sy-subrc.
DATA: w_recsize TYPE i.
DATA: gd_subject LIKE sodocchgi1-obj_descr,
it_mess_bod LIKE solisti1 OCCURS 0 WITH HEADER LINE,
it_mess_att LIKE solisti1 OCCURS 0 WITH HEADER LINE,
gd_sender_type LIKE soextreci1-adr_typ,
gd_attachment_desc TYPE so_obj_nam,
gd_attachment_name TYPE so_obj_des.
Spool to PDF conversions
DATA: gd_spool_nr LIKE tsp01-rqident,
gd_destination LIKE rlgrap-filename,
gd_bytecount LIKE tst01-dsize,
gd_buffer TYPE string.
Binary store for PDF
DATA: BEGIN OF it_pdf_output OCCURS 0.
INCLUDE STRUCTURE tline.
DATA: END OF it_pdf_output.
CONSTANTS: c_dev LIKE sy-sysid VALUE 'DEV',
c_no(1) TYPE c VALUE ' ',
c_device(4) TYPE c VALUE 'LOCL'.
***----
Work Area Begin with WA_
***----
DATA : wa_0001 LIKE LINE OF it_0001,
wa_data LIKE LINE OF it_data,
wa_0000 LIKE LINE OF it_0000,
wa_pc261 LIKE LINE OF it_pc261,
wa_payrt_result TYPE LINE OF hrpay99_rt,
wa_paycrt_result TYPE LINE OF hrpay99_crt,
wa_0586 LIKE LINE OF it_0586,
wa_0580 LIKE LINE OF it_0580,
wa_0584 LIKE LINE OF it_0584,
wa_0585 LIKE LINE OF it_0585,
wa_t7ini3 LIKE LINE OF it_t7ini3,
wa_in LIKE LINE OF it_income,
wa_info LIKE LINE OF it_info,
wa_0008 LIKE LINE OF it_0008,
wa_wage LIKE wa_income,
wa_rt TYPE pbwla.
***----
Field Symbols Begin with FS_
***----
FIELD-SYMBOLS: <itc> TYPE ANY,
<ain> TYPE ANY,
<amt> TYPE ANY,
<sbdnn> TYPE ANY,
<tot> TYPE ANY.
***----
Select Options Begin with SO_
***----
*SELECT-OPTIONS :
***----
Parameters Begin with PR_
***----
*PARAMETERS :
***----
Initialisation
***----
INITIALIZATION.
date = sy-datum.
*----
Selection-Screen
***----
************************************************************************
S T A R T O F S E L E C T I O N
************************************************************************
START-OF-SELECTION.
GET pernr.
SELECT * FROM pa0001 INTO CORRESPONDING FIELDS OF TABLE it_0001
WHERE pernr IN pnppernr
AND abkrs IN pnpabkrs
AND bukrs IN pnpbukrs.
DELETE ADJACENT DUPLICATES FROM it_0001 COMPARING pernr.
*******************************************************************
SELECT * FROM pa0000 INTO CORRESPONDING FIELDS OF TABLE it_0000
WHERE pernr IN pnppernr.
*******************************************************************
SELECT t512e~lgart
t512e~slart
t512t~lgtxt
t512t~kztxt
INTO CORRESPONDING FIELDS OF TABLE it_lgart
FROM t512e INNER JOIN t512t ON
t512elgart = t512tlgart AND
t512emolga = t512tmolga
WHERE t512e~forml = 'ZPY2' AND
t512t~sprsl = sy-langu AND
t512e~molga = '40' AND
t512e~windo EQ 'W1' .
LOOP AT it_lgart INTO wa_lgart WHERE lgart+0(1) EQ '/'.
DELETE it_lgart.
ENDLOOP.
SORT it_lgart BY lgart.
**---Here we are getting the start and the End of the financial year...
CLEAR : w_date, w_start, w_end, w_year.
w_date = sy-datum.
**---Here we get the start date of the year.....
IF w_date+4(2) BETWEEN '01' AND '04'.
w_year = w_date+0(4).
w_year = w_year - 1.
CONCATENATE w_year '04' '01' INTO w_start.
ELSE.
CONCATENATE w_date+0(4) '04' '01' INTO w_start.
ENDIF.
**---Here we get the end date of the year......
CLEAR : w_year.
IF w_date+4(2) BETWEEN '01' AND '04'.
CONCATENATE w_date+0(4) '03' '31' INTO w_end.
ELSE.
w_year = w_date+0(4).
w_year = w_year + 1.
CONCATENATE w_year '03' '31' INTO w_end.
ENDIF.
CLEAR : w_year.
**
************************************************************************
E N D O F S E L E C T I O N
************************************************************************
END-OF-SELECTION.
**---perform for getting the Income tax Calculation part....
PERFORM f000_get_income.
PERFORM send_mail.
*----
User Command Processing
***----
*AT USER-COMMAND.
*----
Top Of Page
***----
TOP-OF-PAGE.
WRITE : / 'Mindtree Consulting Pvt Ltd',
/ 'No.42, 27th Cross',
/ '2nd Stage, Banashankari',
/ 'Bangalore - 560070'.
&----
*& Form f000_get_income
&----
text
----
-->P_IT_0001 text
-->P_IT_LGART text
----
FORM f000_get_income.
LOOP AT it_0001 INTO wa_0001.
CLEAR : wa_invest, wa_deduct, wa_income.
REFRESH : it_invest, it_deduct, it_income.
CONCATENATE pnppabrj pnppabrp INTO w_period.
**---Here we are getting the Earnings in India from RT Table...
**---Getting the relid for each employee....
CALL FUNCTION 'PYXX_GET_RELID_FROM_PERNR'
EXPORTING
employee = wa_0001-pernr
IMPORTING
relid = w_clstrid
molga = w_molga
EXCEPTIONS
error_reading_infotype_0001 = 1
error_reading_molga = 2
error_reading_relid = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
**---Reading the rgdir of cluster 'CU' for each of the employees...
CALL FUNCTION 'CU_READ_RGDIR'
EXPORTING
persnr = wa_0001-pernr
TABLES
in_rgdir = it_pc261
EXCEPTIONS
no_record_found = 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.
CLEAR : w_lgtxt, w_cumm, w_ltaexe, w_flag.
LOOP AT it_pc261 INTO wa_pc261 WHERE fpper = w_period
AND srtza = 'A'.
**---Importing the Payroll cluster results for each employee from RT....
CALL FUNCTION 'PYXX_READ_PAYROLL_RESULT'
EXPORTING
clusterid = w_clstrid
employeenumber = wa_0001-pernr
sequencenumber = wa_pc261-seqnr
CHANGING
payroll_result = it_payrt_result
EXCEPTIONS
illegal_isocode_or_clusterid = 1
error_generating_import = 2
import_mismatch_error = 3
subpool_dir_full = 4
no_read_authority = 5
no_record_found = 6
versions_do_not_match = 7
error_reading_archive = 8
error_reading_relid = 9
OTHERS = 10.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
**---Processing....
LOOP AT it_lgart INTO wa_lgart.
CLEAR : wa_income.
IF wa_lgart-lgart NE '5004' AND
wa_lgart-lgart NE '5007' AND
wa_lgart-lgart NE '5008' AND
wa_lgart-lgart NE '5011' AND
wa_lgart-lgart NE '5012' AND
wa_lgart-lgart NE '5014' AND
wa_lgart-lgart NE '5017' AND
wa_lgart-lgart NE '5018' AND
wa_lgart-lgart NE '5027' AND
wa_lgart-lgart NE '5029' AND
wa_lgart-lgart NE '5031' AND
wa_lgart-lgart NE '5039' AND
wa_lgart-lgart NE '5060' AND
wa_lgart-lgart NE '7004' AND
wa_lgart-lgart NE '7007' AND
wa_lgart-lgart NE '7008' AND
wa_lgart-lgart NE '7011' AND
wa_lgart-lgart NE '7012' AND
wa_lgart-lgart NE '7014' AND
wa_lgart-lgart NE '7017' AND
wa_lgart-lgart NE '7018' AND
wa_lgart-lgart NE '7027' AND
wa_lgart-lgart NE '7029' AND
wa_lgart-lgart NE '7031' AND
wa_lgart-lgart NE '7039' AND
wa_lgart-lgart NE '7060'.
LOOP AT it_payrt_result-inter-crt INTO wa_paycrt_result
WHERE cumty = 'Y' AND lgart EQ wa_lgart-lgart.
IF wa_lgart-lgart+0(1) = '7'.
LOOP AT it_payrt_result-inter-crt INTO wa_paycrt_result
WHERE cumty = 'M' AND lgart EQ wa_lgart-lgart.
READ TABLE it_payrt_result-inter-rt INTO
wa_payrt_result WITH
KEY lgart = wa_lgart-lgart.
IF sy-subrc = 0.
wa_income-particular = wa_lgart-lgtxt.
wa_income-lgart = wa_paycrt_result-lgart.
wa_income-cumm = wa_paycrt_result-betrg.
ENDIF.
ENDLOOP.
ELSE.
wa_income-particular = wa_lgart-lgtxt.
wa_income-lgart = wa_paycrt_result-lgart.
wa_income-cumm = wa_paycrt_result-betrg.
ENDIF.
ENDLOOP.
REFRESH : it_0008.
CLEAR : wa_0008.
PERFORM f010_get_date USING pnppabrp pnppabrj.
CALL FUNCTION 'SG_PS_GET_LAST_DAY_OF_MONTH'
EXPORTING
day_in = w_cdate
IMPORTING
last_day_of_month = w_ldate
EXCEPTIONS
day_in_not_valid = 1
OTHERS = 2.
SELECT * FROM pa0008 INTO CORRESPONDING FIELDS OF TABLE
it_0008 WHERE pernr = wa_0001-pernr
AND begda <= w_cdate
AND endda >= w_ldate.
IF it_0008 IS INITIAL.
SELECT * FROM pa0008 INTO CORRESPONDING FIELDS OF TABLE
it_0008 WHERE pernr = wa_0001-pernr
AND begda BETWEEN w_cdate AND w_ldate.
IF it_0008 IS INITIAL.
SELECT * FROM pa0008 INTO CORRESPONDING FIELDS OF TABLE
it_0008 WHERE pernr = wa_0001-pernr
AND begda = w_cdate.
ENDIF.
ENDIF.
CLEAR : w_st0008, w_en0008.
LOOP AT it_0008 INTO wa_0008.
w_st0008 = wa_0008-begda.
w_en0008 = wa_0008-endda.
EXIT.
ENDLOOP.
CLEAR : wa_rt.
REFRESH : it_rt.
CALL FUNCTION 'RP_FILL_WAGE_TYPE_TABLE'
EXPORTING
begda = w_st0008
endda = w_en0008
infty = '0008'
pernr = wa_0001-pernr
TABLES
ppbwla = it_rt
EXCEPTIONS
error_at_indirect_evaluation = 1
OTHERS = 2.
LOOP AT it_rt INTO wa_rt.
CLEAR : w_var.
IF wa_rt-lgart = '5000' AND "Basic
wa_lgart-lgart = '5000'.
w_var = 12 - pnppabrp.
wa_income-proj = wa_rt-betrg * w_var.
wa_income-lgart = wa_rt-lgart.
**---Here we are checking for the arrers of Basic to deduct from the
*cummulation amount...
READ TABLE it_payrt_result-inter-rt INTO wa_payrt_result
WITH KEY lgart = '7000'.
IF sy-subrc = 0.
wa_income-cumm = wa_income-cumm - wa_payrt_result-betrg.
ENDIF.
ENDIF.
IF wa_rt-lgart = '5001' AND "HRA
wa_lgart-lgart = '5001'.
w_var = 12 - pnppabrp.
wa_income-proj = wa_rt-betrg * w_var.
wa_income-lgart = wa_rt-lgart.
**---Here we are checking for the arrers of HRA to deduct from the
*cummulation amount...
READ TABLE it_payrt_result-inter-rt INTO wa_payrt_result
WITH KEY lgart = '7001'.
IF sy-subrc = 0.
wa_income-cumm = wa_income-cumm - wa_payrt_result-betrg.
ENDIF.
ENDIF.
IF wa_rt-lgart = '5003' AND "Conveyance
wa_lgart-lgart = '5003'.
w_var = 12 - pnppabrp.
wa_income-proj = wa_rt-betrg * w_var.
wa_income-lgart = wa_rt-lgart.
**---Here we are checking for the arrers of Conveyance to deduct from
*the cummulation amount...
READ TABLE it_payrt_result-inter-rt INTO wa_payrt_result
WITH KEY lgart = '7003'.
IF sy-subrc = 0.
wa_income-cumm = wa_income-cumm - wa_payrt_result-betrg.
ENDIF.
ENDIF.
IF wa_rt-lgart = '5005' AND "Special Pay
wa_lgart-lgart = '5005'.
w_var = 12 - pnppabrp.
wa_income-proj = wa_rt-betrg * w_var.
wa_income-lgart = wa_rt-lgart.
**---Here we are checking for the arrers of Special pay to deduct from
*the cummulation amount...
READ TABLE it_payrt_result-inter-rt INTO wa_payrt_result
WITH KEY lgart = '7005'.
IF sy-subrc = 0.
wa_income-cumm = wa_income-cumm - wa_payrt_result-betrg.
ENDIF.
ENDIF.
IF wa_rt-lgart = '5002' AND "CLA
wa_lgart-lgart = '5002'.
w_var = 12 - pnppabrp.
wa_income-proj = wa_rt-betrg * w_var.
wa_income-lgart = wa_rt-lgart.
**---Here we are checking for the arrers of CLA to deduct from the
*cummulation amount...
READ TABLE it_payrt_result-inter-rt INTO wa_payrt_result
WITH KEY lgart = '7002'.
IF sy-subrc = 0.
wa_income-cumm = wa_income-cumm - wa_payrt_result-betrg.
ENDIF.
ENDIF.
ENDLOOP.
LOOP AT it_payrt_result-inter-rt INTO wa_payrt_result
WHERE lgart = wa_lgart-lgart.
CLEAR : w_var.
IF wa_payrt_result-lgart = '5000' AND "Basic
wa_lgart-lgart = '5000'.
w_var = 12 - pnppabrp.
wa_income-proj = wa_payrt_result-betrg * w_var.
wa_income-lgart = wa_payrt_result-lgart.
ENDIF.
***---Here we are checking for the arrers of Basic to deduct from the
*cummulation amount...
READ TABLE it_payrt_result-inter-rt INTO wa_payrt_result
WITH KEY lgart = '7000'.
IF sy-subrc = 0.
*wa_income-cumm = wa_income-cumm - wa_payrt_result-betrg.
ENDIF.
*
IF wa_payrt_result-lgart = '5001' AND "HRA
wa_lgart-lgart = '5001'.
w_var = 12 - pnppabrp.
wa_income-proj = wa_payrt_result-betrg * w_var.
wa_income-lgart = wa_payrt_result-lgart.
ENDIF.
***---Here we are checking for the arrers of HRA to deduct from the
*cummulation amount...
READ TABLE it_payrt_result-inter-rt INTO wa_payrt_result
WITH KEY lgart = '7001'.
IF sy-subrc = 0.
*wa_income-cumm = wa_income-cumm - wa_payrt_result-betrg.
ENDIF.
*
IF wa_payrt_result-lgart = '5003' AND "Conveyance
wa_lgart-lgart = '5003'.
w_var = 12 - pnppabrp.
wa_income-proj = wa_payrt_result-betrg * w_var.
wa_income-lgart = wa_payrt_result-lgart.
ENDIF.
***---Here we are checking for the arrers of Conveyance to deduct from
*the cummulation amount...
READ TABLE it_payrt_result-inter-rt INTO wa_payrt_result
WITH KEY lgart = '7003'.
IF sy-subrc = 0.
*wa_income-cumm = wa_income-cumm - wa_payrt_result-betrg.
ENDIF.
*
IF wa_payrt_result-lgart = '5005' AND "Special Pay
wa_lgart-lgart = '5005'.
w_var = 12 - pnppabrp.
wa_income-proj = wa_payrt_result-betrg * w_var.
wa_income-lgart = wa_payrt_result-lgart.
ENDIF.
***---Here we are checking for the arrers of Special pay to deduct from
*the cummulation amount...
READ TABLE it_payrt_result-inter-rt INTO wa_payrt_result
WITH KEY lgart = '7005'.
IF sy-subrc = 0.
*wa_income-cumm = wa_income-cumm - wa_payrt_result-betrg.
ENDIF.
*
IF wa_payrt_result-lgart = '5002' AND "CLA
wa_lgart-lgart = '5002'.
w_var = 12 - pnppabrp.
wa_income-proj = wa_payrt_result-betrg * w_var.
wa_income-lgart = wa_payrt_result-lgart.
ENDIF.
***---Here we are checking for the arrers of CLA to deduct from the
*cummulation amount...
READ TABLE it_payrt_result-inter-rt INTO wa_payrt_result
WITH KEY lgart = '7002'.
IF sy-subrc = 0.
*wa_income-cumm = wa_income-cumm - wa_payrt_result-betrg.
ENDIF.
ENDLOOP.
IF wa_lgart-lgart = '5065'.
READ TABLE it_payrt_result-inter-rt INTO wa_payrt_result
WITH KEY lgart = '5065'.
IF sy-subrc = 0.
wa_income-particular = wa_lgart-lgtxt.
wa_income-lgart = wa_lgart-lgart.
wa_income-cumm = wa_payrt_result-betrg.
wa_income-proj = 0.
ENDIF.
ENDIF.
CLEAR : wa_payrt_result.
IF wa_lgart-lgart = '5001'.
"HRA Exemptions
READ TABLE it_payrt_result-inter-rt INTO wa_payrt_result
WITH KEY lgart = '/4E4'.
IF sy-subrc = 0.
wa_income-exem = wa_payrt_result-betrg.
wa_income-lgart = wa_payrt_result-lgart.
ENDIF.
ENDIF.
CLEAR : wa_payrt_result.
IF wa_lgart-lgart = '5003'.
"Conveyance Exemptions
READ TABLE it_payrt_result-inter-rt INTO wa_payrt_result
WITH KEY lgart = '/4E3'.
IF sy-subrc = 0.
wa_income-exem = wa_payrt_result-betrg.
wa_income-lgart = wa_payrt_result-lgart.
ENDIF.
ENDIF.
CLEAR : wa_payrt_result.
IF wa_lgart-lgart = '5025'.
"Leave Encashment
READ TABLE it_payrt_result-inter-rt INTO wa_payrt_result
WITH KEY lgart = '/4E7'.
IF sy-subrc = 0.
wa_income-particular = wa_lgart-lgtxt.
wa_income-lgart = wa_payrt_result-lgart.
wa_income-cumm = wa_payrt_result-betrg.
wa_income-exem = wa_payrt_result-betrg.
ENDIF.
ENDIF.
**---Here we are calculating the annual field of the IT it_income....
wa_income-annu = ( wa_income-cumm + wa_income-proj ) -
wa_income-exem.
IF wa_income IS NOT INITIAL.
APPEND wa_income TO it_income.
ENDIF.
ENDIF.
ENDLOOP.
ENDLOOP.
**************************
READ TABLE it_payrt_result-inter-rt INTO wa_payrt_result
WITH KEY lgart = '5038'.
IF sy-subrc EQ 0.
READ TABLE it_lgart INTO wa_lgart WITH KEY lgart = '5038'.
wa_wage-annu = wa_payrt_result-betrg.
wa_wage-particular = wa_lgart-lgtxt.
wa_wage-lgart = w_lgart.
wa_wage-cumm = wa_payrt_result-betrg.
APPEND wa_wage TO it_wage.
ENDIF.
****************************
**---Here we are looping the RGDIR internal table for the LTA Amount in
*Offcycle....
LOOP AT it_pc261 INTO wa_pc261 WHERE fpper = '000000'
AND srtza = 'A'.
IF w_flag IS INITIAL.
IF wa_pc261-fpbeg+4(2) = '01' OR
wa_pc261-fpbeg+4(2) = '02' OR
wa_pc261-fpbeg+4(2) = '03'.
w_year = wa_pc261-fpbeg+0(4) - 1.
w_pr_from1 = w_year.
ELSE.
w_pr_from1 = wa_pc261-fpbeg+0(4).
ENDIF.
IF wa_pc261-fpbeg+4(2) EQ '01'.
w_pr_to1 = '10'.
ELSEIF wa_pc261-fpbeg+4(2) EQ '02'.
w_pr_to1 = '11'.
ELSEIF wa_pc261-fpbeg+4(2) EQ '03'.
w_pr_to1 = '12'.
ELSEIF wa_pc261-fpbeg+4(2) EQ '04'.
w_pr_to1 = '01'.
ELSEIF wa_pc261-fpbeg+4(2) EQ '05'.
w_pr_to1 = '02'.
ELSEIF wa_pc261-fpbeg+4(2) EQ '06'.
w_pr_to1 = '03'.
ELSEIF wa_pc261-fpbeg+4(2) EQ '07'.
w_pr_to1 = '04'.
ELSEIF wa_pc261-fpbeg+4(2) EQ '08'.
w_pr_to1 = '05'.
ELSEIF wa_pc261-fpbeg+4(2) EQ '09'.
w_pr_to1 = '06'.
ELSEIF wa_pc261-fpbeg+4(2) EQ '10'.
w_pr_to1 = '07'.
ELSEIF wa_pc261-fpbeg+4(2) EQ '11'.
w_pr_to1 = '08'.
ELSEIF wa_pc261-fpbeg+4(2) EQ '12'.
w_pr_to1 = '09'.
ENDIF.
CONCATENATE w_pr_from1 w_pr_to1 INTO w_fpper-low1.
IF w_period = w_fpper-low1.
w_flag = 'X'.
CLEAR : wa_payrt_result.
**---Importing the Payroll cluster results for each employee from RT....
CALL FUNCTION 'PYXX_READ_PAYROLL_RESULT'
EXPORTING
clusterid = w_clstrid
employeenumber = wa_0001-pernr
sequencenumber = wa_pc261-seqnr
CHANGING
payroll_result = it_payrt_result
EXCEPTIONS
illegal_isocode_or_clusterid = 1
error_generating_import = 2
import_mismatch_error = 3
subpool_dir_full = 4
no_read_authority = 5
no_record_found = 6
versions_do_not_match = 7
error_reading_archive = 8
error_reading_relid = 9
OTHERS = 10.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
LOOP AT it_lgart INTO wa_lgart WHERE lgart = '5039'.
"LTA
LOOP AT it_payrt_result-inter-crt INTO wa_paycrt_result
WHERE lgart = '5039' AND cumty = 'C'.
w_lgtxt = wa_lgart-lgtxt.
w_lgart = wa_paycrt_result-betrg.
w_cumm = wa_paycrt_result-betrg.
ENDLOOP.
ENDLOOP.
ENDIF.
ENDIF.
ENDLOOP.
**---Here we are looping through the RT table to get the LTA Exemptions
*Amount....
LOOP AT it_payrt_result-inter-rt INTO wa_payrt_result
WHERE lgart = '/4E5'. "LTA Exemptions
w_ltaexe = wa_payrt_result-betrg.
wa_income-particular = w_lgtxt.
wa_income-lgart = w_lgart.
wa_income-cumm = w_cumm.
wa_income-exem = w_ltaexe.
ENDLOOP.
**---Here we are deducting the arrears amount from the original wagetype
*of the
**---arrear and then calculating the total of the annual column....
CLEAR : wa_income.
LOOP AT it_income INTO wa_income.
CLEAR : w_wage.
IF wa_income-lgart+0(1) = '5'.
CONCATENATE '7' wa_income-lgart+1(3) INTO w_wage.
READ TABLE it_income INTO wa_in WITH KEY lgart = w_wage.
IF sy-subrc = 0.
CLEAR : w_amount.
w_amount = wa_in-annu.
wa_income-annu = wa_income-annu - w_amount.
MODIFY it_income FROM wa_income TRANSPORTING annu.
ENDIF.
ENDIF.
ENDLOOP.
*************************************
APPEND LINES OF it_wage TO it_income.
*************************************
**---perform to get the data of the Investments of the employee...
PERFORM f00_investmants USING wa_0001.
**************************************
LOOP AT it_income INTO wa_income.
READ TABLE it_0000 INTO wa_0000 WITH KEY pernr = wa_0001-pernr
massn = 'GO'.
IF sy-subrc EQ 0 AND wa_0000-begda0(6) = w_cdate0(6).
CLEAR wa_income-proj.
wa_income-annu = wa_income-cumm - wa_income-exem.
MODIFY it_income FROM wa_income.
ENDIF.
ENDLOOP.
LOOP AT it_income INTO wa_income.
READ TABLE it_0000 INTO wa_0000 WITH KEY pernr = wa_0001-pernr
massn = 'FF'.
IF sy-subrc EQ 0 AND wa_0000-begda0(6) = w_cdate0(6).
CLEAR wa_income-proj.
wa_income-annu = wa_income-cumm - wa_income-exem.
MODIFY it_income FROM wa_income.
ENDIF.
ENDLOOP.
**************************************
**---Perform to reach to the Income chargable to Tax of the Employee....
PERFORM f001_chargeable_income USING wa_0001.
**---perform to display the data in IT form.....
PERFORM f00_output_data TABLES it_income it_deduct it_invest
USING wa_0001.
ENDLOOP.
ENDFORM. " f000_get_income
&----
*& Form f00_output_data
&----
text
----
-->P_IT_INCOME text
-->P_WA_0001 text
----
FORM f00_output_data TABLES p_it_income STRUCTURE wa_income
p_it_deduct STRUCTURE wa_deduct
p_it_invest STRUCTURE wa_invest
USING p_wa_0001 TYPE pa0001.
CLEAR : w_dept, w_desig, w_join.
rp-provide-from-last p0001 space '18000101' '99991231'.
rp-provide-from-frst p0000 space '18000101' '99991231'.
w_join = p0000-begda.
SELECT SINGLE plstx FROM t528t INTO w_desig
WHERE sprsl = 'E'
AND plans = p0001-plans.
SELECT SINGLE orgtx FROM t527x INTO w_dept
WHERE sprsl = 'E'
AND orgeh = p0001-orgeh.
WRITE : /.
WRITE : / 'EMPLOYEE NUMBER :',
p_wa_0001-pernr.
WRITE AT 35 'EMPLOYEE NAME :'.
WRITE : p_wa_0001-ename.
WRITE : / 'DEPARTMENT :',
w_dept.
WRITE AT 35 'DESIGNATION :'.
WRITE : w_desig.
WRITE : / 'DATE OF JOINING :',
w_join.
**---Here we are starting the output of the IT Report....
WRITE : /.
ULINE.
WRITE AT 28 'INCOME TAX CALCULATION'.
ULINE.
WRITE : /.
WRITE : / 'Particulars'.
WRITE AT 26 'Cummulative Total'.
WRITE AT 45 'Add:Projected'.
WRITE AT 61 'Less:Exempted'.
WRITE AT 77 'Annual. Rs.'.
WRITE : /.
LOOP AT p_it_income INTO wa_income.
CLEAR : wa_income1.
WRITE wa_income-particular TO wa_income1-particular.
WRITE wa_income-lgart RIGHT-JUSTIFIED TO wa_income1-lgart.
WRITE wa_income-cumm RIGHT-JUSTIFIED TO wa_income1-cumm.
WRITE wa_income-proj RIGHT-JUSTIFIED TO wa_income1-proj.
WRITE wa_income-exem RIGHT-JUSTIFIED TO wa_income1-exem.
WRITE wa_income-annu RIGHT-JUSTIFIED TO wa_income1-annu.
APPEND wa_income1 TO it_income1.
ENDLOOP.
LOOP AT it_income1 INTO wa_income1.
WRITE : / wa_income1-particular LEFT-JUSTIFIED UNDER 'Particulars',
wa_income1-cumm UNDER 'Cummulative Total',
wa_income1-proj UNDER 'Add:Projected',
wa_income1-exem UNDER 'Less:Exempted',
wa_income1-annu UNDER 'Annual. Rs.'.
w_total = w_total + wa_income-annu.
ENDLOOP.
WRITE : /.
WRITE : / 'Add. Value of Perquisites under sec 17(2)',
w_annperk RIGHT-JUSTIFIED UNDER 'Annual. Rs.'.
w_total = w_total + w_annperk.
WRITE : /.
WRITE : 'TOTAL INCOME'.
WRITE : w_total RIGHT-JUSTIFIED UNDER 'Annual. Rs.'.
**---Here we are getting the Net taxable Income......
w_nettaxin = w_total + w_inprvemp.
**---Here we are getting the Gross Taxable income....
w_gssin = w_nettaxin - ( w_ptaxcremp + w_ptaxprvemp ).
w_gssin = w_gssin + w_othtaxin.
**---Here we are getting the Income Chargable to Tax.....
CLEAR : w_inchrtax.
w_inchrtax = w_gssin - ( w_dedtot + w_invtot ).
**---Here we are displaying the remaining items to reach to Income
*Chargeable to tax...
WRITE : /.
WRITE : 'Add: Income received from Previous Employer'.
WRITE : w_inprvemp RIGHT-JUSTIFIED UNDER 'Annual. Rs.'.
WRITE : /.
WRITE : 'NET TAXABLE INCOME'.
WRITE : w_nettaxin RIGHT-JUSTIFIED UNDER 'Annual. Rs.',
/.
WRITE : / 'Less: Prof.Tax recovered by Previous Employer',
w_ptaxprvemp RIGHT-JUSTIFIED UNDER 'Annual. Rs.',
/ 'Less: Prof.Tax recovered by Current Employer',
w_ptaxcremp RIGHT-JUSTIFIED UNDER 'Annual. Rs.',
/ 'Add: Other Taxable Income Reported by the Employee',
w_othtaxin RIGHT-JUSTIFIED UNDER 'Annual. Rs.',
/,
/ 'GROSS TAXABLE INCOME',
w_gssin RIGHT-JUSTIFIED UNDER 'Annual. Rs.'.
WRITE : /.
LOOP AT p_it_deduct INTO wa_deduct.
CLEAR : wa_deduct1.
WRITE wa_deduct-particular TO wa_deduct1-particular.
WRITE wa_deduct-sbs RIGHT-JUSTIFIED TO wa_deduct1-sbs.
WRITE wa_deduct-betrg RIGHT-JUSTIFIED TO wa_deduct1-betrg.
APPEND wa_deduct1 TO it_deduct1.
ENDLOOP.
LOOP AT it_deduct1 INTO wa_deduct1.
IF wa_deduct1-sbs NE '01'
AND wa_deduct1-sbs NE '12'
AND wa_deduct1-sbs NE '13'.
WRITE : / 'Less:', wa_deduct1-particular,
wa_deduct1-betrg UNDER 'Annual. Rs.'.
ENDIF.
ENDLOOP.
NEW-LINE.
WRITE : 'Less: Other Deductions',
w_invtot RIGHT-JUSTIFIED UNDER 'Annual. Rs.',
/,
/ 'INCOME CHARGEABLE TO TAX (Rounded Off)',
w_inchrtax RIGHT-JUSTIFIED UNDER 'Annual. Rs.'.
**---Here we are displaying the Income Tax Calculation.....
WRITE : /.
ULINE.
WRITE AT 28 'INCOME TAX DEDUCTION'.
ULINE.
WRITE : / 'INCOME TAX PAYABLE',
w_nettaxpay RIGHT-JUSTIFIED UNDER 'Annual. Rs.',
/ 'Add: Surcharges on Income Tax',
w_surchr RIGHT-JUSTIFIED UNDER 'Annual. Rs.',
/ 'Add: Cess',
w_cess RIGHT-JUSTIFIED UNDER 'Annual. Rs.',
/,
'TOTAL INCOME TAX & S/C & CESS PAYABLE',
w_totintax RIGHT-JUSTIFIED UNDER 'Annual. Rs.',
/ 'Less: I.Tax & S/C Paid by Previous Employer',
w_prvemp RIGHT-JUSTIFIED UNDER 'Annual. Rs.',
/ 'Less: TDS on Other Income',
w_tdsothin RIGHT-JUSTIFIED UNDER 'Annual. Rs.',
/ 'I.Tax & S/C & Cess to be recovered',
w_cessrec RIGHT-JUSTIFIED UNDER 'Annual. Rs.',
/ 'I.Tax & S/C & Cess recovered till this month',
w_tottaxpay RIGHT-JUSTIFIED UNDER 'Annual. Rs.',
/ 'Balance I.Tax & S/C & Cess to be recovered',
w_balit RIGHT-JUSTIFIED UNDER 'Annual. Rs.',
/ 'Avg.Monthly I.Tax % S/C & Cess to be recovered',
w_avgmon RIGHT-JUSTIFIED UNDER 'Annual. Rs.'.
**---Here we ar writing the investment details.....
WRITE : /.
ULINE.
WRITE AT 28 'INVESTMENT DETAILS DECLARED'.
ULINE.
LOOP AT p_it_invest INTO wa_invest.
CLEAR : wa_invest1.
WRITE wa_invest-particular TO wa_invest1-particular.
WRITE wa_invest-betrg RIGHT-JUSTIFIED TO wa_invest1-betrg.
APPEND wa_invest1 TO it_invest1.
ENDLOOP.
LOOP AT it_invest1 INTO wa_invest1.
WRITE : / wa_invest1-particular,
wa_invest1-betrg UNDER 'Annual. Rs.'.
ENDLOOP.
ULINE.
WRITE : /.
REFRESH : p_it_deduct.
NEW-PAGE.
ENDFORM. " f00_output_data
&----
*& Form f00_investmants
&----
text
----
-->P_WA_0001 text
----
FORM f00_investmants USING p_wa_0001 TYPE pa0001.
SELECT SINGLE * FROM pa0586 INTO CORRESPONDING FIELDS OF wa_0586
WHERE pernr = p_wa_0001-pernr
AND begda >= w_start
AND endda <= w_end.
CLEAR : w_itext, w_investnm, wa_invest.
REFRESH : it_invest.
w_index = 01.
UNASSIGN : <amt>, <itc>.
IF w_period+4(2) BETWEEN '01' AND '10'.
DO 30 TIMES.
CLEAR : wa_invest.
CONCATENATE 'wa_0586-PIN' w_index INTO w_investnm.
ASSIGN (w_investnm) TO <amt>.
IF <amt> IS NOT INITIAL.
CLEAR : w_investnm.
UNASSIGN : <itc>, <sbdnn>.
CONCATENATE 'wa_0586-ITC' w_index INTO w_investnm.
ASSIGN (w_investnm) TO <itc>.
SELECT SINGLE itext FROM t7ini3 INTO w_itext
WHERE icode EQ <itc>
AND sprsl EQ 'EN'.
MOVE <amt> TO wa_invest-betrg.
wa_invest-particular = w_itext.
APPEND wa_invest TO it_invest.
ENDIF.
w_index = w_index + 1.
ENDDO.
ELSE.
DO 30 TIMES.
CLEAR : wa_invest.
CONCATENATE 'wa_0586-AIN' w_index INTO w_investnm.
ASSIGN (w_investnm) TO <amt>.
IF <amt> IS NOT INITIAL.
CLEAR : w_investnm.
UNASSIGN : <itc>, <sbdnn>.
CONCATENATE 'wa_0586-ITC' w_index INTO w_investnm.
ASSIGN (w_investnm) TO <itc>.
SELECT SINGLE itext FROM t7ini3 INTO w_itext
WHERE icode EQ <itc>
AND sprsl EQ 'EN'.
MOVE <amt> TO wa_invest-betrg.
wa_invest-particular = w_itext.
APPEND wa_invest TO it_invest.
ENDIF.
w_index = w_index + 1.
ENDDO.
ENDIF.
UNASSIGN : <amt>, <itc>, <sbdnn>.
ENDFORM. " f00_investmants
&----
*& Form f001_chargeable_income
&----
text
----
-->P_WA_0001 text
----
FORM f001_chargeable_income USING p_wa_0001 TYPE pa0001.
CLEAR : wa_0580, w_inprvemp, w_nettaxin, w_ptaxprvemp, w_ptaxcremp,
w_othtaxin, w_gssin, w_inchrtax, w_dedtot, w_nettaxpay,
w_surchr, w_cess, w_totintax, w_tdsothin, w_cessrec, w_prvemp,
w_tottaxpay, w_var1, w_var2, w_balit, w_remmon, w_avgmon,
w_profund,
w_invtot, w_total.
REFRESH : it_0580, it_0585, it_deduct.
SELECT * FROM pa0580 INTO CORRESPONDING FIELDS OF TABLE it_0580
WHERE pernr = p_wa_0001-pernr
AND begda >= w_start
AND endda <= w_end.
**---Here we are getting the Income received from the previous
*Employer...
LOOP AT it_0580 INTO wa_0580.
w_inprvemp = w_inprvemp + ( wa_0580-grsal + wa_0580-vprqs
+ wa_0580-prsal ).
w_ptaxprvemp = wa_0580-prtax.
w_prvemp = w_prvemp + wa_0580-txded.
"Income Tax & S/C paid by previous employer
w_profund = wa_0580-prfnd.
ENDLOOP.
**---Here we are appending the previous employment Provident Fund to
*Investment Table....
IF w_profund IS NOT INITIAL.
wa_invest-particular = 'Previous Employment Provident Fund'.
wa_invest-betrg = w_profund.
APPEND wa_invest TO it_invest.
ENDIF.
LOOP AT it_pc261 INTO wa_pc261 WHERE fpper = w_period
AND srtza = 'A'.
**---Importing the Payroll cluster results for each employee from RT....
CALL FUNCTION 'PYXX_READ_PAYROLL_RESULT'
EXPORTING
clusterid = w_clstrid
employeenumber = wa_0001-pernr
sequencenumber = wa_pc261-seqnr
CHANGING
payroll_result = it_payrt_result
EXCEPTIONS
illegal_isocode_or_clusterid = 1
error_generating_import = 2
import_mismatch_error = 3
subpool_dir_full = 4
no_read_authority = 5
no_record_found = 6
versions_do_not_match = 7
error_reading_archive = 8
error_reading_relid = 9
OTHERS = 10.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
**---Processing....
LOOP AT it_payrt_result-inter-rt INTO wa_payrt_result.
IF wa_payrt_result-lgart = '/422'.
"Prof. Tax Recovered by Current Emp
w_ptaxcremp = w_ptaxcremp + wa_payrt_result-betrg - w_ptaxprvemp
. "pradeep's change
ENDIF.
IF wa_payrt_result-lgart = '/446'.
"Net Income tax Payable
w_nettaxpay = wa_payrt_result-betrg.
ENDIF.
IF wa_payrt_result-lgart = '/448'.
"Surcharges on Income Tax if any
w_surchr = wa_payrt_result-betrg.
ENDIF.
IF wa_payrt_result-lgart = '/449'. "Cess if any
w_cess = wa_payrt_result-betrg.
ENDIF.
IF wa_payrt_result-lgart = '/3F6'.
w_pf = wa_payrt_result-betrg.
ENDIF.
IF wa_payrt_result-lgart = '/127'.
w_annperk = wa_payrt_result-betrg.
ENDIF.
ENDLOOP.
ENDLOOP.
**---Here we are getting the Employees Provident Fund from RT table
*which is coming
**---from the Infotype 0587...
IF w_pf IS NOT INITIAL.
wa_invest-particular = 'Provident Fund'.
wa_invest-betrg = w_pf.
wa_invest-betrg = w_pf - w_profund. " pradeep's change
APPEND wa_invest TO it_invest.
ENDIF.
**---Here we are getting the Total Income....
LOOP AT it_income INTO wa_income.
w_total = w_total + wa_income-annu.
ENDLOOP.
**---Here we are getting Employees Other Taxable income from 0584 with
*Other sources....
SELECT * FROM pa0584 INTO CORRESPONDING FIELDS OF TABLE it_0584
WHERE pernr = p_wa_0001-pernr
AND subty = '0002'
AND begda >= w_start
AND endda <= w_end.
LOOP AT it_0584 INTO wa_0584.
w_othtaxin = w_othtaxin + ( wa_0584-bspft + wa_0584-cpgln
+ wa_0584-cpgls + wa_0584-cpgns
+ wa_0584-dvdnd + wa_0584-intrs
+ wa_0584-unspi ).
w_tdsothin = w_tdsothin + wa_0584-tdsot.
"TDS on other Income
ENDLOOP.
**---Here we are getting Employees Other Taxable income from 0584 with
*House Property....
CLEAR : wa_0584.
REFRESH : it_0584.
SELECT * FROM pa0584 INTO CORRESPONDING FIELDS OF TABLE it_0584
WHERE pernr = p_wa_0001-pernr
AND subty = '0001'
AND begda >= w_start
AND endda <= w_end.
LOOP AT it_0584 INTO wa_0584.
IF wa_0584-rento NE '1'.
w_othtaxin = w_othtaxin + ( wa_0584-letvl - ( wa_0584-rep24 +
wa_0584-int24 +
wa_0584-oth24 ) ).
ELSE.
IF w_othtaxin IS INITIAL.
w_othtaxin = wa_0584-int24.
w_othtaxin = w_othtaxin * -1.
ELSE.
w_othtaxin = w_othtaxin - wa_0584-int24.
ENDIF.
ENDIF.
ENDLOOP.
**---Here we are getting the all the Deduction with respect to the
*Employee data...
CLEAR : wa_0585.
SELECT SINGLE * FROM pa0585 INTO CORRESPONDING FIELDS OF wa_0585
WHERE pernr = p_wa_0001-pernr
AND begda >= w_start
AND endda <= w_end.
CLEAR : w_dtext, w_investnm, w_dedtot, w_percent.
w_index = 01.
UNASSIGN : <amt>, <itc>, <sbdnn>.
IF w_period+4(2) BETWEEN '01' AND '10'.
DO 20 TIMES.
CLEAR : wa_deduct.
CONCATENATE 'wa_0585-PCN' w_index INTO w_investnm.
ASSIGN (w_investnm) TO <amt>.
IF <amt> IS NOT INITIAL.
CLEAR : w_investnm, w_investnm1, w_limit.
UNASSIGN : <itc>, <sbdnn>.
CONCATENATE 'wa_0585-SBS' w_index INTO w_investnm1.
ASSIGN (w_investnm1) TO <itc>.
CONCATENATE 'wa_0585-SBD' w_index INTO w_investnm.
ASSIGN (w_investnm) TO <sbdnn>.
SELECT SINGLE sbdds FROM t7ini8 INTO w_dtext
WHERE sbsec EQ <itc>
AND sbdiv EQ <sbdnn>
AND sprsl EQ 'EN'.
SELECT SINGLE txexm FROM t7ini9 INTO w_percent
WHERE sbsec EQ <itc>
AND sbdiv EQ <sbdnn>
AND endda EQ '99991231'.
SELECT SINGLE sdvlt FROM t7ini9 INTO w_limit
WHERE sbsec EQ <itc>
AND sbdiv EQ <sbdnn>
AND endda EQ '99991231'.
IF w_limit > <amt>.
MOVE <amt> TO wa_deduct-betrg.
ELSE.
MOVE w_limit TO wa_deduct-betrg.
ENDIF.
wa_deduct-betrg = ( wa_deduct-betrg / 100 ) * w_percent.
w_dedtot = w_dedtot + wa_deduct-betrg.
wa_deduct-particular = w_dtext.
wa_deduct-sbs = <itc>.
APPEND wa_deduct TO it_deduct.
IF <itc> EQ '1'.
CLEAR : w_ded0585.
w_ded0585 = w_ded0585 + <amt>.
w_dedtot = w_dedtot - <amt>.
ENDIF.
ENDIF.
w_index = w_index + 1.
ENDDO.
ELSE.
DO 20 TIMES.
CLEAR : wa_deduct.
CONCATENATE 'wa_0585-ACN' w_index INTO w_investnm.
ASSIGN (w_investnm) TO <amt>.
IF <amt> IS NOT INITIAL.
CLEAR : w_investnm, w_investnm1.
UNASSIGN : <itc>, <sbdnn>.
CONCATENATE 'wa_0585-SBS' w_index INTO w_investnm1.
ASSIGN (w_investnm1) TO <itc>.
CONCATENATE 'wa_0585-SBD' w_index INTO w_investnm.
ASSIGN (w_investnm) TO <sbdnn>.
SELECT SINGLE sbdds FROM t7ini8 INTO w_dtext
WHERE sbsec EQ <itc>
AND sbdiv EQ <sbdnn>
AND sprsl EQ 'EN'.
SELECT SINGLE txexm FROM t7ini9 INTO w_percent
WHERE sbsec EQ <itc>
AND sbdiv EQ <sbdnn>
AND endda EQ '99991231'.
SELECT SINGLE sdvlt FROM t7ini9 INTO w_limit
WHERE sbsec EQ <itc>
AND sbdiv EQ <sbdnn>
AND endda EQ '99991231'.
IF w_limit > <amt>.
MOVE <amt> TO wa_deduct-betrg.
ELSE.
MOVE w_limit TO wa_deduct-betrg.
ENDIF.
MOVE <amt> TO wa_deduct-betrg.
wa_deduct-betrg = ( wa_deduct-betrg / 100 ) * w_percent.
w_dedtot = w_dedtot + wa_deduct-betrg.
wa_deduct-particular = w_dtext.
APPEND wa_deduct TO it_deduct.
IF <itc> EQ '1'.
CLEAR : w_ded0585.
w_ded0585 = w_ded0585 + <amt>.
w_dedtot = w_dedtot - <amt>.
ENDIF.
ENDIF.
w_index = w_index + 1.
ENDDO.
ENDIF.
UNASSIGN : <amt>, <itc>, <sbdnn>.
**---Here we are starting the Income tax calculation....
w_totintax = w_nettaxpay + w_surchr + w_cess.
"Total Income Tax & S/C & Cess Payable
w_cessrec = w_totintax - ( w_prvemp + w_tdsothin ).
**---Here we are calculating the previous months tax payed from CRT....
LOOP AT it_payrt_result-inter-crt INTO wa_paycrt_result.
IF wa_paycrt_result-lgart = '/460'.
"I.tax & S/C & Cess Recovered till period
w_tottaxpay = wa_paycrt_result-betrg.
ENDIF.
ENDLOOP.
**---Here we are getting the Balance IT to be recovered....
w_balit = w_cessrec - w_tottaxpay.
**---Here we are getting the remaining months in the financial year....
IF w_period+4(2) NE '12'.
w_remmon = 12 - w_period+4(2).
w_avgmon = w_balit / w_remmon.
ELSE.
w_avgmon = 0.
w_avgmon = 0.
ENDIF.
**---Here we are getting the Investments total into Other DEDUCTION....
LOOP AT it_invest INTO wa_invest.
w_invtot = w_invtot + wa_invest-betrg.
ENDLOOP.
IF w_ded0585 IS NOT INITIAL.
w_invtot = w_invtot + w_ded0585.
ENDIF.
IF w_invtot > '100000'.
w_invtot = '100000'.
ENDIF.
ENDFORM. " f001_chargeable_income
&----
*& Form f010_get_date
&----
text
----
-->P_PNPPABRP text
-->P_PNPPABRJ text
----
FORM f010_get_date USING p_pnppabrp
p_pnppabrj.
CASE p_pnppabrp.
WHEN '01'.
w_cmonth = '04'.
w_cyear = p_pnppabrj.
WHEN '02'.
w_cmonth = '05'.
w_cyear = p_pnppabrj.
WHEN '03'.
w_cmonth = '06'.
w_cyear = p_pnppabrj.
WHEN '04'.
w_cmonth = '07'.
w_cyear = p_pnppabrj.
WHEN '05'.
w_cmonth = '08'.
w_cyear = p_pnppabrj.
WHEN '06'.
w_cmonth = '09'.
w_cyear = p_pnppabrj.
WHEN '07'.
w_cmonth = '10'.
w_cyear = p_pnppabrj.
WHEN '08'.
w_cmonth = '11'.
w_cyear = p_pnppabrj.
WHEN '09'.
w_cmonth = '12'.
w_cyear = p_pnppabrj.
WHEN '10'.
w_cmonth = '01'.
w_cyear = p_pnppabrj + 1.
WHEN '11'.
w_cmonth = '02'.
w_cyear = p_pnppabrj + 1.
WHEN '12'.
w_cmonth = '03'.
w_cyear = p_pnppabrj + 1.
ENDCASE.
CONCATENATE w_cyear w_cmonth '01' INTO w_cdate.
ENDFORM. " f010_get_date
&----
*& Form SEND_MAIL
&----
text
----
--> p1 text
<-- p2 text
----
FORM send_mail .
*PERFORM send_email USING p_email1.
IF sy-batch EQ 'X'.
LOOP AT pnppernr.
SELECT SINGLE * FROM pa0105
WHERE pernr EQ pnppernr-low
AND subty EQ '0010'
AND endda EQ '99991231'.
p_email1 = pa0105-usrid_long..
PERFORM get_job_details.
PERFORM obtain_spool_id.
PERFORM convert_spool_to_pdf.
PERFORM process_email.
IF sy-sysid = c_dev.
WAIT UP TO 5 SECONDS.
SUBMIT rsconn01 WITH mode = 'INT'
WITH output = 'X'
AND RETURN.
ENDIF.
ENDLOOP.
ELSE.
SKIP.
WRITE:/ 'Program must be executed in background in-order for spool'
,
'request to be created.'.
EXPORT gd_spool_nr TO MEMORY ID 'SPOOLTOPDF'.
ENDIF.
ENDFORM. " SEND_MAIL
&----
*& Form get_job_details
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_job_details .
Get current job details
CALL FUNCTION 'GET_JOB_RUNTIME_INFO'
IMPORTING
eventid = gd_eventid
eventparm = gd_eventparm
external_program_active = gd_external_program_active
jobcount = gd_jobcount
jobname = gd_jobname
stepcount = gd_stepcount
EXCEPTIONS
no_runtime_info = 1
OTHERS = 2.
ENDFORM. " get_job_details
&----
*& Form obtain_spool_id
&----
text
----
--> p1 text
<-- p2 text
----
FORM obtain_spool_id .
CHECK NOT ( gd_jobname IS INITIAL ).
CHECK NOT ( gd_jobcount IS INITIAL ).
SELECT * FROM tbtcp
INTO TABLE it_tbtcp
WHERE jobname = gd_jobname
AND jobcount = gd_jobcount
AND stepcount = gd_stepcount
AND listident <> '0000000000'
ORDER BY jobname
jobcount
stepcount.
READ TABLE it_tbtcp INTO wa_tbtcp INDEX 1.
IF sy-subrc = 0.
MESSAGE s004(zdd) WITH gd_spool_nr.
gd_spool_nr = wa_tbtcp-listident.
MESSAGE s004(zdd) WITH gd_spool_nr.
ELSE.
MESSAGE s005(zdd).
ENDIF.
ENDFORM. " obtain_spool_id
&----
*& Form convert_spool_to_pdf
&----
text
----
--> p1 text
<-- p2 text
----
FORM convert_spool_to_pdf .
CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
EXPORTING
src_spoolid = gd_spool_nr
no_dialog = c_no
dst_device = c_device
IMPORTING
pdf_bytecount = gd_bytecount
TABLES
pdf = it_pdf_output
EXCEPTIONS
err_no_abap_spooljob = 1
err_no_spooljob = 2
err_no_permission = 3
err_conv_not_possible = 4
err_bad_destdevice = 5
user_cancelled = 6
err_spoolerror = 7
err_temseerror = 8
err_btcjob_open_failed = 9
err_btcjob_submit_failed = 10
err_btcjob_close_failed = 11
OTHERS = 12.
CHECK sy-subrc = 0.
Transfer the 132-long strings to 255-long strings
LOOP AT it_pdf_output.
TRANSLATE it_pdf_output USING ' ~'.
CONCATENATE gd_buffer it_pdf_output INTO gd_buffer.
ENDLOOP.
TRANSLATE gd_buffer USING '~ '.
DO.
it_mess_att = gd_buffer.
APPEND it_mess_att.
SHIFT gd_buffer LEFT BY 255 PLACES.
IF gd_buffer IS INITIAL.
EXIT.
ENDIF.
ENDDO.
ENDFORM. " convert_spool_to_pdf
&----
*& Form process_email
&----
text
----
--> p1 text
<-- p2 text
----
FORM process_email .
DESCRIBE TABLE it_mess_att LINES gd_recsize.
CHECK gd_recsize > 0.
PERFORM send_email USING p_email1.
ENDFORM. "process_email
********************
FORM send_email USING p_email.
CHECK NOT ( p_email IS INITIAL ).
REFRESH it_mess_bod.
Default subject matter
gd_subject = 'Subject'.
gd_attachment_desc = 'IT Declaration'.
CONCATENATE 'ITSLIP' ' ' INTO gd_attachment_name.
it_mess_bod = 'IT FORM for this month'.
APPEND it_mess_bod.
it_mess_bod = 'Message Body text, line 2...'.
APPEND it_mess_bod.
If no sender specified - default blank
IF p_sender EQ space.
gd_sender_type = space.
ELSE.
gd_sender_type = 'INT'.
ENDIF.
Send file by email as .xls speadsheet
PERFORM send_file_as_email_attachment
TABLES it_mess_bod
it_mess_att
USING p_email1
'MindTree Payroll team'
'PDF'
gd_attachment_name
gd_attachment_desc
p_sender
gd_sender_type
CHANGING gd_error
gd_reciever.
ENDFORM. " process_email
&----
*& Form send_file_as_email_attachment
&----
text
----
-->P_IT_MESS_BOD text
-->P_IT_MESS_ATT text
-->P_P_EMAIL text
-->P_4422 text
-->P_4423 text
-->P_GD_ATTACHMENT_NAME text
-->P_GD_ATTACHMENT_DESC text
-->P_P_SENDER text
-->P_GD_SENDER_TYPE text
<--P_GD_ERROR text
<--P_GD_RECIEVER text
----
FORM send_file_as_email_attachment TABLES it_message
it_attach
USING p_email
p_mtitle
p_format
p_filename
p_attdescription
p_sender_address
p_sender_addres_type
CHANGING p_error
p_reciever.
DATA: ld_error TYPE sy-subrc,
ld_reciever TYPE sy-subrc,
ld_mtitle LIKE sodocchgi1-obj_descr,
ld_email LIKE somlreci1-receiver,
ld_format TYPE so_obj_tp ,
ld_attdescription TYPE so_obj_nam ,
ld_attfilename TYPE so_obj_des ,
ld_sender_address LIKE soextreci1-receiver,
ld_sender_address_type LIKE soextreci1-adr_typ,
ld_receiver LIKE sy-subrc.
DATA: t_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
t_contents LIKE solisti1 OCCURS 0 WITH HEADER LINE,
t_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
t_attachment LIKE solisti1 OCCURS 0 WITH HEADER LINE,
t_object_header LIKE solisti1 OCCURS 0 WITH HEADER LINE,
w_cnt TYPE i,
w_sent_all(1) TYPE c,
w_doc_data LIKE sodocchgi1.
ld_email = p_email.
ld_mtitle = p_mtitle.
ld_format = p_format.
ld_attdescription = p_attdescription.
ld_attfilename = p_filename.
ld_sender_address = p_sender_address.
ld_sender_address_type = p_sender_addres_type.
Fill the document data.
w_doc_data-doc_size = 1.
Populate the subject/generic message attributes
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle .
w_doc_data-sensitivty = 'F'.
Fill the document data and get size of attachment
CLEAR w_doc_data.
READ TABLE it_attach INDEX w_cnt.
w_doc_data-doc_size =
( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle.
w_doc_data-sensitivty = 'F'.
CLEAR t_attachment.
REFRESH t_attachment.
t_attachment[] = it_attach[].
Describe the body of the message
CLEAR t_packing_list.
REFRESH t_packing_list.
t_packing_list-transf_bin = space.
t_packing_list-head_start = 1.
t_packing_list-head_num = 0.
t_packing_list-body_start = 1.
DESCRIBE TABLE it_message LINES t_packing_list-body_num.
t_packing_list-doc_type = 'RAW'.
APPEND t_packing_list.
Create attachment notification
t_packing_list-transf_bin = 'X'.
t_packing_list-head_start = 1.
t_packing_list-head_num = 1.
t_packing_list-body_start = 1.
DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.
t_packing_list-doc_type = ld_format.
t_packing_list-obj_descr = ld_attdescription.
t_packing_list-obj_name = ld_attfilename.
t_packing_list-doc_size = t_packing_list-body_num * 255.
APPEND t_packing_list.
Add the recipients email address
CLEAR t_receivers.
REFRESH t_receivers.
t_receivers-receiver = ld_email.
t_receivers-rec_type = 'U'.
t_receivers-com_type = 'INT'.
t_receivers-notif_del = 'X'.
t_receivers-notif_ndel = 'X'.
APPEND t_receivers.
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
document_data = w_doc_data
put_in_outbox = 'X'
sender_address = ld_sender_address
sender_address_type = ld_sender_address_type
commit_work = 'X'
IMPORTING
sent_to_all = w_sent_all
TABLES
packing_list = t_packing_list
contents_bin = t_attachment
contents_txt = it_message
receivers = t_receivers
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.
Populate zerror return code
ld_error = sy-subrc.
Populate zreceiver return code
LOOP AT t_receivers.
ld_receiver = t_receivers-retrn_code.
ENDLOOP.
ENDFORM. "send_file_as_email_attachment
Thanks,
Balaji
‎2007 May 22 11:58 AM
hi
what's the subrc after submit statement? try giving the name of the called program in full caps
SUBMIT ZPR022_INNCOMETAX_REPORT_COPY - > like this
if helpful, reward
Sathish. R
Message was edited by:
hari prasath
‎2007 Jun 01 12:01 PM
Dear Balaji,
Please try the below:
<b>** VIA JOB p_job
NUMBER l_jobcount</b>
If you comment out the above 2 lines and also
set a dynamic break-point in called
program ZPR022_INNCOMETAX_REPORT_COPY.
You will be able to DEBUG successfully,
Works for me in my sample ABAP report.
<b> SUBMIT zpr022_inncometax_report_copy
WITH pnptimr6 = 'X'
WITH pnpbegda = period-low
WITH pnpendda = period-high
WITH pnppernr-low = pernr-low
WITH pnpabkrs-low = 'IN'
<u>** VIA JOB p_job {Commented Out only for debugging}
NUMBER l_jobcount {Commented Out only for debugging} </u>
TO SAP-SPOOL WITHOUT SPOOL DYNPRO
SPOOL PARAMETERS ls_params
WITH immediately = 'X'
AND RETURN.</b>
<b>Expecting 10/10 points..... :-D</b>
Thanks and Regards,
Aby Jacob, Bangalore