现在的位置: 首页 > 综合 > 正文

Find Error–Print Customer Order Invoices

2014年01月09日 ⁄ 综合 ⁄ 共 1476字 ⁄ 字号 评论关闭

问题提出:
      近日user在做 Print Customer Order Invoices出现错误,错误信息为:
Error [Oracle Error 06502: PL/SQL: numeric or value error: character string buffer too small] in report method [CUSTOMER_ORDER_COLL_IVC_RPI.Report_Collective_Invoice]                    ORA-20105: Report.REPRUNERR

问题分析:
    1) 初步根据错误信息应该是某个栏位的字符串长度超长引起;
    2) 跟踪Customer_Order_Inv_Head_API.Print_Invoices过程,至type_generic_address_api.get_address_form返回值为:
3Ma-203,Shihwa Industrial Complex,1374-2 Jungwang-Dong,Shiheung-cityKYUNGKI-DO 429-854 - KR - KOREA, REPUBLIC OF( 一客户地址 )
    3) 出错错误在address_presentation_api.format_to_line过程内;
    4) 最终的原因在于此过程内的address_rec_      Address_Rec_Type;的记录类型为
TYPE Address_Rec_Type IS RECORD
   (address1       VARCHAR2(100),
    address2       VARCHAR2(100),
    address3       VARCHAR2(100),
    address4       VARCHAR2(100),
    address5       VARCHAR2(100),
    address6       VARCHAR2(100));
    5) 最终答案出来了:若客户地址长度超过100,此处肯定会报错。

问题解决:
    1) 初步的解决方法是地址尽量避免100字符串长度;
    2) 方法一不是最好的方法,因目前系统限定100字符串长度,暂时不修改,后续再视状况修改

问题总结:
    一个小小的地址,也会造成BUG,IFS的客户地址发现的BUG是蛮多的,总感觉这个地方用的不是很放心,比较烦的是2K4地址不能输入回车换行,后续再了解此相关的代码,再来修改,以便使用正常。

PS:
       1)  IFS版本为2K4/好像2K1下地址这块还好用;
       2) 20061101也写过一文,错误类型和地方与此一样,原文地址:
http://blog.csdn.net/foreveryday007/archive/2006/11/01/1360738.aspx

                                                                              by foreveryday007  20080226
                                                                             心有多大,宇宙就有多大。
                                                                             http://blog.csdn.net/foreveryday007

【上篇】
【下篇】

抱歉!评论已关闭.