Hola @abapers ,
Necesito crear un nuevo registro en el infotipo 0008 por la tx PA30, luego nos enganche con el infotipo 61 para crear un nuevo registro y que en el infotipo 61 se proponga automáticamente el grupo de cotización GRCOT y la categoría profesional BERKT según la combinación de grupo / subgrupo profesional que hayamos elegido en una tabla Z.
Estoy utilizando la función estándar de SAP HR_INFOTYPE_OPERATION, pero me está permitiendo actualizar el inf 0061, el return me devuelve un error que indica “inicializar el campo”, este campo al parecer es el BEGDA.
Este es el código que he tirado, por motivo de pruebas he harcodiado unas variables, pero esto no es problema. Agradezco comentarios de experto en HR o que haya trabajado con esta función estándar de SAP.
-------------//------------------------------------------------
Programa MP000800 -> Módulos PAI (PRE_INPUT_CHECKS) Include MPPERS00
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1 ) Forma END_OF_SCREEN, Inicio S
*$*$-Start: (1 )--------------------------------------------------------------------------------$*$*
ENHANCEMENT 2 Z_ACT_INFO61. "active version
infotypes: 0008, 0061.
*Declaración de una estructura del mismo tipo de la estructura global del infotipo 0061
DATA: s_info61 TYPE P0061.
*Declaración de la variable que envia el mensaje de retorno en la modificaciones del infotipo.
DATA: return_1 TYPE BAPIRETURN1,
return_2 TYPE BAPIRETURN1,
return_3 TYPE BAPIRETURN1.
*Harcodeo los datos que quiero registrar en el infotipo 0061
s_info61-infty = '0061'.
s_info61-PERNR = '10000015'.
s_info61-AEDTM = SY-DATUM.
s_info61-UNAME = SY-UNAME.
s_info61-ENDDA = '99991231'.
s_info61-BEGDA = '20160101'.
s_info61-NATSS = '282342342394'.
s_info61-EPIGR = '000'.
s_info61-GRCOT = '02'.
s_info61-BERKT = 'JD'.
s_info61-TICON = '01'.
*# Es necesario invocar la funcion que bloquea el registro del usuario para modificarlo
CALL FUNCTION 'HR_EMPLOYEE_ENQUEUE'
EXPORTING
number = s_info61-PERNR
* IMPORTING
RETURN = return_1.
CLEAR return_1.
*# Un nuevo registro en el infotipo 0061
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
infty = s_info61-infty
number = s_info61-PERNR
SUBTYPE = s_info61-subty
OBJECTID = s_info61-objps
LOCKINDICATOR = s_info61-sprps
VALIDITYEND = s_info61-ENDDA
VALIDITYBEGIN = s_info61-BEGDA
RECORDNUMBER = s_info61-seqnr
record = s_info61 " Le mando los datos de la estructura
operation = 'MOD'
* TCLAS = 'A'
* DIALOG_MODE = '0'
* NOCOMMIT =
* VIEW_IDENTIFIER =
* SECONDARY_RECORD =
IMPORTING
RETURN = return_2.
* KEY =
CLEAR return_2.
*# Es necesario invocar la funcion que desbloquea el registro del usuario
CALL FUNCTION 'HR_EMPLOYEE_DEQUEUE'
EXPORTING
number = s_info61-PERNR
IMPORTING
RETURN = return_3.
CLEAR return_3.
COMMIT WORK AND WAIT.
CLEAR s_info61.