miércoles, 8 de diciembre de 2010

Codigo para extraer las rubricas salariales

Este es un codigo curioso de como obtener las rubricas salariales, aunque al final se utilizó la call function de más abajo.

DATA: zpa0001 TYPE TABLE OF p0001 WITH HEADER LINE.
DATA: zpa0008 TYPE TABLE OF p0008 WITH HEADER LINE,
zpa0007 TYPE TABLE OF p0007 WITH HEADER LINE,
zpa0014 TYPE TABLE OF p0014 WITH HEADER LINE,
ZPPBWLA TYPE TABLE OF PBWLA WITH HEADER LINE.


* CALL FUNCTION 'HR_READ_INFOTYPE'
* EXPORTING
* pernr = wa_c_t_data-pernr
* infty = '0008'
* begda = '18000101'
* endda = '99991231'
* TABLES
* infty_tab = zpa0008.
*
* LOOP AT zpa0008.
* IF zpa0008-BEGDA <= wa_c_t_data-BEGDA * and zpa0008-endda >= wa_c_t_data-ENDDA.
* DO 40 TIMES VARYING LGA FROM ZPa0008-LGA01 NEXT ZPa0008-LGA02
* VARYING BTE FROM ZPa0008-BET01 NEXT ZPa0008-BET02.
* IF LGA eq '0001'.
* wa_c_t_data-Z_VB_0001 = bte.
* ELSEIF LGA eq '0004'.
* wa_c_t_data-Z_IHT_0004 = bte.
* ELSEIF LGA eq '0005'.
* wa_c_t_data-Z_CH_0005 = bte.
* ELSEIF LGA eq '0006'.
* wa_c_t_data-Z_TU_0006 = bte.
* ELSEIF LGA eq '0007'.
* wa_c_t_data-Z_AS_0007 = bte.
* ENDIF.
* ENDDO.
* endif.
* endloop.



CALL FUNCTION 'RP_FILL_WAGE_TYPE_TABLE_EXT'
EXPORTING
* APPLI = 'E'
begda = wa_c_t_data-BEGDA
endda = wa_c_t_data-ENDDA
INFTY = '0008'
PERNR = wa_c_t_data-PERNR
* SUBTY = '0 '
TABLES
PP0001 = zpa0001
PP0007 = zpa0007
PP0008 = zpa0008
PPBWLA = zPPBWLA .
EXCEPTIONS
ERROR_AT_INDIRECT_EVALUATION = 1 .
IF SY-SUBRC <> 0.
ENDIF.


LOOP AT zPPBWLA.
IF zPPBWLA-BEGDA <= wa_c_t_data-BEGDA and zPPBWLA-endda >= wa_c_t_data-ENDDA.
IF zPPBWLA-LGARt eq '0001'.
wa_c_t_data-Z_VB_0001 = zPPBWLA-betrg.
ELSEIF zPPBWLA-LGARt eq '0004'.
wa_c_t_data-Z_IHT_0004 = zPPBWLA-betrg.
ELSEIF zPPBWLA-LGARt eq '0005'.
wa_c_t_data-Z_CH_0005 = zPPBWLA-betrg.
ELSEIF zPPBWLA-LGARt eq '0006'.
wa_c_t_data-Z_TU_0006 = zPPBWLA-betrg.
ELSEIF zPPBWLA-LGARt eq '0007'.
wa_c_t_data-Z_AS_0007 = zPPBWLA-betrg.
ENDIF.
endif.
endloop.


CALL FUNCTION 'RP_FILL_WAGE_TYPE_TABLE_EXT'
EXPORTING
* APPLI = 'E'
begda = wa_c_t_data-BEGDA
endda = wa_c_t_data-ENDDA
INFTY = '0014'
PERNR = wa_c_t_data-PERNR
SUBTY = '3001'
TABLES
PP0001 = zpa0001
PP0007 = zpa0007
PP0008 = zpa0008
PPBWLA = zPPBWLA
PP0014 = zpa0014 .
EXCEPTIONS
ERROR_AT_INDIRECT_EVALUATION = 1 .
IF SY-SUBRC <> 0.
ENDIF.
LOOP AT zPPBWLA.
if zPPBWLA-BEGDA <= wa_c_t_data-BEGDA and zPPBWLA-endda >= wa_c_t_data-ENDDA
and zPPBWLA-LGART EQ '3001'.
wa_c_t_data-Z_PJ_3001 = zPPBWLA-betrg.
endif.
endloop.

No hay comentarios: