Difference between revisions of "SAP HCM ABAP CLUSTER"
From SapWiki
| Line 174: | Line 174: | ||
==Modificar Cluster== | ==Modificar Cluster== | ||
*Ejemplo de lectura de cluster con modificacion a tabla BT | *Ejemplo de lectura de cluster con modificacion a tabla BT | ||
| + | <nowiki> CLEAR rgdir. | ||
| + | REFRESH rgdir. | ||
| − | + | CALL FUNCTION 'CU_READ_RGDIR_NEW' | |
| − | + | EXPORTING | |
| + | persnr = i_pernr | ||
| + | TABLES | ||
| + | in_rgdir = rgdir | ||
| + | EXCEPTIONS | ||
| + | no_record_found = 1 | ||
| + | import_mismatch_error = 2 | ||
| + | no_read_authority = 3 | ||
| + | OTHERS = 4. | ||
| + | check sy-subrc = 0. | ||
| − | + | DELETE rgdir WHERE fpper NE i_fpper. | |
| − | + | DESCRIBE TABLE rgdir LINES sy-tfill. | |
| − | + | check sy-tfill > 0. | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | LOOP AT rgdir. | |
| − | + | ld_pernr = i_pernr. | |
| − | + | ld_seqnr = rgdir-seqnr. | |
| − | + | CALL FUNCTION 'PYXX_READ_PAYROLL_RESULT' | |
| − | + | EXPORTING | |
| − | + | clusterid = 'CL' | |
| + | employeenumber = ld_pernr | ||
| + | sequencenumber = ld_seqnr | ||
| + | read_only_buffer = ' ' | ||
| + | CHANGING | ||
| + | payroll_result = ls_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 | ||
| + | OTHERS = 8. | ||
| − | + | * procesar bt | |
| − | + | loop at ls_result-inter-bt into gs_bt. | |
| − | + | add i_monto to gs_bt-betrg. | |
| − | + | modify ls_result-inter-bt from gs_bt. | |
| − | + | ENDLOOP. | |
| − | + | check sy-subrc = 0. | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | CALL FUNCTION 'PYXX_WRITE_PAYROLL_RESULT' | |
| − | + | EXPORTING | |
| − | + | clusterid = 'CL' | |
| − | + | employeenumber = ld_pernr | |
| − | + | sequencenumber = ld_seqnr | |
| − | + | payroll_result = ls_result | |
| + | EXCEPTIONS | ||
| + | illegal_isocode_or_clusterid = 1 | ||
| + | error_generating_export = 2 | ||
| + | export_error = 3 | ||
| + | subpool_dir_full = 4 | ||
| + | no_update_authority = 5 | ||
| + | incomplete_result_imported = 6 | ||
| + | OTHERS = 7. | ||
| + | IF sy-subrc <> 0. | ||
| + | * error | ||
| + | EXIT. | ||
| + | ENDIF. | ||
| − | + | CALL FUNCTION 'HR_FLUSH_BUFFER_UPDATE_PCLX' | |
| − | + | EXPORTING | |
| − | + | test = ' ' | |
| − | + | EXCEPTIONS | |
| − | + | insert_error = 1 | |
| − | + | no_update_authority = 2 | |
| − | + | OTHERS = 3. | |
| − | + | IF sy-subrc <> 0. | |
| − | + | * error | |
| − | + | EXIT. | |
| − | + | ENDIF.</nowiki> | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
Revision as of 21:25, 4 April 2020
Lectura de datos de Préstamo
*----------------------------------------------------------------------*
* FORM .......
*----------------------------------------------------------------------*
* copiado de include MP004541
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form get_loan_results tables pt_savp structure gt_savp
using pf_pernr
pf_dlart
pf_objps
pf_dbtcu
changing pfx_opelo
pfx_paylo
pfx_abrdt
p_cuota
pfx_subrc.
data: ltx_rgdir like pc261 occurs 0 with header line,
ltx_rgdir_o like pc261 occurs 0 with header line,
lsx_rgdir like ltx_rgdir,
lsx_result type pay99_result,
lsx_v0 like line of lsx_result-inter-v0,
lsx_rt like line of lsx_result-inter-rt,
lfx_relid like pcl2-relid,
lfx_molga like t500l-molga,
lsx_t500l like t500l,
lfx_amount like q0045-darbt,
lfx_line like sy-tabix,
lfx_fday type d,
lfx_lday type d,
lfx_opecu like q0045-opecu,
ls_paper type pc2paper,
lf_payment_value_date type datum,
ls_loid_33 type pclo_id. "Note 834827
data wa_prest_ipc type zhr_prest_ipc.
*##--BEGIN--##
clear: pfx_opelo, pfx_paylo, pfx_abrdt, pfx_subrc.
call function 'CU_READ_RGDIR_NEW'
exporting
persnr = pf_pernr
check_read_authority = space
importing
molga = lfx_molga
tables
in_rgdir = ltx_rgdir
exceptions
others = 1.
if sy-subrc <> 0.
move sy-subrc to pfx_subrc.
return.
endif.
move sy-subrc to pfx_subrc.
* Limitar directorio de cluster al período seleccionado
call function 'CD_SELECT_DATE_RANGE'
exporting
fpper_begda = g_begda
fpper_endda = g_endda
tables
in_rgdir = ltx_rgdir
out_rgdir = ltx_rgdir_o.
"take only regular and actual periods
loop at ltx_rgdir_o transporting no fields
where void = abap_true
or payty <> space
or srtza <> 'A'.
delete ltx_rgdir_o index sy-tabix.
endloop.
ltx_rgdir[] = ltx_rgdir_o[].
sort ltx_rgdir descending by seqnr.
data(l_lines) = lines( ltx_rgdir ).
if l_lines = 0.
pfx_subrc = 9.
return.
endif.
* get relid
select single * from t500l
into lsx_t500l
where molga = lfx_molga.
move lsx_t500l-relid to lfx_relid.
data(lflag_loan_exists) = abap_false.
data lv_subrc type sy-subrc.
loop at ltx_rgdir into lsx_rgdir
where fpend >= p0045-begda. "for performance
if lflag_loan_exists = abap_true.
exit. "stop loop at rgdir, because period was found
endif.
call function 'PYXX_READ_PAYROLL_RESULT'
exporting
clusterid = lfx_relid
employeenumber = pf_pernr
sequencenumber = lsx_rgdir-seqnr
read_only_international = 'X'
check_read_authority = ' '
changing
payroll_result = lsx_result
exceptions
others = 1.
if sy-subrc <> 0.
move sy-subrc to pfx_subrc.
else.
move sy-subrc to pfx_subrc.
* get loan result .....
loop at lsx_result-inter-v0 into lsx_v0 where v0typ = 'L'.
if pf_dlart = lsx_v0-vinfo+0(4) and
pf_objps = lsx_v0-vinfo+4(2).
lflag_loan_exists = abap_true.
pfx_abrdt = lsx_rgdir-fpend.
lv_subrc = 1.
loop at lsx_result-inter-rt into lsx_rt
where v0typ = 'L'
and v0znr = lsx_v0-v0znr
and lgart = '/LLB'.
if lsx_rt-betrg = 0. "this is a potential period
"here the loan is already paid back completely
lv_subrc = 1. "this is equal to that no /LLB exists
exit. "the loop and check previous period
else.
* verificar si ya se actualizo por IPC
select single * into wa_prest_ipc from zhr_prest_ipc where pernr = pf_pernr and
seqnr = lsx_rgdir-seqnr.
if sy-subrc <> 0.
move: lsx_result-inter-versc-waers to lfx_opecu,
lsx_rt-betrg to pfx_opelo.
lv_subrc = 0.
else.
lv_subrc = 1.
pfx_opelo = 0.
exit.
endif.
endif.
endloop.
if lv_subrc = 0.
loop at lsx_result-inter-rt into lsx_rt
where v0typ = 'L'
and v0znr = lsx_v0-v0znr
and lgart = '/LRP'.
if lsx_rt-betrg = 0. "this is a potential period
"here the loan is already paid back completely
lv_subrc = 1. "this is equal to that no /LLB exists
exit. "the loop and check previous period
else.
move lsx_rt-betrg to p_cuota.
endif.
endloop.
endif.
else. "this loan is not yet processed in payroll
move '7' to pfx_subrc.
endif.
endloop.
endif.
endloop.
endform. " GET_LOAN_RESULTS
Modificar Cluster
- Ejemplo de lectura de cluster con modificacion a tabla BT
CLEAR rgdir.
REFRESH rgdir.
CALL FUNCTION 'CU_READ_RGDIR_NEW'
EXPORTING
persnr = i_pernr
TABLES
in_rgdir = rgdir
EXCEPTIONS
no_record_found = 1
import_mismatch_error = 2
no_read_authority = 3
OTHERS = 4.
check sy-subrc = 0.
DELETE rgdir WHERE fpper NE i_fpper.
DESCRIBE TABLE rgdir LINES sy-tfill.
check sy-tfill > 0.
LOOP AT rgdir.
ld_pernr = i_pernr.
ld_seqnr = rgdir-seqnr.
CALL FUNCTION 'PYXX_READ_PAYROLL_RESULT'
EXPORTING
clusterid = 'CL'
employeenumber = ld_pernr
sequencenumber = ld_seqnr
read_only_buffer = ' '
CHANGING
payroll_result = ls_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
OTHERS = 8.
* procesar bt
loop at ls_result-inter-bt into gs_bt.
add i_monto to gs_bt-betrg.
modify ls_result-inter-bt from gs_bt.
ENDLOOP.
check sy-subrc = 0.
CALL FUNCTION 'PYXX_WRITE_PAYROLL_RESULT'
EXPORTING
clusterid = 'CL'
employeenumber = ld_pernr
sequencenumber = ld_seqnr
payroll_result = ls_result
EXCEPTIONS
illegal_isocode_or_clusterid = 1
error_generating_export = 2
export_error = 3
subpool_dir_full = 4
no_update_authority = 5
incomplete_result_imported = 6
OTHERS = 7.
IF sy-subrc <> 0.
* error
EXIT.
ENDIF.
CALL FUNCTION 'HR_FLUSH_BUFFER_UPDATE_PCLX'
EXPORTING
test = ' '
EXCEPTIONS
insert_error = 1
no_update_authority = 2
OTHERS = 3.
IF sy-subrc <> 0.
* error
EXIT.
ENDIF.