Use B3100260 to write the FIRST hold code and update F4201, then for subsequent hold code just call B4001100
Did you check it all the way through? It checks stuff to make sure it's valid. Did you check to see if hold code test lives on F42008 for the MCU of your order? (F42008 Order Hold Constants)
I just tested this for you by calling B4001100 Write Hold Code directly, not via B3100260, it works!!
As long as the code lives on F42008 for that MCU, you seem to be ok and can add more than one to F4209. Even at Line or order level
I mapped in the following (all from F42008) and got 2 hold codes for the order, even 3 on another test to make sure
Library: COPBASE
Function: B4001100.WriteHoldCode (F4209 Write Hold Codes)
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Index Alias Parm Name Type Value In Value Out
----------------------------------------------------------------------------------------------------------------------------------------------------------------
1 MCU szBranchPlant String(12) 211 211
2 HOLD szHoldCode String(2) CH CH
3 AN8 mnSupplierNumber Math Numeric(8) 167165 167165
4 TRDJ jdTransactionDate Date(6)
5 DRQJ jdRequestedDate Date(6)
6 PDDJ jdPromisedDate Date(6)
7 SFXO szOrderSuffix String(3)
8 DCTO szDocumentType String(2) SN SN
9 DOCO mnDocumentNumber Math Numeric(8) 1003 1003
10 KCOO szKeyCompany String(5) 00211 00211
11 LNID mnOrderLineNumber Math Numeric(6)
12 ITM mnShortItemNumber Math Numeric(8)
13 LITM szLongItemNumber String(25)
14 AITM szThirdItemNumber String(25)
15 CTYP szHoldCodeType String(2)
16 RPER mnResponsiblePerson Math Numeric(8) 290367 290367
17 DLNID mnDistributionLineNumber Math Numeric(6)
18 PA8 mnParentAddressNumber Math Numeric(8)
19 SHAN mnShipToAddressNumber Math Numeric(8)