PDA

Ver la Versión Completa : Modulos de Funciones a un concepto


CESARCAES01
25/02/14, 18:19:40
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.




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