04-25-2006 10:02 AM
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
04-25-2006 10:16 AM
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
04-25-2006 10:16 AM
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