MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 04/10/07, 14:10:14
sandri_82 sandri_82 is offline
Junior Member
 
Fecha de Ingreso: jul 2007
Mensajes: 13
Hr

Hola estoy haciendo unas interfases para HR y creo que lo tengo todo mal , me explico , tengo k retornar unos campos de varios infotipos para los empleados , yo capturo todos los empleados de la pa0001 y a partir de ahi voy haciendo select a las tablas donde estan los campos para recuperarlos , pero me he dado cuenta que puede haber varios pernr iguales en la pa0001(esto lo he arreglado) pero lo que estoy asustada es el resto de campos que capturo no coincidan con el pernr adecuado para esa fecha , no se si me he explicado , creo que estoy accediendo a los infotipos incorrectamente sin hacer comprobaciones de fechas y me estoy liando muchisimo pues no coinciden los begdas de los infotipos .
Ahi alguna manera standar por asi decirlo de trabajar con fechas por favor ayuda pues creo k tengo k cambiar el trabajo de 2 meses si efectivamente esta todo mal .
Saludos
Responder Con Cita
  #2  
Viejo 05/10/07, 06:36:28
sap2006 sap2006 is offline
Senior Member
 
Fecha de Ingreso: mar 2006
Mensajes: 134
Tienes que utilizar el PROVIDE, es justo lo que necesitas! Te dejo un par de ejemplillos. Si necesitas cualquier duda o aclaracion ya sabes.

*Te va traiendo todos los registros del infotipo 0 comprendidos entre pn-begda y pn-endda. (Base de datos logica PNP)
PROVIDE * FROM p0000 BETWEEN pn-begd AND pn-endda.

ENDPROVIDE.

*Te trae los registros del inotipo 1 y 8 entre '19000101' '99991231' con cada corte.

PROVIDE gsber abkrs FROM p0001 lga01 lga02 lga03 lga04 lga05 lga06
lga07 lga08 lga09 lga10 lga11 lga12 lga13 lga14 lga15 lga16 lga17 lga18
lga19 lga20 FROM p0008 BETWEEN '19000101' AND '99991231'.

ENDPROVIDE.

*Esta macro te deja en la cabezera el ultimo registro del infotipo 1 comprendido entre esas fechas
rp-provide-from-last p0001 space pn-begda pn-endda.

*Esta macro te deja en la cabezera el prime registro del infotipo 1 comprendido entre esas fechas
rp-provide-from-last p0001 space pn-begda pn-endda.


Te recomiendo que te mires un manual de programacion orientada a HR.

Saludos,
Ruben.

Úlima edición por sap2006 fecha: 05/10/07 a las 06:53:01.
Responder Con Cita
  #3  
Viejo 05/10/07, 08:34:40
sandri_82 sandri_82 is offline
Junior Member
 
Fecha de Ingreso: jul 2007
Mensajes: 13
ok

Gracias pero hay una cosa k no entiendo si me voy trayendo desde la base de datos logica todos los pernr tengo k usar esa macro-instruccion para ir cogiendo el ultimo registro valido de cada infotipo pk no me vale la función HR_READ_INFOTYPE pues al no sabre el begda y el endda del ultimo registro de cada pernr .Estoy en lo cierto o me estoy liando??.
Esta funcion solo la puedes usar para reg con begda y endda conocido??
Responder Con Cita
  #4  
Viejo 05/10/07, 10:17:02
sap2006 sap2006 is offline
Senior Member
 
Fecha de Ingreso: mar 2006
Mensajes: 134
Si ya utilizas la base de datos logica no cal que utilizes la funcion HR_READ_INFOTYPE puesto que accede otra vez a la base de datos innecesariamente...si no le pasas ninguna fecha a la funcion por defecto te traerá todos los registros comprendidos entre el 01.01.1900 y 31.12.9999. La macro rp-provide-from-last pa000 space sy-datum sy-datum te pone en cabecera el ultimo registro a fecha actual.

Saludos.
Responder Con Cita
  #5  
Viejo 10/10/07, 08:05:49
sandri_82 sandri_82 is offline
Junior Member
 
Fecha de Ingreso: jul 2007
Mensajes: 13
ok

Ahora solo tengo una duda , si kiero capturar los ultimos datos de cada infotipo para un pernr con las macros no me servira pk puede que me este trayendo diferentes pernrs para el ultimo registro al haber discrepancias entre las tablas de ambas .
Para traer por ejemplo los ultimos datos de un pernr para por ejemplo los infotipos 1 2 16 y 20 como lo tendria k hacer?? .
Hago el provide y no me trae nada ??
Saludos y gracias.
Responder Con Cita
  #6  
Viejo 10/10/07, 08:43:57
sap2006 sap2006 is offline
Senior Member
 
Fecha de Ingreso: mar 2006
Mensajes: 134
Necesitas utilizar el evento GET pernr (Tienes que declararte la base de datos logica PNP. pasar a-> atributos, en campo base datos logica pon la PNP) Te pongo un ejemplillo.

**DECLARACIONES DE LOS INFOTIPOS QUE VAS A USAR.
INFOTYPES: 0000, " Medidas
0001, " Asignación Organizacional
0002, " Datos Personales
0006, " Datos Dirección
0007, " Horario trabajo teórico
0008, " Emolumentos Básicos
0015, " Pago complementario
0041, " Datos de Fecha
0061, " Datos Seguridad Social
0062, " Datos de Impuestos
0092." Datos de Antigüeda

*Este evento saltara una vez por cada empleado, es decir es un bucle por cada empleado seleccionado donde se iran rellenando los infotipos declarados anteriormente. En debugging puedes ver la tabla interna PERNR, donde vas viendo empleado a empleado.

GET pernr.

*Dentro del evento tienes que hacer los PROVIDE (de los infotipo que hayas declarado anteriormente) y entre las fechas que a ti te interesen.

PROVIDE * FROM p0000 BETWEEN d_beg AND d_end.
IF p0000-stat2 = 3.
w_dias_alta_mes = w_dias_alta_mes +
p0000-endda - p0000-begda + 1.
ENDIF.
ENDPROVIDE.

rp-provide-from-last space p000 d_beg d_beg.

Saludos,
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 23:01:16.


www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web