Karen,

 

I agree, but a possibility is that you create a complete BOM, using the
partial definitions.

The only thing you have to take care of is that this complete BOM is
recreated, when something has changed.

The end result in this situation could be:

 

As always there are 100 possible solutions, of which 80 are good enough, 18
are stupid and the trick is to find one of the two brilliant solutions

I expect this one belongs to the 80 good enoughs

 

I will think it over when I am asleep (it's 23:00 in Holland)

 

Tony

 

 

From: [email protected] [mailto:[email protected]] On Behalf Of
[email protected]
Sent: donderdag 15 maart 2012 21:17
To: RBASE-L Mailing List
Subject: [RBASE-L] - Re: Exploding BOM

 

Tony:  Took me a while to figure out what your code does, but now I
understand it.  Quite clever!!
I'm not sure I can assign a "level" to each stage of my BOM, though, without
someone having to do alot of research into the parts.

Right now, they know that Part 100 is composed of parts 200 and 201 and
that's all they would have to type in.  They do not have to type in that
part 200 is composed of 300 and 301 as part of the hierarchy of part 100,
and I wouldn't want them to have to do that.   Somewhere along the line they
had already typed in that part 200 is composed of 300 and 301, but I
wouldn't want that redundency repeated as part of the data for part 100.
I'm hoping that made sense.  Part 200 is a level one, with 300 and 301 being
level two of that part.   But part 200 would also be level two of part 100.

Discussing the opinions so far (and sharing those interesting links from
Ben) with the consultant and the client, the client said "screw it, just
figure on 3 levels and be done with it".   Easy for him to say now because
he has only one level at this point and doesn't actually foresee it going
into "components of components"  into the future.   So although I will read
further responses, and implement new code if it's easy enough to do, I got
permission to do 3 nested cursors and I'm cool with that!

Karen


In a message dated 3/15/2012 2:00:11 PM Central Daylight Time,
[email protected] writes: 



Suppose you have the table (In my example I am talking about a Project
table, which contains subprojects, sub-subprojects and so on)



PJT_Project



Columns:



PJT_ID                   Primary key
PJT_ID_refer_to       Refers to superior project (foreign key)
PJT_Level               Level of the project



The level is essential, because then you are able to select all rows of the
same level in the BOM
The only thing you need to do is assign the right level to the row, when it
is added to the BOM

The code then looks like below, where T_PJT_PROJECT is a temp table, where
PJT_Level is a column in this temp table :


  APPEND PJT_PROJECT TO T_PJT_PROJECT+
  WHERE PJT_ID = .V_PJT_ID

  SET VAR VSP_PJT_level INTEGER = (.V_PJT_level)

n  To enforce the loop is performed at least once

  SET VAR VSP_PJT_ID_ATL INTEGER = 100

  WHILE VSP_PJT_ID_ATL >0 THEN

    -- loop to append the the rows

    SET ERROR MESSAGE 705 OFF

    DROP CURSOR C10

    SET ERROR MESSAGE 705 ON

    DECLARE C10 CURSOR FOR SELECT +

    PJT_ID  +

    FROM T_PJT_PROJECT  +

    WHERE PJT_level = .VSP_PJT_level

    OPEN C10

    FETCH C10 INTO VSP_PJT_ID INDICATOR I1

    WHILE SQLCODE <>100 THEN

      APPEND PJT_PROJECT TO T T_PJT_PROJECT +

      WHERE PJT_ID_REFER_TO = .VSP_PJT_ID

      FETCH C10 INTO VSP_PJT_ID INDICATOR I1

    ENDWHILE

    -- cursor c10

    DROP CURSOR C10

    SET VAR VSP_PJT_ID_ATL INTEGER = 0

    SET VAR VSP_PJT_level = (.VSP_PJT_level + 1)

    SELECT COUNT(PJT_ID) INTO VSP_PJT_ID_ATL INDICATOR I1 +

    FROM T_PJT_PROJECT +

    WHERE PJT_level = .VSP_PJT_level

  ENDWHILE



In this way the number of levels is unlimited, the created temp table can be
used to do calculate the number of parts needed and administer it in your
system

 

Reply via email to