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_EMPLOYEE

    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.
    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,
    Suresh

    see 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,
    Venkat

    Hi,
    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,
    JOP

    Hi, 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 Gambhir

    Hope 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 bala

    Hi 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 Patel

    Hi,
    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

  • InDesign Problem

    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