Partnerships between object ID's are described in infotype 1001 and 1055, which can be found in tables HRP1001 and HRP1055. This article shows how these tables can be manupilated.
Function module RH_INSERT_INFTY can do the task, with a little care and preperation. Here's an example:
DATA: BEGIN OF lw_vdata,
type(2),
id(8),
chara(4),
exper(2),
END OF lw_vdata,
lt_pplog TYPE STANDARD TABLE OF pplog,
lw_pplog TYPE pplog.
lw_pplog-plvar = co_planvariant.
lw_pplog-otype = co_qualification_bundle.
lw_pplog-objid = qualification_bundle.
lw_pplog-infty = '1055'.
lw_pplog-istat = co_planningstatus.
lw_pplog-aedtm = sy-datum.
lw_pplog-uname = sy-uname.
lw_pplog-begda = gw_record-effdate.
lw_pplog-endda = co_end_of_times.
* Compose the vdata key, as a character string:
CLEAR: lw_vdata.
lw_vdata-type = qmotype.
lw_vdata-id = qmobjid.
lw_vdata-chara = lv_chara.
lw_vdata-exper = lv_exper.
lw_pplog-vdata = lw_vdata.
CLEAR: lt_pplog[].
APPEND lw_pplog TO lt_pplog.
CALL FUNCTION 'RH_INSERT_INFTY'
EXPORTING
vtask = 'S'
TABLES
innnn = lt_pplog
EXCEPTIONS
OTHERS = 4.
The constants that were used here are for a relation from Bundle (QB) to the qualification (Q)
CONSTANTS: co_end_of_times TYPE hrp1000-endda VALUE '99991231',
co_planvariant TYPE plvar VALUE '01',
co_planningstatus TYPE istat_d VALUE '1', "Active
co_qualification_bundle TYPE otype VALUE 'QB',
co_qualification TYPE otype VALUE 'Q '.
Relations can just as easily be broken via RH_DELETE_INFTY and if a new bundle or qualification needs to be created first, use HRIQ_OBJECT_CREATE.
For 1001 relations the function module RH_RELATION_WRITE can be used. In the example below the existance of the relation is first checked after which the relation is created:
* populate the fields on lw_hri1001 ...
* Check whether such relation is aready available:
SELECT SINGLE objid FROM hrp1001 INTO lw_hri1001-objid
WHERE otype = lw_hri1001-otype AND
objid = lw_hri1001-objid AND
plvar = lw_hri1001-plvar AND
rsign = lw_hri1001-rsign AND
relat = lw_hri1001-relat AND
istat = lw_hri1001-istat AND
priox = lw_hri1001-priox AND
begda = lw_hri1001-begda AND
endda = lw_hri1001-endda AND
varyf = lw_hri1001-varyf AND
seqnr = lw_hri1001-seqnr.
IF sy-subrc = 0.
MESSAGE 'Relation already available' TYPE 'S'.
ELSE.
APPEND lw_hri1001 TO lt_hri1001.
CALL FUNCTION 'RH_RELATION_WRITE'
EXPORTING
vtask = 'D'
TABLES
relation = lt_hri1001
EXCEPTIONS
no_authority = 1
....
OTHERS = 8.
ENDIF.
