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
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 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 '[email protected]'
*,
p_sender LIKE somlreci1-receiver.
DEFAULT '[email protected]',
*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
| User | Count |
|---|---|
| 6 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |