I am trying to execute SHOP_MATERIAL_ALLOC_API.MODIFY__ over an external Oracle database connection as part of a mobile application. I am able to call many other inventory and shop order APIs. But, this one is giving me the following error. The IFS version is App 7. Any guidance is appreciated.
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at "IFSAPP.CLIENT_SYS", line 31
ORA-06512: at "IFSAPP.SHOP_MATERIAL_ALLOC_API", line 2965
ORA-06512: at line 1
I am executing the API as follows:
sSQL = " BEGIN" & _ " IFSAPP.SHOP_MATERIAL_ALLOC_API.MODIFY__(?,?,?,?,?);" & _ " END;" Call setUpProcIFS(spProc, sSQL) sAttr = "'ISSUE_TO_LOC' || CHR(31) || '10-4-1' || CHR(30) || 'OWNING_VENDOR_NO' || CHR(31) || '' || CHR(30) || 'OWNING_CUSTOMER_NO' || CHR(31) || '' || CHR(30) || ''" spProc.CreateParameter(0, dbVarChar, dbParamOutput, 32000, Null) spProc.CreateParameter(1, dbVarChar, dbParamInput, 32000, sObjId) spProc.CreateParameter(2, dbVarChar, dbParamInput, 32000, sObjVer) spProc.CreateParameter(3, dbVarChar, dbParamInput, 32000, sAttr) spProc.CreateParameter(4, dbVarChar, dbParamInput, 32000, "DO")
I am reading the object ID and object version from the SHOP_MATERIAL_ALLOC table prior to executing the API.
I used the following debug log as an example:
DECLARE
a_ VARCHAR2(32000) := NULL; -- __lsResult
b_ VARCHAR2(32000) := 'AAANRgAASAACgmFAAS'; -- __sObjid
c_ VARCHAR2(32000) := '20250924155409'; -- __lsObjversion
d_ VARCHAR2(32000) := 'ISSUE_TO_LOC' || CHR(31) || '10-4-1' || CHR(30) || 'OWNING_VENDOR_NO' || CHR(31) || '' || CHR(30) || 'OWNING_CUSTOMER_NO' || CHR(31) || '' || CHR(30) || ''; -- __lsAttr
e_ VARCHAR2(32000) := 'DO'; -- __sAction
BEGIN
IFSAPP.SHOP_MATERIAL_ALLOC_API.MODIFY__( a_, b_, c_, d_, e_ );
-------------------------------------------
--- Dbms_Output Section ---
-------------------------------------------
Dbms_Output.Put_Line('a_ = ' || a_);
Dbms_Output.Put_Line('b_ = ' || b_);
Dbms_Output.Put_Line('c_ = ' || c_);
Dbms_Output.Put_Line('d_ = ' || d_);
Dbms_Output.Put_Line('e_ = ' || e_);
-------------------------------------------
END;