Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

How to debug a program when it is SUBMITed from another program

Former Member
0 Likes
4,269

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

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
2,471

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

14 REPLIES 14
Read only

Former Member
0 Likes
2,471

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.

Read only

0 Likes
2,471

Hi,

Actually it is not going to the START-OF-SELECTION of the program. any help?

Regards,

Balaji

Read only

0 Likes
2,471

can u copy the code??

Read only

0 Likes
2,471

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

Read only

0 Likes
2,471

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.

Read only

0 Likes
2,471

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.

Read only

0 Likes
2,471

1. Please do not submit within loop , if possible.

2. Check if the Program2 is Active .

Read only

Peter_Inotai
Active Contributor
0 Likes
2,471

>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

Read only

Former Member
0 Likes
2,471

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

Read only

Former Member
0 Likes
2,471

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

Read only

0 Likes
2,471

Ok then post ur full code so that it may be helpfull to solve us ur problem

Regards

Pavan

Read only

0 Likes
2,471

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

Read only

Former Member
0 Likes
2,471

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

Read only

Former Member
0 Likes
2,472

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