abapsap-hr

HRIQ_UPDATE_INFTY not update hrp1001


HRIQ_UPDATE_INFTY returns sy-subrc=0. But it actually doesn't make any changes to it. Part source code:

DATA:
lt_single_1001   TYPE STANDARD TABLE OF p1001 WITH HEADER LINE, 
lt_1001          TYPE STANDARD TABLE OF hrp1001 WITH HEADER LINE.

SELECT * FROM hrp1001 INTO TABLE lt_1001 WHERE
       objid = <studies>-cs_objid AND sobid = lv_major_id.

move-corresponding lt_1001 to lt_single_1001.

CALL FUNCTION 'HRIQ_UPDATE_INFTY'
  EXPORTING
      vtask                   = 'D'
  TABLES
      innnn                   = lt_single_1001
  EXCEPTIONS
      error_during_update     = 1
      no_authorization        = 2
      relation_not_reversible = 3
      corr_exit               = 4
      OTHERS                  = 5.
IF sy-subrc <> 0.
  MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno.
ELSE.
  NEW-LINE NO-SCROLLING.
  WRITE: 'Update: '.
  WRITE: lt_1001-objid. "TODO: write proper information
  write: lt_single_1001-begda.
  write: lv_begda.
  write: lt_single_1001-endda.
  write: lv_endda.
ENDIF.

Solution

  • If i'm not mistaken, you're moving the value of the header of table lt_1001 to the header of table lt_single_1001. You should at least append it, otherwise the table is empty. Also P1001 is not the same as HRP1001 : there is an INFTY member that should be filled :
    For the following line :

       move-corresponding It_1001 to It_single_1001.
    

    i would do something like

       loop at It_1001.
          " move header of It_1001 to header of It_single_1001
          move-corresponding It_1001 to It_single_1001.
          " append the infotype information
          It_single_1001-infty = '1001'.
          " append the header to the table
          append lt_single_1001.
       endloop.
       " call to the function...
    

    Same thing for the display : you're using the header of It_1001. You should also loop at it_single_1001 to display the datas that you just sent to the initial function.

    Regards
    Guillaume