Modulos de Funciones a un concepto

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • CESARCAES01
    Member
    • nov
    • 46

    #1

    Modulos de Funciones a un concepto

    Hola a todos. tengo el siguiente problema.

    tengo un modulo de funciones que realiza un calculo y me devuelve un valor, quiero que ese valor salga reflejado en la nomina de terminacion laboral como concepto de pago. no encuentro como hacerlo. aqui va mi funcion.




    Código:
    FUNCTION Z_HRVE_ANT_DES_INJ.
    *"----------------------------------------------------------------------
    *"*"Interfase local
    *"  IMPORTING
    *"     REFERENCE(PERNR) TYPE  P0000-PERNR
    *"     REFERENCE(BEGDA) TYPE  P0000-BEGDA
    *"     REFERENCE(ENDDA) TYPE  P0000-ENDDA
    *"     REFERENCE(TSEN_EVAL) TYPE  ZTPC2QR
    *"  EXPORTING
    *"     REFERENCE(SUELDO) TYPE  PC2QR-SENGR
    *"     REFERENCE(ANIOS_ANTI) TYPE  PC2QR-SENGR
    *"     REFERENCE(IMPORTE) TYPE  PC2QR-SENGR
    *"  TABLES
    *"      SEN_EVAL TYPE  HRPAYVE_SEN_EVAL OPTIONAL
    *"      IND_IT STRUCTURE  PC207 OPTIONAL
    *"----------------------------------------------------------------------
    DATA nomina_results TYPE payve_result OCCURS 0 WITH HEADER LINE.
    " Infotipos de Empleados
      DATA: wa_ppbwla   TYPE TABLE OF pbwla WITH HEADER LINE.
      DATA: it_0001     TYPE TABLE OF p0001 WITH HEADER LINE.
      DATA: it_zhrt006b TYPE TABLE OF  ZHRT006B WITH HEADER LINE.
      DATA: it_0014P     TYPE TABLE OF p0014 WITH HEADER LINE.
    
      "tabla de dias.
      DATA: sueldo_tabla LIKE q0008-betrg. " Variable para guardar el sueldo.
      DATA: anios type P. " almacenar antiguedad en anios.
      DATA: t_begda TYPE sy-datum,
            t_endda TYPE sy-datum.
      DATA: numero LIKE  PC207-ANZHL.
    
    
      data: begin of p_sen_eval occurs 2.
              include structure pc2qr.     " Seniority Evaluation Table
      data: end of p_sen_eval.
    
      REFRESH: wa_ppbwla[].
    
    " llamo para leer el sueldo o salario
       CALL FUNCTION 'RP_FILL_WAGE_TYPE_TABLE'
        EXPORTING
          appli                        = 'E'
          begda                        = sy-datum
          endda                        = sy-datum
          infty                        = '0008'
          pernr                        = PERNR
        TABLES
          ppbwla                       = wa_ppbwla
        EXCEPTIONS
          error_at_indirect_evaluation = 1
          OTHERS                       = 2.
    
      t_begda = begda.
      t_endda = endda.
    
    "Traer el Area de Nomina del empleado.
    CALL FUNCTION 'HR_READ_INFOTYPE'
        EXPORTING
          pernr                = pernr
          infty                = '0001'
         begda                 = sy-datum
         endda                 = sy-datum
        TABLES
          infty_tab            = it_0001.
    *   EXCEPTIONS
    *     INFTY_NOT_FOUND       = 1
    *     OTHERS                = 2
    
    " Leer la tabla y asignar el salario Diario.
      READ TABLE it_0001 INDEX 1.
      READ TABLE wa_ppbwla INDEX 1.
        if it_0001-abkrs eq  'NQ' or it_0001-abkrs eq  'NM'.
             SUELDO = wa_ppbwla-betrg / 30.
        elseif
             SUELDO = wa_ppbwla-betrg.
        endif.
    
    " Antiguedad en anios del empleado.
      CALL FUNCTION 'HRVE_GET_TIME_BETWEEN_DATES' "
      EXPORTING
        beg_date =   t_begda
        end_date =   t_endda
      IMPORTING
    *    days     =                      " p
    *    months   =                    " p
        years    =    anios
      EXCEPTIONS
        INVALID_PERIOD = 1          "
        .  "  HRVE_GET_TIME_BETWEEN_DATES
    
    ANIOS_ANTI = anios.
    
    
    " seleccionar los dias de importes correspondientes.
     select * into it_zhrt006b  from  ZHRT006B where
                    ZANIOS_DESDE GE 17 and  ZANIOS_HASTA LE 24  and FECHAFIN GE t_endda and FECHAINICIO LE t_endda.  endselect.
    
    clear sen_eval.
          if numero is not initial.
    
            p_sen_eval[] = sen_eval[].
            sort p_sen_eval by datum descending.
            read table p_sen_eval index 1.
    *        cntr1 = sen_eval-cntr1.
    *       cntr1 = cntr1 + 1.
    
    
    *        sen_amount_m = v_dmonto * numero.
    
    *        sen_eval-cntr1 = cntr1.
            sen_eval-datum = t_endda.
    *        sen_eval-sentp = c_sen_month.
            sen_eval-sensl = it_zhrt006b-DIAS_SALARIOS." la base para el calculo
            sen_eval-sengr = it_zhrt006b-DIAS_SALARIOS * SUELDO. " el total de la base por dias
    *        sen_eval-waer1 = calc_currency.
    *        sen_eval-intrt = num.   " 15 días para el calculo
            append sen_eval.
          endif.
    
    IMPORTE = it_zhrt006b-DIAS_SALARIOS * SUELDO.
    
    PERFORM validar_subtipo  USING  pernr t_begda t_endda CHANGING it_0014P.
    
    
    
    
    ENDFUNCTION.
    
    " para validar si tiene o no infotipo 14
    FORM  validar_subtipo USING i_pernr i_begda i_endda CHANGING it_0014P.
    DATA: it_0014     TYPE TABLE OF p0014 WITH HEADER LINE.
    
    "leer infotipo 0014
    CALL FUNCTION 'HR_READ_INFOTYPE'
    EXPORTING
    pernr = i_pernr
    infty = '0014'
    begda = i_begda
    endda = i_endda
    TABLES
    infty_tab = it_0014
    EXCEPTIONS
    infty_not_found = 1
    OTHERS = 2.
    
    ENDFORM. "validar_subtipo
Trabajando...