Sie sind auf Seite 1von 25

*$*$**********************************************************************

*$*$ TITULO : Carga Masiva de Practicantes - Batch *

*$*$ DESCRIPCION: Carga masiva por Batch a PA40 *

*$*$**********************************************************************

REPORT ZHR_PY0007.

INCLUDE ZHR_PY0007_TOP.

INCLUDE ZHR_PY0007_F00.

INCLUDE ZHR_PY0007_F01.

*&---------------------------------------------------------------------*

*& Include ZHR_PY0005_TOP

*&---------------------------------------------------------------------*

DATA: GTI_ENTRADA TYPE filetable.

DATA:

BEGIN OF GTI_DATA OCCURS 0,

FEC_ING(10) TYPE C, "AL COMIENZO DEL BATCH (1)

POSICION TYPE PLANS, "PA0000 - MEDIDAS (2)

AP_PAT TYPE NACHN, "PA0002 - DATOS PERSONALES (5)

AP_MAT TYPE NACH2, "PA0002 - DATOS PERSONALES (5)

NOMBRES TYPE VORNA, "PA0002 - DATOS PERSONALES (5)

TIP_DOC TYPE ICTYP, "HARDCODEADO POR DEFECTO

NRO_DOC TYPE ICNUM, "PA0001 - PERSONAL (3)

FEC_NAC(10) TYPE C, "PA0002 - DATOS PERSONALES (5)

SEXO TYPE C, "PA0002 - DATOS PERSONALES (5)

NACION TYPE NATIO, "PA0002 - DATOS PERSONALES (5)

EST_CIVIL TYPE FATXT, "PA0002 - DATOS PERSONALES (5)

IND_DISC TYPE C, "PA0002 - DATOS PERSONALES (5)

SUEL_BAS TYPE BETRG, "EMOL.BSIC (8)

ASIG_FAMI TYPE CHAR2, "BETRG, "EMOL.BSIC (8) CCNOMINA = 9007 (LGART)

MOVILIDAD TYPE BETRG, "EMOL.BSIC (8) CCNOMINA = 9080 (LGART)

SIST_PENSI TYPE MGART, "DATOS PREVISIONALES (11)

AFP TYPE EMFSL, "DATOS PREVISIONALES (11)


CUSPP TYPE MTGLN, "DATOS PREVISIONALES (11)

DIV_PER TYPE WERKS, "PA0000 - MEDIDAS (2)

GRUP_PER TYPE PERSG, "PA0000 - MEDIDAS (2)

AREA_PER TYPE PERSK, "PA0000 - MEDIDAS (2)

FEC_MED_I(10) TYPE C, "PA0000 - MEDIDAS (2)

FEC_MED_F(10) TYPE C, "PA0000 - MEDIDAS (2)

TIP_MED TYPE MASSG, "PA0000 - MEDIDAS (2)

SUB_DIV TYPE BTRTL, "ASIGNACIN ORGANIZATIVA (4)

AREA_NOM TYPE ABKRS, "ASIGNACIN ORGANIZATIVA (4)

ENCA_DAT TYPE SACHP, "ASIGNACIN ORGANIZATIVA (4)

ENCA_TIME TYPE SACHZ, "ASIGNACIN ORGANIZATIVA (4)

ENCA_NOM TYPE P0001-SACHA, "ASIGNACIN ORGANIZATIVA (4)

DIR_COMP TYPE STRAS, "DIRECCIONES (6)

PAIS_DIR TYPE LAND1, "DIRECCIONES (6)

TIP_VIA TYPE P0006-ZZ_TPVIA, "DIRECCIONES (6)

NOM_VIA TYPE P0006-ZZ_NOMVIA, ""DIRECCIONES (6) HARDCODEADO

NUM_VIA TYPE P0006-ZZ_NUMVIA, "DIRECCIONES (6)

DEPTO TYPE P0006-ZZ_REGIO, "DIRECCIONES (6)

PROV TYPE P0006-ZZ_COUNC, "DIRECCIONES (6)

DISTRITO TYPE P0006-ZZ_CITYC, "DIRECCIONES (6)

INTERIOR TYPE P0006-ZZ_INTER, "DIRECCIONES (6)

MANZANA TYPE P0006-ZZ_MANZNA, "DIRECCIONES (6)

LOTE TYPE P0006-ZZ_LOTE, "DIRECCIONES (6)

BLOCK TYPE P0006-ZZ_BLOCK, "DIRECCIONES (6)

ETAPA TYPE P0006-ZZ_ETAPA, "DIRECCIONES (6)

TIP_ZONA TYPE P0006-ZZ_CDZONA, "DIRECCIONES (6)

NOM_ZONA TYPE P0006-ZZ_DSZON, "DIRECCIONES (6)

REFERENCIA TYPE P0006-ZZ_REFRNCIA, "DIRECCIONES (6)

UBIGEO(8) TYPE C, "HARCODEADO DIRECCIONES (6)

BANK_PAG TYPE BANKL, "RELACIN BANCARIA (9)

CTA_PAG TYPE BANKN, "RELACIN BANCARIA (9)

CTA_INTER TYPE CHAR20, "CUENTA INTERBANCARIA

CLA_FORM TYPE SLART, "CREAR FORMACIN (12)

FORM_TIP type CHAR2, "AUSBI, "DATOS PREVISIONALES (11)


INSTITUTO TYPE INSTI, "DATOS PREVISIONALES (11)

TITULO TYPE SLABS, "DATOS PREVISIONALES (11)

FEC_IN_FORM(10) TYPE C, "DATOS PREVISIONALES (11)

FEC_FIN_FORM(10) TYPE C, "DATOS PREVISIONALES (11)

TIP_CONT TYPE CTTYP, "ELEMENTOS CONTRATO (10)

FEC_IN_CONT(10) TYPE C, "ELEMENTOS CONTRATO (10)

FEC_FIN_CONT(10) TYPE C, "ELEMENTOS CONTRATO (10)

END OF GTI_DATA.

DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.

DATA BEGIN OF MESSTAB OCCURS 10.

INCLUDE STRUCTURE BDCMSGCOLL.

DATA END OF MESSTAB.

*TABLAS PARA LOG

data: g_log_handle type BALLOGHNDL,

g_log_handle_tab type bal_t_logh.

*$*$----------------------------------------------------------------------*

*$*$ VARIABLES GLOBALES *

*$*$----------------------------------------------------------------------*

DATA: V_FLAG TYPE C.

data: v_cod_emp type PERNR-pernr.

*$*$----------------------------------------------------------------------*

*$*$ CONSTANTES GLOBALES *

*$*$----------------------------------------------------------------------*

CONSTANTS:
gc_object type balobj_d value 'ZHR',

gc_subobject type balsubobj value 'ZHR_AR0001'.

*$*$---------------------------------------------------------------------*

*$*$ Parmetros de Seleccin

*$*$---------------------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE text-001.

PARAMETERS: P_RUT1 TYPE STRING DEFAULT 'C:\'.

SELECTION-SCREEN END OF BLOCK b01.

SELECTION-SCREEN BEGIN OF BLOCK b02 WITH FRAME TITLE text-002.

PARAMETERS: P_LOG1 RADIOBUTTON GROUP C1 DEFAULT 'X',

P_LOG2 RADIOBUTTON GROUP C1.

SELECTION-SCREEN END OF BLOCK b02.

*&---------------------------------------------------------------------*

*& Include ZHR_PY0005_F00

*&---------------------------------------------------------------------*

*$*$----------------------------------------------------------------------*

*$*$ AT SELECTION-SCREEN ON *

*$*$----------------------------------------------------------------------*

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_RUT1.

DATA: v_rc TYPE i.

DATA: wa_entrada LIKE LINE OF GTI_ENTRADA.

CALL METHOD cl_gui_frontend_services=>file_open_dialog

EXPORTING

default_extension = '*.TXT'

file_filter = '(*.TXT)|*.TXT'

CHANGING
file_table = GTI_ENTRADA

rc = v_rc

EXCEPTIONS

file_open_dialog_failed = 1

cntl_error = 2

error_no_gui = 3

OTHERS = 4.

IF sy-subrc EQ 0.

READ TABLE gti_entrada INTO wa_entrada INDEX 1.

IF sy-subrc EQ 0.

p_rut1 = wa_entrada-filename.

ENDIF.

ENDIF.

*$*$----------------------------------------------------------------------*

*$*$ START-OF-SELECTION *

*$*$----------------------------------------------------------------------*

START-OF-SELECTION.

PERFORM ABRIR_ARCHIVO.

PERFORM LOG_CREATE.

PERFORM CARGA_MASIVA.

PERFORM LOG_DISPLAY.

*&---------------------------------------------------------------------*

*& Include ZHR_PY0005_F01

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*& Form ABRIR_ARCHIVO

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* --> p1 text
* <-- p2 text

*----------------------------------------------------------------------*

FORM ABRIR_ARCHIVO .

TYPE-POOLS TRUXS.

DATA V_FILENAME TYPE STRING.

V_FILENAME = P_RUT1.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = V_FILENAME

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = 'X'

TABLES

DATA_TAB = GTI_DATA

EXCEPTIONS

FILE_OPEN_ERROR = 1

FILE_READ_ERROR = 2

NO_BATCH = 3

GUI_REFUSE_FILETRANSFER = 4

INVALID_TYPE = 5

NO_AUTHORITY = 6

UNKNOWN_ERROR = 7

BAD_DATA_FORMAT = 8

HEADER_NOT_ALLOWED = 9

SEPARATOR_NOT_ALLOWED = 10

HEADER_TOO_LONG = 11

UNKNOWN_DP_ERROR = 12

ACCESS_DENIED = 13

DP_OUT_OF_MEMORY = 14

DISK_FULL = 15

DP_TIMEOUT = 16

OTHERS = 17.

IF SY-SUBRC <> 0.
EXIT.

ENDIF.

ENDFORM. " ABRIR_ARCHIVO

*&---------------------------------------------------------------------*

*& Form CARGA_MASIVA

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* --> p1 text

* <-- p2 text

*----------------------------------------------------------------------*

FORM CARGA_MASIVA .

DATA: V_IMPORTE1(13) TYPE C.

DATA: V_IMPORTE2(13) TYPE C.

DATA: V_IMPORTE3(13) TYPE C.

DATA: V_FEC_01(10) TYPE C.

DATA: V_FEC_ING1(10) TYPE C.

DATA: V_FEC_MEDI1(10) TYPE C.

DATA: V_FEC_MEDF1(10) TYPE C.

DATA: V_FEC_NAC1(10) TYPE C.

DATA: V_FEC_ICONT1(10) TYPE C.

DATA: V_FEC_FCONT1(10) TYPE C.

DATA: V_FEC_IFORM1(10) TYPE C.

DATA: V_FEC_FFORM1(10) TYPE C.

DATA: V_MODE(1) TYPE C.

DATA: V_REG TYPE I.

LOOP AT GTI_DATA.

* I@1 Validacin si el perodo de la posicin est vigente, para no chancar


data.

data l_posi type c.

perform val_peri_posicion using GTI_DATA-FEC_ING

GTI_DATA-FEC_FIN_CONT

GTI_DATA-POSICION

changing l_posi.
if l_posi eq 'X'.

SELECT SINGLE PERNR INTO V_COD_EMP FROM PA0185

WHERE ICNUM EQ GTI_DATA-NRO_DOC.

PERFORM LOG_MSG_ADD3 USING V_COD_EMP GTI_DATA-POSICION. "GTI_DATA-COD_EMP.

PERFORM LOG_SAVE.

continue.

endif.

* I@1 Validacin si el perodo de la posicin est vigente, para no chancar


data.

V_IMPORTE1 = GTI_DATA-SUEL_BAS.

* V_IMPORTE2 = GTI_DATA-ASIG_FAMI.

V_IMPORTE3 = GTI_DATA-MOVILIDAD.

CONDENSE V_IMPORTE1 NO-GAPS.

CONDENSE V_IMPORTE2 NO-GAPS.

CONDENSE V_IMPORTE3 NO-GAPS.

PERFORM BDC_DYNPRO USING 'SAPMP50A' '2000'.

PERFORM BDC_FIELD USING 'BDC_CURSOR' 'T529T-MNTXT(01)'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '=PICK'.

* PERFORM bdc_field USING 'RP50G-PERNR' GTI_DATA-COD_EMP.

PERFORM BDC_FIELD USING 'RP50G-PERNR' SPACE.

CONCATENATE GTI_DATA-FEC_ING(2) GTI_DATA-FEC_ING+3(2) GTI_DATA-FEC_ING+6(4)

INTO V_FEC_ING1 SEPARATED BY '.'.

PERFORM BDC_FIELD USING 'RP50G-EINDA' V_FEC_ING1. "GTI_DATA-FEC_ING.

PERFORM BDC_FIELD USING 'RP50G-SELEC(01)' 'X'.

PERFORM BDC_DYNPRO USING 'MP000000' '2000'.

PERFORM BDC_FIELD USING 'BDC_CURSOR' 'PSPAR-PLANS'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '=UPD'.

CONCATENATE GTI_DATA-FEC_MED_I(2) GTI_DATA-FEC_MED_I+3(2) GTI_DATA-


FEC_MED_I+6(4)

INTO V_FEC_MEDI1 SEPARATED BY '.'.


PERFORM BDC_FIELD USING 'P0000-BEGDA' V_FEC_MEDI1. "GTI_DATA-FEC_MED_I.

CONCATENATE GTI_DATA-FEC_MED_F(2) GTI_DATA-FEC_MED_F+3(2) GTI_DATA-


FEC_MED_F+6(4)

INTO V_FEC_MEDF1 SEPARATED BY '.'.

PERFORM BDC_FIELD USING 'P0000-ENDDA' V_FEC_MEDF1. "GTI_DATA-FEC_MED_F.

PERFORM BDC_FIELD USING 'P0000-MASSG' GTI_DATA-TIP_MED.

PERFORM BDC_FIELD USING 'PSPAR-PLANS' GTI_DATA-POSICION.

PERFORM BDC_FIELD USING 'PSPAR-WERKS' GTI_DATA-DIV_PER.

PERFORM BDC_FIELD USING 'PSPAR-PERSG' GTI_DATA-GRUP_PER.

PERFORM BDC_FIELD USING 'PSPAR-PERSK' GTI_DATA-AREA_PER.

PERFORM BDC_DYNPRO USING 'MP018500' '2000'.

PERFORM BDC_FIELD USING 'BDC_CURSOR' 'P0185-ICNUM'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '=UPD'.

CONCATENATE GTI_DATA-FEC_NAC(2) GTI_DATA-FEC_NAC+3(2) GTI_DATA-FEC_NAC+6(4)

INTO V_FEC_NAC1 SEPARATED BY '.'.

PERFORM BDC_FIELD USING 'P0185-BEGDA' V_FEC_NAC1. "GTI_DATA-FEC_NAC.

PERFORM BDC_FIELD USING 'P0185-ICNUM' GTI_DATA-NRO_DOC.

PERFORM BDC_DYNPRO USING 'MP000100' '2000'.

PERFORM BDC_FIELD USING 'BDC_CURSOR' 'P0001-SACHA'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '=UPD'.

PERFORM BDC_FIELD USING 'P0001-BTRTL' GTI_DATA-SUB_DIV.

PERFORM BDC_FIELD USING 'P0001-ABKRS' GTI_DATA-AREA_NOM.

PERFORM BDC_FIELD USING 'P0001-SACHP' GTI_DATA-ENCA_DAT.

PERFORM BDC_FIELD USING 'P0001-SACHZ' GTI_DATA-ENCA_TIME.

PERFORM BDC_FIELD USING 'P0001-SACHA' GTI_DATA-ENCA_NOM.

PERFORM BDC_DYNPRO USING 'MP000200' '2010'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '=UPD'.

PERFORM BDC_FIELD USING 'P0002-BEGDA' V_FEC_NAC1. "GTI_DATA-FEC_NAC.

PERFORM BDC_FIELD USING 'P0002-NACHN' GTI_DATA-AP_PAT.

PERFORM BDC_FIELD USING 'P0002-VORNA' GTI_DATA-NOMBRES.

PERFORM BDC_FIELD USING 'P0002-NACH2' GTI_DATA-AP_MAT.

PERFORM BDC_FIELD USING 'P0002-GBDAT' V_FEC_NAC1. "GTI_DATA-FEC_NAC.

IF GTI_DATA-SEXO EQ 'M'.

PERFORM BDC_FIELD USING 'Q0002-GESC1' 'X'.

ELSE.
PERFORM BDC_FIELD USING 'Q0002-GESC2' 'X'.

ENDIF.

PERFORM BDC_FIELD USING 'P0002-NATIO' GTI_DATA-NACION.

PERFORM BDC_FIELD USING 'Q0002-FATXT' GTI_DATA-EST_CIVIL.

PERFORM BDC_FIELD USING 'P0002-ZZ_INDDI' GTI_DATA-IND_DISC.

PERFORM BDC_DYNPRO USING 'MP000600' '2004'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '=UPD'.

PERFORM BDC_FIELD USING 'P0006-STRAS' GTI_DATA-DIR_COMP.

PERFORM BDC_FIELD USING 'P0006-LAND1' GTI_DATA-PAIS_DIR.

PERFORM BDC_FIELD USING 'P0006-ZZ_REGIO' GTI_DATA-DEPTO.

PERFORM BDC_FIELD USING 'P0006-ZZ_COUNC' GTI_DATA-PROV.

PERFORM BDC_FIELD USING 'P0006-ZZ_CITYC' GTI_DATA-DISTRITO.

PERFORM BDC_FIELD USING 'P0006-ZZ_TPVIA' GTI_DATA-TIP_VIA.

PERFORM BDC_FIELD USING 'P0006-ZZ_NUMVIA' GTI_DATA-NUM_VIA.

PERFORM BDC_FIELD USING 'P0006-ZZ_INTER' GTI_DATA-INTERIOR.

PERFORM BDC_FIELD USING 'P0006-ZZ_MANZNA' GTI_DATA-MANZANA.

PERFORM BDC_FIELD USING 'P0006-ZZ_LOTE' GTI_DATA-LOTE.

PERFORM BDC_FIELD USING 'P0006-ZZ_BLOCK' GTI_DATA-BLOCK.

PERFORM BDC_FIELD USING 'P0006-ZZ_REFRNCIA' GTI_DATA-REFERENCIA.

PERFORM BDC_FIELD USING 'P0006-ZZ_CDZONA' GTI_DATA-TIP_ZONA.

PERFORM BDC_FIELD USING 'P0006-ZZ_DSZON' GTI_DATA-NOM_ZONA.

PERFORM BDC_DYNPRO USING 'MP000700' '2000'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '=UPD'.

*@01INI PROY-CARGA MASIVA DE PRACTICANTES

* SE CAMBIA DEL VALOR ADMINIST A PRACTICA

* EN EL CAMPO P0007-SCHKZ.

PERFORM BDC_FIELD USING 'P0007-SCHKZ' 'PRACTICA'.

*@01FIN PROY-CARGA MASIVA DE PRACTICANTES

PERFORM BDC_FIELD USING 'P0007-ZTERF' '9'.

PERFORM BDC_DYNPRO USING 'MP000800' '2000'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '=UPD'.


*@01INI PROY-CARGA MASIVA DE PRACTICANTES

* SE CAMBIA EL GRUPO DE EMPLEADO A

PERFORM BDC_FIELD USING 'P0008-TRFGR' 'PRACTICA'.

PERFORM BDC_FIELD USING 'P0008-TRFST' '01'.

PERFORM BDC_FIELD USING 'Q0008-BETRG(01)' V_IMPORTE1.

*@01FIN PROY-CARGA MASIVA DE PRACTICANTES

PERFORM BDC_DYNPRO USING 'MP000900' '2000'.

PERFORM BDC_FIELD USING 'BDC_CURSOR' 'P0009-BANKN'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '=UPD'.

IF GTI_DATA-BANK_PAG IS INITIAL AND GTI_DATA-CTA_PAG IS INITIAL AND

GTI_DATA-CTA_INTER IS INITIAL.

PERFORM BDC_FIELD USING 'P0009-ZLSCH' 'E'.

ELSE.

PERFORM BDC_FIELD USING 'P0009-BANKL' GTI_DATA-BANK_PAG.

PERFORM BDC_FIELD USING 'P0009-BANKN' GTI_DATA-CTA_PAG.

PERFORM BDC_FIELD USING 'P0009-ZZ_TEXTO' GTI_DATA-CTA_INTER.

ENDIF.

PERFORM BDC_DYNPRO USING 'MP001600' '2000'.

PERFORM BDC_FIELD USING 'BDC_CURSOR' 'P0016-CTTYP'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '=UPD'.

CONCATENATE GTI_DATA-FEC_IN_CONT(2) GTI_DATA-FEC_IN_CONT+3(2) GTI_DATA-


FEC_IN_CONT+6(4)

INTO V_FEC_ICONT1 SEPARATED BY '.'.

PERFORM BDC_FIELD USING 'P0016-BEGDA' V_FEC_ICONT1. "GTI_DATA-FEC_IN_CONT.

PERFORM BDC_FIELD USING 'P0016-CTTYP' GTI_DATA-TIP_CONT.

IF GTI_DATA-TIP_CONT NE '01'.

CONCATENATE GTI_DATA-FEC_FIN_CONT(2) GTI_DATA-FEC_FIN_CONT+3(2) GTI_DATA-


FEC_FIN_CONT+6(4)

INTO V_FEC_FCONT1 SEPARATED BY '.'.

PERFORM BDC_FIELD USING 'P0016-CTEDT' V_FEC_FCONT1. "GTI_DATA-


FEC_FIN_CONT.

ENDIF.

PERFORM BDC_DYNPRO USING 'SAPMSSY0' '0120'.


PERFORM BDC_FIELD USING 'BDC_CURSOR' '07/04'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '=PICK'.

CONCATENATE GTI_DATA-FEC_IN_FORM(2) GTI_DATA-FEC_IN_FORM+3(2) GTI_DATA-


FEC_IN_FORM+6(4)

INTO V_FEC_IFORM1 SEPARATED BY '.'.

CONCATENATE GTI_DATA-FEC_FIN_FORM(2) GTI_DATA-FEC_FIN_FORM+3(2) GTI_DATA-


FEC_FIN_FORM+6(4)

INTO V_FEC_FFORM1 SEPARATED BY '.'.

PERFORM BDC_DYNPRO USING 'MP002200' '2000'.

PERFORM BDC_FIELD USING 'BDC_CURSOR' 'P0022-SLABS'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '=UPD'.

PERFORM BDC_FIELD USING 'P0022-BEGDA' V_FEC_IFORM1. "GTI_DATA-FEC_IN_FORM.

PERFORM BDC_FIELD USING 'P0022-ENDDA' V_FEC_FFORM1. "GTI_DATA-FEC_FIN_FORM.

PERFORM BDC_FIELD USING 'P0022-SLART' GTI_DATA-CLA_FORM.

PERFORM BDC_FIELD USING 'P0022-SLABS' GTI_DATA-TITULO.

PERFORM BDC_FIELD USING 'P0022-AUSBI' GTI_DATA-FORM_TIP.

PERFORM BDC_FIELD USING 'P0022-INSTI' GTI_DATA-INSTITUTO.

PERFORM BDC_DYNPRO USING 'SAPMP50A' '2000'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '/EBCK'.

PERFORM BDC_FIELD USING 'BDC_CURSOR' 'T529T-MNTXT(01)'.

V_MODE = 'A'.

CALL TRANSACTION 'PA40' USING BDCDATA

MODE V_MODE " 'N'

MESSAGES INTO MESSTAB.

* DESCRIBE TABLE MESSTAB LINES V_REG. "E-@01

* IF V_REG EQ 0. "E-@01

READ TABLE MESSTAB WITH KEY MSGTYP = 'E'. "I-@01

IF SY-SUBRC NE 0. "I-@01

SELECT SINGLE PERNR INTO V_COD_EMP FROM PA0185

WHERE ICNUM EQ GTI_DATA-NRO_DOC.

PERFORM LOG_MSG_ADD2 USING V_COD_EMP. "GTI_DATA-COD_EMP.


PERFORM LOG_SAVE.

* BEGIN I-@01.

REFRESH BDCDATA.

REFRESH MESSTAB.

PERFORM INFO_041 USING V_FEC_ING1 V_COD_EMP. "CARGAR DATA EN INFOTIPO 41 -


DATOS DE FECHA

PERFORM VALIDAR_POSICION USING V_FEC_ING1 GTI_DATA-POSICION V_COD_EMP.


"GTI_DATA-FEC_ING GTI_DATA-COD_EMP.

* END I-@01.

ELSE.

* V_MODE = 'E'.

* CALL TRANSACTION 'PA40' USING BDCDATA

* MODE V_MODE " 'N'

* MESSAGES INTO MESSTAB.

LOOP AT MESSTAB.

IF MESSTAB-MSGNR EQ '002' OR MESSTAB-MSGNR EQ '347'.

MESSTAB-MSGTYP = 'E'.

MODIFY MESSTAB INDEX SY-TABIX.

ENDIF.

ENDLOOP.

ENDIF.

IF P_LOG2 EQ 'X'.

LOOP AT MESSTAB WHERE MSGTYP EQ 'E'.

PERFORM LOG_MSG_ADD USING MESSTAB[].

PERFORM LOG_SAVE.

V_FLAG = 'X'.

ENDLOOP.

ELSE.

LOOP AT MESSTAB.

PERFORM LOG_MSG_ADD USING MESSTAB[].

PERFORM LOG_SAVE.

V_FLAG = 'X'.

ENDLOOP.

ENDIF.
* REFRESH BDCDATA. "E-@01

* REFRESH MESSTAB. "E-@01

* PERFORM INFO_041 USING V_FEC_ING1 V_COD_EMP. "CARGAR DATA EN INFOTIPO 41 -


DATOS DE FECHA "E-@01

* PERFORM VALIDAR_POSICION USING V_FEC_ING1 GTI_DATA-POSICION V_COD_EMP.


"GTI_DATA-FEC_ING GTI_DATA-COD_EMP. "E-@01

ENDLOOP.

ENDFORM. " CARGA_MASIVA

*----------------------------------------------------------------------*

* Start new screen *

*----------------------------------------------------------------------*

FORM BDC_DYNPRO USING PROGRAM DYNPRO.

CLEAR BDCDATA.

BDCDATA-PROGRAM = PROGRAM.

BDCDATA-DYNPRO = DYNPRO.

BDCDATA-DYNBEGIN = 'X'.

APPEND BDCDATA.

ENDFORM. "BDC_DYNPRO

*----------------------------------------------------------------------*

* Insert field *

*----------------------------------------------------------------------*

FORM BDC_FIELD USING FNAM FVAL.

CLEAR BDCDATA.

BDCDATA-FNAM = FNAM.

BDCDATA-FVAL = FVAL.

APPEND BDCDATA.

ENDFORM. "BDC_FIELD

*&---------------------------------------------------------------------*

*& Form LOG_CREATE

*&---------------------------------------------------------------------*

* text
*----------------------------------------------------------------------*

* --> p1 text

* <-- p2 text

*----------------------------------------------------------------------*

FORM LOG_CREATE .

DATA: T_LOG_WA TYPE BAL_S_LOG.

PERFORM LOG_REFRESH USING G_LOG_HANDLE

G_LOG_HANDLE_TAB.

T_LOG_WA-OBJECT = GC_OBJECT.

T_LOG_WA-SUBOBJECT = GC_SUBOBJECT.

T_LOG_WA-ALDATE = SY-DATUM.

T_LOG_WA-ALTIME = SY-UZEIT.

T_LOG_WA-ALUSER = SY-UNAME.

T_LOG_WA-ALTCODE = SY-TCODE.

T_LOG_WA-ALPROG = SY-REPID.

T_LOG_WA-ALMODE = 'D'.

T_LOG_WA-ALCHDATE = SY-DATUM.

T_LOG_WA-ALCHTIME = SY-UZEIT.

T_LOG_WA-ALCHUSER = SY-UNAME.

CALL FUNCTION 'BAL_LOG_CREATE'

EXPORTING

I_S_LOG = T_LOG_WA

IMPORTING

E_LOG_HANDLE = G_LOG_HANDLE

EXCEPTIONS

LOG_HEADER_INCONSISTENT = 1

OTHERS = 2.

IF NOT SY-SUBRC IS INITIAL.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.


ENDIF.

ENDFORM. " LOG_CREATE

*&---------------------------------------------------------------------*

*& Form LOG_REFRESH

*&---------------------------------------------------------------------*

FORM LOG_REFRESH USING P_LOG_HANDLE TYPE BALLOGHNDL

P_LOG_HANDLE_TAB TYPE BAL_T_LOGH.

CALL FUNCTION 'BAL_LOG_REFRESH'

EXPORTING

I_LOG_HANDLE = P_LOG_HANDLE

EXCEPTIONS

LOG_NOT_FOUND = 1

OTHERS = 2.

IF NOT SY-SUBRC IS INITIAL.

EXIT.

ENDIF.

REFRESH P_LOG_HANDLE_TAB.

ENDFORM. "LOG_REFRESH

*&---------------------------------------------------------------------*

*& Form LOG_MSG_ADD

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* -->P_MESSTAB[] text

*----------------------------------------------------------------------*

FORM LOG_MSG_ADD USING P_MESSTAB.

DATA: L_MSG_WA TYPE BAL_S_MSG.

L_MSG_WA-MSGTY = MESSTAB-MSGTYP.

L_MSG_WA-MSGID = MESSTAB-MSGID.

L_MSG_WA-MSGNO = MESSTAB-MSGNR.
L_MSG_WA-MSGV1 = MESSTAB-MSGV1.

L_MSG_WA-MSGV2 = MESSTAB-MSGV2.

CALL FUNCTION 'BAL_LOG_MSG_ADD'

EXPORTING

I_LOG_HANDLE = G_LOG_HANDLE

I_S_MSG = L_MSG_WA

EXCEPTIONS

LOG_NOT_FOUND = 1

MSG_INCONSISTENT = 2

LOG_IS_FULL = 3

OTHERS = 4.

IF NOT SY-SUBRC IS INITIAL.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

APPEND G_LOG_HANDLE TO G_LOG_HANDLE_TAB.

ENDFORM. " LOG_MSG_ADD

*&---------------------------------------------------------------------*

*& Form LOG_SAVE

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* --> p1 text

* <-- p2 text

*----------------------------------------------------------------------*

FORM LOG_SAVE .

DATA: L_BAL_T_LGNM TYPE BAL_T_LGNM.

CALL FUNCTION 'BAL_DB_SAVE'

EXPORTING

I_CLIENT = SY-MANDT
I_IN_UPDATE_TASK = SPACE

I_SAVE_ALL = SPACE

I_T_LOG_HANDLE = G_LOG_HANDLE_TAB

IMPORTING

E_NEW_LOGNUMBERS = L_BAL_T_LGNM

EXCEPTIONS

LOG_NOT_FOUND = 1

SAVE_NOT_ALLOWED = 2

NUMBERING_ERROR = 3.

IF NOT SY-SUBRC IS INITIAL.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. " LOG_SAVE

*&---------------------------------------------------------------------*

*& Form LOG_DISPLAY

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* --> p1 text

* <-- p2 text

*----------------------------------------------------------------------*

FORM LOG_DISPLAY .

CALL FUNCTION 'BAL_DSP_LOG_DISPLAY'

* EXPORTING

* I_S_DISPLAY_PROFILE =

* I_T_LOG_HANDLE =

* I_T_MSG_HANDLE =

* I_S_LOG_FILTER =

* I_S_MSG_FILTER =

* I_T_LOG_CONTEXT_FILTER =

* I_T_MSG_CONTEXT_FILTER =

* I_AMODAL =

* IMPORTING
* E_S_EXIT_COMMAND =

EXCEPTIONS

PROFILE_INCONSISTENT = 1

INTERNAL_ERROR = 2

NO_DATA_AVAILABLE = 3

NO_AUTHORITY = 4

OTHERS = 5.

IF NOT SY-SUBRC IS INITIAL.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. " LOG_DISPLAY

*&---------------------------------------------------------------------*

*& Form LOG_MSG_ADD

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* -->P_MESSTAB[] text

*----------------------------------------------------------------------*

FORM LOG_MSG_ADD2 USING P_COD.

DATA: L_MSG(50) TYPE C.

CONCATENATE 'Persona Registrada con Exito:' P_COD

INTO L_MSG SEPARATED BY SPACE.

CALL FUNCTION 'BAL_LOG_MSG_ADD_FREE_TEXT'

EXPORTING

I_LOG_HANDLE = G_LOG_HANDLE

I_MSGTY = 'I' "tipo de error

I_TEXT = L_MSG

EXCEPTIONS

LOG_NOT_FOUND = 1

MSG_INCONSISTENT = 2
LOG_IS_FULL = 3

OTHERS = 4.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

APPEND G_LOG_HANDLE TO G_LOG_HANDLE_TAB.

ENDFORM. " LOG_MSG_ADD

*&---------------------------------------------------------------------*

*& Form VALIDAR_POSICION

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* --> p1 text

* <-- p2 text

*----------------------------------------------------------------------*

FORM VALIDAR_POSICION USING P_FEC_IN

P_POSICION

P_NUM_PERS.

DATA: V_MODE(1) TYPE C. "I-@01

PERFORM BDC_DYNPRO USING 'SAPMH5A0' '5100'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.

PERFORM BDC_FIELD USING 'PPHDR-PLVAR' '01'.

PERFORM BDC_FIELD USING 'PM0D1-SEARK' P_POSICION.

PERFORM BDC_FIELD USING 'PM0D1-TIMR6' 'X'.

PERFORM BDC_FIELD USING 'PPHDR-BEGDA' P_FEC_IN.

PERFORM BDC_DYNPRO USING 'SAPMH5A0' '5100'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '=INSE'.

PERFORM BDC_FIELD USING 'PPHDR-PLVAR' '01'.

PERFORM BDC_FIELD USING 'PM0D1-SEARK' P_POSICION.

PERFORM BDC_FIELD USING 'PM0D1-TIMR6' 'X'.


PERFORM BDC_FIELD USING 'PPHDR-BEGDA' P_FEC_IN.

PERFORM BDC_FIELD USING 'MARKFELD(02)' 'X'.

PERFORM BDC_DYNPRO USING 'MP100100' '2000'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '=UPD'.

PERFORM BDC_FIELD USING 'P1001-RSIGN' 'A'.

PERFORM BDC_FIELD USING 'P1001-RELAT' '008'.

PERFORM BDC_FIELD USING 'P1001-SCLAS' 'P'.

PERFORM BDC_FIELD USING 'P1001-SOBID' P_NUM_PERS.

PERFORM BDC_FIELD USING 'P1001-PROZT' '100.00'.

PERFORM BDC_DYNPRO USING 'SAPMH5A0' '5100'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '=BACK'.

V_MODE = 'N'. "I-@01

CALL TRANSACTION 'PO13' USING BDCDATA

* MODE 'N' "E-@01

MODE V_MODE "I-@01

MESSAGES INTO MESSTAB.

* BEGIN I-@01

IF P_LOG2 EQ 'X'.

LOOP AT MESSTAB WHERE MSGTYP EQ 'E'.

PERFORM LOG_MSG_ADD USING MESSTAB[].

PERFORM LOG_SAVE.

ENDLOOP.

ELSE.

LOOP AT MESSTAB.

PERFORM LOG_MSG_ADD USING MESSTAB[].

PERFORM LOG_SAVE.

ENDLOOP.

ENDIF.

* END I-@01

REFRESH BDCDATA.
REFRESH MESSTAB.

ENDFORM. " VALIDAR_POSICION

*&---------------------------------------------------------------------*

*& Form INFO_041

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* -->P_V_FEC_ING1 text

* -->P_V_COD_EMP text

*----------------------------------------------------------------------*

FORM INFO_041 USING V_FEC_ING1

V_COD_EMP.

DATA: V_MODE(1) TYPE C. "I-@01

PERFORM BDC_DYNPRO USING 'SAPMP50A' '1000'.

PERFORM BDC_FIELD USING 'BDC_CURSOR' 'RP50G-PERNR'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.

PERFORM BDC_FIELD USING 'RP50G-PERNR' V_COD_EMP.

PERFORM BDC_FIELD USING 'RP50G-TIMR6' 'X'.

PERFORM BDC_DYNPRO USING 'SAPMP50A' '1000'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.

PERFORM BDC_FIELD USING 'RP50G-PERNR' V_COD_EMP.

PERFORM BDC_FIELD USING 'RP50G-TIMR6' 'X'.

PERFORM BDC_FIELD USING 'BDC_CURSOR' 'RP50G-CHOIC'.

PERFORM BDC_FIELD USING 'RP50G-CHOIC' '041'.

PERFORM BDC_DYNPRO USING 'SAPMP50A' '1000'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '=INS'.

PERFORM BDC_FIELD USING 'RP50G-PERNR' V_COD_EMP.

PERFORM BDC_FIELD USING 'RP50G-TIMR6' 'X'.

PERFORM BDC_FIELD USING 'RP50G-CHOIC' 'Datos de fecha'.

PERFORM BDC_DYNPRO USING 'MP004100' '2000'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '=UPD'.

PERFORM BDC_FIELD USING 'P0041-DAT01' V_FEC_ING1.


PERFORM BDC_FIELD USING 'P0041-DAT02' V_FEC_ING1.

PERFORM BDC_FIELD USING 'P0041-DAT03' V_FEC_ING1.

V_MODE = 'N'. "I-@01

CALL TRANSACTION 'PA30' USING BDCDATA

* MODE 'N' "E-@01

MODE V_MODE "I-@01

MESSAGES INTO MESSTAB.

* BEGIN I-@01

IF P_LOG2 EQ 'X'.

LOOP AT MESSTAB WHERE MSGTYP EQ 'E'.

PERFORM LOG_MSG_ADD USING MESSTAB[].

PERFORM LOG_SAVE.

ENDLOOP.

ELSE.

LOOP AT MESSTAB.

PERFORM LOG_MSG_ADD USING MESSTAB[].

PERFORM LOG_SAVE.

ENDLOOP.

ENDIF.

* END I-@01

REFRESH BDCDATA.

REFRESH MESSTAB.

ENDFORM. " INFO_041

*&---------------------------------------------------------------------*

*& Form VAL_PERI_POSICION

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* -->P_FEC_ING text
* -->P_FEC_FIN_CONT text

* -->P_POSICION text

* <--P_POSI text

*----------------------------------------------------------------------*

form VAL_PERI_POSICION using p_fec_ing

p_fec_fin

p_posicion

changing p_posi.

TYPES: BEGIN OF Y_RES,

TRABAJADOR TYPE SOBID,

BEGDA1 TYPE SY-DATUM,

ENDDA1 TYPE SY-DATUM,

END OF Y_RES.

DATA: T_RES TYPE STANDARD TABLE OF Y_RES.

DATA: E_RES TYPE Y_RES.

SELECT SOBID BEGDA ENDDA FROM HRP1001 INTO TABLE T_RES WHERE

OTYPE EQ 'S'

AND RSIGN EQ 'A'

AND RELAT EQ '008'

AND OBJID EQ p_posicion

AND ENDDA GE p_fec_ing.

IF SY-SUBRC EQ 0.

move 'X' to p_posi.

ENDIF.

endform. " VAL_PERI_POSICION

*&---------------------------------------------------------------------*

*& Form LOG_MSG_ADD3

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*
* -->P_COD text

* -->P_POSI text

*----------------------------------------------------------------------*

FORM LOG_MSG_ADD3 USING P_COD P_POSI.

DATA: L_MSG(170) TYPE C.

CONCATENATE 'El trabajor:' P_COD

'no puede asignarse a la posicin:' P_POSI

'(ya existe una persona en esa posicin).'

INTO L_MSG SEPARATED BY SPACE.

CALL FUNCTION 'BAL_LOG_MSG_ADD_FREE_TEXT'

EXPORTING

I_LOG_HANDLE = G_LOG_HANDLE

I_MSGTY = 'W' "tipo de error

I_TEXT = L_MSG

EXCEPTIONS

LOG_NOT_FOUND = 1

MSG_INCONSISTENT = 2

LOG_IS_FULL = 3

OTHERS = 4.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

APPEND G_LOG_HANDLE TO G_LOG_HANDLE_TAB.

ENDFORM. " LOG_MSG_ADD3

Das könnte Ihnen auch gefallen