Skip to main content

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;

 

 

Hi Paul,
You may get more feedback if you post this in one of the IFS groups (this group is limited to the Alliance application which has it’s own Mobile Edge offering).
Thanks,
Reid