Cost codes can be implemented however you want. We typically have cost codes for scopes of work… Branch Raceway, Branch Conductors, Branch MC, Feeders, Switch Gear, FA, Lighting, Lighting Control, Generator, Generator Control… and so on. You can set up the code codes as you see fit, it’s just hard to get meaningful data when you use too task specific (1-hole straps cost code) or too task broad ( electrical work cost code) cost codes.
You can absolutely have separate cost codes for different raceway types if that’s the data you want to track. Just be mindful in interpreting the data. Size of raceway, bends, set screw, compression, threaded, thread less, elevation of installation, access, and so on should be considered.