2010年3月29日星期一

SQL Loader fichier CTL 不可理解的ORA-01722: Nombre non valide

Loader文件如下:

LOAD DATA
APPEND
INTO TABLE SE_KN_HEADERS
FIELDS TERMINATED BY ';'
(
NOKN,
NOEXP,
MODEXP,
LOCATION,
COUNTRY,
IATA_CODE,
AIRPORT,
AWB_NUMBER,
FLIGHT,
DEPART_DATE "to_date(:DEPART_DATE,'DDMMYYYY')",
DEPART_TIME "to_date(:DEPART_TIME,'HH24MI')",
ARR_DATE "to_date(:ARR_DATE,'DDMMYYYY')",
ARR_TIME "to_date(:ARR_TIME,'HH24MI')",
INVOICE_NUM,
INVOICE_AMOUNT "to_number(:INVOICE_AMOUNT,'9999999999.99')",
CURRENCY,
INVOICE_DATE "to_date(:INVOICE_DATE,'DDMMYYYY')",
POD_DATE "to_date(:POD_DATE,'DDMMYYYY')",
POD_TIME "to_date(:POD_TIME,'HH24MI')",
POD_SIGN,
SHIPMENT_WEIGHT,
NUMLOT "to_number(:NUMLOT,'99999999')"
)

测试的输入文件如下:

“123456;CCH001;ME;Marseille;France;IATA_CCH;MP2;AWB_CCH;F0123;29032010;1157;29032010;1800;CCH-INV-001;90;EUR;29032010;30032010;0900;SIGNE_CCH;SHIPMENT_CCH;100



在Oracle中运行后程序以warning结束,错误信息如下:

Enregistrement 1 : Rejeté - Erreur sur table "SE"."SE_KN_HEADERS", colonne NUMLOT. ORA-01722: Nombre non valide

分析:
文本文件中的NUMLOT一列是100,明明是Nombre,为什么会显示Nombre non valide呢?
问题在于csv文件中看不到的最后一个字符:回车。
文本中有两行,一行数据,另外一个是空行。就是这个空行和第一行最后一列里的数据连了起来,导致loader不能正确识别数字。
另外,如果分割符标错了的话(应该用‘;’分割,结果在某一数字列后用了‘,’,于是数字列就和后边的列合并了),一样也会出现这样的错误。

2010年3月26日星期五

Vérification des réceptions/expéditions pour une commande en PL/SQL dans Oracle applications

Pour vérifier les réceptions:

SELECT mtl.transaction_date DATE_MVT,
mtl.transaction_quantity QTE_RECUE,
rsh.receipt_num "Receipt",
po_h.segment1 "PO"
FROM rcv_transactions rcv,
po_distributions_all po_pod,
po_lines_all po_l,
po_headers_all po_h,
rcv_shipment_headers rsh,
mtl_material_transactions mtl
WHERE 1=1
AND rcv.po_line_id = po_pod.po_line_id
AND rcv.po_header_id = po_pod.po_header_id
AND po_pod.po_line_id = po_l.po_line_id
AND po_pod.po_header_id = po_l.po_header_id
AND mtl.rcv_transaction_id = rcv.transaction_id
AND po_l.org_id = po_h.org_id
AND po_l.po_header_id = po_h.po_header_id
AND rcv.shipment_header_id = rsh.shipment_header_id
AND po_h.segment1 = '99750'; -- PO to check

Pour vérifier les expéditions (requête spécifique qui n'est utilisable que chez un client ;-)):

SELECT sel.*
FROM se_exped_lines sel, po_lines_all pla, po_headers_all pha
WHERE sel.cmde_line_num = pla.po_line_id
AND pla.po_header_id = pha.po_header_id
AND pha.segment1 = '102575'; -- Numéro de commande

2010年3月24日星期三

Oracle Applications中经常用到的FNDLOAD指令

1 - Jeu de valeur / Value Set

Download:
FNDLOAD apps/apps O Y DOWNLOAD $FND_TOP/patch/115/import/afffload.lct CHA-ICS-XXXX.ldt VALUE_SET FLEX_VALUE_SET_NAME="CHA-ICS-XXXX"

Upload:
FNDLOAD apps/apps O Y UPLOAD $FND_TOP/patch/115/import/afffload.lct CHA-ICS-XXXX.ldt

2 - Champs Utilisateurs Flexibles / Descriptive Flex field

Download:
FNDLOAD apps/apps 0 Y DOWNLOAD $FND_TOP/patch/115/import/afffload.lct SE_DFF_HR_LOCATIONS.ldt DESC_FLEX APPLICATION_SHORT_NAME=PER DESCRIPTIVE_FLEXFIELD_NAME='HR_LOCATIONS'

APPLICATION_SHORT_NAME 和DESCRIPTIVE_FLEXFIELD_NAME都可以在设置界面的Diagnostic->Examin里找到。

Upload:
FNDLOAD apps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/afffload.lct SE_DFF_HR_LOCATIONS.ldt

3 - Traitement simultané / Concurrent program

Download:
FNDLOAD apps/apps 0 Y DOWNLOAD $FND_TOP/patch/115/import/afcpprog.lct SE_XXXX.ldt PROGRAM CONCURRENT_PROGRAM_NAME='SE_XXXX

Upload:
FNDLOAD apps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/afcpprog.lct SE_XXXX.ldt

4 - Jeu de traitements / Request Sets

Download:
FNDLOAD apps/apps O Y DOWNLOAD $FND_TOP/patch/115/import/afcprset.lct SE_XXXX.ldt REQ_SET REQUEST_SET_NAME='SE_XXXX'

Upload:
FNDLOAD apps/apps O Y UPLOAD $FND_TOP/patch/115/import/afcprset.lct SE_XXXX.ldt

5 - Lien dans jeu de traitements / Request Sets Link

Download:
FNDLOAD apps/apps O Y DOWNLOAD $FND_TOP/patch/115/import/afcprset.lct SE_XXXX_LINK.ldt REQ_SET_LINKS REQUEST_SET_NAME='SE_XXXX'

Upload:
FNDLOAD apps/apps O Y UPLOAD $FND_TOP/patch/115/import/afcprset.lct SE_XXXX_LINK.ldt

6- Groupe de traitement / Request Group

Download:
FNDLOAD apps/apps O Y DOWNLOAD $FND_TOP/patch/115/import/afcpreqg.lct All_Reports.ldt REQUEST_GROUP REQUEST_GROUP_NAME="All Reports" APPLICATION_SHORT_NAME="PO"

下载之后,所有All Reports Group和Oracle Purchasing Application的concurrent request都会被下载下来。如果希望将所有requests全部传到新的base上的话,直接上传即可。
若希望只上传某一个request,则需要打开ldt文件,将其它的request删除,只保留需要上传的request。

Upload:
FNDLOAD apps/apps O Y UPLOAD $FND_TOP/patch/115/import/afcpreqg.lct All_Reports.ldt

2010年3月5日星期五

ORA-00960: nom de colonne ambigu dans liste de sélection 解决办法

程序报错:ORA-00960: nom de colonne ambigu dans liste de sélection

原因:

这是因为在source中使用了类似于select A,B,C,A from TEST之类的语句。Oracle不允许在select里出现两次同一列的名称。

在这种情况下,只需要为第二次呼叫的列名添加一个alias就可以了:select A,B,C,A “D” from TEST

Input truncated to * characters 解决办法

"Input truncated to 5 characters" s'affiche dans le fichier de sortie du concurrent programme.

Cause :
Dans le fichier exécutable sql, à la fin juste après "/" , ajouter un retour chariot, supprimer les espaces inutiles. 在“/”后边如果不是紧接回车的话 就会出现这个信息,不是很mechant,但放到结果里很不好看。