<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Regarding ABAP-HR Code in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/regarding-abap-hr-code/m-p/3759977#M904617</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;1) &lt;STRONG&gt;DATA: temp1 LIKE result_struc_obj.-&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;   it declares temp1 as a internal table of  result_struc_obj table that means temp1 posses all functionality, attributes of result_struc_obj.&lt;/P&gt;&lt;P&gt;and we are not directly make any changes to database table for that we must have create internal table.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;2)  In the HR ABAP, there are function modules for everything.&lt;/P&gt;&lt;P&gt;like in your code 'RH_GET_LEADER' FM gives manager ID of that person.&lt;/P&gt;&lt;P&gt;If you want to know how this function module works just go to&lt;/P&gt;&lt;P&gt;SE37-&amp;gt;give function module name-&amp;gt;display-&amp;gt; on the Toolbar you will see ' Function module Documentation' option.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;3) IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;sy-subrc 0 means your Function module worked out and get output. otherwise there must be some error.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;4) CLEAR- clears header line of the internal table.&lt;/P&gt;&lt;P&gt;    REFRESH- clears contents or body of the table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;5) LOOP AT root_objects.&lt;/P&gt;&lt;P&gt;       -&lt;/P&gt;&lt;HR originaltext="---------------------------" /&gt;&lt;P&gt;   ENDLOOP.&lt;/P&gt;&lt;P&gt;it will go through each record of the table root_objects. it will help when you want to check each record of the table. we can give any conditon after loop at. on that basis loop will execute.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;6) READ TABLE -&lt;/P&gt;&lt;HR originaltext="---" /&gt;&lt;P&gt; it reads one record of the table at a time.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;7) MOVE-CORRESPONDING - it will move all record to respective fields.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;reward if useful.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 05 May 2008 10:38:44 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2008-05-05T10:38:44Z</dc:date>
    <item>
      <title>Regarding ABAP-HR Code</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/regarding-abap-hr-code/m-p/3759976#M904616</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Friends&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am new to ABAP-HR.I am trying to analyze below peace of code but not yet succeeded till.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So any one please illustrates me the below peace of code step-by-step.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: is_i77pr LIKE  t77pr.&lt;/P&gt;&lt;P&gt;  DATA: temp1 LIKE result_struc_obj.&lt;/P&gt;&lt;P&gt;  DATA: temp2 LIKE result_struc_obj.&lt;/P&gt;&lt;P&gt;  DATA: tmp_pnext LIKE struc-pnext.&lt;/P&gt;&lt;P&gt;  DATA: mgr_name LIKE objec-stext.&lt;/P&gt;&lt;P&gt;  DATA: tmp_sytabx LIKE sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR: result_tab_obj.&lt;/P&gt;&lt;P&gt;  REFRESH: result_tab_obj.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; evpath = 'ZPXO_GEN'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'RH_STRUC_GET_MULTIPLE_ROOTS'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      act_wegid                  = evpath&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  ACT_INT_FLAG               =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  ACT_PLVAR                  = ' '&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;     act_svect                  = '1'&lt;/P&gt;&lt;P&gt;     act_begda                  = sy-datum&lt;/P&gt;&lt;P&gt;     act_endda                  = sy-datum&lt;/P&gt;&lt;P&gt;     act_tdepth                 = 0&lt;/P&gt;&lt;P&gt;     act_tflag                  = 'X'&lt;/P&gt;&lt;P&gt;     act_vflag                  = 'X'&lt;/P&gt;&lt;P&gt;     act_sflag                  = 'X'&lt;/P&gt;&lt;P&gt;     act_recurs                 = 'X'&lt;/P&gt;&lt;P&gt;     act_text_buffer_fill       = 'X'&lt;/P&gt;&lt;P&gt;     authority_check            = 'X'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  BUFFER_MODE                = ' '&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;     keep_order                 = 'X'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  ACT_PLVAR                  =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  ROOT_COPY                  =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      root_objects               = root_objects&lt;/P&gt;&lt;P&gt;     result_objec               = result_objec_obj&lt;/P&gt;&lt;P&gt;     result_struc               = result_struc_obj&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   EXCEPTIONS&lt;/P&gt;&lt;P&gt;     no_plvar_found             = 1&lt;/P&gt;&lt;P&gt;     no_entry_found             = 2&lt;/P&gt;&lt;P&gt;     path_not_found             = 3&lt;/P&gt;&lt;P&gt;     root_not_found             = 4&lt;/P&gt;&lt;P&gt;     OTHERS                     = 5&lt;/P&gt;&lt;P&gt;            .&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Delete Root Org Unit's Chief Personnel No.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  LOOP AT root_objects.&lt;/P&gt;&lt;P&gt;    REFRESH: result_tab_obj.&lt;/P&gt;&lt;P&gt;    CLEAR: result_tab_obj.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'RH_STRUC_GET'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        act_otype      = 'O'&lt;/P&gt;&lt;P&gt;        act_objid      = root_objects-objid&lt;/P&gt;&lt;P&gt;        act_wegid      = 'ZPX_CFPN'&lt;/P&gt;&lt;P&gt;        act_begda      = begda&lt;/P&gt;&lt;P&gt;        act_endda      = endda&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        result_tab     = result_tab_obj&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        no_plvar_found = 1&lt;/P&gt;&lt;P&gt;        no_entry_found = 2&lt;/P&gt;&lt;P&gt;        OTHERS         = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    LOOP AT result_tab_obj WHERE otype = 'P'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Append Root Org Unit's Mgr Name into Description...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CLEAR: mgr_name.&lt;/P&gt;&lt;P&gt;      LOOP AT result_objec_obj WHERE otype = 'P' AND objid = result_tab_obj-objid.&lt;/P&gt;&lt;P&gt;        mgr_name = result_objec_obj-stext.&lt;/P&gt;&lt;P&gt;        CONCATENATE mgr_name ')' INTO mgr_name.&lt;/P&gt;&lt;P&gt;        CONCATENATE '(Mgr:' mgr_name INTO mgr_name&lt;/P&gt;&lt;P&gt;        SEPARATED BY space.&lt;/P&gt;&lt;P&gt;        EXIT.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;      IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;        LOOP AT result_objec_obj WHERE otype = 'O' AND objid = root_objects-objid.&lt;/P&gt;&lt;P&gt;          CONCATENATE result_objec_obj-stext mgr_name INTO result_objec_obj-stext&lt;/P&gt;&lt;P&gt;          SEPARATED BY space.&lt;/P&gt;&lt;P&gt;          MODIFY result_objec_obj. CLEAR result_objec_obj.&lt;/P&gt;&lt;P&gt;        ENDLOOP.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CLEAR: temp1, temp2.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Get references of Chief person...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      LOOP AT result_struc_obj&lt;/P&gt;&lt;P&gt;              WHERE otype =  result_tab_obj-otype&lt;/P&gt;&lt;P&gt;              AND objid = result_tab_obj-objid.&lt;/P&gt;&lt;P&gt;        MOVE-CORRESPONDING result_struc_obj TO  temp1.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Get reference of Root Org.Unit...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      LOOP AT result_struc_obj&lt;/P&gt;&lt;P&gt;              WHERE otype =  root_objects-otype&lt;/P&gt;&lt;P&gt;              AND objid = root_objects-objid.&lt;/P&gt;&lt;P&gt;        MOVE-CORRESPONDING result_struc_obj TO  temp2.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CLEAR : tmp_sytabx .&lt;/P&gt;&lt;P&gt;      LOOP AT result_struc_obj&lt;/P&gt;&lt;P&gt;               WHERE otype =  result_tab_obj-otype&lt;/P&gt;&lt;P&gt;               AND objid = result_tab_obj-objid&lt;/P&gt;&lt;P&gt;               AND pup = temp2-seqnr.&lt;/P&gt;&lt;P&gt;        tmp_sytabx  = sy-tabix.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      LOOP AT result_objec_obj&lt;/P&gt;&lt;P&gt;             WHERE otype =  result_tab_obj-otype&lt;/P&gt;&lt;P&gt;             AND objid = result_tab_obj-objid.&lt;/P&gt;&lt;P&gt;        IF sy-tabix = tmp_sytabx.&lt;/P&gt;&lt;P&gt;          DELETE result_objec_obj.&lt;/P&gt;&lt;P&gt;          EXIT.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      DELETE result_struc_obj&lt;/P&gt;&lt;P&gt;             WHERE otype =  result_tab_obj-otype&lt;/P&gt;&lt;P&gt;             AND objid = result_tab_obj-objid&lt;/P&gt;&lt;P&gt;             AND pup = temp2-seqnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    1. If the value in field STRUCS-PDOWN for object U, which is&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    located above D, corresponds to the value STRUCS-SEQNR for D,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    set the value of U STRUCS-PDOWN to the value of D STRUCS-PNEXT.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Reduce the value of U STRUCS-VCOUNT by 1.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CLEAR: tmp_pnext.&lt;/P&gt;&lt;P&gt;      tmp_pnext = temp1-pup.&lt;/P&gt;&lt;P&gt;      LOOP AT result_struc_obj WHERE seqnr = tmp_pnext.&lt;/P&gt;&lt;P&gt;        result_struc_obj-vcount = result_struc_obj-vcount - 1.&lt;/P&gt;&lt;P&gt;        MODIFY result_struc_obj. CLEAR result_struc_obj.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;      CLEAR: tmp_pnext.&lt;/P&gt;&lt;P&gt;      tmp_pnext = temp1-seqnr.&lt;/P&gt;&lt;P&gt;      LOOP AT result_struc_obj WHERE pdown = tmp_pnext.&lt;/P&gt;&lt;P&gt;        result_struc_obj-pdown = temp1-pnext.&lt;/P&gt;&lt;P&gt;        MODIFY result_struc_obj. CLEAR result_struc_obj.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    2. If an object P exists, for which the value STRUCS-PNEXT corresponds&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    to the value of D STRUCS-SEQNR, set the value of P STRUCS-PNEXT&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    to the value of D STRUCS-PNEXT.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CLEAR: tmp_pnext.&lt;/P&gt;&lt;P&gt;      tmp_pnext = temp1-seqnr.&lt;/P&gt;&lt;P&gt;      LOOP AT result_struc_obj WHERE pnext = tmp_pnext.&lt;/P&gt;&lt;P&gt;        result_struc_obj-pnext = temp1-pnext.&lt;/P&gt;&lt;P&gt;        MODIFY  result_struc_obj. CLEAR result_struc_obj.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    3. If an object N exists, for which the value STRUCS-PREV corresponds to&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    the value of D STRUCS-SEQNR, set the value of N STRUCS-PPREV to the value&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    of D STRUCS-PPREV.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CLEAR: tmp_pnext.&lt;/P&gt;&lt;P&gt;      tmp_pnext = temp1-seqnr.&lt;/P&gt;&lt;P&gt;      LOOP AT result_struc_obj WHERE pprev = tmp_pnext.&lt;/P&gt;&lt;P&gt;        result_struc_obj-pprev = temp1-pprev.&lt;/P&gt;&lt;P&gt;        MODIFY  result_struc_obj. CLEAR result_struc_obj.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;@ start of code - vinay golchha&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Data declarations&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  data : root_orgid type realo.&lt;/P&gt;&lt;P&gt;  DATA : root_mgr_pernr TYPE realo.&lt;/P&gt;&lt;P&gt;  DATA : emp_pernr TYPE realo.&lt;/P&gt;&lt;P&gt;  DATA : mgr_pernr TYPE realo.&lt;/P&gt;&lt;P&gt;  DATA : org_unit_id TYPE realo.&lt;/P&gt;&lt;P&gt;  DATA : pernr_tabix LIKE sy-tabix.&lt;/P&gt;&lt;P&gt;  DATA : struc_tabix LIKE sy-tabix.&lt;/P&gt;&lt;P&gt;  DATA: leading_pos LIKE hrobject OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;  DATA : direct_emp_flag TYPE c VALUE ' '.&lt;/P&gt;&lt;P&gt;  DATA: i1001       LIKE  hri1001 OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;  DATA : root_mgr_pernr1 TYPE sobid.&lt;/P&gt;&lt;P&gt;  DATA : result_objec_obj1 LIKE STANDARD TABLE OF result_objec_obj WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;  DATA : org_seqnr TYPE sseqnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Loop through all the root org units&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  LOOP AT root_objects.&lt;/P&gt;&lt;P&gt;    result_objec_obj1[] = result_objec_obj[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Get the Root Org Unit&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    root_orgid = root_objects-objid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Get the Manager of the Root Org Unit&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'RH_GET_LEADER'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        plvar                     = '01'&lt;/P&gt;&lt;P&gt;        keydate                   = sy-datum&lt;/P&gt;&lt;P&gt;        otype                     = 'O'&lt;/P&gt;&lt;P&gt;        objid                     = root_orgid&lt;/P&gt;&lt;P&gt;      IMPORTING&lt;/P&gt;&lt;P&gt;        leader_id                 = root_mgr_pernr&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        no_leader_found           = 1&lt;/P&gt;&lt;P&gt;        no_leading_position_found = 2&lt;/P&gt;&lt;P&gt;        OTHERS                    = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Looping through the Employees for Root Org Unit&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    LOOP AT result_objec_obj1 WHERE otype = 'P'.&lt;/P&gt;&lt;P&gt;      emp_pernr = result_objec_obj1-objid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Set thye direct employee flag to blank&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      direct_emp_flag = ' '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Get the leading positions&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      REFRESH leading_pos.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'RH_GET_LEADING_POSITION'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          plvar             = '01'&lt;/P&gt;&lt;P&gt;          otype             = 'P'&lt;/P&gt;&lt;P&gt;          sobid             = emp_pernr&lt;/P&gt;&lt;P&gt;        TABLES&lt;/P&gt;&lt;P&gt;          leading_pos       = leading_pos&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          no_lead_pos_found = 1&lt;/P&gt;&lt;P&gt;          OTHERS            = 2.&lt;/P&gt;&lt;P&gt;      IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Loop through the leading positions if there are&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    multiple leading positions&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      LOOP AT leading_pos.&lt;/P&gt;&lt;P&gt;        org_unit_id = leading_pos-objid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Get the Manager&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        REFRESH i1001.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        CALL FUNCTION 'RHOM_READ_RELAT_BUFFERED'&lt;/P&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;P&gt;            otype           = 'S'&lt;/P&gt;&lt;P&gt;            objid           = leading_pos-objid&lt;/P&gt;&lt;P&gt;            plvar           = '01'&lt;/P&gt;&lt;P&gt;            subty           = 'A008'&lt;/P&gt;&lt;P&gt;          TABLES&lt;/P&gt;&lt;P&gt;            i1001           = i1001&lt;/P&gt;&lt;P&gt;          EXCEPTIONS&lt;/P&gt;&lt;P&gt;            no_active_plvar = 1&lt;/P&gt;&lt;P&gt;            OTHERS          = 2.&lt;/P&gt;&lt;P&gt;        IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        root_mgr_pernr1 = root_mgr_pernr.&lt;/P&gt;&lt;P&gt;        READ TABLE i1001 WITH KEY sobid = root_mgr_pernr1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      If manager found set directly reporting flag as 'X'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;          direct_emp_flag = 'X'.&lt;/P&gt;&lt;P&gt;          EXIT.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    If the current Employee manager is NOT equal to Root Org Unit's Manager&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      IF direct_emp_flag = ' '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Get sequence number of org unit&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        READ TABLE result_struc_obj&lt;/P&gt;&lt;P&gt;          WITH KEY otype = root_objects-otype&lt;/P&gt;&lt;P&gt;          objid = root_objects-objid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        org_seqnr = result_struc_obj-seqnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       Remove entry from result_struc_obj and modify the table accordingly&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        CLEAR : temp1, temp2,tmp_sytabx.&lt;/P&gt;&lt;P&gt;        LOOP AT result_struc_obj&lt;/P&gt;&lt;P&gt;                WHERE otype = 'P'&lt;/P&gt;&lt;P&gt;                AND objid = emp_pernr&lt;/P&gt;&lt;P&gt;                AND pup = org_seqnr.&lt;/P&gt;&lt;P&gt;          MOVE-CORRESPONDING result_struc_obj TO temp1.&lt;/P&gt;&lt;P&gt;        ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        LOOP AT result_struc_obj&lt;/P&gt;&lt;P&gt;                 WHERE otype = root_objects-otype&lt;/P&gt;&lt;P&gt;                 AND objid = root_objects-objid.&lt;/P&gt;&lt;P&gt;          MOVE-CORRESPONDING result_struc_obj TO temp2.&lt;/P&gt;&lt;P&gt;        ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        CLEAR struc_tabix.&lt;/P&gt;&lt;P&gt;        LOOP AT result_struc_obj&lt;/P&gt;&lt;P&gt;                WHERE otype = 'P'&lt;/P&gt;&lt;P&gt;                AND objid = emp_pernr&lt;/P&gt;&lt;P&gt;                AND pup = temp2-seqnr.&lt;/P&gt;&lt;P&gt;          struc_tabix = sy-tabix.&lt;/P&gt;&lt;P&gt;        ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        LOOP AT result_objec_obj&lt;/P&gt;&lt;P&gt;          WHERE otype ='P'&lt;/P&gt;&lt;P&gt;          AND objid = emp_pernr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       Delete entry for directly reporting employee&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          IF sy-tabix = struc_tabix.&lt;/P&gt;&lt;P&gt;            DELETE result_objec_obj.&lt;/P&gt;&lt;P&gt;            EXIT.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;        ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        DELETE result_struc_obj&lt;/P&gt;&lt;P&gt;        WHERE otype = 'P'&lt;/P&gt;&lt;P&gt;        AND objid = emp_pernr&lt;/P&gt;&lt;P&gt;        AND pup = temp2-seqnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Delete count of vertically related objects by 1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      if record deleted&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        CLEAR tmp_pnext.&lt;/P&gt;&lt;P&gt;        tmp_pnext = temp1-pup.&lt;/P&gt;&lt;P&gt;        LOOP AT result_struc_obj WHERE seqnr = tmp_pnext.&lt;/P&gt;&lt;P&gt;          result_struc_obj-vcount = result_struc_obj-vcount - 1.&lt;/P&gt;&lt;P&gt;          MODIFY result_struc_obj.&lt;/P&gt;&lt;P&gt;          CLEAR result_struc_obj.&lt;/P&gt;&lt;P&gt;        ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Set the down pointer of the record previous to the&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      deleted one to the next pointer of the deleted one&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        CLEAR tmp_pnext.&lt;/P&gt;&lt;P&gt;        tmp_pnext = temp1-seqnr.&lt;/P&gt;&lt;P&gt;        LOOP AT result_struc_obj WHERE pdown = tmp_pnext.&lt;/P&gt;&lt;P&gt;          result_struc_obj-pdown = temp1-pnext.&lt;/P&gt;&lt;P&gt;          MODIFY result_struc_obj.&lt;/P&gt;&lt;P&gt;          CLEAR result_struc_obj.&lt;/P&gt;&lt;P&gt;        ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Set the next pointer of the record previous to the deleted&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      one to the next pointer of the deleted one&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        CLEAR tmp_pnext.&lt;/P&gt;&lt;P&gt;        tmp_pnext = temp1-seqnr.&lt;/P&gt;&lt;P&gt;        LOOP AT result_struc_obj WHERE pnext = tmp_pnext.&lt;/P&gt;&lt;P&gt;          result_struc_obj-pnext = temp1-pnext.&lt;/P&gt;&lt;P&gt;          MODIFY result_struc_obj.&lt;/P&gt;&lt;P&gt;          CLEAR result_struc_obj.&lt;/P&gt;&lt;P&gt;        ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Set the value of previous pointer&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        CLEAR tmp_pnext.&lt;/P&gt;&lt;P&gt;        tmp_pnext = temp1-seqnr.&lt;/P&gt;&lt;P&gt;        LOOP AT result_struc_obj WHERE pprev = tmp_pnext.&lt;/P&gt;&lt;P&gt;          result_struc_obj-pprev = temp1-pprev.&lt;/P&gt;&lt;P&gt;          MODIFY result_struc_obj.&lt;/P&gt;&lt;P&gt;          CLEAR result_struc_obj.&lt;/P&gt;&lt;P&gt;        ENDLOOP.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;@ End of Code - Vinay Golchha&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH: result_objec, result_struc.&lt;/P&gt;&lt;P&gt;  CLEAR: result_objec, result_struc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  result_objec[] = result_objec_obj[].&lt;/P&gt;&lt;P&gt;  result_struc[] = result_struc_obj[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Sree&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 05 May 2008 09:50:48 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/regarding-abap-hr-code/m-p/3759976#M904616</guid>
      <dc:creator>sreeramkumar_madisetty</dc:creator>
      <dc:date>2008-05-05T09:50:48Z</dc:date>
    </item>
    <item>
      <title>Re: Regarding ABAP-HR Code</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/regarding-abap-hr-code/m-p/3759977#M904617</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;1) &lt;STRONG&gt;DATA: temp1 LIKE result_struc_obj.-&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;   it declares temp1 as a internal table of  result_struc_obj table that means temp1 posses all functionality, attributes of result_struc_obj.&lt;/P&gt;&lt;P&gt;and we are not directly make any changes to database table for that we must have create internal table.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;2)  In the HR ABAP, there are function modules for everything.&lt;/P&gt;&lt;P&gt;like in your code 'RH_GET_LEADER' FM gives manager ID of that person.&lt;/P&gt;&lt;P&gt;If you want to know how this function module works just go to&lt;/P&gt;&lt;P&gt;SE37-&amp;gt;give function module name-&amp;gt;display-&amp;gt; on the Toolbar you will see ' Function module Documentation' option.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;3) IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;sy-subrc 0 means your Function module worked out and get output. otherwise there must be some error.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;4) CLEAR- clears header line of the internal table.&lt;/P&gt;&lt;P&gt;    REFRESH- clears contents or body of the table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;5) LOOP AT root_objects.&lt;/P&gt;&lt;P&gt;       -&lt;/P&gt;&lt;HR originaltext="---------------------------" /&gt;&lt;P&gt;   ENDLOOP.&lt;/P&gt;&lt;P&gt;it will go through each record of the table root_objects. it will help when you want to check each record of the table. we can give any conditon after loop at. on that basis loop will execute.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;6) READ TABLE -&lt;/P&gt;&lt;HR originaltext="---" /&gt;&lt;P&gt; it reads one record of the table at a time.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;7) MOVE-CORRESPONDING - it will move all record to respective fields.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;reward if useful.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 05 May 2008 10:38:44 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/regarding-abap-hr-code/m-p/3759977#M904617</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-05-05T10:38:44Z</dc:date>
    </item>
    <item>
      <title>Re: Regarding ABAP-HR Code</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/regarding-abap-hr-code/m-p/3759978#M904618</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Closed.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 21 Apr 2009 08:50:56 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/regarding-abap-hr-code/m-p/3759978#M904618</guid>
      <dc:creator>sreeramkumar_madisetty</dc:creator>
      <dc:date>2009-04-21T08:50:56Z</dc:date>
    </item>
  </channel>
</rss>

