I saw my post disappear to page 3 and started to loose hope lol. Thanks for persevering with me eliotcole, I really do appreciate it.
Well it works, you have no idea how happy it made me to see those abbreviations, I've spent so much time googling/watching youtube videos on how to do that!

The first example is missing a field (Variation) so the "Status" is prompting for more info but the 2nd example is completed and "Status" has changed to "In Progress" (this will change to "Completed" once I finish the rest of the flow).
My code is slightly different to your example, are the extra "" quotations needed or was that just an example for more choices?

Here is my code, your example was really easy to follow and easy for me to update as needed.
=CONCATENATE(
IF(Location="CLocation","C-",
IF(Location="GLocation","G-",
IF(Location="PLocation","P-",))),
IF(DeviceType="Desktop","DT-",
IF(DeviceType="Laptop","LT-",
IF(DeviceType="Shared","SH-",
IF(DeviceType="Kiosk","KS-",
IF(DeviceType="Phone","PH-",
IF(DeviceType="Tablet","TB-",
IF(DeviceType="VM","VM",))))))),
IF(UserType="Lecturer","LEC-",
IF(UserType="Support","SUP-",
IF(UserType="Student","STU-",))),
IF(Department="Business","BUSI-",
IF(Department="Computing","COMP-",
IF(Department="Design","DESI-",
IF(Department="Engineering","ENGI-",
IF(Department="Hospitality","HOSP-",
IF(Department="HR","HR-",
IF(Department="Finance","FINA-",))))))),
IF(Variation="1","1-",
IF(Variation="2","2-",
IF(Variation="3","3-",
IF(Variation="4","4-",)))),
IF(Environment="Production","PRD",
IF(Environment="Canary","CAN",
IF(Environment="Test","TST",))),
)
So if all looks well, I will go and setup a 2nd list and link them as you suggested.
Just one more question, you mentioned at the end of your post that it could cause issues if somebody makes two changes, I dont think I mentioned this but my status column in the SPO list has the following formula:
=IF(OR(ISBLANK(Location),
ISBLANK(DeviceType),
ISBLANK(UserType),
ISBLANK(Department),
ISBLANK(Variation),
ISBLANK(Environment)),
"Info Required","In Progress")
Then my Flow has a trigger condition:
@equals(triggerBody()?['Status'],'In Progress')
@not(equals(triggerBody()?['Status'],'Info Required'))
@not(equals(triggerBody()?['Status'],'null'))
and finally
I filter the "Get Items" step to only include "In Progress"

Would that help any potential issues with multiple changes being recorded?