Professional Documents
Culture Documents
Limitar Registros It 14 y 831
Limitar Registros It 14 y 831
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" VALUE(PERNR) TYPE PERNR_D
*" VALUE(EFFECTIVE_FROM) TYPE BEGDA
*" VALUE(PAY_COMPONENT) TYPE LGART OPTIONAL
*" VALUE(ENROLLMENT_AMOUNT) TYPE PAD_AMT7S OPTIONAL
*" VALUE(ENROLLMENT_VALUE_UNTIL) TYPE ENDDA OPTIONAL
*" VALUE(EXTERNALNAME) TYPE UZORD OPTIONAL
*" VALUE(SUBTYPE) TYPE SUBTY OPTIONAL
*" VALUE(SOCIAL_INSURANCE_ENTITY_ID) TYPE PCO_ENTIT OPTIONAL
*" VALUE(AFFILIATION_ACCOUNT) TYPE PCO_ACCAF OPTIONAL
*" VALUE(EMPLOYEE_PERCENTAGE) TYPE PCO_PEEMP OPTIONAL
*" VALUE(COMPANY_PERCENTAGE) TYPE PCO_PECOM OPTIONAL
*" VALUE(EMPLOYEE_VALUE) TYPE PCO_BTEMP OPTIONAL
*" VALUE(ID_BENEFICIO) TYPE ZHCIED_IDBENEF OPTIONAL
*" VALUE(TIPO_BENEFICIO) TYPE ZCOHCMPYDE_TIPOBF OPTIONAL
*" VALUE(IS_0014) TYPE XFELD OPTIONAL
*" VALUE(IS_0831) TYPE XFELD OPTIONAL
*" EXPORTING
*" VALUE(MESSAGES_OUT) TYPE HRPP_T_BAPIRETURN1
*"----------------------------------------------------------------------
* Historial de modificaciones:
*----------------------------------------------------------------------*
* Fecha: 26/05/2020
* Autor: Diego Ignacio Pagano
* Fabrica: TIVIT
* Modificación: @0001.
* Detalle: Se modifica la carga para evitar la duplicación de registros
*----------------------------------------------------------------------*
* Fecha: 27/07/2020
* Autor: Diego Ignacio Pagano
* Fabrica: TIVIT
* Modificación: @0002.
* Detalle: Se añade el parámetro tipo de beneficio para evitar errores
* de carga en los registros
*----------------------------------------------------------------------*
***"----------------------------------------------------------------------
IF ls_return IS INITIAL.
fecha_fin = enrollment_value_until.
IF is_0014 EQ abap_true.
ls_p0014-pernr = pernr.
ls_p0014-begda = effective_from.
ls_p0014-endda = enrollment_value_until.
ls_p0014-subty = pay_component.
ls_p0014-lgart = pay_component.
ls_p0014-betrg = enrollment_amount.
ls_p0014-zuord = externalname.
ls_p0014-zzidbf = id_beneficio.
*** INICIO MOD-@0002 - DPAGANO - 29/07/2020
ls_p0014-zztipobf = tipo_beneficio.
*** FIN MOD-@0002 - DPAGANO - 29/07/2020
IF employee_percentage GT 0.
ls_p0014-anzhl = employee_percentage.
ELSE.
CLEAR : ls_p0014-anzhl, ls_p0014-zeinh.
ENDIF.
CLEAR: ls_retur.
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
infty = '0014'
number = pernr
subtype = ls_p0014-subty
validitybegin = ls_p0014-begda
validityend = fecha_fin
recordnumber = ls_p0014-seqnr
record = ls_p0014
operation = lv_actio
IMPORTING
return = ls_retur.
IF ls_retur IS INITIAL.
ls_retur-type = 'S'.
ls_retur-message = 'Inftipo 0014 cargado con exito.'.
ELSE.
ls_retur-log_no = pernr.
APPEND ls_retur TO messages_out.
ROLLBACK WORK.
CALL FUNCTION 'BAPI_EMPLOYEE_DEQUEUE'
EXPORTING
number = pernr.
EXIT.
ENDIF.
ls_retur-log_no = pernr.
APPEND ls_retur TO messages_out.
ENDIF.
ENDIF.
CALL FUNCTION 'HR_PSBUFFER_INITIALIZE'.
IF ls_retur IS INITIAL.
ls_retur-type = 'S'.
ls_retur-message = 'Inftipo 0014 cargado con exito.'.
ELSE.
ls_retur-log_no = pernr.
APPEND ls_retur TO messages_out.
ROLLBACK WORK.
CALL FUNCTION 'HR_EMPLOYEE_DEQUEUE'
EXPORTING
number = pernr.
EXIT.
ENDIF.
ls_retur-log_no = pernr.
APPEND ls_retur TO messages_out.
IF is_0831 EQ abap_true.
ls_p0831-pernr = pernr.
ls_p0831-begda = effective_from.
ls_p0831-endda = enrollment_value_until.
ls_p0831-subty = subtype.
ls_p0831-dataf = effective_from.
ls_p0831-accaf = affiliation_account.
ls_p0831-peemp = employee_percentage.
ls_p0831-pecom = company_percentage.
ls_p0831-btemp = employee_value.
ls_p0831-zzidbf = id_beneficio.
*** INICIO MOD-@0002 - DPAGANO - 29/07/2020
ls_p0831-zztipobf = tipo_beneficio.
*** FIN MOD-@0002 - DPAGANO - 29/07/2020
IF enrollment_value_until EQ '99991231'.
*** INICIO MOD-@0001 - DPAGANO 26/05/2020
*Con la validación anterior, comentar de la línea 138 a la 141.
*Para que no haga ningún DELETE y no consuma consecutivos
*innecesariamente.
* DELETE FROM pa0831 WHERE pernr EQ pernr
* AND begda EQ effective_from
* AND zzidbf EQ id_beneficio.
*** FIN MOD-@0001 - DPAGANO 26/05/2020
ELSE.
CLEAR: ls_retur.
READ TABLE lt_p0831 INTO DATA(ls_p0831_mod)
WITH KEY begda = effective_from
zzidbf = id_beneficio.
**** INICIO MOD-@0002 - DPAGANO - 29/07/2020
* zztipobf = tipo_beneficio.
**** FIN MOD-@0002 - DPAGANO - 29/07/2020
IF sy-subrc EQ 0.
IF sy-subrc EQ 0.
ls_retur-type = 'S'.
ls_retur-message = 'Inftipo 0831 cargado con exito.'.
ELSE.
ls_retur-type = 'E'.
ls_retur-message = 'Inftipo 0831 no limitado.'.
ENDIF.
ls_retur-log_no = ls_p0831-pernr.
APPEND ls_retur TO messages_out.
ENDIF.
ENDIF.
CALL FUNCTION 'BAPI_EMPLOYEE_DEQUEUE'
EXPORTING
number = pernr.
ELSE.
ls_retur-log_no = pernr.
APPEND ls_return TO messages_out.
ENDIF.
ENDFUNCTION.