HR_INFOTYPE_OPERATION / pa0077-vetst
I am trying to store a blank in pa0077-vetst by calling HR_INFOTYPE_OPERATION. What's getting stored is a zero. This problem arrived with the last service pack upgrade we did. Can anyone help?
The Vet Status is a Q field on the screen.. ie you have to set the value of Q0077-VETS1 to 'X' in order to have a space instead of a zero. I don't think this can be done with HR_INFOTYPE_OPERATION as it takes only the P structure. You may have to go in for the old-fashioned BDC here..
~Suresh
Similar Messages
-
About to use HR_INFOTYPE_OPERATION to create customer infotype issue:
hi
i want to create infotype use function(HR_INFOTYPE_OPERATION).
this infotype is customer infotype.
the first scenario is:
i'm be sure no data about one employee in this infotype(9004).
to call with data upload function and put data into internal table IT_PA9004.
and the table data as follow:
one line: it_pa9004-pernr = '11022887' ,it_pa9004-subty = 'FQ03',
it_pa9004-begda = '20080201' , it_pa9004-endda = '20080930'
it_pa9004-zzvalue = 50 (customer field).
two line:it_pa9004-pernr = '11022887' ,it_pa9004-subty = 'FQ03',
it_pa9004-begda = '20080201' , it_pa9004-endda = '20080930'
it_pa9004-zzvalue = 60 (customer field).
three line:it_pa9004-pernr = '11022887' ,it_pa9004-subty = 'FQ03',
it_pa9004-begda = '20080101' , it_pa9004-endda = '20081031'
it_pa9004-zzvalue = 70 (customer field).
four line:it_pa9004-pernr = '11022887' ,it_pa9004-subty = 'FQ03',
it_pa9004-begda = '20080101' , it_pa9004-endda = '20081031'
it_pa9004-zzvalue = 80 (customer field).
i run the programme and get information is:
11022887 insert ok.
11022887 insert ok.
11022887 insert ok.
11022887 insert ok.
but i use the transation PA30 to view all data:
in database just exist one row:
four line:it_pa9004-pernr = '11022887' ,it_pa9004-subty = 'FQ03',
it_pa9004-begda = '20080101' , it_pa9004-endda = '20081031'
it_pa9004-zzvalue = 80 (customer field).
the second scenario is:
in database the infotype have exist one row:
pa9004-pernr = '11022887' ,it_pa9004-subty = 'FQ02',
pa9004-begda = '20080318' , pa9004-endda = '20080318'
pa9004-zzvalue = X (customer field).
and i create another row:
line:it_pa9004-pernr = '11022887' ,it_pa9004-subty = 'FQ02',
it_pa9004-begda = '20080318' , it_pa9004-endda = '99991231'
it_pa9004-zzvalue = 80 (customer field)
i run the programme and get information is:
11022887 insert ok.
the three scenario is:
set HR_INFOTYPE_OPERATION of import parameter operation = 'MOD'
in any scenario will get error :not exist subtype .
what heppend about HR_INFOTYPE_OPERATION working,i had to use this function to
create other infotype of SAP owner.
and will create successfully.
so i thank it may be config Constraints about customer infotype.
is time Constraints effect?
so i want to how to check it?
and if i want to create one infotype for customer using PM01 what some thing
must be taken into account.
think you advance.
partial source code as follow:
FORM ACTION_INSERT .
DATA: P_FLAG TYPE C.
DATA: WA_LOG LIKE LINE OF DATA_LOG.
DATA: PP_ACTION TYPE PSPAR-ACTIO.
LOOP AT IT_PA9004.
CLEAR P_FLAG.
CALL FUNCTION 'HR_PSBUFFER_INITIALIZE'.
PERFORM lock_employee USING IT_PA9004-pernr CHANGING P_FLAG.
PP_ACTION = IT_PA9004-ACTION.
PERFORM HR_INFOTYPE_OPERATION USING IT_PA9004 PP_ACTION CHANGING P_FLAG.
IF P_FLAG IS INITIAL.
if test_run = space.
COMMIT WORK.
else.
ROLLBACK WORK.
endif.
write:/ it_pa9004-pernr,'insert ok'.
ELSE.
ROLLBACK WORK.
write:/ it_pa9004-pernr,'error'.
ENDIF.
PERFORM unlock_employee USING IT_PA9004-pernr .
ENDLOOP.
ENDFORM. " ACTION_INSERT
FORM LOCK_EMPLOYEE USING P_PERNR
CHANGING PP_FLAG.
CHECK PP_FLAG IS INITIAL.
CLEAR P_RETURN.
CALL FUNCTION 'BAPI_EMPLOYEE_ENQUEUE'
EXPORTING
number = P_PERNR
IMPORTING
return = P_RETURN
EXCEPTIONS
OTHERS = 01.
CALL FUNCTION 'HR_INITIALIZE_BUFFER'
EXPORTING
pernr = P_PERNR.
IF P_RETURN IS NOT INITIAL.
PP_FLAG = '1'.
ENDIF.
ENDFORM. " LOCK_EMPLOYEE
FORM HR_INFOTYPE_OPERATION USING P_PA9004 LIKE IT_PA9004
P_ACTION type PSPAR-ACTIO
CHANGING PP_FLAG.
CHECK PP_FLAG IS INITIAL.
DATA: bapipakey type bapipakey,
P_SUBTY TYPE P9004-SUBTY,
PP_9004 TYPE TABLE OF P9004 WITH HEADER LINE.
CLEAR P_RETURN.
REFRESH PP_9004.
MOVE-CORRESPONDING P_PA9004 TO PP_9004.
IF P_ACTION = 'INS'.
PP_9004-AEDTM = SY-DATUM.
PP_9004-UNAME = SY-UNAME.
ENDIF.
IF P_ACTION = 'MOD'.
PP_9004-AEDTM = SY-DATUM.
PP_9004-UNAME = SY-UNAME.
ENDIF.
APPEND PP_9004.
P_SUBTY = P_LGART.
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
infty = '9004'
subtype = 'FQ03'
subtype = P_SUBTY
number = PP_9004-pernr
validityend = PP_9004-ENDDA
validitybegin = PP_9004-begda
RECORDNUMBER = pp_9004-seqnr
record = PP_9004
operation = 'INS'
operation = P_ACTION
nocommit = 'X'
IMPORTING
return = P_RETURN
key = bapipakey
EXCEPTIONS
OTHERS = 0.
IF P_RETURN IS NOT INITIAL.
PP_FLAG = '9'.
ENDIF.
ENDFORM. " HR_INFOTYPE_OPERATION
FORM UNLOCK_EMPLOYEE USING P_PERNR.
CALL FUNCTION 'BAPI_EMPLOYEE_DEQUEUE'
EXPORTING
number = p_pernr
IMPORTING
return = P_RETURN
EXCEPTIONS
OTHERS = 01.
ENDFORM. " UNLOCK_EMPLOYEEhi
i want to create infotype use function(HR_INFOTYPE_OPERATION).
this infotype is customer infotype.
the first scenario is:
i'm be sure no data about one employee in this infotype(9004).
to call with data upload function and put data into internal table IT_PA9004.
and the table data as follow:
one line: it_pa9004-pernr = '11022887' ,it_pa9004-subty = 'FQ03',
it_pa9004-begda = '20080201' , it_pa9004-endda = '20080930'
it_pa9004-zzvalue = 50 (customer field).
two line:it_pa9004-pernr = '11022887' ,it_pa9004-subty = 'FQ03',
it_pa9004-begda = '20080201' , it_pa9004-endda = '20080930'
it_pa9004-zzvalue = 60 (customer field).
three line:it_pa9004-pernr = '11022887' ,it_pa9004-subty = 'FQ03',
it_pa9004-begda = '20080101' , it_pa9004-endda = '20081031'
it_pa9004-zzvalue = 70 (customer field).
four line:it_pa9004-pernr = '11022887' ,it_pa9004-subty = 'FQ03',
it_pa9004-begda = '20080101' , it_pa9004-endda = '20081031'
it_pa9004-zzvalue = 80 (customer field).
i run the programme and get information is:
11022887 insert ok.
11022887 insert ok.
11022887 insert ok.
11022887 insert ok.
but i use the transation PA30 to view all data:
in database just exist one row:
four line:it_pa9004-pernr = '11022887' ,it_pa9004-subty = 'FQ03',
it_pa9004-begda = '20080101' , it_pa9004-endda = '20081031'
it_pa9004-zzvalue = 80 (customer field).
the second scenario is:
in database the infotype have exist one row:
pa9004-pernr = '11022887' ,it_pa9004-subty = 'FQ02',
pa9004-begda = '20080318' , pa9004-endda = '20080318'
pa9004-zzvalue = X (customer field).
and i create another row:
line:it_pa9004-pernr = '11022887' ,it_pa9004-subty = 'FQ02',
it_pa9004-begda = '20080318' , it_pa9004-endda = '99991231'
it_pa9004-zzvalue = 80 (customer field)
i run the programme and get information is:
11022887 insert ok.
but in database just exist the first data
pa9004-pernr = '11022887' ,it_pa9004-subty = 'FQ02',
pa9004-begda = '20080318' , pa9004-endda = '20080318'
pa9004-zzvalue = X (customer field).
the three scenario is:
set HR_INFOTYPE_OPERATION of import parameter operation = 'MOD'
in any scenario will get error :not exist subtype .
what heppend about HR_INFOTYPE_OPERATION working,i had to use this function to
create other infotype of SAP owner.
and will create successfully.
so i thank it may be config Constraints about customer infotype.
is time Constraints effect?
so i want to how to check it?
and if i want to create one infotype for customer using PM01 what some thing
must be taken into account.
think you advance.
partial source code as follow:
FORM ACTION_INSERT .
DATA: P_FLAG TYPE C.
DATA: WA_LOG LIKE LINE OF DATA_LOG.
DATA: PP_ACTION TYPE PSPAR-ACTIO.
LOOP AT IT_PA9004.
CLEAR P_FLAG.
CALL FUNCTION 'HR_PSBUFFER_INITIALIZE'.
PERFORM lock_employee USING IT_PA9004-pernr CHANGING P_FLAG.
PP_ACTION = IT_PA9004-ACTION.
PERFORM HR_INFOTYPE_OPERATION USING IT_PA9004 PP_ACTION CHANGING P_FLAG.
IF P_FLAG IS INITIAL.
if test_run = space.
COMMIT WORK.
else.
ROLLBACK WORK.
endif.
write:/ it_pa9004-pernr,'insert ok'.
ELSE.
ROLLBACK WORK.
write:/ it_pa9004-pernr,'error'.
ENDIF.
PERFORM unlock_employee USING IT_PA9004-pernr .
ENDLOOP.
ENDFORM. " ACTION_INSERT
FORM LOCK_EMPLOYEE USING P_PERNR
CHANGING PP_FLAG.
CHECK PP_FLAG IS INITIAL.
CLEAR P_RETURN.
CALL FUNCTION 'BAPI_EMPLOYEE_ENQUEUE'
EXPORTING
number = P_PERNR
IMPORTING
return = P_RETURN
EXCEPTIONS
OTHERS = 01.
CALL FUNCTION 'HR_INITIALIZE_BUFFER'
EXPORTING
pernr = P_PERNR.
IF P_RETURN IS NOT INITIAL.
PP_FLAG = '1'.
ENDIF.
ENDFORM. " LOCK_EMPLOYEE
FORM HR_INFOTYPE_OPERATION USING P_PA9004 LIKE IT_PA9004
P_ACTION type PSPAR-ACTIO
CHANGING PP_FLAG.
CHECK PP_FLAG IS INITIAL.
DATA: bapipakey type bapipakey,
P_SUBTY TYPE P9004-SUBTY,
PP_9004 TYPE TABLE OF P9004 WITH HEADER LINE.
CLEAR P_RETURN.
REFRESH PP_9004.
MOVE-CORRESPONDING P_PA9004 TO PP_9004.
IF P_ACTION = 'INS'.
PP_9004-AEDTM = SY-DATUM.
PP_9004-UNAME = SY-UNAME.
ENDIF.
IF P_ACTION = 'MOD'.
PP_9004-AEDTM = SY-DATUM.
PP_9004-UNAME = SY-UNAME.
ENDIF.
APPEND PP_9004.
P_SUBTY = P_LGART.
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
infty = '9004'
subtype = 'FQ03'
subtype = P_SUBTY
number = PP_9004-pernr
validityend = PP_9004-ENDDA
validitybegin = PP_9004-begda
RECORDNUMBER = pp_9004-seqnr
record = PP_9004
operation = 'INS'
operation = P_ACTION
nocommit = 'X'
IMPORTING
return = P_RETURN
key = bapipakey
EXCEPTIONS
OTHERS = 0.
IF P_RETURN IS NOT INITIAL.
PP_FLAG = '9'.
ENDIF.
ENDFORM. " HR_INFOTYPE_OPERATION
FORM UNLOCK_EMPLOYEE USING P_PERNR.
CALL FUNCTION 'BAPI_EMPLOYEE_DEQUEUE'
EXPORTING
number = p_pernr
IMPORTING
return = P_RETURN
EXCEPTIONS
OTHERS = 01.
ENDFORM. " UNLOCK_EMPLOYEE -
Regarding HR_INFOTYPE_OPERATION fm submiting VIA JOB
Hello Experts,
I am submitting a program VIA job, in side my submit program i m using this FM HR_INFOTYPE_OPERATION, but this function module not updating any values.
when i goto the job and tryed debug the job that time the values are updating.
is this FM will work only in fore ground.
and also we i have passed the dialog_mode parameter as "1" also.
any inputs...
Thanks,
Sureshsee this:
tables: pa0105.
infotypes: 0105.
DATA : I_RETURN TYPE BAPIRETURN1,
I_KEY TYPE BAPIPAKEY,
PERNR TYPE P0001-PERNR,
I_P0105 TYPE TABLE OF P0105 WITH HEADER LINE,
ENDDA TYPE P0105-ENDDA,
BEGDA TYPE P0105-BEGDA.
MOVE '00000010' TO PERNR.
BEGDA = SY-DATUM + 1.
ENDDA = SY-DATUM + 1.
i_p0105-pernr = PERNR.
i_p0105-infty = '0105'.
i_p0105-subty = '0002'.
i_p0105-endda = ENDDA.
i_p0105-begda = BEGDA.
I_P0105-USRTY = '0002'.
I_P0105-USRID = id.
APPEND i_p0105.
CALL FUNCTION 'DEQUEUE_ALL' .
CALL FUNCTION 'BAPI_EMPLOYEE_ENQUEUE'
EXPORTING
NUMBER = PERNR.
IF SY-SUBRC = 0.
WRITE 'Employee Locked Successfully'.
ENDIF.
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
INFTY = '0105'
NUMBER = PERNR
SUBTYPE = '0002'
VALIDITYEND = BEGDA
VALIDITYBEGIN = ENDDA
RECORD = i_p0105
OPERATION = 'INS'
TCLAS = 'A'
DIALOG_MODE = '0'
NOCOMMIT = 'X'
IMPORTING
RETURN = I_RETURN
KEY = I_KEY.
IF SY-SUBRC = 0.
WRITE : 'FM returns sy-subrc 0'.
ENDIF.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
CALL FUNCTION 'BAPI_EMPLOYEE_DEQUEUE'.
Edited by: pratyush v on Feb 19, 2009 11:31 AM
Edited by: pratyush v on Feb 19, 2009 11:31 AM -
HR_INFOTYPE_OPERATION is not working in user exit ZXPADU02
Hi frndz,
i want to delimit/modify record in infotype 0014 after checking some condition when user clicks on SAVE in infotype 0008.
For this i'm using the code like below.
In Include ZXPADU02.
when '0008'.
IF sy-ucomm = 'UPD'.
chek <condition>
if sysubrc = 0.
Lock employee.
Delimti(LIS9) record in IT0014 using HR_READ_INFOTYPE_OPERATION.
Unlock employee.
endif.
Here every thing working fine but record is not getting delimitted.
Could anybody please help me any other possibilities to solve it.
Thanks and Regards,
VenkatHi,
I tried to use the FM HR_INFOTYPE_OPERATION in ZXPADU02 but I found that it will
not update data in the real DB table(PAXXXX).I found that in FM 'HR_MAINTAIN_MASTERDATA' from FM 'HR_INFOTYPE_OPERATION' will set the field 'PSPAR-PBPFL' as 'X'.
In standard program, it looks like if this field is set it will not do the logic to update the DB table. So I put the code in other report and then call in the ZXPADU02. I think it's about LUW.
Code as follows to understand.
data:
lw_p0008 LIKE p0008,
lw_pskey LIKE pskey,
lv_option,
EXPORT lw_p0008 lw_pskey lv_option
to memory id 'ZXPADU02_0008'.
submit ZHRR_PA_ZXPADU02_0008
and return.
Inside program ZHRR_PA_ZXPADU02_0008
IMPORT w_p0008 lw_pskey lv_option
FROM MEMORY ID 'ZXPADU02_0008'.
CALL FUNCTION 'ENQUEUE_EPPRELE'
EXPORTING
pernr = lw_p0008-pernr
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
infty = '0008'
number = lw_p0008-pernr
subtype = lw_pskey-subty
objectid = lw_pskey-objps
lockindicator = lw_pskey-sprps
validityend = lw_pskey-endda
validitybegin = lw_pskey-begda
recordnumber = lw_pskey-seqnr
record = lw_p0008
operation = lv_opera
* TCLAS = 'A'
* DIALOG_MODE = '1'
* nocommit = 'X'
* VIEW_IDENTIFIER =
* SECONDARY_RECORD =
IMPORTING
return = lw_return
* KEY =
IF NOT lw_return IS INITIAL AND
lw_return-type EQ 'E'.
MESSAGE e000(38) WITH lw_return-message.
ENDIF.
CALL FUNCTION 'DEQUEUE_EPPRELE'
EXPORTING
pernr = lw_p0008-pernr.
If this not works, then go for dynamic action from V_T588Z as suggested by Suresh.
Regards
Eswar -
Problem with multiple calls to hr_infotype_operation in a loop
Hi,
Im using infotyp 2003 with the following situation. For a date, e.g. 2011/07/20 and a person_nr I have several time entries, like 08:00-09:00, 10:00-12:00, 15:00-17:00. Now I read the entries with HR_READ_INFOTYPE and store them back unmodified with hr_infotype_operation in a loop in the same report.
data: i_p2003 type standard table of p2003.
CALL FUNCTION 'HR_READ_INFOTYPE'
EXPORTING
* TCLAS = 'A'
pernr = person_nr
infty = '2003'
BEGDA = '20110720'
ENDDA = '20110720'
* BYPASS_BUFFER = ' '
* LEGACY_MODE = ' '
* IMPORTING
* SUBRC =
tables
infty_tab = i_p2003
EXCEPTIONS
INFTY_NOT_FOUND = 1
OTHERS = 2.
loop at i_p2003 assigning <p>.
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
infty = '2003'
number = person_nr
validityend = '20110720'
validitybegin = '20110720'
record = <p>
operation = 'MOD'
dialog_mode = '0'
IMPORTING
return = return_struct
key = personaldatakey
EXCEPTIONS
OTHERS = 0.
endloop.
the first call to hr_infotype_operation succeeds but the following operations fail because of collision. This example is stupid, I know, but it shows the core of a problem I have in a more complex report.
I face the problem that several calls to HR_INFOTYPE_OPERATION cause a collision error even if there cannot be a collision because the data are unchanged.
Any hints on this.
Regards,
JOPHi, you must execute a 'BAPI_EMPLOYEE_ENQUEUE' before 'HR_INFOTYPE_OPERATION' and a 'HR_EMPLOYEE_DEQUEUE' after.
See next example:
Bloqueo del empleado
CALL FUNCTION 'BAPI_EMPLOYEE_ENQUEUE'
EXPORTING
NUMBER = PERNR.
IF SY-SUBRC IS INITIAL.
Si se pudo bloquear el empleado intenta
insertar el infotipo
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
INFTY = '2001'
NUMBER = P0001-PERNR
SUBTYPE = i_p2001-subty
VALIDITYEND = acdate
VALIDITYBEGIN = acdate
RECORD = i_p2001
RECORDNUMBER = '000'
OPERATION = 'INS'
TCLAS = 'A'
DIALOG_MODE = '0'
NOCOMMIT = ' '
IMPORTING
RETURN = I_RETURN
KEY = I_KEY.
IF SY-SUBRC IS INITIAL.
VARGT = 'Y'.
ELSE.
VARGT = 'N'.
ENDIF.
No se hace COMMIT debido que el estandar lo realiza
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
Desbloqueo del empleado
CALL FUNCTION 'HR_EMPLOYEE_DEQUEUE'
EXPORTING
NUMBER = PERNR.
Regards,
Diego. -
Error while modifying HR infotype PA0105 using HR_INFOTYPE_OPERATION
Hello All,
I am not able to modifying the infotype PA0105.
Currently I am using the FM HR_INFOTYPE_OPERATION.
But I am not able to modify the record.
Has anyone faced any such situation...
Please help..!!
Useful pointers will be appreciated...
Thanks & Regards,
Tarun GambhirHope this helps you out...
C_INS LIKE PSPAR-ACTIO VALUE 'INS',
W_000-PERNR = T_SAIDA-PERNR.
W_000-INFTY = C_0000.
W_000-ENDDA = C_DATA.
W_000-BEGDA = T_PA0000-BEGDA.
W_000-AEDTM = SY-DATUM.
W_000-UNAME = SY-UNAME.
W_000-MASSN = C_16.
W_000-MASSG = S_MASSG-LOW.
W_000-STAT1 = SPACE.
W_000-STAT2 = C_3.
W_000-STAT3 = C_1.
W_PSPAR-PERNR = T_SAIDA-PERNR.
W_PSPAR-INFTY = C_0000.
W_PSPAR-PLANS = T_P0001-PLANS.
W_PSPAR-WERKS = T_P0001-WERKS.
W_PSPAR-PERSG = T_P0001-PERSG.
W_PSPAR-PERSK = T_P0001-PERSK.
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
INFTY = C_0000
NUMBER = T_SAIDA-PERNR
LOCKINDICATOR = SPACE
VALIDITYEND = C_DATA
VALIDITYBEGIN = V_BASE
RECORD = W_000
OPERATION = C_INS
SECONDARY_RECORD = W_PSPAR
IMPORTING
RETURN = T_RET_FUNC "#EC *
KEY = T_KEY. "#EC *
Greetings,
Blag. -
Runtime error while updating entries of infotype usin HR_INFOTYPE_OPERATION
Hi,
I uploading entries of customized infotype using HR_INFOTYPE_OPERATION function module.
It is giving me run-time error as,
ShrtText
An exception that could not be caught occurred.
What happened?
The exception 'CX_HRPA_VIOLATED_PRECONDITION' was raised but was not caught at
any stage in the
call hierarchy.
Since exceptions represent error situations, and since the system could
not react adequately to this error, the current program,
'CL_HRPA_INFOTYPE_FACTORY======CP', had to
be terminated.Hi,
Refer to this link..Re: CX_HRPA_VIOLATED_PRECONDITION using HR_INFOTYPE_OPERATION to insert rec -
Error coming while modifying data in infotype through HR_INFOTYPE_OPERATION
I have created a report which reads a excel file fom the system and then upload data in infotype 0077 through HR_INFOTYPE_OPERATION. In this report first I check if the record exists in IT0077 for a particular employee , if not then creates a new record with the input file data and if the records exists then I need to modify that record.
But the problem is that on updation the function module HR_INFOTYPE_OPERATION always return an error that "Infotype doesnot exist", although its exists in the system.
Why this error comes when once I excuted the report with a pernr number for creation and then I execute with teh same data to modify it, it gives an error in modification.iam not sure
When we create we have to use INS in the code and when we modify we have to use Operation MOD
Since Dilek our Techinical consultant is there hope your issue is solved -
Creation of record in 2001 using FM - HR_INFOTYPE_OPERATION
Hi fellow ABAP,
I'm new to using HR_INFOTYPE_OPERATION, I want to make this one an alternative way to create record in IT 2001 instead of using Batch Input.. but it returns me error
Runtime Errors: ASSIGN_BASE_TOO_SHORT
Short text : Fehler in ASSIGN-Zuweisung im Programm "SAPLHRMM".
I ran HR_INFOTYPE_OPERATION at SE37 with these parameters:
INFTY = '2001'
NUMBER = '00001003'
SUBTYPE = '2250'
OBJECTID = ' '
LOCKINDICATOR = 'X'
VALIDITYEND = '06/02/2009'
VALIDITYBEGIN = '06/02/2009'
RECORDNUMBER = '000'
RECORD = '2001'
OPERATION = 'CREATE'
TCLAS = 'A'
DIALOG_MODE = '0'
NOCOMMIT = 'X'
VIEW_IDENTIFIER = ' '
SECONDARY_RECORD = ' '
is there something I missed? and how can I pass value for the creation of IT2001?
thanks so much in advance...Hi Dude,
Go through this code for 2002..
tables: pa0001, pa0171, pa0378.
DATA BEGIN OF i0378.
include structure p0378.
DATA END OF i0378.
DATA: START_DATE LIKE SY-DATUM.
DATA RETURN LIKE BAPIRETURN1.
selection-screen begin of block p1.
* This select option allows for testing on limited employees
* or for splitting the update into multiple runs.
SELECT-OPTIONS pernr for pa0001-pernr.
selection-screen end of block p1.
selection-screen skip.
selection-screen begin of block b1.
* The plan year date is normally the first day of the next year
PARAMETERS: py_date LIKE SY-DATUM.
* This date is the beginning of the enrollment period for managers
PARAMETERS: MGR_DATE LIKE SY-DATUM.
* This date is the beginning of the enrollment period for hourlys
PARAMETERS: HRLY_DATE LIKE SY-DATUM.
selection-screen end of block b1.
INITIALIZATION.
py_date = sy-datum.
py_date(4) = py_date(4) + 1.
py_date+4(4) = '0101'.
START-OF-SELECTION.
select * from pa0171
where pernr in pernr
and endda ge py_date
and begda le py_date.
* skip ineligible employees
if pa0171-bstat eq 'INEL'.
continue.
endif.
* determine start date of enrollment based on benefit group
if pa0171-bengr eq 'MNGR'.
start_date = mgr_date.
elseif pa0171-bengr eq 'HRLY'.
start_date = hrly_date.
else.
* ERROR HANDLING GOES HERE
continue.
endif.
* create IT0378 record for this person
clear i0378.
i0378-pernr = PA0171-pernr.
i0378-barea = PA0171-barea.
i0378-event = 'OPEN'.
i0378-begda = start_date.
i0378-infty = '0378'.
i0378-aedtm = sy-datum.
i0378-uname = sy-uname.
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
INFTY = '0378'
NUMBER = i0378-pernr
SUBTYPE = 'OPEN'
VALIDITYBEGIN = i0378-begda
RECORD = i0378
OPERATION = 'INS'
IMPORTING
RETURN = return
EXCEPTIONS
OTHERS = 1.
if sy-subrc ne 0 or return-type ne ' '.
* ERROR HANDLING GOES HERE
endif.
ENDSELECT. -
Use of HR_INFOTYPE_OPERATION in EXIT_SAPFP50M_002
Hi all,
On creation of an absence record (IT2001) we need to insert a new Substitution record (IT2003). Originally we tried to use HR_INFOTYPE_OPERATION in EXIT_SAPFP50M_002 however this will not work because they are both in the same LUW. I have searched for similar requests on this in the forum and the only one with a suggestion was to create an RFC to perform the update which I tried but instead I get the 'EPG-428 A complex application error has occurred'. I have also tried using the BADI 'HRPAD00INFTY' but get the complex error here too.
We are also going to look into using a Dynamic action instead of using the exit however I just wondering if anyone has found a workaround or know of a way to insert/update an infotype record while amending another through EXIT_SAPFP50M_002. Obviously without doing a direct update to PA2003!
Thanks,
Sinead.Hi all,
On creation of an absence record (IT2001) we need to insert a new Substitution record (IT2003). Originally we tried to use HR_INFOTYPE_OPERATION in EXIT_SAPFP50M_002 however this will not work because they are both in the same LUW. I have searched for similar requests on this in the forum and the only one with a suggestion was to create an RFC to perform the update which I tried but instead I get the 'EPG-428 A complex application error has occurred'. I have also tried using the BADI 'HRPAD00INFTY' but get the complex error here too.
We are also going to look into using a Dynamic action instead of using the exit however I just wondering if anyone has found a workaround or know of a way to insert/update an infotype record while amending another through EXIT_SAPFP50M_002. Obviously without doing a direct update to PA2003!
Thanks,
Sinead. -
Check with HR_MAINTAIN_MASTERDATA and HR_INFOTYPE_OPERATION
Hello,
I have two questions about these FMs :
1) Is it possible to use 'CHK' action with the FM HR_MAINTAIN_MASTERDATA ?
2) When I use the FM HR_INFOTYPE_OPERATION with action CHK no record is created, but after that, with action INS, the infotype record is created twice even if I use the instruction ROLLBACK WORK.
How to clear the memory after the CHK action?
Best regards,
K.Hi Karim,
<li>I believe that ACTION is the parameter which is being passed to HR_MAINTAIN_MASTERDATA and
HR_INFOTYPE_OPERATION function modules. IF you go and see referenced field domain values you will see the following, But I can't see CHK value in the domain.
COP Copy
DEL Delete
DIS Display
EDQ Lock/unlock
INS Create
LIS9 Delimit
MOD Change
INSS Create for Actions is not converted to Change
Thanks
Venkat.O -
HR_INFOTYPE_OPERATION not working when called from Dynamic action
Hi ,
Senario : I would like to execute a form from dynamic action which
creates a record in 0015 (Additional payment IT) .
I have writen the code as shown below am using FM HR_INFOTYPE_OPERATION
. When i execute the program from se38 it is creating a record, however it is
not created when it is called from dynamic action..when i debugged the code in
inside the FM HR_INFOTYPE_OPERATION there is a FM HR_MAINTAIN_MASTERDATA where
they are using call dialog (statement) and
sy-oncom = 'N' when called from Dynamic action and
sy-oncom = 'S' when called executed directly.
I tried to change the sy-oncom to S while run from Dynamic action it created
the record.
So Can anyone explain me abt sy-oncom and how can i resolve the issue..
code..
REPORT ZHRPYENH01 .
perFORM TERMIATION_9000.
INCLUDE DBPNPMAC.
FORM Termiation_9000 *
FORM TERMIATION_9000.
INFOTYPES : 0015.
*data : i .
*i ='c'.
*break-point.
*message i000(000) with i.
TABLES : PRELP.
DATA : P9000 TYPE PA9000." with header line.
DATA : P0000 TYPE STANDARD TABLE OF P0000 WITH HEADER LINE.
DATA : P0015 TYPE STANDARD TABLE OF P0015 WITH HEADER LINE.
DATA : HIRE_DATE LIKE SY-DATUM,
TERM_DATE LIKE SY-DATUM.
DATA : MOLGA LIKE T500L-MOLGA VALUE '25',
SEQNR LIKE PC261-SEQNR.
DATA : RGDIR TYPE STANDARD TABLE OF PC261 WITH HEADER LINE.
DATA : ACTUAL_PERIOD LIKE PA9000-RETENTION.
DATA : PNP-SW-FOUND TYPE SY-SUBRC ,
PNP-SY-TABIX TYPE SY-TABIX.
DATA : TER_PERNR LIKE PA0001-PERNR.
DATA : REF_PERNR LIKE PA0001-PERNR.
data : key type BAPIPAKEY.
data : payed_amount type p0015-BETRG.
data : future_payment_amount type p0015-BETRG.
data : p0002 like pa0002.
types : begin of t_deduction ,
deducation_date like p0015-begda,
future_payment_amount type p0015-BETRG.
types : end of t_deduction.
data : future_deduction type standard table of t_deduction with
*header line.
data : future_deduction type t_deduction .
data : RETURN type BAPIRETURN1.
*data : deduction_p0015 like standard table of p0015 with header line.
data : deduction_p0015 like p0015 .
xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
****Prepare 0015 data for deduction
*deduction for payed amount
clear deduction_p0015.
*refresh deduction_p0015.
deduction_p0015-pernr = REF_PERNR.
*deduction_p0015-pernr = TER_PERNR.
deduction_p0015-lgart = 'M120'.
deduction_p0015-begda = sy-datum + 1 .
deduction_p0015-endda = sy-datum + 1 .
deduction_p0015-BETRG = payed_amount.
deduction_p0015-WAERS = 'SGD'.
deduction_p0015-ZUORD = TER_PERNR.
*append deduction_p0015.
**deduction for future payment amount
*loop at future_deduction.
*clear deduction_p0015.
*deduction_p0015-pernr = REF_PERNR.
**deduction_p0015-pernr = TER_PERNR.
*deduction_p0015-lgart = 'M120'.
*deduction_p0015-begda = FUTURE_DEDUCTION-DEDUCATION_DATE.
*deduction_p0015-endda = FUTURE_DEDUCTION-DEDUCATION_DATE.
*deduction_p0015-BETRG = future_deduction-future_payment_amount.
*deduction_p0015-WAERS = 'SGD'.
*deduction_p0015-ZUORD = TER_PERNR.
*append deduction_p0015.
*endloop.
Create a deduction wage type in 0015 for the employee
break-point.
CLEAR RETURN.
CALL FUNCTION 'BAPI_EMPLOYEET_ENQUEUE'
EXPORTING
NUMBER = REF_PERNR
VALIDITYBEGIN = '18000101'
IMPORTING
RETURN = return
if not return is initial.
message E000(000) with
'Referred Employee could not be locked for referal payment deducation,
please try after some time'.
endif.
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
INFTY = '0015'
NUMBER = REF_PERNR
SUBTYPE = 'M120'
OBJECTID =
LOCKINDICATOR =
VALIDITYEND = SY-DATUM
VALIDITYBEGIN = SY-DATUM
RECORDNUMBER =
RECORD = deduction_p0015
OPERATION = 'COPY'
TCLAS = 'A'
DIALOG_MODE = '2'
NOCOMMIT =
VIEW_IDENTIFIER =
SECONDARY_RECORD =
IMPORTING
RETURN = return
KEY = key
break-point.
COMMIT WORK.
if not return is initial.
*return-TYPE
*ID
*NUMBER
*MESSAGE
message I000(000) with return-MESSAGE.
endif.
CALL FUNCTION 'BAPI_EMPLOYEET_DEQUEUE'
EXPORTING
NUMBER = REF_PERNR
VALIDITYBEGIN = '18000101'
IMPORTING
RETURN = return
xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
Thanks and regards
-Senthil Bala
Message was edited by: senthil balaHi Senthil
Why at all U want a subroutine to create a record in IT0015 through Dynamic action.There are some standard codes available to update infotypes.
Let me give U an example
14 9CON BETRG 4 2 I INS,0015 This will create a record in IT0015 when IT0014 is updated with Wagetype 9CON
14 9CON BETRG 4 3 W P0015-LGART='5400' Set wagetype for IT0015(Here U can use a subroutine call to set the wagetype)
14 9CON BETRG 4 4 W P0015-BETRG=P0014-BETRG set amount for IT0015(Here U can use a subroutine call to get the amount)
14 9CON BETRG 4 5 W P0015-BEGDA=P0014-ENDDA set the dates(Here U can use a subroutine call to set the dates)
Hope this will help U.
Please award points if helpful -
HR ABAP: Issue with using 'nocommit' parameter on FM HR_INFOTYPE_OPERATION
Issue with using nocommit parameter on FM HR_INFOTYPE_OPERATION:
My client has a requirement to create the following 4 infotypes in sequence in a LUW, i.e either all are created or none is created.
9045 (custom infotype)
0045
0078
0015
I tried to use the nocommit parameter on FM HR_INFOTYPE_OPERATION to insert the 4 infotypes
in a nocoomit mode and then at the end I have issued
'Commit Work', but to my surprise only I/T 0015 is created in the database and the first three (9045, 0045 and 0078) did not make it to database.
I searched many threads on SDN but could not find a solution.
Please let me know if there could be any solution to implement the LUW.
YOur inputs will be appreciated.Hi ,
i think u can also try with this FM HR_MAINTAIN_MASTERDATA , see its documentations.
no commit works like a simulation mode , what u can do is ,
call FM for all Infotypes and collect all error msgs if any , then finally call FM for all infotypes again without passing nocommit work ( i.e space).
regards
prabhu -
HR ABAP : Custom Infotype updations through FM HR_INFOTYPE_OPERATION
Hi All,
Actually, I want to update the custom infotype 3 fields as per my user inputs. I am fetching the data from the PA table acoording to sy-datum falling in the begda, enda limitations. now I am changing the field with new values in the work area. And pass with the following data to the FM.
But I am getting the error 'No data stored for 9008 in the selected period', eventhough it is already having a data in the database table. I had seen prvious therads, but could not get how they solved the issue.
Please provide the inpus for the following code.
( I had also passed the validity start and end from the database entry. at this moment it gets dumped at the statement
assign record to <record> casting type (tabname). "XDP UniCode
where tabname is proposed from t777d-ppnnn. which is a structure and having a value as P9008. If i change the value at debug point to PA9008. it works fine. is there anything extra i need to do to solve this issue? )
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
infty = '9008'
number = pernr
"SUBTYPE =
"OBJECTID =
"LOCKINDICATOR =
"VALIDITYEND =
"VALIDITYBEGIN =
"RECORDNUMBER =
record = wa_pa9008
operation = 'MOD'
"TCLAS = 'A'
"DIALOG_MODE = '0'
"NOCOMMIT =
"VIEW_IDENTIFIER =
"SECONDARY_RECORD =
IMPORTING
return = l_bapireturn
key = bapipakey_tab
Regards,
Brijesh PatelHi,
Check this code once
Read Infotype9004 Record for the personnel No
CALL FUNCTION 'HR_READ_INFOTYPE'
EXPORTING
tclas = A
pernr = pernr
infty = 9004
IMPORTING
subrc = v_subrc
TABLES
infty_tab = it_pa9004
EXCEPTIONS
infty_not_found = 1
OTHERS = 2.
Read it_pa9004 into wa_pa9004 with some condition.
if sy-subrc eq 0.
Lock the employee for processing infotype 9004
CALL FUNCTION 'HR_EMPLOYEE_ENQUEUE'
EXPORTING
number = wa_pa9004-pernr.
v_begda = wa_9004-begda.
v_endda = wa_9004-endda.
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
infty = c_9004
number = wa_9004-pernr
subtype = c_0001
validityend = v_endda
validitybegin = v_begda
record = wa_9004
operation = c_mod
tclas = c_a
dialog_mode = c_0
dialog_mode = '2'
IMPORTING
return = wa_return.
CALL FUNCTION 'HR_EMPLOYEE_DEQUEUE'
EXPORTING
number = wa_pa9004-pernr.
endif.
reward the points if it is helpful.
Regards,
Srilatha -
Dynamic internal table problem in FM - HR_INFOTYPE_OPERATIONS
Dear All,
I have a problem when I use a Dynamic internal table in FM - HR_INFOTYPE_OPERTATION..
Please suggest me on the way to overcome this problem..
We wanted to have a dynamic Program for Info type operations which can be used for any info types as we are changing only BEGDA and the related actions
So in my program I have the parameters to accept
P_BEGDA - 01.10.2007
P_INFTY - P0008
P_ACTIO - COPY
I am able to create a dynamic table based on the parameters P_INFTY and able to read it also using the FM - HR_READ_INFOTYPE
BUT when I pass the dynamic internal table to a FM - HR_INFOTYPE_OPERTATION I am getting a DUMP
The DUMP is at the below statement from FM - HR_INFOTYPE_OPERTATION
ASSIGN record TO <record> CASTING TYPE (tabname). "XDP UniCode
It gives the below possiblities
"ASSIGN_BASE_TOO_SHORT" C
"SAPLHRMM" or "LHRMMU03"
"HR_INFOTYPE_OPERATION"
But If I use the below internal table
Data : g_t_0008 like P0008 occurs 0 with header line.
And If I use the internal table g_t_0008 instead of dynamic tables then it works. So I strongly feel it's due to not having a header in the dynamic table below see below the sample code on how I am generating a dynamic internal table
field-symbols: <dyn_table> type standard table.
data: dy_table type ref to data,
dy_line type ref to data,
xfc type lvc_s_fcat,
ifc type lvc_t_fcat.
to get the srurcute
perform get_structure using l_f_table.
perform create_dynamic_itab .
assign dy_table->* to <dyn_table>.
perform get_data tables <dyn_table01>
using pernr-pernr p_infty.
below are the forms routine .
form get_structure using p_table.
data : idetails type abap_compdescr_tab,
xdetails type abap_compdescr.
data : ref_table_des type ref to cl_abap_structdescr.
clear : ifc[], dy_table.
Get the structure of the table.
ref_table_des ?=
cl_abap_typedescr=>describe_by_name( p_table ).
idetails[] = ref_table_des->components[].
loop at idetails into xdetails.
clear xfc.
xfc-fieldname = xdetails-name .
xfc-datatype = xdetails-type_kind.
xfc-inttype = xdetails-type_kind.
xfc-intlen = xdetails-length.
xfc-decimals = xdetails-decimals.
append xfc to ifc.
endloop.
endform.
form create_dynamic_itab.
Create dynamic internal table and assign to FS
call method cl_alv_table_create=>create_dynamic_table
exporting
it_fieldcatalog = ifc
importing
ep_table = dy_table.
endform.
*& Form get_data
form get_data tables p_table
using p_pernr
p_infty.
clear : p_table, p_table[].
CALL FUNCTION 'HR_READ_INFOTYPE'
EXPORTING
PERNR = P_PERNR
INFTY = p_infty
BEGDA = p_datum
ENDDA = p_datum
TABLES
INFTY_TAB = p_table
EXCEPTIONS
INFTY_NOT_FOUND = 1
OTHERS = 2.
CHECK SY-SUBRC EQ 0.
IF lines( p_table ) GT 0.
*write :/'Record exist' , 'IT', p_infty.
clear p_table.
PERFORM hr_operation tables p_table
using g_t_t588d-actio g_t_t588d-INFTY
g_t_t588d-SUBTY.
else.
PERFORM append_status using g_t_itab-pernr p_infty ' '
'Error' 'No records'.
ENDIF.
endform. " get_data
form hr_operation tables p_table
using p_actio P_INFTY P_SUBTY.
data: l_f_return LIKE bapireturn1.
ASSIGN COMPONENT 'BEGDA' OF STRUCTURE p_table TO <l_field>.
<l_field> = p_begda.
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
infty = P_infty
number = G_T_ITAB-PERNR
subtype = P_subty
validityend = g_f_endda
validitybegin = P_datum
record = P_TABLE
operation = p_actio
IMPORTING
return = l_f_return.
IF sy-subrc NE 0.
ENDIF.
ENDFORM.try
using field symbol for a wrk area instead of Field symbol for a table
loop your inernal table (again a field symbol) assigning to <fs_wrkarea>
in loop call HR_INFO.._OP..
reward if helpful
Maybe you are looking for
-
Obiee 11g Publisher Bursting Report error
Hi I am using Obiee 11g (ver. 11.1.1.3.0) and trying to achieve report bursting. I have created Data model and Report. Report is showing result but once I schedule report by bursting to file, 1. I am getting error (ORA-00923: FROM keyword not found w
-
Software update keeps quitting
Software update keeps quitting on me. I have a G4 tower (powerpc) running 10.5.8 Below is the problem report I get: Process: Software Update [152] Path: /System/Library/CoreServices/Software Update.app/Contents/MacOS/Software Update Identifier: com.a
-
I am using InDesign 5 onOSX Snow Leopard, when I try to start up InDesign, I get this messaage: "Adobe InDesign is shutting down. A serious error was detected. Please restart InDesign to recover work in any unsaved InDesign documents" - Return to Fin
-
Why isn't my youtube app *signed in* showing my subscriptions?
The youtube app usually shows all my subscriptions but when I came home last night it just says theres no subscriptions and I can't re-subscribe to them because it won't let me. Yet when I sign in on my computer all the subscriptions are all there.
-
Burning home video w/ Premiere Elements 4.0 (video quality bad)
I'm trying to convert 2 mini dvds (1.4GB) to a regular dvd (4.7GB) using PE 4.0 and I can't seem to maintain the same quality. I imported the minis to my PC using PE to where it created several folders with VOB files labeled VTS. The 2 dvds worth of