04-16-2008 12:34 PM
Hi,
I am retrieving the data based upon payroll and fund code. am using rp_provide_from_last space pnpdisbd pnpdised statement for getting the data. After passing this data to RT table to get amount based upon the wagetypes. Because of rp_provide_from_last am getting only latest record details.How to get for same pernr if fundcode is different then i need to get that relavent data based upon the fundcode.
Edited by: mahendra kumar on Apr 16, 2008 1:35 PM
04-16-2008 12:39 PM
Instead of using rp_provide_from_last ..
loop at the structure you have .. say
loop at p0001.
*write logic for fundcode ...
endloop.
04-16-2008 12:49 PM
If i loop p0001 what will happen ? i cant understand .
I want data for a pernr based upon different fundcodes.
i am looping p0220 so am getting diff fcodes, but i am getting the data latest one details only( because of this rp_provide_from_last).
Edited by: mahendra kumar on Apr 16, 2008 1:49 PM
04-16-2008 12:55 PM
04-16-2008 1:15 PM
start-of-selection.
GET PERNR.
Loop at p0220 .
if p0220-fcode in funds.
wa_output-FCODE = p0220-fcode.
wa_output-jonid = p0220-jonid.
rp_provide_from_last p0000 space pnpdisbd pnpdised.
if pnp-sw-found = 1.
wa_output-PERNR = p0000-PERNR.
wa_output-BEGDA0 = p0000-BEGDA.
if p0000-massn = '01'.
wa_output-BEGDA0_H = p0000-BEGDA.
endif.
if p0000-massn = '20'.
wa_output-BEGDA0_T = p0000-BEGDA.
wa_output-STAT2_T = p0000-STAT2.
endif.
wa_output-STAT2 = p0000-STAT2.
endif.
rp_provide_from_last p0001 space pnpdisbd pnpdised.
if pnp-sw-found = 1.
wa_output-ABKRS = p0001-ABKRS.
WA_OUTPUT-EMP_CATAGEORY = p0001-PERSG. " FOR SUPER EFT
if p0001[] is not initial.
select abkrs permo datmo from t549a
into corresponding fields of table it_t549a
for all entries in p0001
where abkrs eq p0001-abkrs.
endif.
rp_provide_from_last p0002 space pnpdisbd pnpdised.
if pnp-sw-found = 1.
wa_output-NACHN = p0002-NACHN.
wa_output-VORNA = p0002-VORNA.
wa_output-TITEL = p0002-TITEL.
wa_output-GESCH = p0002-GESCH.
wa_output-GBDAT = p0002-GBDAT.
endif.
rp_provide_from_last p0006 space pnpdisbd pnpdised.
if pnp-sw-found = 1.
wa_output-STRAS = p0006-STRAS.
wa_output-PSTLZ = p0006-PSTLZ.
wa_output-LOCAT = p0006-LOCAT.
wa_output-ORT01 = p0006-ORT01.
endif.
rp_provide_from_last p0008 space pnpdisbd pnpdised.
if pnp-sw-found = 1.
wa_output-DIVGV = p0008-DIVGV.
wa_output-BEGDA8 = p0008-BEGDA.
wa_output-ANSAL = p0008-ANSAL.
endif.
CALL FUNCTION 'CU_READ_RGDIR'
EXPORTING
PERSNR = pernr-pernr
BUFFER =
NO_AUTHORITY_CHECK = ' '
IMPORTING
MOLGA = molga
TABLES
IN_RGDIR = it_rgdir
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.
CALL FUNCTION 'CD_READ_LAST'
EXPORTING
BEGIN_DATE = pnpdisbd
END_DATE = pnpdised
IMPORTING
OUT_SEQNR = seqnr
TABLES
RGDIR = it_rgdir
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.
CALL FUNCTION 'PYXX_READ_PAYROLL_RESULT'
EXPORTING
CLUSTERID = 'RQ'
EMPLOYEENUMBER = pernr-pernr
SEQUENCENUMBER = seqnr
READ_ONLY_BUFFER = ' '
READ_ONLY_INTERNATIONAL = ' '
ARC_GROUP = ' '
CHECK_READ_AUTHORITY = 'X'
FILTER_CUMULATIONS = 'X'
CLIENT =
IMPORTING
VERSION_NUMBER_PAYVN =
VERSION_NUMBER_PCL2 =
CHANGING
PAYROLL_RESULT = wa_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 wa_result-inter-rt into wa_rt.
if wa_rt-lgart eq '7000'.
wa_RT_RESULTS-ca_7000 = wa_rt-BETRG.
wa_output-ca_7000 = wa_rt-BETRG.
endif.
if wa_rt-lgart eq '7006'.
ca1 = wa_rt-BETRG.
endif.
if wa_rt-lgart eq '7007'.
ca2 = wa_rt-BETRG.
endif.
endlop.
Edited by: mahendra kumar on Apr 16, 2008 2:15 PM