Hola a todos. tengo el siguiente problema.
tengo un modulo de funciones que realiza un calculo y me devuelve un valor, quiero que ese valor salga reflejado en la nomina de terminacion laboral como concepto de pago. no encuentro como hacerlo. aqui va mi funcion.
tengo un modulo de funciones que realiza un calculo y me devuelve un valor, quiero que ese valor salga reflejado en la nomina de terminacion laboral como concepto de pago. no encuentro como hacerlo. aqui va mi funcion.
Código:
FUNCTION Z_HRVE_ANT_DES_INJ.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" REFERENCE(PERNR) TYPE P0000-PERNR
*" REFERENCE(BEGDA) TYPE P0000-BEGDA
*" REFERENCE(ENDDA) TYPE P0000-ENDDA
*" REFERENCE(TSEN_EVAL) TYPE ZTPC2QR
*" EXPORTING
*" REFERENCE(SUELDO) TYPE PC2QR-SENGR
*" REFERENCE(ANIOS_ANTI) TYPE PC2QR-SENGR
*" REFERENCE(IMPORTE) TYPE PC2QR-SENGR
*" TABLES
*" SEN_EVAL TYPE HRPAYVE_SEN_EVAL OPTIONAL
*" IND_IT STRUCTURE PC207 OPTIONAL
*"----------------------------------------------------------------------
DATA nomina_results TYPE payve_result OCCURS 0 WITH HEADER LINE.
" Infotipos de Empleados
DATA: wa_ppbwla TYPE TABLE OF pbwla WITH HEADER LINE.
DATA: it_0001 TYPE TABLE OF p0001 WITH HEADER LINE.
DATA: it_zhrt006b TYPE TABLE OF ZHRT006B WITH HEADER LINE.
DATA: it_0014P TYPE TABLE OF p0014 WITH HEADER LINE.
"tabla de dias.
DATA: sueldo_tabla LIKE q0008-betrg. " Variable para guardar el sueldo.
DATA: anios type P. " almacenar antiguedad en anios.
DATA: t_begda TYPE sy-datum,
t_endda TYPE sy-datum.
DATA: numero LIKE PC207-ANZHL.
data: begin of p_sen_eval occurs 2.
include structure pc2qr. " Seniority Evaluation Table
data: end of p_sen_eval.
REFRESH: wa_ppbwla[].
" llamo para leer el sueldo o salario
CALL FUNCTION 'RP_FILL_WAGE_TYPE_TABLE'
EXPORTING
appli = 'E'
begda = sy-datum
endda = sy-datum
infty = '0008'
pernr = PERNR
TABLES
ppbwla = wa_ppbwla
EXCEPTIONS
error_at_indirect_evaluation = 1
OTHERS = 2.
t_begda = begda.
t_endda = endda.
"Traer el Area de Nomina del empleado.
CALL FUNCTION 'HR_READ_INFOTYPE'
EXPORTING
pernr = pernr
infty = '0001'
begda = sy-datum
endda = sy-datum
TABLES
infty_tab = it_0001.
* EXCEPTIONS
* INFTY_NOT_FOUND = 1
* OTHERS = 2
" Leer la tabla y asignar el salario Diario.
READ TABLE it_0001 INDEX 1.
READ TABLE wa_ppbwla INDEX 1.
if it_0001-abkrs eq 'NQ' or it_0001-abkrs eq 'NM'.
SUELDO = wa_ppbwla-betrg / 30.
elseif
SUELDO = wa_ppbwla-betrg.
endif.
" Antiguedad en anios del empleado.
CALL FUNCTION 'HRVE_GET_TIME_BETWEEN_DATES' "
EXPORTING
beg_date = t_begda
end_date = t_endda
IMPORTING
* days = " p
* months = " p
years = anios
EXCEPTIONS
INVALID_PERIOD = 1 "
. " HRVE_GET_TIME_BETWEEN_DATES
ANIOS_ANTI = anios.
" seleccionar los dias de importes correspondientes.
select * into it_zhrt006b from ZHRT006B where
ZANIOS_DESDE GE 17 and ZANIOS_HASTA LE 24 and FECHAFIN GE t_endda and FECHAINICIO LE t_endda. endselect.
clear sen_eval.
if numero is not initial.
p_sen_eval[] = sen_eval[].
sort p_sen_eval by datum descending.
read table p_sen_eval index 1.
* cntr1 = sen_eval-cntr1.
* cntr1 = cntr1 + 1.
* sen_amount_m = v_dmonto * numero.
* sen_eval-cntr1 = cntr1.
sen_eval-datum = t_endda.
* sen_eval-sentp = c_sen_month.
sen_eval-sensl = it_zhrt006b-DIAS_SALARIOS." la base para el calculo
sen_eval-sengr = it_zhrt006b-DIAS_SALARIOS * SUELDO. " el total de la base por dias
* sen_eval-waer1 = calc_currency.
* sen_eval-intrt = num. " 15 días para el calculo
append sen_eval.
endif.
IMPORTE = it_zhrt006b-DIAS_SALARIOS * SUELDO.
PERFORM validar_subtipo USING pernr t_begda t_endda CHANGING it_0014P.
ENDFUNCTION.
" para validar si tiene o no infotipo 14
FORM validar_subtipo USING i_pernr i_begda i_endda CHANGING it_0014P.
DATA: it_0014 TYPE TABLE OF p0014 WITH HEADER LINE.
"leer infotipo 0014
CALL FUNCTION 'HR_READ_INFOTYPE'
EXPORTING
pernr = i_pernr
infty = '0014'
begda = i_begda
endda = i_endda
TABLES
infty_tab = it_0014
EXCEPTIONS
infty_not_found = 1
OTHERS = 2.
ENDFORM. "validar_subtipo