* Adds a Additional Column Owner METHOD if_ex_hrhap00_col_owner~check_column_owner. * Data Declarations DATA: lv_plvar TYPE plvar, "PLANNED VERSION lv_iterate_otype TYPE otype, "OBJECT TYPE lv_iterate_objid TYPE sobid, "REFERENCE OBJECT TYPE lv_target_otype TYPE otype, "OBJECT TYPE OF TARGET lv_target_objid TYPE objektid, "REFERENCE OBJECT TYPE OF TARGET lv_pernr TYPE p_pernr. "PERSONNEL NUMBER * Constants Declaration CONSTANTS : c_level(2) TYPE c VALUE '02', "CONSTANT FOR DO-WHILE LOOP c_x(1) TYPE c VALUE 'X', "FLAG c_otype TYPE otype VALUE 'P', "OBJECT TYPE c_istat TYPE istat_d VALUE '1', "CONSTANT VALUE FOR FM c_subty TYPE subtyp VALUE 'A008', "SUBTYPE c_sclas1 TYPE sclas VALUE 'P ', "PERSON c_sclas2 TYPE sclas VALUE 'US'. "USER * Internal Table and workareas Declaration DATA: it_leading_positions TYPE TABLE OF hrobject, "INTERNAL FOR LEADING POSITIONS wa_leading_positions TYPE hrobject,"WORK AREA FOR LEADING POSITIONS wa_header_appraiser TYPE hap_s_header_appraiser, "APPRAISER WORK AREA wa_header_appraisee TYPE hap_s_header_appraisee, "APPRAISEE WORK AREA it_relations TYPE TABLE OF p1001, "INTERNAL TABLE TO HOLD RELATIONS wa_relations TYPE p1001, "WORK AREA TO RELATIONS wa_leader1 TYPE swhactor, "WORK AREA TO HOLD HIGH-LEVEL MANAGER DATA it_leader TYPE tswhactor,"INTERNAL TABLE TO HOLD HIGH-LEVEL MANAGER DATA wa_leader TYPE swhactor. "WORK AREA TO HOLD HIGH-LEVEL MANAGER DATA * is the user = appraiser ( Manager )? LOOP AT t_header_appraiser INTO wa_header_appraiser. READ TABLE t_myself WITH KEY plvar = wa_header_appraiser-plan_version otype = wa_header_appraiser-type sobid = wa_header_appraiser-id TRANSPORTING NO FIELDS. IF sy-subrc = 0. column_owner = c_x. EXIT. ENDIF. ENDLOOP. "at appraiser ( Manager ) IF column_owner = c_x. EXIT. ENDIF. "column owner? * OR * is the user = High Level Manager ? * Clear exporting REFRESH it_leader. LOOP AT t_header_appraisee INTO wa_header_appraisee. * Determine active plvar CALL FUNCTION 'RH_GET_ACTIVE_WF_PLVAR' IMPORTING act_plvar = wa_header_appraisee-plan_version EXCEPTIONS no_active_plvar = 1 OTHERS = 2. lv_iterate_otype = wa_header_appraisee-type. IF lv_iterate_otype = c_otype. * assure leading zeros lv_pernr = wa_header_appraisee-id. lv_iterate_objid = lv_pernr. ENDIF. * Iterate manager level DO c_level TIMES. REFRESH it_leading_positions. CALL FUNCTION 'RH_GET_LEADING_POSITION' EXPORTING plvar = wa_header_appraisee-plan_version otype = lv_iterate_otype sobid = lv_iterate_objid date = sy-datum TABLES leading_pos = it_leading_positions EXCEPTIONS no_lead_pos_found = 1 OTHERS = 2. DELETE it_leading_positions WHERE otype = lv_iterate_otype AND objid = lv_iterate_objid. READ TABLE it_leading_positions INTO wa_leading_positions INDEX 1. if sy-subrc = 0. lv_iterate_otype = wa_leading_positions-otype. lv_iterate_objid = wa_leading_positions-objid. endif. ENDDO. lv_target_otype = wa_leading_positions-otype. lv_target_objid = wa_leading_positions-objid. * ASSERT lv_target_otype IS NOT INITIAL. * ASSERT lv_target_objid IS NOT INITIAL. * Read owner of target leading position CALL FUNCTION 'RH_READ_INFTY_1001' EXPORTING plvar = wa_header_appraisee-plan_version otype = lv_target_otype objid = lv_target_objid istat = c_istat subty = c_subty begda = sy-datum endda = sy-datum TABLES i1001 = it_relations EXCEPTIONS nothing_found = 1 wrong_condition = 2 wrong_parameters = 3 OTHERS = 4. IF it_relations IS NOT INITIAL. LOOP AT it_relations INTO wa_relations WHERE sclas = c_sclas1 OR sclas = c_sclas2. wa_leader1-otype = wa_relations-sclas. wa_leader1-objid = wa_relations-sobid. APPEND wa_leader1 TO it_leader. ENDLOOP. ENDIF. ENDLOOP. * is the user = High-Level Manager? LOOP AT it_leader INTO wa_leader. READ TABLE t_myself WITH KEY otype = wa_leader-otype sobid = wa_leader-objid BINARY SEARCH TRANSPORTING NO FIELDS. IF sy-subrc = 0. column_owner = c_x. EXIT. ENDIF. ENDLOOP. "at High Level Manager ENDMETHOD.