Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

How to know 'parent-child relationship' of equipments

aris_hidalgo
Contributor
0 Kudos

Hello experts,

I am currently having a problem here. How can I know if a certain equipment has a child/subordinate equipemt under it? for example, I typed in the value 000000345534 for the 'ILOAN' field in EQUZ table to get it's EQUNR and HEQUI. Now, where can I know if it has a child equipment under it? for example:

12610 (highest primary)

12611

12612 (subordinate and primary)

12613

Also, I have to display it in the report output like this:

ASSET PARENT DESCRIPTION LOCATION NETBOOK VALUE

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi,

I had developed a code wherein I had a similar scenario.Please refer the same. Will give you an idea.

FORM link.

  SKIP 2.
  ULINE.
  WRITE : / 'Link b/w Transform No and Conn. No' COLOR 6
  INTENSIFIED ON.
  ULINE.

  TABLES:
        iflo.


  INCLUDE <line>.


**Data type declaration

  DATA: BEGIN OF h_iflo_sel OCCURS 0,
            tplnr LIKE iflo-tplnr.
  DATA: END OF h_iflo_sel.

  DATA :  i_iloa1 LIKE TABLE OF iloa WITH HEADER LINE,
          i_iloa2 LIKE TABLE OF iloa WITH HEADER LINE.

  DATA : BEGIN OF t_inet,
          kante LIKE inet-kante,
          eqnach LIKE inet-eqnach,
          END OF t_inet.

  DATA: BEGIN OF h_iflo_tab OCCURS 0.
          INCLUDE STRUCTURE iflo.
  DATA: END OF h_iflo_tab.



*For Final Display.
  DATA : BEGIN OF i_final OCCURS 0,
            data(30) TYPE c,
            desc(40) TYPE c,
          END OF i_final.

  DATA : BEGIN OF i_finalitab OCCURS 0,
            eqvon LIKE inet-eqvon,
            eqnach LIKE inet-eqnach,
            eqtyp LIKE equi-eqtyp,
            eqktx LIKE eqkt-eqktx,
            tplnr LIKE iflo-tplnr,
            pltxt LIKE iflo-pltxt,
            kunum LIKE zconnection-kunum,
            END OF i_finalitab.


  DATA : BEGIN OF i_eqkt OCCURS 0.
          INCLUDE STRUCTURE eqkt.
  DATA : END OF i_eqkt.

  DATA : i_iflo LIKE TABLE OF iflo WITH HEADER LINE,
         i_zconn LIKE TABLE OF zconnection WITH HEADER LINE,
         i_kna1 LIKE TABLE OF kna1 WITH HEADER LINE,
         i_equi LIKE TABLE OF equi WITH HEADER LINE,
         i_inet LIKE TABLE OF inet WITH HEADER LINE.


  DATA : var TYPE i VALUE 2,
         count TYPE i VALUE 0,
         tempcount TYPE i VALUE 0,
         lv_index LIKE sy-tabix,
         flag(5) TYPE c VALUE 'ODD' .

  DATA :  kante LIKE inet-kante,
            eqvon LIKE inet-eqvon,
            eqnach LIKE inet-eqnach.

  DATA: equnr LIKE zconnection-equnr.

*Fetching the transformer no and the Connection no

  SELECT a~kante a~eqvon a~eqnach
          INTO CORRESPONDING FIELDS OF TABLE i_inet
          FROM ( inet AS a
          INNER JOIN zconnection AS b ON a~eqnach = b~equnr )
          WHERE a~eqvon = dy_equnr.


  LOOP AT i_inet.

    MOVE i_inet-eqvon TO i_finalitab-eqvon.
    MOVE i_inet-eqnach TO i_finalitab-eqnach.
    APPEND i_finalitab.
  ENDLOOP.

  LOOP AT i_finalitab.

*Fetching the Functional Location for Connection number
    CALL FUNCTION 'EQUIPMENT_READ'
         EXPORTING
              equi_no = i_finalitab-eqnach
         IMPORTING
              eqkt    = i_eqkt
              iloa    = i_iloa1.

    MOVE i_iloa1-tplnr TO i_finalitab-tplnr.
    MOVE i_eqkt-eqktx TO i_finalitab-eqktx.
    MODIFY i_finalitab.

  ENDLOOP.

* Fetching desc of func location of conn no

  SELECT * FROM iflo
                  INTO TABLE i_iflo
                  FOR ALL ENTRIES IN i_finalitab
                  WHERE tplnr = i_finalitab-tplnr.


  LOOP AT i_finalitab.

    READ TABLE i_iflo WITH KEY tplnr = i_finalitab-tplnr.
    IF sy-subrc = 0 .
      MOVE i_iflo-pltxt TO i_finalitab-pltxt.
      MODIFY i_finalitab.
    ENDIF.
  ENDLOOP.

* Fetching the customer no's for each connection no in Z table

  SELECT   * FROM zconnection
                INTO TABLE i_zconn
                FOR ALL ENTRIES IN i_finalitab
                WHERE equnr = i_finalitab-eqnach.

  LOOP AT i_finalitab.
    lv_index = lv_index + 1.
    READ TABLE i_zconn WITH KEY equnr = i_finalitab-eqnach.
    IF sy-subrc = 0.
      MOVE i_zconn-kunum TO i_finalitab-kunum.
      MODIFY i_finalitab.
    ENDIF.

  ENDLOOP.

*Fetching the equipment category for each conn no

  SELECT * FROM equi
           INTO TABLE i_equi
           FOR ALL ENTRIES IN i_finalitab
           WHERE equnr = i_finalitab-eqnach.

  LOOP AT i_finalitab.

    READ TABLE i_equi WITH KEY equnr = i_finalitab-eqnach.
    IF sy-subrc = 0.
      MOVE i_equi-eqtyp TO i_finalitab-eqtyp.
      MODIFY i_finalitab.
    ENDIF.
  ENDLOOP.



*Fetching the Functional Location for Transformer number

  CALL FUNCTION 'EQUIPMENT_READ'
       EXPORTING
            equi_no = dy_equnr
       IMPORTING
            eqkt    = i_eqkt
            iloa    = i_iloa2.

*For Fetching the description of the func loc. of Transformer Number

  REFRESH i_iflo.
  SELECT SINGLE * FROM iflo
                  INTO i_iflo
                  WHERE tplnr = i_iloa2-tplnr.

*Moving into the final internal table .

  MOVE dy_equnr TO i_final-data.
  MOVE i_eqkt-eqktx TO i_final-desc.
  APPEND i_final.

  MOVE i_iloa2-tplnr TO i_final-data.
  MOVE i_iflo-pltxt TO i_final-desc.
  APPEND i_final.

*For finding the superior functional location.

  REFRESH h_iflo_sel.

  MOVE i_iloa2-tplnr TO h_iflo_sel-tplnr.
  APPEND h_iflo_sel.

*Finding the Superior Func. Location until it reaches the top.

  h_iflo_tab-tplma = '1'.

  DO 100 TIMES.

    IF h_iflo_tab-tplma <> ' '.

      REFRESH h_iflo_tab.

      CALL FUNCTION 'FUNC_LOCATION_ARRAY'
           EXPORTING
                selfield     = 'TPLNR'
                spras        = sy-langu
                tabstructure = 'IFLO'
           TABLES
                iflo_sel     = h_iflo_sel
                iflo_tab     = h_iflo_tab.

      IF h_iflo_tab-tplma <> ' '.
*To find the above func .location
        REFRESH h_iflo_sel.
        MOVE h_iflo_tab-tplma TO h_iflo_sel-tplnr.
        APPEND h_iflo_sel.

*For Fetching the description of the func loc. of Transformer Number

        REFRESH i_iflo.
        SELECT SINGLE * FROM iflo
                        INTO i_iflo
                        WHERE tplnr =  h_iflo_tab-tplma.

*Moving the values into the final internal table

        MOVE h_iflo_tab-tplma TO i_final-data.
        MOVE i_iflo-pltxt TO i_final-desc.
        APPEND i_final.

      ENDIF.

    ELSE.
      EXIT.

    ENDIF.

  ENDDO.

*Displaying in a tree structure
  IF NOT i_final[] IS INITIAL.
    DESCRIBE TABLE i_final LINES count.
    tempcount = count.

    DO tempcount TIMES.
      READ TABLE i_final INDEX count.
      count = count - 1.

      WRITE: i_final-data COLOR 4 INTENSIFIED ON.
      WRITE: i_final-desc.

      IF count <> 0.
        WRITE:/var sy-vline NO-GAP.
        ULINE :/var(8).
        var = var + 9.

      ENDIF.
    ENDDO.

  ENDIF.

  SKIP.

* Displaying the Customer no's.

  WRITE : /'Transformer no'COLOR 7 INTENSIFIED ON,18(18)
        'Connection no'COLOR 7 INTENSIFIED ON,37(3)'Cat'COLOR 7
        INTENSIFIED ON,41(40)'Connection desc'COLOR 7 INTENSIFIED ON,
        81(42) 'Connection Object'COLOR 7 INTENSIFIED ON,123(40)
       'Conn Obj Desc'COLOR 7 INTENSIFIED ON,
        163(10)'Customer'COLOR 7 INTENSIFIED ON.

  IF NOT i_finalitab[]  IS INITIAL.
    DESCRIBE TABLE i_finalitab LINES count.
    tempcount = count.

    DO tempcount TIMES.
      READ TABLE i_finalitab INDEX count.
      count = count - 1.
      SKIP.

  WRITE: / i_finalitab-eqvon COLOR 4 INTENSIFIED ON, i_finalitab-eqnach
           COLOR 5 INTENSIFIED ON,i_finalitab-eqtyp COLOR 4 INTENSIFIED
                     ON, i_finalitab-eqktx, i_finalitab-tplnr
    ,i_finalitab-pltxt
    ,i_finalitab-kunum.

    ENDDO.

  ENDIF.
ENDFORM.

Regards,

Gayathri

1 REPLY 1

Former Member
0 Kudos

Hi,

I had developed a code wherein I had a similar scenario.Please refer the same. Will give you an idea.

FORM link.

  SKIP 2.
  ULINE.
  WRITE : / 'Link b/w Transform No and Conn. No' COLOR 6
  INTENSIFIED ON.
  ULINE.

  TABLES:
        iflo.


  INCLUDE <line>.


**Data type declaration

  DATA: BEGIN OF h_iflo_sel OCCURS 0,
            tplnr LIKE iflo-tplnr.
  DATA: END OF h_iflo_sel.

  DATA :  i_iloa1 LIKE TABLE OF iloa WITH HEADER LINE,
          i_iloa2 LIKE TABLE OF iloa WITH HEADER LINE.

  DATA : BEGIN OF t_inet,
          kante LIKE inet-kante,
          eqnach LIKE inet-eqnach,
          END OF t_inet.

  DATA: BEGIN OF h_iflo_tab OCCURS 0.
          INCLUDE STRUCTURE iflo.
  DATA: END OF h_iflo_tab.



*For Final Display.
  DATA : BEGIN OF i_final OCCURS 0,
            data(30) TYPE c,
            desc(40) TYPE c,
          END OF i_final.

  DATA : BEGIN OF i_finalitab OCCURS 0,
            eqvon LIKE inet-eqvon,
            eqnach LIKE inet-eqnach,
            eqtyp LIKE equi-eqtyp,
            eqktx LIKE eqkt-eqktx,
            tplnr LIKE iflo-tplnr,
            pltxt LIKE iflo-pltxt,
            kunum LIKE zconnection-kunum,
            END OF i_finalitab.


  DATA : BEGIN OF i_eqkt OCCURS 0.
          INCLUDE STRUCTURE eqkt.
  DATA : END OF i_eqkt.

  DATA : i_iflo LIKE TABLE OF iflo WITH HEADER LINE,
         i_zconn LIKE TABLE OF zconnection WITH HEADER LINE,
         i_kna1 LIKE TABLE OF kna1 WITH HEADER LINE,
         i_equi LIKE TABLE OF equi WITH HEADER LINE,
         i_inet LIKE TABLE OF inet WITH HEADER LINE.


  DATA : var TYPE i VALUE 2,
         count TYPE i VALUE 0,
         tempcount TYPE i VALUE 0,
         lv_index LIKE sy-tabix,
         flag(5) TYPE c VALUE 'ODD' .

  DATA :  kante LIKE inet-kante,
            eqvon LIKE inet-eqvon,
            eqnach LIKE inet-eqnach.

  DATA: equnr LIKE zconnection-equnr.

*Fetching the transformer no and the Connection no

  SELECT a~kante a~eqvon a~eqnach
          INTO CORRESPONDING FIELDS OF TABLE i_inet
          FROM ( inet AS a
          INNER JOIN zconnection AS b ON a~eqnach = b~equnr )
          WHERE a~eqvon = dy_equnr.


  LOOP AT i_inet.

    MOVE i_inet-eqvon TO i_finalitab-eqvon.
    MOVE i_inet-eqnach TO i_finalitab-eqnach.
    APPEND i_finalitab.
  ENDLOOP.

  LOOP AT i_finalitab.

*Fetching the Functional Location for Connection number
    CALL FUNCTION 'EQUIPMENT_READ'
         EXPORTING
              equi_no = i_finalitab-eqnach
         IMPORTING
              eqkt    = i_eqkt
              iloa    = i_iloa1.

    MOVE i_iloa1-tplnr TO i_finalitab-tplnr.
    MOVE i_eqkt-eqktx TO i_finalitab-eqktx.
    MODIFY i_finalitab.

  ENDLOOP.

* Fetching desc of func location of conn no

  SELECT * FROM iflo
                  INTO TABLE i_iflo
                  FOR ALL ENTRIES IN i_finalitab
                  WHERE tplnr = i_finalitab-tplnr.


  LOOP AT i_finalitab.

    READ TABLE i_iflo WITH KEY tplnr = i_finalitab-tplnr.
    IF sy-subrc = 0 .
      MOVE i_iflo-pltxt TO i_finalitab-pltxt.
      MODIFY i_finalitab.
    ENDIF.
  ENDLOOP.

* Fetching the customer no's for each connection no in Z table

  SELECT   * FROM zconnection
                INTO TABLE i_zconn
                FOR ALL ENTRIES IN i_finalitab
                WHERE equnr = i_finalitab-eqnach.

  LOOP AT i_finalitab.
    lv_index = lv_index + 1.
    READ TABLE i_zconn WITH KEY equnr = i_finalitab-eqnach.
    IF sy-subrc = 0.
      MOVE i_zconn-kunum TO i_finalitab-kunum.
      MODIFY i_finalitab.
    ENDIF.

  ENDLOOP.

*Fetching the equipment category for each conn no

  SELECT * FROM equi
           INTO TABLE i_equi
           FOR ALL ENTRIES IN i_finalitab
           WHERE equnr = i_finalitab-eqnach.

  LOOP AT i_finalitab.

    READ TABLE i_equi WITH KEY equnr = i_finalitab-eqnach.
    IF sy-subrc = 0.
      MOVE i_equi-eqtyp TO i_finalitab-eqtyp.
      MODIFY i_finalitab.
    ENDIF.
  ENDLOOP.



*Fetching the Functional Location for Transformer number

  CALL FUNCTION 'EQUIPMENT_READ'
       EXPORTING
            equi_no = dy_equnr
       IMPORTING
            eqkt    = i_eqkt
            iloa    = i_iloa2.

*For Fetching the description of the func loc. of Transformer Number

  REFRESH i_iflo.
  SELECT SINGLE * FROM iflo
                  INTO i_iflo
                  WHERE tplnr = i_iloa2-tplnr.

*Moving into the final internal table .

  MOVE dy_equnr TO i_final-data.
  MOVE i_eqkt-eqktx TO i_final-desc.
  APPEND i_final.

  MOVE i_iloa2-tplnr TO i_final-data.
  MOVE i_iflo-pltxt TO i_final-desc.
  APPEND i_final.

*For finding the superior functional location.

  REFRESH h_iflo_sel.

  MOVE i_iloa2-tplnr TO h_iflo_sel-tplnr.
  APPEND h_iflo_sel.

*Finding the Superior Func. Location until it reaches the top.

  h_iflo_tab-tplma = '1'.

  DO 100 TIMES.

    IF h_iflo_tab-tplma <> ' '.

      REFRESH h_iflo_tab.

      CALL FUNCTION 'FUNC_LOCATION_ARRAY'
           EXPORTING
                selfield     = 'TPLNR'
                spras        = sy-langu
                tabstructure = 'IFLO'
           TABLES
                iflo_sel     = h_iflo_sel
                iflo_tab     = h_iflo_tab.

      IF h_iflo_tab-tplma <> ' '.
*To find the above func .location
        REFRESH h_iflo_sel.
        MOVE h_iflo_tab-tplma TO h_iflo_sel-tplnr.
        APPEND h_iflo_sel.

*For Fetching the description of the func loc. of Transformer Number

        REFRESH i_iflo.
        SELECT SINGLE * FROM iflo
                        INTO i_iflo
                        WHERE tplnr =  h_iflo_tab-tplma.

*Moving the values into the final internal table

        MOVE h_iflo_tab-tplma TO i_final-data.
        MOVE i_iflo-pltxt TO i_final-desc.
        APPEND i_final.

      ENDIF.

    ELSE.
      EXIT.

    ENDIF.

  ENDDO.

*Displaying in a tree structure
  IF NOT i_final[] IS INITIAL.
    DESCRIBE TABLE i_final LINES count.
    tempcount = count.

    DO tempcount TIMES.
      READ TABLE i_final INDEX count.
      count = count - 1.

      WRITE: i_final-data COLOR 4 INTENSIFIED ON.
      WRITE: i_final-desc.

      IF count <> 0.
        WRITE:/var sy-vline NO-GAP.
        ULINE :/var(8).
        var = var + 9.

      ENDIF.
    ENDDO.

  ENDIF.

  SKIP.

* Displaying the Customer no's.

  WRITE : /'Transformer no'COLOR 7 INTENSIFIED ON,18(18)
        'Connection no'COLOR 7 INTENSIFIED ON,37(3)'Cat'COLOR 7
        INTENSIFIED ON,41(40)'Connection desc'COLOR 7 INTENSIFIED ON,
        81(42) 'Connection Object'COLOR 7 INTENSIFIED ON,123(40)
       'Conn Obj Desc'COLOR 7 INTENSIFIED ON,
        163(10)'Customer'COLOR 7 INTENSIFIED ON.

  IF NOT i_finalitab[]  IS INITIAL.
    DESCRIBE TABLE i_finalitab LINES count.
    tempcount = count.

    DO tempcount TIMES.
      READ TABLE i_finalitab INDEX count.
      count = count - 1.
      SKIP.

  WRITE: / i_finalitab-eqvon COLOR 4 INTENSIFIED ON, i_finalitab-eqnach
           COLOR 5 INTENSIFIED ON,i_finalitab-eqtyp COLOR 4 INTENSIFIED
                     ON, i_finalitab-eqktx, i_finalitab-tplnr
    ,i_finalitab-pltxt
    ,i_finalitab-kunum.

    ENDDO.

  ENDIF.
ENDFORM.

Regards,

Gayathri