If you are using a geodatabase, you can use Attribute Assistant to do this if the sequential number is assigned regardless of the prefix letters, i.e., you do not restart at 1 for each set of prefix letters, but simply append the prefix letters to a number that is sequential and unique for each record in the entire table. Attribute Assistant is available as part of the Local Government Information Model which you can download with the Address Data Management add-on (press the Open button to get the download). This link is for the 10.2 version, but you need to download the version that matches your ArcGIS version.
The Attribute Assistant DynamicValue table contains the rules that manage updates of your data during an edit session. For example, rules can be triggered by the Create event, which applies both to features you draw or the newest split off feature(s) created by a split event for lines or polygons. Rules could also be triggered separately by attribute modifications, geometry modifications, or manual requests, or any combination of the four trigger events.
You could use the Generate_ID method rule in response to a Create event to read the next sequential number and assign it to the field from the GenerateID table. The GenerateID table must be present in your map and unversioned if it an SDE table.
Then Attribute Assistant could follow that during a Create event by using the Expression Method rule to apply a vb script expression that appends a prefix to the UniqueID field based on another field that contains the 2 letters, i.e., [PREFIX] & [UNIQUEID]. If the 2 letters are interpreted from other values (i.e. "Street Light" in one field equals an "SL" prefix), then the expression would only work if the translation can be contained in a 254 character vb script conditional expression. For example:
IIF([CATEGORY] = "Street Light", "SL", IIF([CATEGORY] = "Utility Pole", "UP", "")) & [UNIQUEID]
If you have too many category translations it is best to add a field with the 2 letter version of the category and use the COPY_LINKED_RECORD method to populate it from a Lookup table that does the translation prior to running the EXPRESSION.
Once the DynamicValue table rules are set up and you have added the DynamicValue table, GenerateID table and any lookup table to your map, all you have to do is edit within an edit session and the ID will be generated if you use a template that assigns the category value. If you always manually assign the category value you can trigger an Expression during a Modify Attributes event to test if the prefix has already been applied to the unique number and assign it if it hasn't been. An expression like the following should work if all your prefixes are 2 letters long:
IIF([PREFIX] = LEFT([UNIQUEID], 2), [UNIQUEID], IIF(ISNUMBER(LEFT([UNIQUEID], 2)), [PREFIX] & [UNIQUEID], [PREFIX] & LEFT([UNIQUEID], LEN([UNIQUEID]) - 2))
Anyway, Attribute Assistant is a powerful way to automate attribute updates that should always remain in synch with the edits you make to your data and that occur in a logical order in response to editor events.