Ayuda SAP

Obtener montos acumulados por meses en HR

Hola, que tal, estoy realizando un reporte hr en el cual necesito que me refleje por mes los acumulados por empleado de los que cobro por nomina, y que lo coloque por mes, pro ejemplo
cod_emp: 0001
mes enero: monto1 lgart /176 monto 2 lgart 222
mes febrero
mes marzo

Estoy usando la funcion HRCM_PAYROLL_RESULTS_GET para obtener los lgart y sus montos como podria obtener la info de la fecha para poder comparar y colocarle ques esa info es del mes enero, febrero ?
Tengo los montos pero como lo relaciono para poder colocarlo en el mes que le corersponde hay alguna funcion que me ayude en ese paso

Muchas Gracias

Ana

en la tabla que te devuelve el modulo de funciones tienes varios campos con la fecha a la que pertenece cada registro, si lo que quieres es el nombre del mes puedes usar el fm ISP_GET_MONTH_NAME

1 me gusta

Hola, la funcion devuelve en esta tabla: payroll_result_tab[], a cuales campos te refieres que son fecha?

PAYROLL_RESULT_TAB = PAYROLL_RESULT_TAB[].

Gracias

Ana

Con esta función te va a devolver en los campo FPPER el periodo por ejemplo 201701, 201702, etc

Luego con la función IDWT_READ_MONTH_TEXT sacas el texto del mes si eso es lo que quieres

No sé si esto es lo que buscas…

Salu2.

Hola, en esa funcion veo que trae varias tablas y estructuras: por ejemplo
PAYROLL_RESULT_TAB-INTER-CRT
PAYROLL_RESULT_TAB-INTER-WPBP y otras en cual esta ese campo fecah que puedo tomar ?

Gracias

Ana

Hola, la que te interesa es la RT .

Cada registro de la tabla PAYROLL_RESULT_TAB tiene la fecha FGPER. Usa esa fecha y luego aparte tiene un campo que RT que en realidad es otra tabla que contiene todos los CC-Nominas de la nómina del empleado busca el que te interesa para hacer el sumatorio o para crear el report.

Y luego te interesa el cc-nomina campo lgar y el campo betrg que es el importe.

Salu2.

Y para ubicar ese campo fpper seria en: Esa es una estructura no me deja tomarla.

Lo que necesito para el reporte es que se colocara un rango de codigos de empleados y una rango de fecha, por cada empleado debo consultar que lgart (ccnominas) tiene para ese rango de fecha, y acumular por mes los ccnominas en diferenctes columnas

Algo asi:

Aqui todo lgart /120 debe ir en la columna 1, todo /120 del mes de enero debe ir en esa columna, y asi con los siguientes lgart, los /222 en la segunda columna y los lgart/400 en la tercera pero por mes. La funcion HRCM_PAYROLL_RESULTS_GET en su RT trae los montos pero como saber que fecha tomar para saber que esos montos son del mes de enero, febrero etc. pues si uso payrroll_result_tab-inter-fpper eso es una estructura y no me deja como se lee ese campo .

Muchas Gracias

Saludos

Ana

parrol_result_tab-inter-fpper no te funciona??

Hola

Me da este mensaje:

Ana

El pantallazo que pusiste mas arriba esta bien tomado?? me refiero a que da a entender que el campo fpper esta dentro de inter pero ahora que lo dices me suena mas que este en EVP

comprobado esta en EVP prueba payroll_result_tab-evp-fpper

Ya lo probe pero ese campo fpper para la evp viene vacio, no trae ninguna fecha.

lees previamente el registro rgdir para ese empleado??

no solo utilizo es la funcion,; HRCM_PAYROLL_RESULTS_GET.

tienes que usar previamente el fm CU_READ_RGDIR

aqui tienes un ejemplo espero que te sirva
h_tps://archive.sap.com/discussions/thread/1013339

Hola, despues que llamo a la funcion HRCM_PAYROLL_RESULTS_GET utilizo un collect para obtener por mes los lgart y obtengo esta informacion para los meses enero y febrero

Necesito es colocar por mes los lgart, por ejemplo:
columna 1 columna 2 columna 3 columna 4 columna 5
lgart 176 lgart 170 y 171 lgart 5000 y 50004 lgart 5002 y 5004 lgart 222,223,224,225
ENERO monto monto monto monto monto
FEBRERO monto monto monto monto monto

Mi codigo lo tengo asi:
CALL FUNCTION ‘HRCM_PAYROLL_RESULTS_GET’
EXPORTING
PERNR = ti_datos-pernr
BEGDA = fec_ini2
ENDDA = fec_fin2
IMPORTING

  •    SUBRC                   =
    
  •    MOLGA                   =
     PAYROLL_RESULT_TAB        =  PAYROLL_RESULT_TAB[].
    
       LOOP AT PAYROLL_RESULT_TAB.
         LOOP AT PAYROLL_RESULT_TAB-INTER-RT INTO PAYROLL_INTER_RT.
    
  • Columna 1
    IF payroll_inter_rt-lgart = ‘/176’.
    wa-mes = payroll_result_tab-inter-versc-paydt+4(2).
    wa-lgart = payroll_inter_rt-lgart.
    wa-monto = payroll_inter_rt-betrg.
    COLLECT wa INTO itab.
    CLEAR wa.
    mes = payroll_result_tab-inter-versc-paydt+4(2).
    ti_datos-tot_c1 = ti_datos-tot_c1 + payroll_inter_rt-betrg.
    ti_datos-total_c1 = ti_datos-tot_c1.
    ENDIF.

  • Columna 2
    IF payroll_inter_rt-lgart EQ ‘/170’
    OR payroll_inter_rt-lgart EQ ‘/171’ .
    wa-mes = payroll_result_tab-inter-versc-paydt+4(2).
    wa-lgart = payroll_inter_rt-lgart.
    wa-monto = payroll_inter_rt-betrg.
    COLLECT wa INTO itab.
    CLEAR wa.
    mes = payroll_result_tab-inter-versc-paydt+4(2).
    ti_datos-tot_c2 = ti_datos-tot_c2 + payroll_inter_rt-betrg.
    ti_datos-total_c2 = ti_datos-tot_c2.
    ENDIF.
    ENDLOOP.

Para imprimir esa info:
FORM imprimir.

  • Mes 1
    IF mes EQ ‘01’.

    WRITE:/2 sy-vline,'Enero', 25 sy-vline, ti_datos-total_c1, 50 sy-vline,ti_datos-total_c2,
          74 sy-vline,ti_datos-total_c3, 94 sy-vline,ti_datos-total_c4, 112 sy-vline,ti_datos-total_c5,142 sy-vline.
    WRITE:/2 sy-vline,142 sy-vline.
    ULINE AT 2(140).
    

    ENDIF.

  • Mes 2
    IF mes EQ ‘02’.
    WRITE:/2 sy-vline,‘Febrero’, 25 sy-vline, ti_datos-total_c1, 50 sy-vline,ti_datos-total_c2,
    74 sy-vline,ti_datos-total_c3, 94 sy-vline,ti_datos-total_c4, 112 sy-vline,ti_datos-total_c5,142 sy-vline.
    WRITE:/2 sy-vline,142 sy-vline.
    ULINE AT 2(140).
    ENDIF.
    ENDFORM.

Como podria colocar los montos condicionados por lgart en cada mes, asi solo me funciona para un solo mes si coloco un rango no me cuadra.

Muchas Gracias

Ana

Si les es de ayuda, para realizar reporteria de resultados de nóminas donde se requiera lecturas de Cluster lo realizo médiente la extracción de la tabla en memoria del programa h99cwtr0, se hace una mascara de parámetros que requiere este programa para devolver los resultados y posterior armar el reporte según la lista obtenida.

Solo deben considerar la inclusión de los parámetros de empleados y estructura de personal para que la lista sea a ese nivel de detalla, estos son parámetros de selección del programa.

Saludos.

lo que quieres es una linea por mes y por cada lgart una columna??
si siempre son los lgart create un tipo de tabla con las columas mes, lgart1…lgartn y vete rellenandola
si siempre son los mismos lgart puedes hacerlo asi, si varian lo mejor seria una tabla dinamica pero no se si estas familiarizada

haces un

 loop a tu itab 

 case lgart 
when '/170'.
itab2 - col1 = itab1-betrg.
when '/171'
itab2-col2 =  itab1-betrg.

...
at end of mes .
append itab2.
enddat .
endloop.

algo así , no tengo ahora mismo acceso al sistema y no me se de memoria lo de at end …endat pero seria para que al acabar de procesar tu mes hagas el append y empieces a general la siguiente linea.

Hola Amiga, lo que estoy trabajando es lo siguiente, envio pantalla de lo qeu llevo hasta el momento.

Esta es la entrada:

Y esta es la salida:

Ahora por cada empleado que coloque debo traer todos lo lgart que tenga para ese rango de fecha, y colocarlo por mes. En la columna 01, van solo el lgart /176, y este usando la funcion HRCM_PAYROLL_RESULTS_GET trae 2 lineas una para cada quincena: por ejemplo para el 176 trae 10.000 para el 01.01.2015 al 15.01.2015 y luego 10.000 monto paar el 16.01-2015 por eso da 20.000 eso lo logre con el collect, el cual lo tengo asi:
IF payroll_inter_rt-lgart = ‘/176’.
wa-mes = payroll_result_tab-inter-versc-paydt+4(2).
wa-lgart = payroll_inter_rt-lgart.
wa-monto = payroll_inter_rt-betrg.
COLLECT wa INTO itab.
CLEAR wa.
mes = payroll_result_tab-inter-versc-paydt+4(2).
ti_datos-tot_c1 = ti_datos-tot_c1 + payroll_inter_rt-betrg.
ti_datos-total_c1 = ti_datos-tot_c1.

        ENDIF.

ahora para la segunda columna se debe colocar la suma de los lgart /170 y /171.
y ese lo obtengo asi:
IF payroll_inter_rt-lgart EQ ‘/170’
OR payroll_inter_rt-lgart EQ ‘/171’ .
wa-mes = payroll_result_tab-inter-versc-paydt+4(2).
wa-lgart = payroll_inter_rt-lgart.
wa-monto = payroll_inter_rt-betrg.
COLLECT wa INTO itab.
CLEAR wa.
mes = payroll_result_tab-inter-versc-paydt+4(2).
ti_datos-tot_c2 = ti_datos-tot_c2 + payroll_inter_rt-betrg.
ti_datos-total_c2 = ti_datos-tot_c2.
ENDIF
Como haria para que colocar por mes esa info?

Gracias

Ana

Usa la transaccio o te copias el programa de la trandaccion
pc00_M99_CWTR