reporte al sri
TRANSCRIPT
REPORTE AL SRI
************************************************************************* ** ******************************************** ** * Confidential and Proprietary * ** * Copyright 2013, FAMILIA ECUADOR * ** * All Rights Reserved * ** ******************************************** ** ************************************************************************** PROYECTO DE IMPLEMENTACION DE HR ************************************************************************** NOMBRE DEL PROGRAMA : ZHRECR005 - Formato y Archivo Plano SRI (EC)* DESCRIPCION : Formato y Archivo Plano SRI (EC)* COMPAÑIA : HR SOLUTIONS LTDA.* AUTOR DEL PROGRAMA : Oscar Eugenio Rodas* FECHA : Mayo 01 de 2013* NUMERO DE VERSION : 1.0.************************************************************************* LOG DE MODIFICACIONES************************************************************************* FECHA |USUARIO |NRO.ORDEN |DEVELOPER |DESCRIPCION************************************************************************* 01/05/2013 OSCARRV DEVK962370 Oscar Rodas Programa inicial************************************************************************
REPORT zhrecr005.
* Declaracion de EstructurasTABLES: pernr, t512w, t500t, t52bx.
* Declaracion de InfotiposINFOTYPES: 0000, 0001, 0002, 0004, 0006,
0185, 9803, 9804.
TYPE-POOLS: zpec1, zpyec, abap.
* Macros* Clases de evaluaciónTYPES tevcl(2) TYPE c.DATA BEGIN OF xaklas.DATA cleval01 TYPE tevcl.DATA cleval02 TYPE tevcl.DATA cleval03 TYPE tevcl.DATA cleval04 TYPE tevcl.DATA cleval05 TYPE tevcl.DATA cleval06 TYPE tevcl.DATA cleval07 TYPE tevcl.DATA cleval08 TYPE tevcl.DATA cleval09 TYPE tevcl.DATA cleval10 TYPE tevcl.DATA cleval11 TYPE tevcl.DATA cleval12 TYPE tevcl.DATA cleval13 TYPE tevcl.DATA cleval14 TYPE tevcl.DATA cleval15 TYPE tevcl.DATA cleval16 TYPE tevcl.DATA cleval17 TYPE tevcl.DATA cleval18 TYPE tevcl.DATA cleval19 TYPE tevcl.DATA cleval20 TYPE tevcl.DATA END OF xaklas.
DATA: dataemployee TYPE zpyecs038 OCCURS 0 WITH HEADER LINE, dataemployee_tmp TYPE zpyecs038 OCCURS 0 WITH HEADER LINE.
DATA: ti_pernr TYPE zpyecs004 OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF izpyect011 OCCURS 0. INCLUDE STRUCTURE zpyect011.
DATA: END OF izpyect011.
DATA: BEGIN OF ti_zpyect001 OCCURS 0. INCLUDE STRUCTURE zpyect001.DATA: END OF ti_zpyect001.
DATA: BEGIN OF display_err OCCURS 1. INCLUDE STRUCTURE hrerror.DATA: END OF display_err.
DATA: BEGIN OF errortexts OCCURS 0, text(100), END OF errortexts.
DATA: BEGIN OF fieldnames OCCURS 5, text(60), tabname(10), fieldname(10), typ, END OF fieldnames.
DATA: ti_pernr_tmp LIKE ti_pernr OCCURS 0 WITH HEADER LINE, ti_cod_hist TYPE zpyect007 OCCURS 0 WITH HEADER LINE, ti_sis_sane TYPE zpyect043 OCCURS 0 WITH HEADER LINE.
* Esta estructura es para el año 2013, para el año 2012 no se solicitaron cambios* y no se tiene la estructura, por lo tanto para el 2012 no generara el archivoTYPES: BEGIN OF ty_xml, tipidret(1), " Tipo de Identificación del Retenido idret(13), " Cédula o Pasaporte del Retenido apellidotrab(100), " Apellidos del Trabajador nombretrab(100), " Nombres del Trabajador anioret(4), " Año de Retención estab(3), " Código de Establecimiento residenciatrab(2), " Residencia del Trabajador paisresidencia(3), " Pais de Residencia del Trabajador aplicaconvenio(2), " Aplica convenio para evitar doble imposición tipotrabajdiscap(2), " Condición del trabajador respecto a discapacidades porcentajediscap(3), " Porcentaje de discapacidad
tipiddiscap(1), " Tipo de identificación de la persona con discapacidad a quien sustituye o representa iddiscap(13), " Número de identificación de la persona con discapacidad a quien sustituye o representa suelsal(12), " Sueldos y salarios sobsuelcomremu(12), " Sobresueldos, comisiones y otras remuneraciones partutil(12), " Participación utilidades intgrabgen(12), " Ingresos gravados generados con otros empleadores imprentempl(12), " Impuesto a la Renta asumido por este empleador decimter(12), " Décimo tercer sueldo decimcuar(12), " Décimo cuarto sueldo fondoreserva(12), " Fondo de Reserva (Informativo) salariodigno(12), " Compensación económica Salario Digno (Informativo) otrosingrengrav(12), " Otras ingresos en relación de dependencia que no constituyen renta gravada inggravconesteempl(12), " Ingresos gravados con este empleador (Informativo) sissalnet(1), " Sistema de salario neto apoperiess(12), " Aporte personal al IESS pagado por el empleado aporperiessconotrosempls(12), " Aporte personal IESS con otros empleadores deducvivienda(12), " Deducción Gastos Personales - Vivienda deducsalud(12), " Deducción Gastos Personales - Salud deduceduca(12), " Deducción Gastos Personales - Educación deducaliement(12), " Deducción Gastos Personales - Alimentación deducvestim(12), " Deducción Gastos Personales - Vestimenta exodiscap(12), " Exoneraciones discapacidad exotered(12), " Exoneraciones tercera edad basimp(12), " Base Imponible Gravada imprentcaus(12), " Impuesto a la Renta Causado valretasuotrosempls(12), " Valor del impuesto retenido y asumido por otros empleadores durante el período declarado valimpasuesteempl(12), " Valor del impuesto asumido por este empleador valret(12), " Valor del impuesto retenido al trabajador
por este empleador END OF ty_xml.
TYPES: BEGIN OF ty_final_xml, numruc(13), " RUC del Agente de Retención anio(4), " Año presentación xmlstruct TYPE ty_xml, END OF ty_final_xml.
DATA: BEGIN OF wa_final_xml, numruc(13), " RUC del Agente de Retención anio(4), " Año presentación xmlstruct TYPE TABLE OF ty_xml, END OF wa_final_xml.
DATA: t_xml TYPE TABLE OF ty_xml, t_final_xml LIKE TABLE OF wa_final_xml, t_source TYPE abap_trans_srcbind_tab.
DATA: ti_hrpy_012_tabd TYPE zpyect007_a OCCURS 0 WITH HEADER LINE, ti_hrpy_012_tabb TYPE zpyect007_b OCCURS 0 WITH HEADER LINE.
* Esta estructura es para el año 2013, para el año 2012 no se solicitaron cambios* y no se tiene la estructura, por lo tanto para el 2012 no generara el archivo* Archivo Plano DestinoDATA: BEGIN OF ti_arch_plano OCCURS 0, numruc(13), " RUC del Agente de Retención anio(4), " Año presentación tipidret(1), " Tipo de Identificación del Retenido idret(13), " Cédula o Pasaporte del Retenido apellidotrab(100), " Apellidos del Trabajador nombretrab(100), " Nombres del Trabajador anioret(4), " Año de Retención estab(3), " Código de Establecimiento residenciatrab(2), " Residencia del Trabajador paisresidencia(3), " Pais de Residencia del Trabajador aplicaconvenio(2), " Aplica convenio para evitar doble imposición tipotrabajdiscap(2), " Condición del trabajador respecto a discapacidades porcentajediscap(3), " Porcentaje de discapacidad
tipiddiscap(1), " Tipo de identificación de la persona con discapacidad a quien sustituye o representa iddiscap(13), " Número de identificación de la persona con discapacidad a quien sustituye o representa suelsal(12), " Sueldos y salarios sobsuelcomremu(12), " Sobresueldos, comisiones y otras remuneraciones partutil(12), " Participación utilidades intgrabgen(12), " Ingresos gravados generados con otros empleadores imprentempl(12), " Impuesto a la Renta asumido por este empleador decimter(12), " Décimo tercer sueldo decimcuar(12), " Décimo cuarto sueldo fondoreserva(12), " Fondo de Reserva (Informativo) salariodigno(12), " Compensación económica Salario Digno (Informativo) otrosingrengrav(12), " Otras ingresos en relación de dependencia que no constituyen renta gravada inggravconesteempl(12), " Ingresos gravados con este empleador (Informativo) sissalnet(1), " Sistema de salario neto apoperiess(12), " Aporte personal al IESS pagado por el empleado aporperiessconotrosempls(12), " Aporte personal IESS con otros empleadores deducvivienda(12), " Deducción Gastos Personales - Vivienda deducsalud(12), " Deducción Gastos Personales - Salud deduceduca(12), " Deducción Gastos Personales - Educación deducaliement(12), " Deducción Gastos Personales - Alimentación deducvestim(12), " Deducción Gastos Personales - Vestimenta exodiscap(12), " Exoneraciones discapacidad exotered(12), " Exoneraciones tercera edad basimp(12), " Base Imponible Gravada imprentcaus(12), " Impuesto a la Renta Causado valretasuotrosempls(12), " Valor del impuesto retenido y asumido por otros empleadores durante el período declarado valimpasuesteempl(12), " Valor del impuesto asumido por este empleador valret(12), " Valor del impuesto retenido al trabajador p
or este empleador END OF ti_arch_plano.
* Archivo Plano OrigenDATA: BEGIN OF s_arch_origen OCCURS 0, pernr(8), " Numero de Personal vpaut(12), " Valor Particion de Utilidades vimre(12), " Valor Impuesto a la Renta END OF s_arch_origen.
DATA: BEGIN OF ti_arch_origen OCCURS 0, pernr TYPE p_pernr, " Numero de Personal vpaut TYPE zec_vpaut, " Valor Particion de Utilidades vimre TYPE zec_vimre, " Valor Impuesto a la Renta END OF ti_arch_origen.
DATA: s_archivo LIKE ti_arch_origen.
* Declaracion de Estructuras de TrabajoDATA: wa_zpyect001 LIKE ti_zpyect001, wa_pernr LIKE ti_pernr, wa_dataemployee LIKE dataemployee, wa_arch_plano LIKE ti_arch_plano.
DATA: wa_xml TYPE ty_xml, wa_source TYPE abap_trans_srcbind.
* Global Data for XML CreationDATA: g_xml_string TYPE string, g_xml_string1 TYPE string.
TYPES: ty_tsrclin(1024) TYPE x, ty_tsrctab TYPE STANDARD TABLE OF ty_tsrclin.
DATA: g_xsltp TYPE REF TO cl_xslt_processor, g_ixml TYPE REF TO if_ixml, g_stream_factory TYPE REF TO if_ixml_stream_factory, g_srcstr TYPE REF TO if_ixml_istream, t_srctab TYPE ty_tsrctab, g_progname TYPE cxsltdesc VALUE 'ID',
g_gen_ex TYPE REF TO cx_xslt_exception, g_message TYPE string.
DATA: g_title TYPE string, g_filename TYPE string, g_path TYPE string, g_fullpath TYPE string, g_len TYPE i, wa_valor LIKE zpyect011-zfraccion, wa_valor1 LIKE zpyect011-zexceso, wa_valor2 LIKE zpyect011-zimpuesto, wa_valor3 LIKE zpyect011-zimpfrac.
DATA: g_file_table TYPE filetable, g_rc TYPE i, wa_file_table TYPE file_table.
* Declaracion de VariablesDATA: header1(132) TYPE c, header2(132) TYPE c, header3(132) TYPE c, footnote1(132) TYPE c, footnote2(132) TYPE c, footnote3(132) TYPE c, footnote4(132) TYPE c, myreport LIKE sy-repid, return_code LIKE sy-subrc, datum(10) TYPE c, column_type TYPE c, lc_cols TYPE i, list_level(2) TYPE c, gl_ictyp LIKE p0185-ictyp, gl_icnum LIKE p0185-icnum, wl_kokrs TYPE kokrs, wl_regular(1) TYPE c.
DATA: wl_num_arc TYPE i.
DATA: wl_begda TYPE begda.
DATA: wl_num_month TYPE p.
DATA: wl_hiredate TYPE begda.
DATA: wl_num_ret TYPE i.
DATA: ti_message TYPE REF TO if_hrpa_message_handler.
DATA: p_titul LIKE sy-title VALUE 'Archivo Plano y Formato Información SRI'.
DATA: func_mod_name TYPE rs38l_fnam, output_options TYPE ssfcompop, control_parameters TYPE ssfctrlop.
DATA: lc_valida TYPE c.
DATA: wl_decimo_cuarto TYPE zec_vdcsu.
DATA: gl_transform(18) TYPE c VALUE 'ZHRECTR_XML'.
CONSTANTS: cn_form TYPE tdsfname VALUE 'Z*SRI*'.
DATA: cn_year(4) TYPE c.cn_year = sy-datum(4).
INCLUDE: zhrecinc03, "Parametros de calculo de nomina rpcccd09.
SELECTION-SCREEN BEGIN OF BLOCK formnameWITH FRAME TITLE text-001.PARAMETERS: p_form LIKE stxfadm-formname OBLIGATORY. " MATCHCODE OBJECT zsh_stxfadm.SELECTION-SCREEN END OF BLOCK formname.
SELECTION-SCREEN BEGIN OF BLOCK downloadWITH FRAME TITLE text-002.PARAMETERS: p_fentre TYPE datum OBLIGATORY, p_file TYPE rlgrap-filename.SELECTION-SCREEN END OF BLOCK download.
SELECTION-SCREEN BEGIN OF BLOCK uploadWITH FRAME TITLE text-003.PARAMETERS: p_fileup TYPE rlgrap-filename MODIF ID new.SELECTION-SCREEN END OF BLOCK upload.
AT SELECTION-SCREEN OUTPUT. PERFORM modify_screen.
AT SELECTION-SCREEN. PERFORM validaciones_archivos.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. PERFORM destino_archivo.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fileup. PERFORM origen_archivo.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_ocrsn. PERFORM tipos_especiales.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_form. PERFORM form.
AT SELECTION-SCREEN ON p_payty. PERFORM valida_payty.
START-OF-SELECTION.
CLEAR: ti_hrpy_012_tabd, ti_hrpy_012_tabb, ti_arch_origen, ti_sis_sane. FREE: ti_hrpy_012_tabd, ti_hrpy_012_tabb, ti_arch_origen, ti_sis_sane.
* Se traen los datos de la(s) sociedad(es) SELECT * FROM zpyect001 INTO TABLE ti_zpyect001 WHERE bukrs IN pnpbukrs AND endda GE pn-begda AND begda LE pn-endda.
SORT ti_zpyect001 BY bukrs endda DESCENDING.
* Si es Nomina Especial IF p_ocrsn IS INITIAL. CLEAR: p_payty, p_payid, p_bondt. wl_regular = 'X'. ELSE. CLEAR wl_regular. ENDIF.
* Se traen las equivalencias de las Provincias SELECT * FROM zpyect007_a INTO TABLE ti_hrpy_012_tabd WHERE spras EQ sy-langu AND land1 EQ 'EC'.
* Se traen las equivalencias de Cantones SELECT * FROM zpyect007_b INTO TABLE ti_hrpy_012_tabb WHERE spras EQ sy-langu AND land1 EQ 'EC'.
* Trae los codigos de agencias SELECT * FROM zpyect007 INTO TABLE ti_cod_hist WHERE endda GE pn-begda AND begda LE pn-endda.
* Empleados CON Sistema Salario Neto SELECT * FROM zpyect043 INTO TABLE ti_sis_sane WHERE endda GE pn-begda AND begda LE pn-endda.
GET pernr.
CHECK pernr-bukrs IN pnpbukrs. CLEAR ti_pernr.
CLEAR wl_hiredate. PERFORM get_hire_date(zhrecp001) USING pernr-pernr pn-begda pn-endda CHANGING wl_hiredate sy-subrc.
IF sy-subrc EQ 0. MOVE wl_hiredate TO ti_pernr-ls_hiring_date. ENDIF.
IF ti_pernr-ls_hiring_date BETWEEN pn-begda AND pn-endda. wl_begda = ti_pernr-ls_hiring_date. ELSE. wl_begda = pn-begda. ENDIF.
CLEAR dataemployee. FREE dataemployee.
CALL FUNCTION 'Z_HREC_READ_CLUSTER_PERIOD' EXPORTING payroll_pernr = pernr-pernr payroll_begda = wl_begda payroll_endda = pn-endda payroll_in_view = 'X' payroll_payty = p_payty payroll_payid = p_payid payroll_bondt = p_bondt payroll_ocrsn = 'A' cd_regular = wl_regular TABLES datatable = dataemployee EXCEPTIONS empleado_no_existe = 1 resultado_nomina_no_existe = 2
OTHERS = 3.
IF sy-subrc <> 0. ELSE.
***** LOOP AT dataemployee WHERE lgart = '9BAR'.***** ti_pernr-virca = ( ( dataemployee-betrg * dataemployee-betpe ) / 100 + dataemployee-anzhl ).***** ENDLOOP.
* Se trae la Clase de Evaluacion Numero 20 de cada CC-Nomina* Esta clase de evaluacion es la que permite saber que cc-nomina* hace parte de cada campo del formato SRI LOOP AT dataemployee. PERFORM re512w USING dataemployee-molga dataemployee-lgart pn-endda. MOVE: t512w-aklas TO xaklas, xaklas-cleval20 TO dataemployee-gl_evcl20.
MODIFY dataemployee. ENDLOOP.
* Borra los registros (cc-nominas) que no tengan clase de evaluacion 20 DELETE dataemployee WHERE gl_evcl20 IS INITIAL.
DESCRIBE TABLE dataemployee.
CHECK sy-tfill GT 0.
READ TABLE dataemployee INDEX 1. MOVE-CORRESPONDING dataemployee TO ti_pernr. MOVE dataemployee-amt_curr TO ti_pernr-waers.
* Lectura de las Rebajas Especiales PERFORM zzread_infotype(zhrecp001) TABLES p9803 USING pernr-pernr '9803' "infotipo pn-begda pn-endda.
SORT p9803 BY endda DESCENDING.
LOOP AT p9803 WHERE begda LE pn-endda AND endda GE pn-begda. MOVE-CORRESPONDING p9803 TO ti_pernr. " los valores se traen por la clase de evaluacion EXIT. ENDLOOP.
* Lectura de Valores Otros Empleadores PERFORM zzread_infotype(zhrecp001) TABLES p9804 USING pernr-pernr '9804' "infotipo pn-begda pn-endda.
SORT p9804 BY endda DESCENDING.
LOOP AT p9804 WHERE begda LE pn-endda AND endda GE pn-begda. MOVE-CORRESPONDING p9804 TO ti_pernr. " los valores se traen por la clase de evaluacion EXIT. ENDLOOP.
CLEAR wl_num_month.* Calculo numero de meses trabajados CALL FUNCTION 'HR_ECM_GET_NUMBER_OF_MONTHS' EXPORTING begda = wl_begda endda = pn-endda days_min = 01 message_handler = ti_message IMPORTING months = wl_num_month.
ti_pernr-nmtra = wl_num_month.
***** ti_pernr-virca = ( ti_pernr-virca / 12 ) * ti_pernr-nmtra.
* Llena los valores del Formato CASE pn-endda(4).
WHEN '2011'. PERFORM llena_valores_2012.***** WHEN '2012'. WHEN OTHERS. PERFORM llena_valores_2013. ENDCASE.
PERFORM llena_valores_especiales.
* Valores de Subtotal y Base Imponible CASE pn-endda(4). WHEN '2011'. PERFORM totales_2012.***** WHEN '2012'. WHEN OTHERS.* Solo para el ano 2012 se lee la reparticion de utilidades del 2011 Diciembre Sociedad 1100 PERFORM rep_util_2011. PERFORM totales_2013. ENDCASE.
CLEAR: gl_ictyp, gl_icnum.
* Trae el tipo de documento y el numero del documento de la persona PERFORM get_ictyp_icnum(zhrecp001) USING pernr-pernr pn-begda pn-endda CHANGING gl_ictyp gl_icnum sy-subrc.
IF sy-subrc EQ 0. MOVE gl_ictyp TO ti_pernr-ictyp. MOVE gl_icnum TO ti_pernr-icnum. ENDIF.
* Trae el Nombre CALL FUNCTION 'HR_INITIALIZE_BUFFER' EXPORTING tclas = 'A' pernr = pernr-pernr.
PERFORM zzread_infotype(zhrecp001) TABLES p0002 USING pernr-pernr '0002' "infotipo pn-begda pn-endda.
LOOP AT p0002 WHERE begda LE pn-endda AND endda GE pn-begda. EXIT. ENDLOOP.
IF sy-subrc EQ 0. CONCATENATE p0002-nachn p0002-nach2 p0002-vorna p0002-name2 INTO ti_pernr-cname SEPARATED BY space. ENDIF.
* Trae la fecha de retiro CALL FUNCTION 'HR_INITIALIZE_BUFFER' EXPORTING tclas = 'A' pernr = pernr-pernr.
PERFORM zzread_infotype(zhrecp001) TABLES p0001 USING pernr-pernr '0001' "infotipo pn-begda pn-endda.
LOOP AT p0001 WHERE begda LE pn-endda AND endda GE pn-begda AND persg EQ '5'. EXIT. ENDLOOP.
IF sy-subrc EQ 0. ti_pernr-ls_firing_date = p0001-begda - 1. ENDIF.
* Trae la Provincia, Ciudad, Telefono, Direccion Domiciliaria (Calle) y Número CALL FUNCTION 'HR_INITIALIZE_BUFFER' EXPORTING
tclas = 'A' pernr = pernr-pernr.
PERFORM zzread_infotype(zhrecp001) TABLES p0006 USING pernr-pernr '0006' "infotipo pn-begda pn-endda.
LOOP AT p0006 WHERE begda LE pn-endda AND endda GE pn-begda. EXIT. ENDLOOP.
IF sy-subrc EQ 0. ti_pernr-state = p0006-state.
SELECT SINGLE bezei FROM t005u INTO ti_pernr-bezei WHERE spras EQ zpyec_langu AND land1 EQ zpyec_land1 AND bland EQ p0006-state.
ti_pernr-state = p0006-state. ti_pernr-ort01 = p0006-ort01. ti_pernr-telnr = p0006-telnr. ti_pernr-stras = p0006-stras. ti_pernr-locat = p0006-locat. ENDIF.
* Trae los textos PERFORM trae_textos.
APPEND ti_pernr. ENDIF.
END-OF-SELECTION.
PERFORM def_header2.
CASE pn-endda(4). WHEN '2011'. PERFORM catal_2012.***** WHEN '2012'. WHEN OTHERS. PERFORM catal_2013. ENDCASE.
CALL FUNCTION 'HR_GET_ERROR_LIST' TABLES error = display_err errortexts = errortexts EXCEPTIONS no_errors = 1 OTHERS = 2.
myreport = sy-repid. list_level = '01'.
return_code = 1.
CLEAR wl_num_ret.
DESCRIBE TABLE ti_pernr.
wl_num_ret = sy-tfill.
IF sy-tfill LE 0. MESSAGE e002(sy) WITH 'No Existen Datos para Mostrar'. ENDIF.
WHILE return_code EQ 1 OR return_code EQ 2.
CLEAR return_code.
CONCATENATE 'Periodo Reporte SRI:' pn-begda ' - ' pn-endda INTO header3 SEPARATED BY space.
CALL FUNCTION 'HR_DISPLAY_BASIC_LIST' EXPORTING
head_line1 = header2 head_line2 = header3 basic_list_title = p_titul file_name = myreport current_report = myreport list_level = list_level lay_out = 5 dyn_pushbutton_text1 = 'Formato SRI' dyn_pushbutton_text2 = 'Archivo Plano' IMPORTING return_code = return_code TABLES data_tab = ti_pernr fieldname_tab = fieldnames error_tab = display_err EXCEPTIONS print_problems = 5 download_problem = 1 no_data_tab_entries = 2 OTHERS = 3.
CASE return_code. WHEN 1. PERFORM imprime_formato. WHEN 2. PERFORM crea_archivo_plano. WHEN OTHERS. ENDCASE.
ENDWHILE.
CASE sy-subrc. WHEN 0. WHEN 1. CALL FUNCTION 'HR_APPEND_ERROR_LIST' EXPORTING arbgb = 'PN' msgty = 'I' msgno = '173'. "PC - Download nicht möglich.
WHEN 2.
CALL FUNCTION 'HR_APPEND_ERROR_LIST' EXPORTING arbgb = 'PN' msgty = 'W' msgno = '050'. "No existe Informacion.
WHEN OTHERS. CALL FUNCTION 'HR_APPEND_ERROR_LIST' EXPORTING arbgb = 'PN' msgty = 'E' msgno = '800'. "Interner Fehler!
CALL FUNCTION 'HR_DISPLAY_ERROR_LIST' EXPORTING no_popup = ' ' no_print = 'X' no_img = ' ' EXCEPTIONS OTHERS = 1. ENDCASE.
*&---------------------------------------------------------------------**& Form re512w*&---------------------------------------------------------------------*FORM re512w USING p_molga LIKE t500l-molga p_lgart LIKE t512w-lgart p_endda LIKE t512w-endda.
CHECK p_molga NE t512w-molga OR p_lgart NE t512w-lgart OR p_endda NE t512w-endda.
SELECT SINGLE * FROM t512w WHERE molga EQ p_molga AND lgart EQ p_lgart AND endda >= p_endda AND begda <= p_endda. CHECK sy-subrc NE 0.
CLEAR t512w.
ENDFORM. " re512w
*&---------------------------------------------------------------------**& Form llena_valores_2012*&---------------------------------------------------------------------*FORM llena_valores_2012 .
* Sueldo y Salarios Campo 301 Formato SRI PERFORM trae_valor TABLES dataemployee USING '01' CHANGING ti_pernr-vsysa.
* Sobresueldos, Comisiones, Bonos y otros Ingresos Gravados Campo 303 Formato SRI PERFORM trae_valor TABLES dataemployee USING '03' CHANGING ti_pernr-vscor.
* Décimo Tercero Sueldo Campo 305 Formato SRI PERFORM trae_valor TABLES dataemployee USING '05' CHANGING ti_pernr-vdtsu.
* Décimo Cuarto Sueldo Campo 307 Formato SRI PERFORM trae_valor TABLES dataemployee USING '07' CHANGING ti_pernr-vdcsu.
* Fondo de Reserva Campo 309 Formato SRI PERFORM trae_valor TABLES dataemployee USING '10' CHANGING ti_pernr-vfore.
* Participación Utilidades Campo 311 Formato SRI PERFORM trae_valor TABLES dataemployee USING '09' CHANGING ti_pernr-vpaut.
* Desahucio y otras remuneraciones que no constituyen renta gravada Campo 313 Formato SRI PERFORM trae_valor TABLES dataemployee USING '14' CHANGING ti_pernr-vdesa.
* Aportes Personal al IESS (Unicamente pagado por el empleado) Campo 315 Formato SRI PERFORM trae_valor TABLES dataemployee USING '11' CHANGING ti_pernr-vapie.
* Impuesto a la Renta Asumido por el Empleador Campo 331 Formato SRI PERFORM trae_valor TABLES dataemployee USING '17' CHANGING ti_pernr-
virae.
* Valor del Impuesto Retenido Campo 411 Formato SRI PERFORM trae_valor TABLES dataemployee USING '99' CHANGING ti_pernr-vimre.
ENDFORM. " llena_valores_2012
*&---------------------------------------------------------------------**& Form llena_valores_2013*&---------------------------------------------------------------------*FORM llena_valores_2013.
* Sueldo y Salarios Campo 301 Formato SRI PERFORM trae_valor TABLES dataemployee USING '01' CHANGING ti_pernr-vsysa.
* Sobresueldos, Comisiones, Bonos y otros Ingresos Gravados Campo 303 Formato SRI PERFORM trae_valor TABLES dataemployee USING '03' CHANGING ti_pernr-vscor.
* Participación Utilidades Campo 305 Formato SRI PERFORM trae_valor TABLES dataemployee USING '09' CHANGING ti_pernr-vpaut.
* Décimo Tercero Sueldo Campo 311 Formato SRI PERFORM trae_valor TABLES dataemployee USING '05' CHANGING ti_pernr-vdtsu.
* Décimo Cuarto Sueldo Campo 313 Formato SRI PERFORM trae_valor TABLES dataemployee USING '07' CHANGING ti_pernr-vdcsu.
* Fondo de Reserva Campo 315 Formato SRI PERFORM trae_valor TABLES dataemployee USING '10' CHANGING ti_pernr-vfore.
* Otros Ingresos en relacion de dependencia que no constituyen renta gravada Campo 317 Formato SRI PERFORM trae_valor TABLES dataemployee USING '02' CHANGING ti_pernr-voinr.
* Aportes Personal al IESS (Unicamente pagado por el empleado) Campo 351 Formato SRI PERFORM trae_valor TABLES dataemployee USING '11' CHANGING ti_pernr-vapie.
* Impuesto a la Renta Asumido por el Empleador Campo 381 Formato SRI PERFORM trae_valor TABLES dataemployee USING '17' CHANGING ti_pernr-virae.
* Valor del Impuesto Retenido Campo 407 Formato SRI PERFORM trae_valor TABLES dataemployee USING '99' CHANGING ti_pernr-vimre.
* Trae el valor del Salario Digno SOLO para el REDEP 2014 LOOP AT dataemployee INTO wa_dataemployee WHERE lgart EQ '1M78'. ADD wa_dataemployee-betrg TO ti_pernr-vsadi. ENDLOOP.
ENDFORM. " llena_valores_2013
*&---------------------------------------------------------------------**& Form trae_valor*&---------------------------------------------------------------------*FORM trae_valor TABLES p_dataemployee TYPE zpyectt038 USING value(p_value) CHANGING p_campo.
CLEAR p_campo.
LOOP AT p_dataemployee INTO wa_dataemployee WHERE gl_evcl20 EQ p_value. ADD wa_dataemployee-betrg TO p_campo. ENDLOOP.
ENDFORM. " trae_valor
*&---------------------------------------------------------------------**& Form llena_valores_especiales*&---------------------------------------------------------------------*FORM llena_valores_especiales .
CLEAR dataemployee_tmp.
FREE dataemployee_tmp.
CALL FUNCTION 'Z_HREC_READ_CLUSTER_PERIOD' EXPORTING payroll_pernr = pernr-pernr payroll_begda = wl_begda "pn-begda payroll_endda = pn-endda payroll_in_view = 'X' payroll_payty = p_payty payroll_payid = p_payid payroll_bondt = p_bondt payroll_ocrsn = 'ZDCU' cd_regular = ' ' TABLES datatable = dataemployee_tmp EXCEPTIONS empleado_no_existe = 1 resultado_nomina_no_existe = 2 OTHERS = 3.
IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ELSE.* Se trae la Clase de Evaluacion Numero 20 de cada CC-Nomina* Esta clase de evaluacion es la que permite saber que cc-nomina* hace parte de cada campo del formato SRI LOOP AT dataemployee_tmp. PERFORM re512w USING dataemployee_tmp-molga dataemployee_tmp-lgart pn-endda. MOVE: t512w-aklas TO xaklas, xaklas-cleval20 TO dataemployee_tmp-gl_evcl20.
MODIFY dataemployee_tmp. ENDLOOP.
* Borra los registros (cc-nominas) que no tengan clase de evaluacion 20 DELETE dataemployee_tmp WHERE gl_evcl20 IS INITIAL.
DESCRIBE TABLE dataemployee_tmp.
CHECK sy-tfill GT 0.
* Décimo Tercero Sueldo Campo 305 Formato SRI IF ti_pernr-vdtsu IS INITIAL. PERFORM trae_valor TABLES dataemployee_tmp USING '05' CHANGING ti_pernr-vdtsu. ENDIF.
* Décimo Cuarto Sueldo Campo 307 Formato SRI IF ti_pernr-vdcsu IS INITIAL. PERFORM trae_valor TABLES dataemployee_tmp USING '07' CHANGING ti_pernr-vdcsu. ENDIF.
* Participación Utilidades Campo 309 Formato SRI IF ti_pernr-vpaut IS INITIAL. PERFORM trae_valor TABLES dataemployee_tmp USING '09' CHANGING ti_pernr-vpaut. ENDIF.
ENDIF.
ENDFORM. " llena_valores_especiales
*&---------------------------------------------------------------------**& Form def_header2*&---------------------------------------------------------------------*FORM def_header2.
header2 = p_titul.
CLEAR: header2. IF pn-begda EQ pn-endda. header2 = 'Fecha: '. WRITE pn-begda TO datum DD/MM/YYYY. CONCATENATE header2 datum INTO header2 SEPARATED BY space. ELSE. header2 = text-zrm. WRITE pn-begda TO datum DD/MM/YYYY. REPLACE '$1' WITH datum INTO header2.
WRITE pn-endda TO datum DD/MM/YYYY. REPLACE '$2' WITH datum INTO header2. ENDIF.
ENDFORM. " DEF_HEADER2
*&---------------------------------------------------------------------**& Form INIT_FIELDNAMES "neu "XIRK036103*&---------------------------------------------------------------------*FORM init_fieldnames USING field1 field2 field3 field4.
fieldnames-text = field1. fieldnames-tabname = field2. fieldnames-fieldname = field3. fieldnames-typ = field4.
APPEND fieldnames. CLEAR fieldnames.
ENDFORM. " INIT_FIELDNAMES
*&---------------------------------------------------------------------**& Form imprime_formato*&---------------------------------------------------------------------*FORM imprime_formato .
DATA: wl_cnt TYPE i, wl_lee TYPE i, wl_imprime TYPE i, wl_bukrs LIKE ti_pernr-bukrs, wl_btrtl LIKE ti_pernr-btrtl, wa_year(4) TYPE c, lc_consec(10) TYPE n.
CLEAR: output_options, control_parameters. FREE: output_options, control_parameters.
* find out the name of the generated function module CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING formname = p_form IMPORTING
fm_name = func_mod_name EXCEPTIONS no_form = 1 no_function_module = 2 OTHERS = 3. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.
* set output options (optional) output_options-tddest = ' '. output_options-tdimmed = 'X'. output_options-tdnewid = 'X'. control_parameters-preview = 'X'.
SORT ti_pernr BY bukrs btrtl cname ASCENDING. CLEAR wa_zpyect001.
CLEAR lc_consec.
LOOP AT ti_pernr.
ADD 1 TO lc_consec.
IF wa_zpyect001-bukrs NE ti_pernr-bukrs. CLEAR wa_zpyect001. LOOP AT ti_zpyect001 INTO wa_zpyect001 WHERE bukrs EQ ti_pernr-bukrs. EXIT. ENDLOOP. ENDIF.
MOVE-CORRESPONDING ti_pernr TO wa_pernr.
* Si la Base Imponible tiene valor se inserta el registro CHECK NOT wa_pernr-vbaim IS INITIAL.
* make sure only one spool request is used. AT FIRST. control_parameters-no_close = 'X'.
ENDAT.
AT LAST. control_parameters-no_close = space. ENDAT.
TRANSLATE: wa_zpyect001-butxt TO UPPER CASE, wa_zpyect001-adres TO UPPER CASE, wa_pernr-ictyp TO UPPER CASE, wa_pernr-cname TO UPPER CASE, wa_pernr-bezei TO UPPER CASE, wa_pernr-ort01 TO UPPER CASE, wa_pernr-stras TO UPPER CASE.
wa_year = pn-endda(4).
* call the generated function module CALL FUNCTION func_mod_name EXPORTING* The following three parameters belong to the optional* part of the exercise. control_parameters = control_parameters output_options = output_options user_settings = space
wa_t7co01 = wa_zpyect001 wa_pernr = wa_pernr wa_year = wa_year wa_fentrega = p_fentre wa_consec = lc_consec color = 'BCOL' EXCEPTIONS formatting_error = 1 internal_error = 2 send_error = 3 user_canceled = 4 OTHERS = 5.
IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
* make sure the spool request is re-used control_parameters-no_open = 'X'.
ENDLOOP.
ENDFORM. " imprime_formato
*&---------------------------------------------------------------------**& Form crea_archivo_plano*&---------------------------------------------------------------------*FORM crea_archivo_plano .
* Valida que el archivo XML solo sea a partir del año 2013, ya que para* años anteriores no se tienen especificacion CHECK pn-endda(4) GE '2012'.
CLEAR wl_num_arc.
CLEAR ti_arch_plano. FREE ti_arch_plano.
SORT ti_pernr BY bukrs btrtl cname ASCENDING.
LOOP AT ti_pernr. TRANSLATE: ti_pernr-ictyp TO UPPER CASE, ti_pernr-cname TO UPPER CASE, ti_pernr-bezei TO UPPER CASE, ti_pernr-ort01 TO UPPER CASE, ti_pernr-stras TO UPPER CASE.
* Arma la informacion para el archivo IF pn-endda(4) LE '2012'. PERFORM informacion_2013. ELSEIF pn-endda(4) GE '2013'. PERFORM informacion_2014. ENDIF. ENDLOOP.
LOOP AT ti_arch_plano.
MOVE-CORRESPONDING ti_arch_plano TO wa_arch_plano. AT NEW numruc. CLEAR: t_xml, wa_final_xml, t_final_xml. FREE: t_xml, wa_final_xml, t_final_xml. CLEAR wa_xml. wa_final_xml-numruc = wa_arch_plano-numruc. wa_final_xml-anio = wa_arch_plano-anio. ENDAT. CLEAR wa_xml. MOVE-CORRESPONDING wa_arch_plano TO wa_xml. APPEND wa_xml TO t_xml. AT END OF numruc. wa_final_xml-xmlstruct[] = t_xml[]. APPEND wa_final_xml TO t_final_xml.
DESCRIBE TABLE t_final_xml.
IF sy-tfill GT 0.* Creacion del archivo XML PERFORM create_xml.
* Imprime el archivo PERFORM download_file. ENDIF. ENDAT. ENDLOOP.
ENDFORM. " crea_archivo_plano
*&---------------------------------------------------------------------**& Form trae_textos*&---------------------------------------------------------------------*FORM trae_textos .
DATA: wl_otype TYPE otype.
* Trae el Nombre de la Sociedad PERFORM texto_sociedad(zhrecp003) USING ti_pernr-bukrs CHANGING ti_pernr-butxt.
* Trae el nombre de la Division de Personal
PERFORM texto_div_personal(zhrecp003) USING ti_pernr-werks '99' CHANGING ti_pernr-name1.
* Identificación de sociedades CO SELECT SINGLE kokrs FROM tka02 INTO wl_kokrs WHERE bukrs EQ ti_pernr-bukrs.
IF NOT wl_kokrs IS INITIAL.* Trae el nombre del Centro de Costos PERFORM texto_ccosto(zhrecp003) USING sy-langu wl_kokrs ti_pernr-kostl pn-begda pn-endda CHANGING ti_pernr-ktext. ENDIF.
* Trae el nombre de la Subdivision PERFORM texto_subdivision(zhrecp003) USING ti_pernr-werks ti_pernr-btrtl CHANGING ti_pernr-btext.
* Trae el nombre del Grupo de Personal PERFORM texto_gr_personal(zhrecp003) USING sy-langu ti_pernr-persg CHANGING ti_pernr-ptexg.
* Trae el texto del Area de Personal PERFORM texto_area_personal(zhrecp003) USING sy-langu ti_pernr-persk CHANGING ti_pernr-ptext.
* Trae el texto del Area de Nomina PERFORM texto_area_nomina(zhrecp003) USING sy-langu ti_pernr-abkrs CHANGING ti_pernr-atext.
* Trae el texto de la Unidad Organizativa PERFORM texto_un_organiz(zhrecp003) USING sy-langu ti_pernr-orgeh pn-begda pn-endda CHANGING ti_pernr-orgtx.
* Trae el tipo de Objeto de la Posicion PERFORM zzread_infotype(zhrecp001) TABLES p0001 USING pernr-pernr '0001' "info
tipo pn-begda pn-endda.
LOOP AT p0001 WHERE begda <= pn-endda AND endda >= pn-begda. MOVE p0001-otype TO wl_otype. EXIT. ENDLOOP.
* Trae el texto de la Posicion PERFORM texto_posicion(zhrecp003) USING sy-langu wl_otype ti_pernr-plans pn-begda pn-endda CHANGING ti_pernr-plstx.
ENDFORM. " trae_textos
*&---------------------------------------------------------------------**& Form informacion_2013*&---------------------------------------------------------------------*FORM informacion_2013 .
DATA: lc_val_ini(4) TYPE c VALUE '0.00'.
CLEAR wa_zpyect001.
IF wa_zpyect001-bukrs NE ti_pernr-bukrs. CLEAR wa_zpyect001. LOOP AT ti_zpyect001 INTO wa_zpyect001 WHERE bukrs EQ ti_pernr-bukrs. EXIT. ENDLOOP. ENDIF.
CLEAR ti_arch_plano.
TRANSLATE: ti_pernr-ictyp TO UPPER CASE, ti_pernr-stras TO UPPER CASE.
ti_arch_plano-numruc = wa_zpyect001-nitnr. ti_arch_plano-anio = sy-datum(4).
IF ti_pernr-ictyp EQ 'CC'. ti_arch_plano-tipidret = '2'. " Cédula ELSE. ti_arch_plano-tipidret = '3'. " Pasaporte ENDIF.
CONDENSE ti_pernr-icnum. ti_pernr-icnum = ti_pernr-icnum(10). WRITE ti_pernr-icnum TO ti_arch_plano-idret RIGHT-JUSTIFIED. OVERLAY ti_arch_plano-idret WITH '000000000000'.
IF ti_pernr-ictyp EQ 'CC'. SHIFT ti_arch_plano-idret BY 3 PLACES LEFT. ENDIF.
ti_arch_plano-anioret = pn-endda(4). ti_arch_plano-estab = '001'. ti_arch_plano-suelsal = ti_pernr-vsysa. ti_arch_plano-sobsuelcomremu = ti_pernr-vscor. ti_arch_plano-partutil = ti_pernr-vpaut. ti_arch_plano-intgrabgen = ti_pernr-zigoem. ti_arch_plano-imprentempl = ti_pernr-virae. ti_arch_plano-decimter = ti_pernr-vdtsu. ti_arch_plano-decimcuar = ti_pernr-vdcsu. ti_arch_plano-fondoreserva = ti_pernr-vfore. ti_arch_plano-salariodigno = lc_val_ini. " ti_pernr-. ti_arch_plano-otrosingrengrav = lc_val_ini. " ti_pernr-. ti_arch_plano-inggravconesteempl = ti_pernr-vigem. ti_arch_plano-sissalnet = '1'. ti_arch_plano-apoperiess = ti_pernr-vapie. ti_arch_plano-aporperiessconotrosempls = ti_pernr-ziessr. ti_arch_plano-deducvivienda = ti_pernr-zvivi. ti_arch_plano-deducsalud = ti_pernr-zsalu. ti_arch_plano-deduceduca = ti_pernr-zeduc. ti_arch_plano-deducaliement = ti_pernr-zalim. ti_arch_plano-deducvestim = ti_pernr-zvest. ti_arch_plano-exodiscap = ti_pernr-zdisc. ti_arch_plano-exotered = ti_pernr-zteed. ti_arch_plano-basimp = ti_pernr-vbaim. ti_arch_plano-imprentcaus = ti_pernr-virca. ti_arch_plano-valretasuotrosempls = ti_pernr-zviroe.
ti_arch_plano-valimpasuesteempl = lc_val_ini. " ti_pernr-virae. ti_arch_plano-valret = ti_pernr-vimre.
APPEND ti_arch_plano.
ENDFORM. " informacion_2013
*&---------------------------------------------------------------------**& Form informacion_2014*&---------------------------------------------------------------------*FORM informacion_2014 .
DATA: lc_val_ini(4) TYPE c VALUE '0.00'.
CLEAR wa_zpyect001.
IF wa_zpyect001-bukrs NE ti_pernr-bukrs. CLEAR wa_zpyect001. LOOP AT ti_zpyect001 INTO wa_zpyect001 WHERE bukrs EQ ti_pernr-bukrs. EXIT. ENDLOOP. ENDIF.
CLEAR ti_arch_plano.
TRANSLATE: ti_pernr-ictyp TO UPPER CASE, ti_pernr-stras TO UPPER CASE.
ti_arch_plano-numruc = wa_zpyect001-nitnr. ti_arch_plano-anio = pn-endda(4).
IF ti_pernr-ictyp EQ 'CC' OR ti_pernr-ictyp EQ 'CI'. ti_arch_plano-tipidret = 'C'. " Cédula (2) ELSE. ti_arch_plano-tipidret = 'P'. " Pasaporte (3) ENDIF.
CONDENSE ti_pernr-icnum. ti_pernr-icnum = ti_pernr-icnum(10). WRITE ti_pernr-icnum TO ti_arch_plano-idret RIGHT-JUSTIFIED. OVERLAY ti_arch_plano-idret WITH '0000000000000'.
IF ti_pernr-ictyp EQ 'CC'. SHIFT ti_arch_plano-idret BY 3 PLACES LEFT. ENDIF.
* Nombre y Apellido del empleado PERFORM zzread_infotype(zhrecp001) TABLES p0002 USING ti_pernr-pernr '0002' "infotipo pn-begda pn-endda.
SORT p0002 BY endda DESCENDING.
LOOP AT p0002 WHERE begda LE pn-endda AND endda GE pn-begda. CONDENSE: p0002-nachn NO-GAPS, p0002-nach2 NO-GAPS, p0002-vorna NO-GAPS, p0002-name2 NO-GAPS.
CONCATENATE p0002-nachn p0002-nach2 INTO ti_arch_plano-apellidotrab SEPARATED BY space. CONCATENATE p0002-vorna p0002-name2 INTO ti_arch_plano-nombretrab SEPARATED BY space. EXIT. ENDLOOP.
* Se modifica el nombre quitandoles las tildes TRANSLATE: ti_arch_plano-apellidotrab USING 'áaéeíióoúu', ti_arch_plano-apellidotrab USING 'ÁAÉEÍIÓOÚU', ti_arch_plano-nombretrab USING 'áaéeíióoúu', ti_arch_plano-nombretrab USING 'ÁAÉEÍIÓOÚU'.
* Se quitan las ñ o Ñ TRANSLATE: ti_arch_plano-apellidotrab USING 'ñn', ti_arch_plano-apellidotrab USING 'ÑN', ti_arch_plano-nombretrab USING 'ñn', ti_arch_plano-nombretrab USING 'ÑN'.
ti_arch_plano-anioret = pn-endda(4).
LOOP AT ti_cod_hist WHERE bukrs EQ ti_pernr-bukrs AND werks EQ ti_pernr-werks AND btrtl EQ ti_pernr-btrtl. CONDENSE ti_cod_hist-coahl. ti_arch_plano-estab = ti_cod_hist-coahl+1(3). EXIT. ENDLOOP.
ti_arch_plano-residenciatrab = '01'. ti_arch_plano-paisresidencia = '593'. ti_arch_plano-aplicaconvenio = 'NA'. ti_arch_plano-tipotrabajdiscap = '01'. " No Aplica ti_arch_plano-porcentajediscap = '000'.
* Verifica si el empleado presenta discapacidad PERFORM zzread_infotype(zhrecp001) TABLES p0004 USING ti_pernr-pernr '0004' "infotipo pn-begda pn-endda.
SORT p0004 BY endda DESCENDING.
LOOP AT p0004 WHERE begda LE pn-endda AND endda GE pn-begda. IF p0004-zz_sustit IS INITIAL. ti_arch_plano-tipotrabajdiscap = '02'. " Trabajador con Discapacidad ELSE. ti_arch_plano-tipotrabajdiscap = '03'. " Trabajador que actua en calidad de sustituto ENDIF.
IF NOT p0004-sbpro IS INITIAL. ti_arch_plano-porcentajediscap = p0004-sbpro. ENDIF. EXIT. ENDLOOP.
ti_arch_plano-tipiddiscap = 'N'. ti_arch_plano-iddiscap = '999'.
ti_arch_plano-suelsal = ti_pernr-vsysa. ti_arch_plano-sobsuelcomremu = ti_pernr-vscor. ti_arch_plano-partutil = ti_pernr-vpaut. ti_arch_plano-intgrabgen = ti_pernr-zigoem. ti_arch_plano-imprentempl = ti_pernr-virae. ti_arch_plano-decimter = ti_pernr-vdtsu. ti_arch_plano-decimcuar = ti_pernr-vdcsu. ti_arch_plano-fondoreserva = ti_pernr-vfore. ti_arch_plano-salariodigno = ti_pernr-vsadi. ti_arch_plano-otrosingrengrav = lc_val_ini. " ti_pernr-. ti_arch_plano-inggravconesteempl = ti_pernr-vigem. ti_arch_plano-sissalnet = '1'.
* Verifica si el empleado es CON Sistema Salario Neto LOOP AT ti_sis_sane WHERE pernr EQ ti_pernr-pernr. ti_arch_plano-sissalnet = '2'. EXIT. ENDLOOP.
ti_arch_plano-apoperiess = ti_pernr-vapie. ti_arch_plano-aporperiessconotrosempls = ti_pernr-ziessr. ti_arch_plano-deducvivienda = ti_pernr-zvivi. ti_arch_plano-deducsalud = ti_pernr-zsalu. ti_arch_plano-deduceduca = ti_pernr-zeduc. ti_arch_plano-deducaliement = ti_pernr-zalim. ti_arch_plano-deducvestim = ti_pernr-zvest. ti_arch_plano-exodiscap = ti_pernr-zdisc. ti_arch_plano-exotered = ti_pernr-zteed. ti_arch_plano-basimp = ti_pernr-vbaim. ti_arch_plano-imprentcaus = ti_pernr-virca. ti_arch_plano-valretasuotrosempls = ti_pernr-zviroe. ti_arch_plano-valimpasuesteempl = lc_val_ini. " ti_pernr-virae. ti_arch_plano-valret = ti_pernr-vimre.
APPEND ti_arch_plano.
ENDFORM. " informacion_2014
*&---------------------------------------------------------------------**& Form create_xml*&---------------------------------------------------------------------*
FORM create_xml . DATA: lc_ano(4) TYPE c.
CLEAR: wa_source, t_source. FREE: wa_source, t_source.
* Prepare for Transformation wa_source-name = 'SRI'. GET REFERENCE OF t_final_xml INTO wa_source-value. APPEND wa_source TO t_source.
CLEAR g_xml_string.***** lc_ano = pn-endda(4) + 1.
IF pn-endda(4) LE '2012'. lc_ano = '2013'. ELSEIF pn-endda(4) GE '2013'. lc_ano = '2014'. ENDIF.
CONCATENATE gl_transform '_' lc_ano INTO gl_transform. CALL TRANSFORMATION (gl_transform) SOURCE (t_source) RESULT XML g_xml_string.
IF sy-subrc <> 0. ELSE. g_xml_string1 = g_xml_string. REPLACE 'utf-16' WITH 'ISO-8859-1' INTO g_xml_string. ENDIF.ENDFORM. " create_xml
*&---------------------------------------------------------------------**& Form DOWNLOAD_FILE*&---------------------------------------------------------------------** Download the XML into a file*----------------------------------------------------------------------*FORM download_file .* Local Data DATA: wl_file TYPE string, wl_pos TYPE i, wl_ext(4) TYPE c VALUE '.XML',
wl_num(1) TYPE c.
ADD 1 TO wl_num_arc.
CLEAR t_srctab. FREE t_srctab.
TRY. CREATE OBJECT g_xsltp. CATCH cx_xslt_exception. ENDTRY.
g_ixml = cl_ixml=>create( ). g_stream_factory = g_ixml->create_stream_factory( ). g_srcstr = g_stream_factory->create_istream_cstring( string = g_xml_string1 ).
* XML source is specified by stream CALL METHOD g_xsltp->set_source_stream EXPORTING stream = g_srcstr.
CALL METHOD g_xsltp->set_result_table EXPORTING table = t_srctab.
* RUN TRY. CALL METHOD g_xsltp->run EXPORTING progname = g_progname.
CATCH cx_xslt_exception INTO g_gen_ex. g_xml_string = g_gen_ex->get_text( ). ENDTRY.
MOVE p_file TO wl_file.
* Prepara la ruta y el nombre de los archivos FIND ALL OCCURRENCES OF '\' IN wl_file MATCH OFFSET wl_pos.
ADD 1 TO wl_pos. wl_file = wl_file(wl_pos).
wl_num = wl_num_arc.
CONCATENATE wl_file 'RDEP' pn-endda(4) '-' wl_num wl_ext INTO wl_file.
CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING filename = wl_file filetype = 'BIN' TABLES data_tab = t_srctab.
IF sy-subrc EQ 0. g_message = 'Archivo Creado Exitosamente'(i03). ELSE. g_message = 'Error al Crear el Archivo'(i04). ENDIF. MESSAGE i000(38) WITH g_message.
ENDFORM. " DOWNLOAD_FILE
*&---------------------------------------------------------------------**& Form validaciones_archivos*&---------------------------------------------------------------------*FORM validaciones_archivos . IF p_file IS INITIAL. MESSAGE e000(38) WITH 'Favor Digitar la ruta destino del Archivo'. ENDIF.
CLEAR lc_valida. LOOP AT SCREEN. IF screen-group1 EQ 'NEW' AND screen-active EQ 1. lc_valida = 'X'. ENDIF. ENDLOOP.
IF p_fileup IS INITIAL AND NOT pn-endda IS INITIAL AND pn-endda(4) LT cn_year AND NOT lc_valida IS INITIAL. MESSAGE e000(38) WITH 'Favor Digitar la ruta origen del Archivo a Car
gar'. ENDIF.
IF NOT p_file IS INITIAL. TRANSLATE p_file TO UPPER CASE. g_len = strlen( p_file ) - 4. IF p_file+g_len(4) NE '.XML'. MESSAGE e000(38) WITH 'La extension debe ser .XML'. ENDIF. ENDIF.
IF NOT p_fileup IS INITIAL. TRANSLATE p_fileup TO UPPER CASE. g_len = strlen( p_fileup ) - 4. IF p_fileup+g_len(4) NE '.TXT'. MESSAGE e000(38) WITH 'La extension debe ser .TXT'. ENDIF. ENDIF.ENDFORM. " validaciones_archivos
*&---------------------------------------------------------------------**& Form destino_archivo*&---------------------------------------------------------------------*FORM destino_archivo . g_title = 'Documentos de Resultados'. CALL METHOD cl_gui_frontend_services=>file_save_dialog EXPORTING window_title = g_title file_filter = '*.XML' CHANGING filename = g_filename path = g_path fullpath = g_fullpath.
IF sy-subrc EQ 0. p_file = g_fullpath. ENDIF.ENDFORM. " destino_archivo
*&---------------------------------------------------------------------**& Form origen_archivo
*&---------------------------------------------------------------------*FORM origen_archivo . g_title = 'Archivo Valores Impuesto y Partición Utilidades'. CALL METHOD cl_gui_frontend_services=>file_open_dialog EXPORTING window_title = g_title file_filter = '*.TXT' CHANGING file_table = g_file_table rc = g_rc.
IF sy-subrc EQ 0. READ TABLE g_file_table INTO wa_file_table INDEX 1. CHECK sy-subrc EQ 0. p_fileup = wa_file_table-filename. ENDIF.ENDFORM. " origen_archivo
*&---------------------------------------------------------------------**& Form tipos_especiales*&---------------------------------------------------------------------*FORM tipos_especiales . CALL FUNCTION 'HR_OC_F4_POPUP_OCRSN' EXPORTING molga = zpyec_molga IMPORTING ocrsn = p_ocrsn.ENDFORM. " tipos_especiales
*&---------------------------------------------------------------------**& Form valida_payty*&---------------------------------------------------------------------*FORM valida_payty . IF p_payty <> cd_c-regular. SELECT SINGLE * FROM t52bx WHERE molga = zpyec_molga AND payty = p_payty. IF sy-subrc <> 0. SELECT SINGLE * FROM t500t WHERE molga = zpyec_molga AND spras = sy-langu. MESSAGE ID '3G' TYPE 'E' NUMBER '800' WITH p_payty t500t-ltext. ENDIF.
ENDIF.ENDFORM. " valida_payty
*&---------------------------------------------------------------------**& Form totales_2012*&---------------------------------------------------------------------*FORM totales_2012 .* Subtotal (301+303+311-315-317-319-321-323-325-327-329+331) Campo 351 Formato SRI ti_pernr-vsubt = ti_pernr-vsysa + ti_pernr-vscor + ti_pernr-vpaut - ti_pernr-vapie - ti_pernr-zvivi - ti_pernr-zsalu - ti_pernr-zeduc - ti_pernr-zalim - ti_pernr-zvest - ti_pernr-zdisc - ti_pernr-zteed + ti_pernr-virae.
* Base Imponible (351+401-403-405) Campo 407 Formato SRI ti_pernr-vbaim = ti_pernr-vsubt + ti_pernr-zigoem - ti_pernr-zdgpoe - ti_pernr-zoroem.ENDFORM. " totales_2012
*&---------------------------------------------------------------------**& Form totales_2013*&---------------------------------------------------------------------*FORM totales_2013 .* Base Imponible Gravada (301+303+305+307-351-353-361-363-365-367-369-371-373+381) Campo 399 Formato SRI ti_pernr-vbaim = ti_pernr-vsysa + ti_pernr-vscor + ti_pernr-vpaut + ti_pernr-zigoem - ti_pernr-vapie - ti_pernr-ziessr - ti_pernr-zvivi - ti_pernr-zsalu - ti_pernr-zeduc - ti_pernr-zalim - ti_pernr-zvest - ti_pernr-zdisc - ti_pernr-zteed + ti_pernr-virae.
CLEAR: wa_valor, wa_valor1, wa_valor2, wa_valor3.
CLEAR izpyect011. FREE izpyect011.
* Busca el rango dentro de la tabla para aplicar el descuento.
SELECT *
FROM zpyect011 INTO TABLE izpyect011 WHERE endda GE pn-endda AND begda LE pn-endda.
LOOP AT izpyect011 WHERE endda GE pn-endda AND begda LE pn-endda AND zfraccion LT ti_pernr-vbaim AND zexceso GE ti_pernr-vbaim. wa_valor = izpyect011-zfraccion. wa_valor1 = izpyect011-zexceso. wa_valor2 = izpyect011-zimpuesto. wa_valor3 = izpyect011-zimpfrac. ENDLOOP.
ti_pernr-virca = ( ( ( ti_pernr-vbaim - wa_valor ) * wa_valor3 ) / 100 ) + wa_valor2.
* Ingresos Gravados con este Empleador (301+303+305+381) Campo 349 Formato SRI ti_pernr-vigem = ti_pernr-vsysa + ti_pernr-vscor + ti_pernr-vpaut + ti_pernr-virae.ENDFORM. " totales_2013
*&---------------------------------------------------------------------**& form form*&---------------------------------------------------------------------*FORM form . DATA: BEGIN OF value_tab OCCURS 0, name TYPE tdsfname, END OF value_tab.
DATA: field_tab LIKE dfies OCCURS 0 WITH HEADER LINE. DATA: return_tab LIKE ddshretval OCCURS 0 WITH HEADER LINE.
DATA: ti_stxfadm TYPE stxfadm OCCURS 0 WITH HEADER LINE, ti_stxfadmt TYPE stxfadmt OCCURS 0 WITH HEADER LINE.
RANGES: rn_formname FOR stxfadm-formname.
REFRESH value_tab[]. REFRESH field_tab[]. REFRESH return_tab[].
rn_formname-sign = 'I'. rn_formname-option = 'CP'. rn_formname-low = 'Z*SRI*'. APPEND rn_formname.
SELECT * FROM stxfadm INTO TABLE ti_stxfadm WHERE formname LIKE 'Z%SRI%'.
DESCRIBE TABLE ti_stxfadm.
CHECK sy-tfill GT 0.
SELECT * FROM stxfadmt INTO TABLE ti_stxfadmt FOR ALL ENTRIES IN ti_stxfadm WHERE langu EQ sy-langu AND formname EQ ti_stxfadm-formname.
field_tab-fieldname = 'FORMNAME'. field_tab-tabname = 'STXFADM'. APPEND field_tab.
field_tab-fieldname = 'CAPTION'. field_tab-tabname = 'STXFADMT'. APPEND field_tab.
field_tab-fieldname = 'FORMNAME'.
LOOP AT ti_stxfadmt. value_tab-name = ti_stxfadmt-formname. APPEND value_tab. value_tab-name = ti_stxfadmt-caption. APPEND value_tab. ENDLOOP.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING retfield = field_tab-fieldname TABLES value_tab = value_tab field_tab = field_tab return_tab = return_tab EXCEPTIONS parameter_error = 1 no_values_found = 2 OTHERS = 3.
IF sy-subrc = 0. p_form = return_tab-fieldval. ENDIF.ENDFORM. " form
*&---------------------------------------------------------------------**& Form modify_screen*&---------------------------------------------------------------------*FORM modify_screen . IF pn-endda IS INITIAL. LOOP AT SCREEN. IF screen-group1 EQ 'NEW'. screen-required = 0. screen-active = 0. screen-invisible = 1. MODIFY SCREEN. ENDIF. ENDLOOP. ENDIF.
CHECK NOT pn-endda IS INITIAL.
LOOP AT SCREEN. IF screen-group1 EQ 'NEW'. IF pn-endda(4) GE cn_year. screen-required = 0. screen-active = 0. screen-invisible = 1.
ELSE. screen-required = 1. screen-active = 1. screen-invisible = 0. ENDIF. MODIFY SCREEN. ENDIF. ENDLOOP.
ENDFORM. " modify_screen
*&---------------------------------------------------------------------**& Form CATAL_2012*&---------------------------------------------------------------------*FORM catal_2012 . PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'PERNR' 'F'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'BUKRS' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'BUTXT' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'WERKS' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'NAME1' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'KOSTL' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'KTEXT' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'BTRTL' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'BTEXT' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'PERSG' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'PTEXG' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'PERSK' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'PTEXT' 'I'.
PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ABKRS' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ATEXT' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ORGEH' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ORGTX' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'PLANS' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'PLSTX' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'CNAME' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ICTYP' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ICNUM' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'STATE' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'BEZEI' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ORT01' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'TELNR' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'STRAS' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'LOCAT' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'CODIGOCAN' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'DESCRIPCION' 'I'. PERFORM init_fieldnames USING 'Fecha Alta' 'ZPYECS004' 'LS_HIRING_DATE' ' '. PERFORM init_fieldnames USING 'Fecha Baja' 'ZPYECS004' 'LS_FIRING_DATE' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VSYSA' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VSCOR'
' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VPAUT' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ZIGOEM' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VDTSU' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VDCSU' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VSADI' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VFORE' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VOINR' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VAPIE' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ZIESSR' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ZVIVI' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ZSALU' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ZEDUC' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ZALIM' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ZVEST' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ZDISC' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ZTEED' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VIRAE' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VBAIM' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VIRCA' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ZVIROE' ' '.
PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VIMRE' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VIGEM' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VDESA' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VSUBT' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'NMTRA' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ZDGPOE' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ZOROEM' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VREES' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'WAERS' ' '.ENDFORM. " CATAL_2012
*&---------------------------------------------------------------------**& Form CATAL_2013*&---------------------------------------------------------------------*FORM catal_2013 . PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'PERNR' 'F'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'BUKRS' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'BUTXT' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'WERKS' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'NAME1' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'KOSTL' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'KTEXT' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'BTRTL' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'BTEXT'
'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'PERSG' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'PTEXG' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'PERSK' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'PTEXT' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ABKRS' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ATEXT' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ORGEH' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ORGTX' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'PLANS' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'PLSTX' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'CNAME' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ICTYP' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ICNUM' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'STATE' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'BEZEI' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ORT01' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'TELNR' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'STRAS' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'LOCAT' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'CODIGOCAN' 'I'.
PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'DESCRIPCION' 'I'. PERFORM init_fieldnames USING 'Fecha Alta' 'ZPYECS004' 'LS_HIRING_DATE' ' '. PERFORM init_fieldnames USING 'Fecha Baja' 'ZPYECS004' 'LS_FIRING_DATE' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VSYSA' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VSCOR' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VPAUT' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ZIGOEM' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VDTSU' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VDCSU' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VSADI' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VFORE' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VOINR' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VAPIE' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ZIESSR' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ZVIVI' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ZSALU' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ZEDUC' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ZALIM' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ZVEST' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ZDISC' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ZTEED'
' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VIRAE' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VBAIM' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VIRCA' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ZVIROE' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VIMRE' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VIGEM' ' '. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VDESA' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VSUBT' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'NMTRA' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ZDGPOE' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'ZOROEM' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'VREES' 'I'. PERFORM init_fieldnames USING ' ' 'ZPYECS004' 'WAERS' 'I'.ENDFORM. " CATAL_2013
*&---------------------------------------------------------------------**& Form REP_UTIL_2011*&---------------------------------------------------------------------*FORM rep_util_2011 . CHECK pernr-bukrs EQ '1100' AND pn-endda(4) EQ '2012'.
CLEAR dataemployee_tmp. FREE dataemployee_tmp.
CALL FUNCTION 'Z_HREC_READ_CLUSTER_PERIOD' EXPORTING payroll_pernr = pernr-pernr
payroll_begda = '01122011' payroll_endda = '31122011' payroll_in_view = 'X' payroll_payty = p_payty payroll_payid = p_payid payroll_bondt = p_bondt payroll_ocrsn = 'A' cd_regular = wl_regular TABLES datatable = dataemployee_tmp EXCEPTIONS empleado_no_existe = 1 resultado_nomina_no_existe = 2 OTHERS = 3.
IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ELSE.* Se trae la Clase de Evaluacion Numero 20 de cada CC-Nomina* Esta clase de evaluacion es la que permite saber que cc-nomina* hace parte de cada campo del formato SRI LOOP AT dataemployee_tmp. PERFORM re512w USING dataemployee_tmp-molga dataemployee_tmp-lgart pn-endda. MOVE: t512w-aklas TO xaklas, xaklas-cleval20 TO dataemployee_tmp-gl_evcl20.
MODIFY dataemployee_tmp. ENDLOOP.
* Borra los registros (cc-nominas) que no tengan clase de evaluacion 20 DELETE dataemployee_tmp WHERE gl_evcl20 IS INITIAL.
DESCRIBE TABLE dataemployee_tmp.
CHECK sy-tfill GT 0.
CLEAR ti_pernr-vpaut.
* Participación Utilidades Campo 309 Formato SRI