|
Is there any way to convert
XML file to word document through SAP?
The requirement is to import a XML file, convert it to word document and download it back to the same location. The below program import an XML file to an internal table. Also, take a look a this XML example: XML file example. Moises Moreno *----------------------------------------------------------------------* * PROGRAMA : ZHR02597 Batch Input Datos Reloj Checador * * leyendo un archivo XML * * AUTOR : Moises Moreno De Leon (GALVAK) * * FECHA : Junio 23, 2004 * *----------------------------------------------------------------------* REPORT ZHR02597 MESSAGE-ID ZG LINE-SIZE 80 LINE-COUNT 65 NO STANDARD PAGE HEADING. *----------------------------------------------------------------------* * Tablas * TABLES: PA0000, "HR Master Record: Infotype 0000 (Events) PA0001, "HR Master Record: Infotype 0001 (Org. Assignment PA0007, "HR Master Record: Infotype 0007 (Work Schedule) PA0008, "HR Master Record: Infotype 0008 (Basic Pay) PA2003, "HR Time Record: Infotype 2003 (Substitutions) T508A, "Work Schedule Rules T552A, "Monthly Work Schedules T550A, "Daily Work Schedules ZCATEGORIA. "Pay Scale Groups - Categorias * Fin de Tablas * *----------------------------------------------------------------------* *----------------------------------------------------------------------* * Estructura * DATA: BEGIN OF BDC_TABLE OCCURS 100. "Tabla para BIS INCLUDE STRUCTURE BDCDATA. DATA: END OF BDC_TABLE. DATA BEGIN OF TH_MESSTAB OCCURS 10. INCLUDE STRUCTURE BDCMSGCOLL. DATA END OF TH_MESSTAB. DATA: BEGIN OF TH_ARCHIVO OCCURS 100, NUMERO(8), "P2011-PERNR Numero del empleado FECHA LIKE SY-DATUM, "P2011-LDATE Logical date AUSENTISMO(4), " HORA(4), "P2011-LTIME Logical time TERMINAL(3), "P2011-TERID Terminal ID RAZON(4), "P2011-ABWGR Att/absence reason TURNO(2), "PA2003-TPROG Daily work schedule DEPARTAMENTO(4), "KOSTL Cost center EMPLEADO2(8), "PA2003-VPERN Personnel no.to be COORDINADOR_AUTORIZA(8), IN_OUT(2) TYPE N, END OF TH_ARCHIVO. DATA: BEGIN OF TH_ERROR OCCURS 100, NUMERO(5), "P2011-PERNR Numero del empleado FECHA LIKE SY-DATUM, "P2011-LDATE Logical date AUSENTISMO(4), HORA(4), "P2011-LTIME Logical time TERMINAL(3), "P2011-TERID Terminal ID RAZON(4), "P2011-ABWGR Att/absence reason TURNO(2), "PA2003-TPROG Daily work schedule DEPARTAMENTO(4), "KOSTL Cost center EMPLEADO2(5), "PA2003-VPERN Personnel no.to be END OF TH_ERROR. TYPES: BEGIN OF REG, CAMBIO_TURNO, DIA(10), AUSENTISMO(4), TURNO(2), HORA(5), TIPO, INCIDENCIA(3), CCOSTOS(4), SOCIO_REEMPLAZA(8), END OF REG. DATA: REGISTRO TYPE REG OCCURS 0 WITH HEADER LINE. TYPES: BEGIN OF EMPLEADO, NUMERO(8), REGISTRO LIKE REGISTRO OCCURS 0, END OF EMPLEADO. DATA: BEGIN OF CIERRE OCCURS 0, EMPLEADO TYPE EMPLEADO, END OF CIERRE. DATA: CHECADAS TYPE REG OCCURS 0 WITH HEADER LINE. * Fin de estrucutras * *----------------------------------------------------------------------* *----------------------------------------------------------------------* * Variables * DATA: SW_ERROR, "Swich existencia de empleado SW_I2002(1) TYPE C VALUE 'F', WC_FECHA(10), "Fecha con formato dd.mm.aaaa WC_DIA(2), "Filtra el día de la fecha WC_MES(2), "Filtra el mes de la fecha WC_YEAR(4), "Filtra el año de la fecha WC_TIPO(2), "Tipo de Substitución WC_TPR00(4), "Turno del empleado WC_TURNO(4), "Turno del empleado GK(Turno) WC_TURNO_SUST(4), "Turno Sustitucion WC_TURNO_R(4), "Turno del RELOJ GK(Turno) WC_TURNO_S(4), "Turno del SAP GK(Turno) WC_CATEGORIA(8), "Categoria del empleado WN_IN_OUT(2) TYPE N, "Tipo de evento IN/OUT WN_PERNR LIKE PA2003-PERNR, WI_BETRG1 LIKE ZCATEGORIA-BETRG, "Cantidad por turno Emple. 1 WI_BETRG2 LIKE ZCATEGORIA-BETRG, "Cantidad por turno Emple. 2 WT_TIEMPO LIKE P2011-LTIME, "Hora de chacada WT_INICIO(4) TYPE N, "Hora de chacada I2002 WT_FINAL(4) TYPE N, "Hora de chacada I2002 WT_HORA LIKE P2011-LTIME VALUE '120000', "Sumar Doce horas ARCH1(40) TYPE C VALUE '/users/interf/datos/hr/errores.txt', WC_ARCHIVO(40) TYPE C, "Nombre del archivo WI_LC TYPE I VALUE 0, "Contador lineas WD_FECHA_DESC LIKE SY-DATUM, "Fecha de Descanso WD_FECHA LIKE SY-DATUM, WI_INDICE LIKE SY-TABIX, "Indice de la tabla interna SW_DELETE(1) TYPE C VALUE 'F', WC_REGISTRO1(35) TYPE C, "Registro de la tabla interna WC_REGISTRO2(35) TYPE C. "Registro de la tabla interna DATA: QID LIKE APQI-QID, B-NAME LIKE RFPDO-ALLGBINA, EXCEPT TYPE I. DATA: ME TYPE REF TO CL_XML_DOCUMENT. DATA: SUBRC LIKE SY-SUBRC. DATA: GVK_MODE. * Fin de variables * *----------------------------------------------------------------------* *----------------------------------------------------------------------* * Parámetros de Selección * SELECTION-SCREEN BEGIN OF BLOCK BL_01 WITH FRAME TITLE TEXT-001. PARAMETERS: ARCHIVO TYPE RLGRAP-FILENAME. SELECTION-SCREEN END OF BLOCK BL_01. * Fin de parametros de sleccion * *----------------------------------------------------------------------* *----------------------------------------------------------------------* * AT SELECTION SCREEN * AT SELECTION-SCREEN ON VALUE-REQUEST FOR ARCHIVO. PERFORM ESPECIFICA_RUTA USING '0'. * AT SELECTION SCREEN * *----------------------------------------------------------------------* *----------------------------------------------------------------------* * Start of selection * START-OF-SELECTION. CLEAR GVK_MODE. GVK_MODE = 'N'. IF SY-UNAME+0(6) NE 'GKRHUM' AND SY-UNAME+0(6) NE 'GK_961' AND SY-UNAME+0(6) NE 'GKSIST' AND SY-UNAME NE 'EXUANL_MML'. WRITE:/ 'Usuario no pertenece a GALVAK, S.A. de C.V.'. LEAVE PROGRAM. ENDIF. PERFORM LEE_ARCHIVO_XML. PERFORM LLENA_TH_ARCHIVO. SORT TH_ARCHIVO BY NUMERO FECHA HORA. PERFORM ELIMINA_DUPLICADOS. LOOP AT TH_ARCHIVO. PERFORM VALIDA_INFO. MOVE ' ' TO : WC_DIA, WC_MES, WC_YEAR, WC_FECHA, WC_TIPO, WC_TPR00, WC_TURNO, WC_CATEGORIA, WT_TIEMPO, WN_PERNR, WN_IN_OUT, WT_INICIO, WT_FINAL. MOVE 0 TO: WI_LC. IF SW_ERROR EQ '0'. SELECT * FROM PA0001 WHERE PERNR = TH_ARCHIVO-NUMERO. ENDSELECT. IF SY-SUBRC EQ 0. IF TH_ARCHIVO-DEPARTAMENTO = PA0001-KOSTL+6(4). TH_ARCHIVO-DEPARTAMENTO = ' '. ENDIF. ENDIF. PERFORM FORMATO_FECHA. MOVE TH_ARCHIVO-HORA TO WT_TIEMPO. IF TH_ARCHIVO-EMPLEADO2 NE ' '. WN_PERNR = TH_ARCHIVO-EMPLEADO2. ELSE. WN_PERNR = TH_ARCHIVO-NUMERO. ENDIF. IF TH_ARCHIVO-AUSENTISMO = 'DESC'. CONCATENATE WD_FECHA+6(2) '.' WD_FECHA+4(2) '.' WD_FECHA(4) INTO WC_FECHA. PERFORM DATOS_DESC. "Actualiza 2003 ELSE. PERFORM EVENTO_IN_OUT. CONCATENATE WD_FECHA+6(2) '.' WD_FECHA+4(2) '.' WD_FECHA(4) INTO WC_FECHA. PERFORM TRANS_PA61. CALL TRANSACTION 'PA61' USING BDC_TABLE MODE GVK_MODE UPDATE 'S' MESSAGES INTO TH_MESSTAB. IF SY-SUBRC EQ 0. IF WC_TURNO <> WC_TPR00 OR WC_TURNO <> WC_TURNO_SUST OR WC_TURNO = 'DESC' OR WC_TURNO = 'FREE'. IF TH_ARCHIVO-IN_OUT = '01'. PERFORM OTROS_DATOS. "Actualiza 2003 ENDIF. ELSE. ENDIF. ELSE. MOVE-CORRESPONDING TH_ARCHIVO TO TH_ERROR. APPEND TH_ERROR. ENDIF. ENDIF. ENDIF. ENDLOOP. DESCRIBE TABLE TH_ERROR LINES WI_LC. * Fin de start of selection * *----------------------------------------------------------------------* *----------------------------------------------------------------------* * End of selection * END-OF-SELECTION. IF WI_LC NE 0. PERFORM ARCHIVO_ERROR. ENDIF. PERFORM BDC_CLOSE USING EXCEPT. MESSAGE I100. * DELETE DATASET ARCHIVO. "moises 02.06.1999 * Fin de end of slection * *----------------------------------------------------------------------* *----------------------------------------------------------------------* * Funcion valida_info * FORM VALIDA_INFO. MOVE '0' TO SW_ERROR. SELECT DISTINCT * FROM PA0000 WHERE PERNR EQ TH_ARCHIVO-NUMERO. EXIT. ENDSELECT. IF SY-SUBRC NE 0. FORMAT INTENSIFIED OFF. WRITE:/ 'El empleado ', TH_ARCHIVO-NUMERO, ' no esta dado de alta'. FORMAT INTENSIFIED ON. MOVE '1' TO SW_ERROR. ENDIF. ENDFORM. * Fin de funcion valida_info * *----------------------------------------------------------------------* *----------------------------------------------------------------------* * Funcion formato_fecha * FORM FORMATO_FECHA. WC_DIA = TH_ARCHIVO-FECHA(2). WC_MES = TH_ARCHIVO-FECHA+2(2). WC_YEAR = TH_ARCHIVO-FECHA+4(4). CONCATENATE WC_YEAR WC_MES WC_DIA INTO WD_FECHA. ENDFORM. * Fin de funicon formato_fecha * *----------------------------------------------------------------------* *----------------------------------------------------------------------* * Funcion evento_in_out * FORM EVENTO_IN_OUT. SELECT * FROM PA0007 WHERE PERNR EQ WN_PERNR AND BEGDA <= WD_FECHA AND ENDDA >= WD_FECHA. ENDSELECT. IF SY-SUBRC EQ 0 AND PA0007-SCHKZ NE ' '. SELECT * FROM T508A WHERE MOFID EQ 'GK' AND SCHKZ = PA0007-SCHKZ. ENDSELECT. SELECT * FROM T552A WHERE SCHKZ EQ PA0007-SCHKZ AND KJAHR EQ WC_YEAR AND MONAT EQ WC_MES. ENDSELECT. IF SY-SUBRC EQ 0. PERFORM BUSCA_DIA. WC_TURNO = WC_TPR00. PERFORM VERIFICA_P2003. IF WC_TURNO_SUST IS INITIAL. WC_TURNO_SUST = WC_TURNO. ENDIF. IF WC_TURNO EQ 'FREE' OR WC_TURNO EQ 'DESC'. WC_TIPO = '02'. IF TH_ARCHIVO-RAZON NE 'ETI ' AND TH_ARCHIVO-RAZON NE 'EPM ' AND TH_ARCHIVO-RAZON NE 'ERP ' AND TH_ARCHIVO-RAZON NE 'STI ' AND TH_ARCHIVO-RAZON NE 'SPM ' AND TH_ARCHIVO-RAZON NE 'SRP '. PERFORM VALIDA_SIGUIENTE_DIA. IF WC_TPR00 = 'GM11' OR WC_TPR00 = 'GK01'. WC_TURNO = WC_TPR00. ENDIF. ENDIF. ELSEIF WC_TPR00 = 'DESC' OR WC_TPR00 = 'FREE'. WC_TIPO = '02'. ELSE. WC_TIPO = '01'. ENDIF. ENDIF. PERFORM TIEMPOS_EXTRA. WC_TURNO_S = WC_TURNO. IF TH_ARCHIVO-TURNO NE ' '. IF TH_ARCHIVO-TURNO = 'S1' OR TH_ARCHIVO-TURNO = 'S2' OR TH_ARCHIVO-TURNO = 'S3'. CONCATENATE 'DE' TH_ARCHIVO-TURNO INTO WC_TURNO_R. WC_TURNO = WC_TURNO_R. ELSEIF TH_ARCHIVO-TURNO = 'T1' OR TH_ARCHIVO-TURNO = 'T2'. CONCATENATE 'GK' TH_ARCHIVO-TURNO INTO WC_TURNO_R. WC_TURNO = WC_TURNO_R. ELSE. IF TH_ARCHIVO-TURNO < 10. CONCATENATE 'GK' TH_ARCHIVO-TURNO INTO WC_TURNO_R. ELSEIF TH_ARCHIVO-TURNO > 10. CONCATENATE 'GM' TH_ARCHIVO-TURNO INTO WC_TURNO_R. ENDIF. IF WC_TURNO NE WC_TURNO_R. " and th_archivo-razon = ' '. moises WC_TURNO = WC_TURNO_R. ENDIF. ENDIF. ENDIF. * IF WC_TURNO EQ 'GM11' OR WC_TURNO = 'GK01'. * WT_TIEMPO = WT_TIEMPO + WT_HORA. * ENDIF. SELECT * FROM T550A WHERE MOTPR EQ T508A-MOTPR AND TPROG EQ WC_TURNO. IF ( T550A-BTBEG <= WT_TIEMPO AND T550A-BTEND >= WT_TIEMPO ) OR ( TH_ARCHIVO-RAZON = 'IJ ' OR TH_ARCHIVO-RAZON = 'II ' OR TH_ARCHIVO-RAZON = 'ESU ' OR TH_ARCHIVO-RAZON = 'EPM ' OR TH_ARCHIVO-RAZON = 'ERP ' OR TH_ARCHIVO-RAZON = 'ETI ' ). WN_IN_OUT = '01'. IF WC_TURNO EQ 'GM11' OR WC_TURNO = 'GK01'. * WD_FECHA = WD_FECHA + 1. ENDIF. ELSEIF ( T550A-ETBEG <= WT_TIEMPO AND T550A-ETEND >= WT_TIEMPO ) OR ( TH_ARCHIVO-RAZON = 'FJ ' OR TH_ARCHIVO-RAZON = 'FI ' OR TH_ARCHIVO-RAZON = 'SSU ' OR TH_ARCHIVO-RAZON = 'SPM ' OR TH_ARCHIVO-RAZON = 'SRP ' OR TH_ARCHIVO-RAZON = 'STI ' ). WN_IN_OUT = '02'. ELSE. WN_IN_OUT = '02'. ENDIF. IF TH_ARCHIVO-RAZON = 'ETI ' AND ( T550A-BTBEG <= WT_TIEMPO AND T550A-BTEND >= WT_TIEMPO ). WT_INICIO = WT_TIEMPO(4). WT_FINAL = T550A-SOBEG(4). SW_I2002 = 'T'. ELSEIF TH_ARCHIVO-RAZON = 'STI ' AND ( T550A-ETBEG <= WT_TIEMPO AND T550A-ETEND >= WT_TIEMPO ). WT_INICIO = T550A-SOEND(4). WT_FINAL = WT_TIEMPO(4). SW_I2002 = 'T'. ENDIF. ENDSELECT. IF SW_I2002 = 'T'. SW_I2002 = 'F'. CONCATENATE WD_FECHA+6(2) '.' WD_FECHA+4(2) '.' WD_FECHA(4) INTO WC_FECHA. PERFORM ALTA_I2002. ENDIF. ENDIF. ENDFORM. * Fin de funcion evento_in_out * *----------------------------------------------------------------------* *----------------------------------------------------------------------* * Funcion busca_dia * FORM BUSCA_DIA. CASE WC_DIA. WHEN 01. MOVE T552A-TPR01 TO WC_TPR00. WHEN 02. MOVE T552A-TPR02 TO WC_TPR00. WHEN 03. MOVE T552A-TPR03 TO WC_TPR00. WHEN 04. MOVE T552A-TPR04 TO WC_TPR00. WHEN 05. MOVE T552A-TPR05 TO WC_TPR00. WHEN 06. MOVE T552A-TPR06 TO WC_TPR00. WHEN 07. MOVE T552A-TPR07 TO WC_TPR00. WHEN 08. MOVE T552A-TPR08 TO WC_TPR00. WHEN 09. MOVE T552A-TPR09 TO WC_TPR00. WHEN 10. MOVE T552A-TPR10 TO WC_TPR00. WHEN 11. MOVE T552A-TPR11 TO WC_TPR00. WHEN 12. MOVE T552A-TPR12 TO WC_TPR00. WHEN 13. MOVE T552A-TPR13 TO WC_TPR00. WHEN 14. MOVE T552A-TPR14 TO WC_TPR00. WHEN 15. MOVE T552A-TPR15 TO WC_TPR00. WHEN 16. MOVE T552A-TPR16 TO WC_TPR00. WHEN 17. MOVE T552A-TPR17 TO WC_TPR00. WHEN 18. MOVE T552A-TPR18 TO WC_TPR00. WHEN 19. MOVE T552A-TPR19 TO WC_TPR00. WHEN 20. MOVE T552A-TPR20 TO WC_TPR00. WHEN 21. MOVE T552A-TPR21 TO WC_TPR00. WHEN 22. MOVE T552A-TPR22 TO WC_TPR00. WHEN 23. MOVE T552A-TPR23 TO WC_TPR00. WHEN 24. MOVE T552A-TPR24 TO WC_TPR00. WHEN 25. MOVE T552A-TPR25 TO WC_TPR00. WHEN 26. MOVE T552A-TPR26 TO WC_TPR00. WHEN 27. MOVE T552A-TPR27 TO WC_TPR00. WHEN 28. MOVE T552A-TPR28 TO WC_TPR00. WHEN 29. MOVE T552A-TPR29 TO WC_TPR00. WHEN 30. MOVE T552A-TPR30 TO WC_TPR00. WHEN 31. MOVE T552A-TPR31 TO WC_TPR00. ENDCASE. ENDFORM. * Fin de funcion busca_dia * *----------------------------------------------------------------------* *----------------------------------------------------------------------* * Funcion verifica_p2003 * FORM VERIFICA_P2003. DATA: WFECHA LIKE SY-DATUM. CONCATENATE TH_ARCHIVO-FECHA+4(4) TH_ARCHIVO-FECHA+2(2) TH_ARCHIVO-FECHA(2) INTO WFECHA. CLEAR WC_TURNO_SUST. SELECT SINGLE * FROM PA2003 WHERE PERNR = WN_PERNR AND BEGDA <= WFECHA AND ENDDA >= WFECHA. CHECK SY-SUBRC EQ 0. IF PA2003-TPROG NE ' ' AND PA2003-TPROG NE WC_TURNO. MOVE PA2003-TPROG TO: WC_TURNO, WC_TURNO_SUST. ELSEIF PA2003-SCHKZ NE ' '. SELECT * FROM T552A WHERE SCHKZ EQ PA2003-SCHKZ AND KJAHR EQ WC_YEAR AND MONAT EQ WC_MES. ENDSELECT. IF SY-SUBRC EQ 0. PERFORM BUSCA_DIA. IF WC_TPR00 NE WC_TURNO. WC_TURNO = WC_TPR00. ENDIF. ENDIF. ENDIF. ENDFORM. " VERIFICA_P2003 * Fin de funcion verifica_p2003 * *----------------------------------------------------------------------* *----------------------------------------------------------------------* * Funion valida_siguiente_dia * FORM VALIDA_SIGUIENTE_DIA. WD_FECHA_DESC = WD_FECHA + 1. WC_DIA = WD_FECHA_DESC+6(2). SELECT * FROM T552A WHERE SCHKZ EQ PA0007-SCHKZ AND KJAHR EQ WC_YEAR AND MONAT EQ WC_MES. ENDSELECT. IF SY-SUBRC EQ 0. PERFORM BUSCA_DIA. ENDIF. ENDFORM. " VALIDA_SIGUIENTE_DIA * Fin de funcion valida_siguiente_dia * *----------------------------------------------------------------------* *----------------------------------------------------------------------* * Funcion alta_i2002 * FORM ALTA_I2002. IF TH_ARCHIVO-TURNO = 'S1' OR TH_ARCHIVO-TURNO = 'S2' OR TH_ARCHIVO-TURNO = 'S3'. ELSE. REFRESH BDC_TABLE. PERFORM DYNPRO_START USING 'SAPMP50A' '1000'. PERFORM DYNPRO_FIELD USING 'RP50G-PERNR' TH_ARCHIVO-NUMERO. PERFORM DYNPRO_FIELD USING 'RP50G-CHOIC' '2002'. PERFORM DYNPRO_FIELD USING 'RP50G-SUBTY' '0020'. PERFORM DYNPRO_FIELD USING 'BDC_OKCODE' '=INS'. "MML QA&C 08.02.00 PERFORM DYNPRO_START USING 'MP200000' '2050'. PERFORM DYNPRO_FIELD USING 'P2002-BEGDA' WC_FECHA. PERFORM DYNPRO_FIELD USING 'P2002-ENDDA' WC_FECHA. PERFORM DYNPRO_FIELD USING 'P2002-BEGUZ' WT_INICIO. PERFORM DYNPRO_FIELD USING 'P2002-ENDUZ' WT_FINAL. PERFORM DYNPRO_FIELD USING 'BDC_OKCODE' '=UPD'. "MML QA&C 08.02.00 CALL TRANSACTION 'PA61' USING BDC_TABLE MODE GVK_MODE UPDATE 'S' MESSAGES INTO TH_MESSTAB. IF SY-SUBRC NE 0. MOVE-CORRESPONDING TH_ARCHIVO TO TH_ERROR. APPEND TH_ERROR. ENDIF. ENDIF. ENDFORM. " ALTA_I2002 * Fin de funcion alta_i2002 * *----------------------------------------------------------------------* *----------------------------------------------------------------------* * Funcion trnas_pa61 * FORM TRANS_PA61. REFRESH BDC_TABLE. IF TH_ARCHIVO-AUSENTISMO IS INITIAL. PERFORM DYNPRO_START USING 'SAPMP50A' '1000'. PERFORM DYNPRO_FIELD USING 'RP50G-PERNR' TH_ARCHIVO-NUMERO. PERFORM DYNPRO_FIELD USING 'RP50G-CHOIC' '2011'. PERFORM DYNPRO_FIELD USING 'BDC_OKCODE' '=INS'. "MML QA&C 20.08.00 PERFORM DYNPRO_START USING 'MP200000' '2500'. PERFORM DYNPRO_FIELD USING 'P2011-LDATE' WC_FECHA. PERFORM DYNPRO_FIELD USING 'P2011-LTIME' WT_TIEMPO. * PERFORM DYNPRO_FIELD USING 'P2011-SATZA' WN_IN_OUT. PERFORM DYNPRO_FIELD USING 'P2011-SATZA' TH_ARCHIVO-IN_OUT. IF TH_ARCHIVO-RAZON <> 'ARR'. PERFORM DYNPRO_FIELD USING 'P2011-ABWGR' TH_ARCHIVO-RAZON. ENDIF. PERFORM DYNPRO_FIELD USING 'P2011-TERID' TH_ARCHIVO-TERMINAL. PERFORM DYNPRO_FIELD USING 'BDC_OKCODE' '=UPD'. "MML QA&C 08.02.00 ELSE. PERFORM DYNPRO_START USING 'SAPMP50A' '1000'. PERFORM DYNPRO_FIELD USING 'RP50G-PERNR' TH_ARCHIVO-NUMERO. PERFORM DYNPRO_FIELD USING 'RP50G-ENDDA' WC_FECHA. PERFORM DYNPRO_FIELD USING 'RP50G-CHOIC' '2001'. PERFORM DYNPRO_FIELD USING 'RP50G-SUBTY' TH_ARCHIVO-AUSENTISMO.. PERFORM DYNPRO_FIELD USING 'BDC_OKCODE' '=INS'. "MML QA&C 20.08.00 PERFORM DYNPRO_START USING 'MP200000' '2001'. PERFORM DYNPRO_FIELD USING 'P2001-BEGDA' WC_FECHA. PERFORM DYNPRO_FIELD USING 'P2001-ENDDA' WC_FECHA. PERFORM DYNPRO_FIELD USING 'BDC_OKCODE' '=UPD'. "MML QA&C 08.02.00 ENDIF. ENDFORM. " TRANS_PA61 * Fin de funcion trans_pa61 * *----------------------------------------------------------------------* *----------------------------------------------------------------------* * Funcion otros_datos * FORM OTROS_DATOS. IF WC_TURNO_SUST = 'DESC' OR WC_TURNO_SUST = 'FREE'. PERFORM ELIMINA_SUSTITUCION. ENDIF. IF TH_ARCHIVO-TURNO = 'S1' OR TH_ARCHIVO-TURNO = 'S2' OR TH_ARCHIVO-TURNO = 'S3'. PERFORM GENERA_SUSTITUCION_S. CALL TRANSACTION 'PA61' USING BDC_TABLE MODE GVK_MODE UPDATE 'S' MESSAGES INTO TH_MESSTAB. IF SY-SUBRC NE 0. MOVE-CORRESPONDING TH_ARCHIVO TO TH_ERROR. APPEND TH_ERROR. ENDIF. ELSE. IF WN_IN_OUT = '01'. "or wn_in_out = '02'. PERFORM GENERATE_BDC_DATA_1. "Actualiza 2003 CALL TRANSACTION 'PA61' USING BDC_TABLE MODE GVK_MODE UPDATE 'S' MESSAGES INTO TH_MESSTAB. IF SY-SUBRC NE 0. MOVE-CORRESPONDING TH_ARCHIVO TO TH_ERROR. APPEND TH_ERROR. ENDIF. ENDIF. IF WN_IN_OUT = '02'. IF TH_ARCHIVO-RAZON = 'SSU'. PERFORM GENERATE_BDC_DATA_1. CALL TRANSACTION 'PA61' USING BDC_TABLE MODE GVK_MODE UPDATE 'S' MESSAGES INTO TH_MESSTAB. IF SY-SUBRC NE 0. MOVE-CORRESPONDING TH_ARCHIVO TO TH_ERROR. APPEND TH_ERROR. ENDIF. ELSE. PERFORM GENERATE_BDC_DATA_1. CALL TRANSACTION 'PA61' USING BDC_TABLE MODE GVK_MODE UPDATE 'S' MESSAGES INTO TH_MESSTAB. IF SY-SUBRC NE 0. MOVE-CORRESPONDING TH_ARCHIVO TO TH_ERROR. APPEND TH_ERROR. ENDIF. ENDIF. ENDIF. ENDIF. ENDFORM. " OTROS_DATOS * Fin de funicion ortors_datos * *----------------------------------------------------------------------* *----------------------------------------------------------------------* * Funcion generate_bdc_data_1 * FORM GENERATE_BDC_DATA_1. REFRESH BDC_TABLE. PERFORM DYNPRO_START USING 'SAPMP50A' '1000'. PERFORM DYNPRO_FIELD USING 'RP50G-PERNR' TH_ARCHIVO-NUMERO. PERFORM DYNPRO_FIELD USING 'RP50G-CHOIC' '2003'. PERFORM DYNPRO_FIELD USING 'BDC_OKCODE' '=INS'. "MML QA&C 08.02.00 PERFORM DYNPRO_START USING 'MP200000' '2100'. PERFORM DYNPRO_FIELD USING 'P2003-BEGDA' WC_FECHA. PERFORM DYNPRO_FIELD USING 'P2003-ENDDA' WC_FECHA. PERFORM DYNPRO_FIELD USING 'P2003-VTART' WC_TIPO. IF TH_ARCHIVO-EMPLEADO2 NE ' ' AND TH_ARCHIVO-EMPLEADO2 NE TH_ARCHIVO-NUMERO. PERFORM BUSCA_CATEGORIA. ENDIF. IF WC_TURNO <> WC_TURNO_SUST. PERFORM DYNPRO_FIELD USING 'P2003-TPROG' WC_TURNO. ELSE. IF TH_ARCHIVO-TURNO NE ' ' AND TH_ARCHIVO-TURNO NE WC_TURNO_S. PERFORM DYNPRO_FIELD USING 'P2003-TPROG' WC_TURNO. ENDIF. IF WC_TURNO <> WC_TPR00. PERFORM DYNPRO_FIELD USING 'P2003-TPROG' WC_TURNO. ENDIF. ENDIF. IF WI_BETRG1 < WI_BETRG2. "Cambia categoria del Empleado 1 PERFORM BUSCA_CATEGORIA. PERFORM DYNPRO_FIELD USING 'BDC_OKCODE' 'DIFP'. PERFORM DYNPRO_START USING 'MP200000' '2221'. PERFORM DYNPRO_FIELD USING 'P2APL-TRFGR' WC_CATEGORIA. PERFORM DYNPRO_FIELD USING 'BDC_OKCODE' '/8'. PERFORM DYNPRO_START USING 'MP200000' '2100'. ENDIF. IF TH_ARCHIVO-DEPARTAMENTO NE ' '. PERFORM DYNPRO_FIELD USING 'BDC_OKCODE' 'PRIM'. PERFORM DYNPRO_START USING 'SAPLHRTV' '0300'. PERFORM DYNPRO_FIELD USING 'COBL-KOSTL' TH_ARCHIVO-DEPARTAMENTO. PERFORM DYNPRO_FIELD USING 'BDC_OKCODE' '/8'. PERFORM DYNPRO_START USING 'MP200000' '2100'. ENDIF. PERFORM DYNPRO_FIELD USING 'BDC_OKCODE' '=UPD'. "MML QA&C 08.02.00 ENDFORM. " GENERATE_BDC_DATA_1 * Fin de funcion generate_bdc_data_1 * *----------------------------------------------------------------------* *----------------------------------------------------------------------* * Funcion busca_categoria * FORM BUSCA_CATEGORIA. SELECT * FROM PA0008 WHERE PERNR EQ TH_ARCHIVO-NUMERO. "Empleado 1 IF SY-SUBRC EQ 0. SELECT * FROM ZCATEGORIA WHERE TRFGR EQ PA0008-TRFGR. WI_BETRG1 = ZCATEGORIA-BETRG. ENDSELECT. ENDIF. ENDSELECT. SELECT * FROM PA0008 WHERE PERNR EQ TH_ARCHIVO-EMPLEADO2. "Empleado 2 IF SY-SUBRC EQ 0. SELECT * FROM ZCATEGORIA WHERE TRFGR EQ PA0008-TRFGR. WI_BETRG2 = ZCATEGORIA-BETRG. WC_CATEGORIA = ZCATEGORIA-TRFGR. ENDSELECT. ENDIF. ENDSELECT. ENDFORM. * Fin de funcin busca_categoria * *----------------------------------------------------------------------* *----------------------------------------------------------------------* * Fucion archivo_error * FORM ARCHIVO_ERROR. OPEN DATASET ARCH1 FOR OUTPUT IN TEXT MODE. IF SY-SUBRC NE 0. STOP. EXIT. ENDIF. LOOP AT TH_ERROR. TRANSFER TH_ERROR TO ARCH1. ENDLOOP. CLOSE DATASET ARCH1. ENDFORM. * Fin de archivo_error * *----------------------------------------------------------------------* *----------------------------------------------------------------------* * Funcion bdc_close * FORM BDC_CLOSE USING EXCEPT. CALL FUNCTION 'BDC_CLOSE_GROUP' EXCEPTIONS NOT_OPEN = 1 QUEUE_ERROR = 2 OTHERS = 3. EXCEPT = SY-SUBRC. ENDFORM. * Fin de funicon bdc_close * *----------------------------------------------------------------------* *----------------------------------------------------------------------* * Funcion dynpro_start * FORM DYNPRO_START USING PROGRAM DYNPRO. CLEAR BDC_TABLE. BDC_TABLE-PROGRAM = PROGRAM. BDC_TABLE-DYNPRO = DYNPRO. BDC_TABLE-DYNBEGIN = 'X'. APPEND BDC_TABLE. ENDFORM. " DYNPRO_START * Fin de funcion dynpro_start * *----------------------------------------------------------------------* *----------------------------------------------------------------------* * Funion dynpro_field * FORM DYNPRO_FIELD USING FIELD VALUE. CLEAR BDC_TABLE. BDC_TABLE-FNAM = FIELD. BDC_TABLE-FVAL = VALUE. APPEND BDC_TABLE. ENDFORM. " DYNPRO_FIELD * Fin de funcion dypro_field * *----------------------------------------------------------------------* *----------------------------------------------------------------------* * Fucnion tiempos_extra * FORM TIEMPOS_EXTRA. IF TH_ARCHIVO-TURNO = 'S1' OR TH_ARCHIVO-TURNO = 'S2' OR TH_ARCHIVO-TURNO = 'S3'. CONCATENATE 'DE' TH_ARCHIVO-TURNO INTO WC_TURNO_R. WC_TURNO = WC_TURNO_R. ELSEIF TH_ARCHIVO-TURNO = 'T1' OR TH_ARCHIVO-TURNO = 'T2'. CONCATENATE 'GK' TH_ARCHIVO-TURNO INTO WC_TURNO_R. WC_TURNO = WC_TURNO_R. ELSE. IF ( TH_ARCHIVO-RAZON = 'ETI ' OR TH_ARCHIVO-RAZON = 'EPM ' OR TH_ARCHIVO-RAZON = 'ERP ' ) AND TH_ARCHIVO-TURNO NE ' '. IF TH_ARCHIVO-TURNO < 10. CONCATENATE 'GK' TH_ARCHIVO-TURNO INTO WC_TURNO_R. ELSEIF TH_ARCHIVO-TURNO > 10. CONCATENATE 'GM' TH_ARCHIVO-TURNO INTO WC_TURNO_R. ENDIF. IF ( WC_TURNO = 'FREE' OR WC_TURNO = 'DESC' ). IF WC_TURNO_R = 'GM13' OR WC_TURNO_R = 'GK03'. PERFORM VALIDA_SIGUIENTE_DIA. IF WC_TPR00 = 'GM11' OR WC_TPR00 = 'GK01'. IF WC_TPR00 = 'GK01'. WC_TURNO = 'GK01'. ELSEIF WC_TPR00 = 'GM11'. WC_TURNO = 'GM11'. ENDIF. ELSE. WC_TURNO = WC_TURNO_R. ENDIF. ELSE. WC_TURNO = WC_TURNO_R. ENDIF. ENDIF. IF ( WC_TURNO NE 'FREE' OR WC_TURNO NE 'DESC' ). IF WC_TURNO_R = 'GK02' AND WC_TURNO = 'GK03'. WC_TURNO = 'GK03'. ENDIF. IF WC_TURNO_R = 'GK03' AND WC_TURNO = 'GK01'. WC_TURNO = 'GK01'. ENDIF. IF WC_TURNO_R = 'GK01' AND WC_TURNO = 'GK02'. WC_TURNO = 'GK02'. ENDIF. ENDIF. ENDIF. IF ( TH_ARCHIVO-RAZON = 'STI ' OR TH_ARCHIVO-RAZON = 'SPM ' OR TH_ARCHIVO-RAZON = 'SRP ' ) AND TH_ARCHIVO-TURNO NE ' '. IF TH_ARCHIVO-TURNO < 10. CONCATENATE 'GK' TH_ARCHIVO-TURNO INTO WC_TURNO_R. ELSEIF TH_ARCHIVO-TURNO > 10. CONCATENATE 'GM' TH_ARCHIVO-TURNO INTO WC_TURNO_R. ENDIF. IF ( WC_TURNO = 'FREE' OR WC_TURNO = 'DESC' ). IF WC_TURNO_R = 'GM11' OR WC_TURNO_R = 'GK01'. WD_FECHA_DESC = WD_FECHA - 2. PERFORM VALIDA_SIGUIENTE_DIA. "En realidad DIA ANTERIOR IF WC_TPR00 = 'GM13' OR WC_TPR00 = 'GK03'. IF WC_TPR00 = 'GK03'. WC_TURNO = 'GK03'. ELSEIF WC_TPR00 = 'GM13'. WC_TURNO = 'GM13'. ENDIF. ELSE. WC_TURNO = WC_TURNO_R. ENDIF. ELSE. WC_TURNO = WC_TURNO_R. ENDIF. ENDIF. IF ( WC_TURNO NE 'FREE' OR WC_TURNO NE 'DESC' ). IF WC_TURNO_R = 'GK03' AND WC_TURNO = 'GK02'. WC_TURNO = 'GK02'. ENDIF. IF WC_TURNO_R = 'GK01' AND WC_TURNO = 'GK03'. WC_TURNO = 'GK03'. ENDIF. IF WC_TURNO_R = 'GK02' AND WC_TURNO = 'GK01'. WC_TURNO = 'GK01'. ENDIF. ENDIF. ENDIF. ENDIF. ENDFORM. * Fin de funicon tiempos_extra * *----------------------------------------------------------------------* *----------------------------------------------------------------------* * Funcion elimina_duplicados * FORM ELIMINA_DUPLICADOS. DELETE ADJACENT DUPLICATES FROM TH_ARCHIVO. ENDFORM. * Fin de funcion elimina_duplicados * *---------------------------------------------------------------------- *----------------------------------------------------------------------* * Form LEE_ARCHIVO_XML * FORM LEE_ARCHIVO_XML. CREATE OBJECT ME. REFRESH CIERRE. CALL METHOD ME->CREATE_WITH_FILE EXPORTING FILENAME = ARCHIVO RECEIVING RETCODE = SUBRC. CALL METHOD ME->GET_DATA IMPORTING RETCODE = SUBRC CHANGING DATAOBJECT = CIERRE[]. ENDFORM. * Form LEE_ARCHIVO_XML * *----------------------------------------------------------------------* *----------------------------------------------------------------------* * FORM ESPECIFICA_RUTA * FORM ESPECIFICA_RUTA USING PAR_VALOR. CASE PAR_VALOR. WHEN '0'. CALL FUNCTION 'KD_GET_FILENAME_ON_F4' EXPORTING MASK = 'C:\*.xml' STATIC = 'X' CHANGING FILE_NAME = ARCHIVO. WHEN '1'. * CALL FUNCTION 'KD_GET_FILENAME_ON_F4' * EXPORTING * MASK = 'C:\*.txt' * STATIC = 'x' * CHANGING * FILE_NAME = DESCARGA. ENDCASE. ENDFORM. * FORM ESPECIFICA_RUTA * *---------------------------------------------------------------------- *----------------------------------------------------------------------* * Form LLENA_TH_ARCHIVO * FORM LLENA_TH_ARCHIVO. CONSTANTS GVK_12HRS LIKE P2011-LTIME VALUE '120000'. CONSTANTS GVK_1159 LIKE P2011-LTIME VALUE '115900'. CONSTANTS GVK_0630 LIKE P2011-LTIME VALUE '063000'. CONSTANTS GVK_0715 LIKE P2011-LTIME VALUE '071500'. CONSTANTS GVK_1830 LIKE P2011-LTIME VALUE '183000'. CONSTANTS GVK_1915 LIKE P2011-LTIME VALUE '191500'. DATA: GVK_HORA LIKE P2011-LTIME. DATA: GVK_FECHA LIKE SY-DATUM. CLEAR CIERRE. REFRESH TH_ARCHIVO. LOOP AT CIERRE. CLEAR TH_ARCHIVO. CHECADAS[] = CIERRE-EMPLEADO-REGISTRO[]. LOOP AT CHECADAS. CLEAR TH_ARCHIVO. MOVE: CIERRE-EMPLEADO-NUMERO TO TH_ARCHIVO-NUMERO, CHECADAS-INCIDENCIA TO TH_ARCHIVO-RAZON, CHECADAS-CCOSTOS TO TH_ARCHIVO-DEPARTAMENTO, CHECADAS-SOCIO_REEMPLAZA TO TH_ARCHIVO-EMPLEADO2. CONCATENATE CHECADAS-DIA(2) CHECADAS-DIA+3(2) CHECADAS-DIA+6(4) INTO TH_ARCHIVO-FECHA. CONCATENATE CHECADAS-HORA(2) CHECADAS-HORA+3(2) INTO TH_ARCHIVO-HORA. IF CHECADAS-TURNO = 'S1' OR CHECADAS-TURNO = 'S2' OR CHECADAS-TURNO = 'S3'. MOVE CHECADAS-TURNO TO TH_ARCHIVO-TURNO. IF CHECADAS-TIPO = 'E'. MOVE 'ETI' TO TH_ARCHIVO-RAZON. ELSEIF CHECADAS-TIPO = 'S'. MOVE 'STI' TO TH_ARCHIVO-RAZON. ENDIF. ELSE. MOVE CHECADAS-TURNO TO TH_ARCHIVO-TURNO. ENDIF. IF CHECADAS-CAMBIO_TURNO = 1. MOVE CHECADAS-TURNO TO TH_ARCHIVO-TURNO. ENDIF. MOVE CHECADAS-AUSENTISMO TO TH_ARCHIVO-AUSENTISMO. CASE CHECADAS-TURNO. WHEN '01' OR 'S1'. IF CHECADAS-TIPO = 'E'. CLEAR GVK_FECHA. CONCATENATE CHECADAS-DIA+6(4) CHECADAS-DIA+3(2) CHECADAS-DIA(2) INTO GVK_FECHA. GVK_FECHA = GVK_FECHA + 1. CONCATENATE GVK_FECHA+6(2) GVK_FECHA+4(2) GVK_FECHA(4) INTO TH_ARCHIVO-FECHA. ELSEIF CHECADAS-TIPO = 'S'. GVK_HORA = TH_ARCHIVO-HORA. IF GVK_HORA > GVK_1159. CLEAR GVK_FECHA. CONCATENATE CHECADAS-DIA+6(4) CHECADAS-DIA+3(2) CHECADAS-DIA(2) INTO GVK_FECHA. GVK_FECHA = GVK_FECHA + 1. CONCATENATE GVK_FECHA+6(2) GVK_FECHA+4(2) GVK_FECHA(4) INTO TH_ARCHIVO-FECHA. ENDIF. ENDIF. CLEAR GVK_HORA. GVK_HORA = TH_ARCHIVO-HORA. GVK_HORA = GVK_HORA + GVK_12HRS. CLEAR TH_ARCHIVO-HORA. CONCATENATE GVK_HORA(2) GVK_HORA+2(2) INTO TH_ARCHIVO-HORA. WHEN 'T1'. IF CHECADAS-TIPO = 'E'. CLEAR GVK_FECHA. CLEAR GVK_HORA. CONCATENATE CHECADAS-DIA+6(4) CHECADAS-DIA+3(2) CHECADAS-DIA(2) INTO GVK_FECHA. GVK_FECHA = GVK_FECHA + 1. CONCATENATE GVK_FECHA+6(2) GVK_FECHA+4(2) GVK_FECHA(4) INTO TH_ARCHIVO-FECHA. GVK_HORA = TH_ARCHIVO-HORA. GVK_HORA = GVK_HORA + GVK_12HRS. CLEAR TH_ARCHIVO-HORA. CONCATENATE GVK_HORA(2) GVK_HORA+2(2) INTO TH_ARCHIVO-HORA. ELSEIF CHECADAS-TIPO = 'S'. MOVE 'STI' TO TH_ARCHIVO-RAZON. GVK_HORA = TH_ARCHIVO-HORA. IF GVK_HORA > GVK_1159. CLEAR GVK_FECHA. CONCATENATE CHECADAS-DIA+6(4) CHECADAS-DIA+3(2) CHECADAS-DIA(2) INTO GVK_FECHA. GVK_FECHA = GVK_FECHA + 1. CONCATENATE GVK_FECHA+6(2) GVK_FECHA+4(2) GVK_FECHA(4) INTO TH_ARCHIVO-FECHA. ENDIF. GVK_HORA = TH_ARCHIVO-HORA. IF GVK_HORA BETWEEN GVK_0630 AND GVK_0715. GVK_HORA = GVK_0630. ENDIF. GVK_HORA = GVK_HORA + GVK_12HRS. CLEAR TH_ARCHIVO-HORA. CONCATENATE GVK_HORA(2) GVK_HORA+2(2) INTO TH_ARCHIVO-HORA. ENDIF. WHEN 'T2'. IF CHECADAS-TIPO = 'S'. MOVE 'STI' TO TH_ARCHIVO-RAZON. CLEAR GVK_HORA. GVK_HORA = TH_ARCHIVO-HORA. IF GVK_HORA BETWEEN GVK_1830 AND GVK_1915. GVK_HORA = GVK_1830. CONCATENATE GVK_HORA(2) GVK_HORA+2(2) INTO TH_ARCHIVO-HORA. ENDIF. ENDIF. ENDCASE. IF CHECADAS-TIPO = 'E'. TH_ARCHIVO-IN_OUT = '01'. ELSEIF CHECADAS-TIPO = 'S'. TH_ARCHIVO-IN_OUT = '02'. ENDIF. APPEND TH_ARCHIVO. ENDLOOP. ENDLOOP. ENDFORM. * Form LLENA_TH_ARCHIVO * *---------------------------------------------------------------------- *&---------------------------------------------------------------------* *& Form DATOS_DESC *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM DATOS_DESC. REFRESH BDC_TABLE. PERFORM DYNPRO_START USING 'SAPMP50A' '1000'. PERFORM DYNPRO_FIELD USING 'RP50G-PERNR' TH_ARCHIVO-NUMERO. PERFORM DYNPRO_FIELD USING 'RP50G-CHOIC' '2003'. PERFORM DYNPRO_FIELD USING 'BDC_OKCODE' '=INS'. "MML QA&C 08.02.00 PERFORM DYNPRO_START USING 'MP200000' '2100'. PERFORM DYNPRO_FIELD USING 'P2003-BEGDA' WC_FECHA. PERFORM DYNPRO_FIELD USING 'P2003-ENDDA' WC_FECHA. PERFORM DYNPRO_FIELD USING 'P2003-VTART' '01'. PERFORM DYNPRO_FIELD USING 'P2003-TPROG' 'DESC'. PERFORM DYNPRO_FIELD USING 'BDC_OKCODE' '=UPD'. "MML QA&C 08.02.00 CALL TRANSACTION 'PA61' USING BDC_TABLE MODE GVK_MODE UPDATE 'S' MESSAGES INTO TH_MESSTAB. IF SY-SUBRC NE 0. MOVE-CORRESPONDING TH_ARCHIVO TO TH_ERROR. APPEND TH_ERROR. ENDIF. ENDFORM. " DATOS_DESC * *&---------------------------------------------------------------------* *& Form GENERA_SUSTITUCION_S *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM GENERA_SUSTITUCION_S. REFRESH BDC_TABLE. PERFORM DYNPRO_START USING 'SAPMP50A' '1000'. PERFORM DYNPRO_FIELD USING 'RP50G-PERNR' TH_ARCHIVO-NUMERO. PERFORM DYNPRO_FIELD USING 'RP50G-CHOIC' '2003'. PERFORM DYNPRO_FIELD USING 'BDC_OKCODE' '=INS'. "MML QA&C 08.02.00 PERFORM DYNPRO_START USING 'MP200000' '2100'. PERFORM DYNPRO_FIELD USING 'P2003-BEGDA' WC_FECHA. PERFORM DYNPRO_FIELD USING 'P2003-ENDDA' WC_FECHA. PERFORM DYNPRO_FIELD USING 'P2003-VTART' '02'. IF TH_ARCHIVO-EMPLEADO2 NE ' ' AND TH_ARCHIVO-EMPLEADO2 NE TH_ARCHIVO-NUMERO. PERFORM BUSCA_CATEGORIA. ENDIF. IF WC_TURNO <> WC_TURNO_SUST. PERFORM DYNPRO_FIELD USING 'P2003-TPROG' WC_TURNO. ELSE. IF TH_ARCHIVO-TURNO NE ' ' AND TH_ARCHIVO-TURNO NE WC_TURNO_S. PERFORM DYNPRO_FIELD USING 'P2003-TPROG' WC_TURNO. ENDIF. ENDIF. IF WI_BETRG1 < WI_BETRG2. "Cambia categoria del Empleado 1 PERFORM BUSCA_CATEGORIA. PERFORM DYNPRO_FIELD USING 'BDC_OKCODE' 'DIFP'. PERFORM DYNPRO_START USING 'MP200000' '2221'. PERFORM DYNPRO_FIELD USING 'P2APL-TRFGR' WC_CATEGORIA. PERFORM DYNPRO_FIELD USING 'BDC_OKCODE' '/8'. PERFORM DYNPRO_START USING 'MP200000' '2100'. ENDIF. IF TH_ARCHIVO-DEPARTAMENTO NE ' '. PERFORM DYNPRO_FIELD USING 'BDC_OKCODE' 'PRIM'. PERFORM DYNPRO_START USING 'SAPLHRTV' '0300'. PERFORM DYNPRO_FIELD USING 'COBL-KOSTL' TH_ARCHIVO-DEPARTAMENTO. PERFORM DYNPRO_FIELD USING 'BDC_OKCODE' '/8'. PERFORM DYNPRO_START USING 'MP200000' '2100'. ENDIF. PERFORM DYNPRO_FIELD USING 'BDC_OKCODE' '=UPD'. "MML QA&C 08.02.00 ENDFORM. *----------------------------------------------------------------------* * Form GENERATE_BDC_DATA_2 * FORM GENERATE_BDC_DATA_2. REFRESH BDC_TABLE. PERFORM DYNPRO_START USING 'SAPMP50A' '1000'. PERFORM DYNPRO_FIELD USING 'RP50G-PERNR' TH_ARCHIVO-NUMERO. PERFORM DYNPRO_FIELD USING 'RP50G-CHOIC' '2003'. PERFORM DYNPRO_FIELD USING 'BDC_OKCODE' '=INS'. "MML QA&C 08.02.00 PERFORM DYNPRO_START USING 'MP200000' '2100'. PERFORM DYNPRO_FIELD USING 'P2003-BEGDA' WC_FECHA. PERFORM DYNPRO_FIELD USING 'P2003-ENDDA' WC_FECHA. PERFORM DYNPRO_FIELD USING 'P2003-VTART' WC_TIPO. IF TH_ARCHIVO-EMPLEADO2 NE ' ' AND TH_ARCHIVO-EMPLEADO2 NE TH_ARCHIVO-NUMERO. PERFORM BUSCA_CATEGORIA. ENDIF. PERFORM DYNPRO_FIELD USING 'P2003-TPROG' WC_TURNO. IF WI_BETRG1 < WI_BETRG2. "Cambia categoria del Empleado 1 PERFORM BUSCA_CATEGORIA. PERFORM DYNPRO_FIELD USING 'BDC_OKCODE' 'DIFP'. PERFORM DYNPRO_START USING 'MP200000' '2221'. PERFORM DYNPRO_FIELD USING 'P2APL-TRFGR' WC_CATEGORIA. PERFORM DYNPRO_FIELD USING 'BDC_OKCODE' '/8'. PERFORM DYNPRO_START USING 'MP200000' '2100'. ENDIF. IF TH_ARCHIVO-DEPARTAMENTO NE ' '. PERFORM DYNPRO_FIELD USING 'BDC_OKCODE' 'PRIM'. PERFORM DYNPRO_START USING 'SAPLHRTV' '0300'. PERFORM DYNPRO_FIELD USING 'COBL-KOSTL' TH_ARCHIVO-DEPARTAMENTO. PERFORM DYNPRO_FIELD USING 'BDC_OKCODE' '/8'. PERFORM DYNPRO_START USING 'MP200000' '2100'. ENDIF. PERFORM DYNPRO_FIELD USING 'BDC_OKCODE' '=UPD'. "MML QA&C 08.02.00 ENDFORM. * Form GENERATE_BDC_DATA_2 * *---------------------------------------------------------------------- *----------------------------------------------------------------------* * Form ELIMINA_SUSTITUCION * FORM ELIMINA_SUSTITUCION. REFRESH BDC_TABLE. PERFORM DYNPRO_START USING 'SAPMP50A' '1000'. PERFORM DYNPRO_FIELD USING 'RP50G-PERNR' TH_ARCHIVO-NUMERO. PERFORM DYNPRO_FIELD USING 'RP50G-BEGDA' WC_FECHA. PERFORM DYNPRO_FIELD USING 'RP50G-ENDDA' WC_FECHA. PERFORM DYNPRO_FIELD USING 'RP50G-CHOIC' '2003'. PERFORM DYNPRO_FIELD USING 'BDC_OKCODE' '=DEL'. PERFORM DYNPRO_START USING 'MP200000' '2100'. PERFORM DYNPRO_FIELD USING 'BDC_OKCODE' '=UPDL'. CALL TRANSACTION 'PA61' USING BDC_TABLE MODE GVK_MODE UPDATE 'S' MESSAGES INTO TH_MESSTAB. IF SY-SUBRC NE 0. MOVE-CORRESPONDING TH_ARCHIVO TO TH_ERROR. APPEND TH_ERROR. ENDIF. ENDFORM. " ELIMINA_SUSTITUCION * Form ELIMINA_SUSTITUCION * *----------------------------------------------------------------------* |
|
Related ABAP Topics:
Get help for your ABAP problems
More ABAP Tips
BDC Programming Tips - Sapscripts Tips - Smartforms Tips SAP Basis, ABAP Programming and Other IMG Stuff http://www.erpgreat.com All the site contents are Copyright © www.erpgreat.com
and the content authors. All rights reserved.
|