tag:blogger.com,1999:blog-10610626028677091752024-02-08T07:05:24.348-08:00Oracle E-Business Suite号航班Bonjour, ici votre capitaine Chuan CHEN, bienvenue à bord de ce vol OeBS à destination de La Réussite. Il est très exactement sysdate (heure locale), la température au sol est de &V_TEMPERATURE, notre temps de vol est estimé à &V_TEMPS... et le temps sur notre destination La Réussite est agréable avec quelques nuages. Au nom de tout l'équipage, je vous souhaite un agréable voyage.ccchuanhttp://www.blogger.com/profile/12412031470006761145noreply@blogger.comBlogger20125tag:blogger.com,1999:blog-1061062602867709175.post-32225118715765184982011-07-12T06:53:00.000-07:002011-07-12T07:23:13.385-07:00Script to control sequence assignment // Script pour vérifier les affectations des séquences dans Oracle applicationsSELECT distinct fds.name,fds.creation_date, fu.user_name, fdsc.name "Category",fda.method_code<br />FROM FND_DOC_SEQUENCE_ASSIGNMENTS FDA<br /> ,FND_DOCUMENT_SEQUENCES FDS<br /> , fnd_doc_sequence_categories fdsc<br /> , FND_USER FU<br />WHERE<br /> FDA.DOC_SEQUENCE_ID = FDS.DOC_SEQUENCE_ID<br /> and fda.category_code = fdsc.code<br /> AND FDS.created_by= fu.user_id <br /> AND FDA.start_date = to_date('01/'||to_char(sysdate-30, 'MM/YY')) -- début période N-1<br /> AND FDA.end_date = last_day(trunc(sysdate-30))-- Fin période N-1<br /> AND not exists (select 1<br /> from FND_DOCUMENT_SEQUENCES FDS2,<br /> FND_DOC_SEQUENCE_ASSIGNMENTS FDA2<br /> WHERE 1=1<br /> AND FDA2.DOC_SEQUENCE_ID = FDS2.DOC_SEQUENCE_ID<br /> AND fda.method_code = fda2.method_code<br /> AND fda.category_code= fda2.category_code<br /> AND fda.set_of_books_id = fda2.set_of_books_id<br /> -- AND length(fds.initial_value) = length(fds2.initial_value)<br /> AND FDA2.start_date = to_date('01/'||to_char(sysdate, 'MM/YY'))-- Début Période N<br /> )<br /> order by fds.name;ccchuanhttp://www.blogger.com/profile/12412031470006761145noreply@blogger.com0tag:blogger.com,1999:blog-1061062602867709175.post-24307623275326765922011-05-17T03:09:00.000-07:002011-05-17T05:21:00.114-07:00PO workflow error "ORA-06502: PL/SQL: numeric or value error: character string buffer too small" in Wf_Notification.runFuncOnBody(XXXXXX, text/html)The PO encountered error in workflow while generate notifiation PO_REQ_APPROVE :<br /><br />[<blockquote>WF_ERROR] ERROR_MESSAGE=3835: Erreur "-20002 - ORA-20002: 2018: Impossible de générer la notification au format XML. Cause : 2020: Erreur d'extraction du contenu de la notification. Cause : ORA-06502: PL/SQL: numeric or value error: character string<br /></blockquote><br /><br />The wfstatus output for the PO shows the following error :<br /><br /><blockquote>[WF_ERROR] ERROR_MESSAGE=3835: Erreur "-20002 - ORA-20002: 2018: Impossible de générer la notification au format XML. Cause : 2020: Erreur d'extraction du contenu de la notification. Cause : ORA-06502: PL/SQL: numeric or value error: character string buffer too small<br /><br />Wf_Notification.runFuncOnBody(409499, text/html)<br />Wf_Notification.GetBody(409499, text/html)<br />WF_NOTIFICATION.GetFullBody(nid => 409499, disptype => text/html)<br />WF_MAIL.GetLOBMessage3(nid => 409499, r_ntf_pref => MAILHTML)" survenue lors de l'exécution de la fonction de génération "WF_XML.Generate" pour l'événement "oracle.apps.wf.notification.send". ERROR_STACK=<br />WF_MAIL.GetLOBMessage3(409499, WFMAIL, 2020: Erreur d'extraction du contenu de la notification. Cause : ORA-06502: PL/SQL: numeric or value error: character string buffer too small<br /><br />Wf_Notification.runFuncOnBody(409499, text/html)<br />Wf_Notification.GetBody(409499, text/html)<br />WF_NOTIFICATION.GetFullBody(nid => 409499, disptype => text/html)<br />WF_MAIL.GetLOBMessage3(nid => 409499, r_ntf_pref => MAILHTML), Step -> Getting text/html body)<br />WF_XML.GenerateDoc(oracle.apps.wf.notification.send, 409499)<br />WF_XML.Generate(oracle.apps.wf.notification.send, 409499)<br />WF_XML.Generate(oracle.apps.wf.notification.send, 409499)<br />Wf_Event.setMessage(oracle.apps.wf.notification.send, 409499, WF_XML.Generate)<br />Wf_Event.dispatch_internal()</blockquote><br /><br />After search in Oracle metalink, we found that a patch has been delivred to fix this issue : ID 579729.1 :<br /><br />The issue can be reproced at will with the following steps :<br />1. Create a PO with more than 20 lines<br />2. Submit the PO for approval<br />3. Log in as approver<br />4. Request for more information from the "Standard Purchase Order 1234 for USD 999,999.99 requires your approval" notification<br />5. Log in as the buyer<br />6. Open the "More Information Requested: Standard Purchase Order 1234 for USD 999,999.99 requires your approval" notification.<br /><br />Cause<br />When the line details exceed the available limit of the notification it gives the ORA-06512. This is happening because of the 32K size limit.<br /><br />This is explained in the following bug:<br />Bug 6932794 MORE INFO REQUESTED NOTIFICATIONS ERROR WITH ORA-06502: PL/SQL: NUMERIC OR VALUE<br /><br />Solution<br /><br />To implement the solution, execute the following steps:<br />For Release 11.5.10:<br /><br />1. Download and review the readme and pre-requisites for Patch 7370646.<br /><br />2. Ensure that you have taken a backup of your system before applying<br />the recommended patch.<br /><br />3. Apply the patch in a test environment.<br /><br />4. Confirm the following file versions:<br />POXWPA1B.pls 115.206.11510.62<br />POXWPA7S.pls 115.6.11510.2<br />POXWPA7B.pls 115.38.11510.23<br /><br />Use the following sql:<br />select text<br />from dba_source<br />where line = 2<br />and name in ('PO_REQAPPROVAL_INIT1','PO_WF_PO_NOTIFICATION');<br /><br />5. Retest the issue.<br /><br />6. Migrate the solution as appropriate to other environments.<br /><br />For Release 12:<br /><br /> 1. Download and review the readme and pre-requisites for Patch 7218243 - Procurement R12.0 Update July 2008 or higher<br />or<br />One-off Patch 7612490 which indirectly includes the fix for this issue.<br /><br />2. Ensure that you have taken a backup of your system before applying the recommended patch.<br /><br />3. Apply the patch in a test environment.<br /><br />4. Confirm the following file versions:<br />POXWPA1B.pls-120.46.12000000.13 or higher<br />POXWPA7S.pls-120.0.12000000.2 or higher<br />POXWPA7B.pls-120.8.12000000.3 or higher<br /><br />You can use the commands like the following:<br />strings -a $PO_TOP/patch/115/sql/POXWPA1B.pls | grep -i '$Header:'<br />strings -a $PO_TOP/patch/115/sql/POXWPA7S.pls | grep -i '$Header:'<br />strings -a $PO_TOP/patch/115/sql/POXWPA7B.pls | grep -i '$Header:'<br /><br />5. Retest the issue.<br /><br />6. Migrate the solution as appropriate to other environments.ccchuanhttp://www.blogger.com/profile/12412031470006761145noreply@blogger.com0tag:blogger.com,1999:blog-1061062602867709175.post-65348334018281542942011-05-06T00:49:00.000-07:002011-05-06T00:54:14.332-07:00France Chine Business ConsultigLe meilleur site de conseil en France Chine Business Consulting ;-) : <br /><br /><a href="http://chine-consulting.fr">http://chine-consulting.fr</a><br /><br />Leur domaines d'activités : <br /><br />France Chine Business Consulting, Implantation en Chine, Offshore en Chine, Import-Export, Voyage en Chine, Traduction en chinoisccchuanhttp://www.blogger.com/profile/12412031470006761145noreply@blogger.com0tag:blogger.com,1999:blog-1061062602867709175.post-78803317666638337942011-03-31T06:24:00.000-07:002011-03-31T06:35:01.756-07:00How to resolve SQL error : SQL*Loader-510The issue happend when we tried to import a csv data file via sql loader. <br /><br />The loader finished in error with following message in log file : <br /><br /> - US : SQL*Loader-510: Physical record in data file (XXX/XXXXXX/XX.csv) is longer than the maximum<br /> - F : SQL*Loader-510: Enreg. physique dans fichier de données (XXX/XXXXXX/XX.csv) plus long que max<br /><br />The CSV file has been uploaded correctly on the server. And there is none line in CSV file which seems very long.<br /><br />In our case here, the problem comes from the CSV file generation format in Excel. In fact, two CSV saving format are proposed by Excel, we choosed the format CSV macintosh. If we choose another one format CSV DOS, the error would not be occured.ccchuanhttp://www.blogger.com/profile/12412031470006761145noreply@blogger.com0tag:blogger.com,1999:blog-1061062602867709175.post-87217839155169010852011-03-29T02:15:00.000-07:002011-03-31T16:06:33.681-07:00API to import ASLs (approved supplier list) in Oracle from blanket agreements or quotations // Import des ASLs à partir des commandes ouverts ou prixSince Nov 2008(patch ID 262093.1), Oracle provides the possibility to create local Approved Supplier List (ASL) through the PO Open Interface via the concurrent program "Generate Sourcing Rules and ASLs from Blanket Agreement". <br /><br />With this concurrent program, we can create the ASLs from the blankets already imported into Oracle PO. It's useful in the case of we use blanket agreements. If we don't use blanket but only use quotation, it's impossible for us to mass create ASLs. <br /><br />So we duplicated the standard concurrent program "Generate Sourcing Rules and ASLs from Blanket Agreement" and created another new specific concurrent program "XX : Generate Sourcing Rules and ASLs from Quotations". <br /><br />The executable file is always the same : <span style="font-weight:bold;">POXSRASL.sql</span><br />This program requires 12 parameters that 5 need to be modified :<br /><br /> <span style="font-weight:bold;">Parameter 1 - Supplier</span> <br /> LOV 1 - PO_ASL_VENDOR<br /><br /> <span style="font-weight:bold;">Parameter 2 - Blanket Agreement Number</span><br /> LOV 2 - SE_PO_ASL_BLANKET_NUMBER<br /> Define LOV - <br /> Table : PO_HEADERS_ALL POH,PO_LOOKUP_CODES PLC<br /> Valeur : POH.segment1<br /> ID : POH.po_header_id<br /> WHERE : POH.vendor_id=:$FLEX$.PO_ASL_VENDOR<br /> and NVL(POH.closed_code,'OPEN') not in ('CLOSED','FINALLY CLOSED')<br /> and POH.type_lookup_code='QUOTATION'<br /> and<br /> (<br /> poh.org_id IN (SELECT ORG_ID FROM PO_SYSTEM_PARAMETERS)<br /> OR<br /> (<br /> POH.global_agreement_flag='Y' and<br /> EXISTS (<br /> select pgoa.purchasing_org_id<br /> from po_ga_org_assignments pgoa<br /> where pgoa.po_header_id=poh.po_header_id and<br /> pgoa.purchasing_org_id <br /> IN (SELECT ORG_ID FROM PO_SYSTEM_PARAMETERS)<br /> )<br /> )<br /> )<br /> AND PLC.LOOKUP_TYPE='YES/NO'<br /> AND PLC.LOOKUP_CODE=NVL(POH.GLOBAL_AGREEMENT_FLAG,'N')<br /> ORDER BY : PLC.DISPLAYED_FIELD "Global Agreement"<br /><br /> <span style="font-weight:bold;">Parameter 3 - Global Agreement Flag</span><br /> LOV 3 - PO_ASL_ENABLE_FLAG<br /> Default val - select decode(nvl(poh.global_agreement_flag,'N'),'N',null,'Y') from po_headers_all poh where poh.po_header_id=:$FLEX$.SE_PO_ASL_BLANKET_NUMBER<br /><br /> <span style="font-weight:bold;">Parameter 4 - Purchasing Organization</span><br /> LOV 4 - SE_PO_ASL_PURCHASING_ORG<br /> Default val - SELECT name FROM hr_all_organization_units_tl houtl WHERE houtl.organization_id= decode(nvl(:$FLEX$.PO_ASL_ENABLE_FLAG:NULL,'N'),'Y',decode ( ( SELECT count(*) FROM po_ga_org_assignments pgoa WHERE pgoa.purchasing_org_id=:$PROFILES$.ORG_ID AND pgoa.po_header_id=:$FLEX$.SE_PO_ASL_BLANKET_NUMBER ) , 1, :$PROFILES$.ORG_ID, null ) ,null) AND language=USERENV('LANG')<br /> Define LOV - Table : PO_HEADERS_ALL POH,PO_GA_ORG_ASSIGNMENTS PGOA, HR_ALL_ORGANIZATION_UNITS HOU,HR_ALL_ORGANIZATION_UNITS HOU1, HR_ALL_ORGANIZATION_UNITS HOU2<br /> Where : POH.global_agreement_flag=:$FLEX$.PO_ASL_ENABLE_FLAG<br /> and POH.po_header_id=:$FLEX$.SE_PO_ASL_BLANKET_NUMBER<br /> and PGOA.po_header_id = POH.po_header_id<br /> and ((POH.org_id IN (SELECT ORG_ID FROM PO_SYSTEM_PARAMETERS))<br /> or (PGOA.purchasing_org_id IN (SELECT ORG_ID FROM PO_SYSTEM_PARAMETERS)))<br /> and HOU.organization_id=PGOA.purchasing_org_id<br /> and HOU1.organization_id=POH.org_id<br /> and HOU2.organization_id=PGOA.organization_id<br /> Order by : hou1.name as "Owning Organization",<br /> hou2.name as "Requesting Organization"<br /><br /><br /> <span style="font-weight:bold;">Parameter 5 - Supplier Site</span><br /> LOV 5 - SE_PO_ASL_VENDOR_SITE<br /> Default val - SELECT pvs.vendor_site_code FROM po_vendor_sites pvs, po_headers_all poh WHERE pvs.vendor_site_id = decode( nvl(poh.global_agreement_flag,'N'),'N',poh.vendor_site_id, decode ( ( SELECT count(DISTINCT(pgoa.vendor_site_id)) FROM po_ga_org_assignments pgoa WHERE pgoa.purchasing_org_id=nvl(:$FLEX$.SE_PO_ASL_PURCHASING_ORG:NULL ,null) AND pgoa.po_header_id=:$FLEX$.SE_PO_ASL_BLANKET_NUMBER ) , 1, ( SELECT DISTINCT (pgoa.vendor_site_id) FROM po_ga_org_assignments pgoa WHERE pgoa.po_header_id=:$FLEX$.SE_PO_ASL_BLANKET_NUMBER AND pgoa.purchasing_org_id=nvl(:$FLEX$.SE_PO_ASL_PURCHASING_ORG:NULL ,null) ) , poh.vendor_site_id ) ) AND poh.po_header_id=:$FLEX$.SE_PO_ASL_BLANKET_NUMBER<br /> Define LOV - Table : PO_VENDOR_SITES_ALL POV,PO_GA_ORG_ASSIGNMENTS PGOA,PO_HEADERS_ALL POH<br /> Where : PGOA.po_header_id(+)=:$FLEX$.SE_PO_ASL_BLANKET_NUMBER<br /> AND POH.po_header_id=:$FLEX$.SE_PO_ASL_BLANKET_NUMBER<br /> and PGOA.purchasing_org_id(+)=<br /> decode(nvl(POH.global_agreement_flag,'N'),'N',-999,<br /> nvl(:$FLEX$.PO_ASL_PURCHASING_ORG:NULL,(:$PROFILES$.ORG_ID)))<br /> and POV.vendor_site_id=decode(nvl(POH.global_agreement_flag,'N'),'N',<br /> POH.vendor_site_id,<br /> PGOA.vendor_site_id)<br /><br /> <span style="font-weight:bold;"> Parameter 6 - Select Agreement Lines</span><br /> LOV 6 - PO_ASL_LINES_SELECTION<br /><br /> <span style="font-weight:bold;">Parameter 7 - Assignment Set</span><br /> LOV 7 - PO_ASL_ASSIGNMENT_SET<br /> Default val - select assignment_set_name from mrp_assignment_sets where assignment_set_id=:$PROFILES$.MRP_DEFAULT_ASSIGNMENT_SET<br /><br /> <span style="font-weight:bold;">Parameter 8 - Sourcing Level</span><br /> LOV 8 - PO_ASL_SOURCING_LEVEL<br /><br /> <span style="font-weight:bold;">Parameter 9 - Inv Org Enable</span><br /> LOV 9 - PO_ASL_ENABLE_FLAG<br /> Default val - select decode(:$FLEX$.PO_ASL_SOURCING_LEVEL,'ITEM',NULL,'Y') from dual<br /><br /> <span style="font-weight:bold;">Parameter 10 - Inventory Organization</span><br /> LOV 10 - PO_ASL_INV_ORG<br /><br /> <span style="font-weight:bold;">Parameter 11 - Sourcing Rule Name</span><br /> LOV 11 - SE_PO_ASL_SR_RULE_NAME<br /> Define LOV - Table : MRP_SOURCING_RULES MSR , org_organization_definitions oog<br /> Where : oog.organization_id = msr.organization_id <br /> AND EXISTS <br /> ( <br /> SELECT <br /> 1 <br /> FROM MRP_SR_RECEIPT_ORG MSRO, <br /> MRP_SR_SOURCE_ORG MSSO <br /> WHERE MSR.SOURCING_RULE_ID=MSRO.SOURCING_RULE_ID<br /> AND MSRO.SR_RECEIPT_ID=msso.SR_RECEIPT_ID <br /> AND msso.vendor_id=:$FLEX$.PO_ASL_VENDOR <br /> AND msso.vendor_site_id=:$FLEX$.SE_PO_ASL_VENDOR_SITE <br /> )<br /> and oog.organization_id=:$FLEX$.PO_ASL_INV_ORG<br /> Order By : oog.organization_name "Organization"<br /> <br /><br /> <span style="font-weight:bold;">Parameter 12 - Release Generation Method</span><br /> LOV 12 - PO_PDOI_REL_GEN_METHOD<br /><br />This concurrent program allows users to create ASLs from one specific or more quotations. We can also customize this program by adding a new parameter request_id so that only quotations with this request_id (probably the request_id of program Import of price catalog) will be treated.ccchuanhttp://www.blogger.com/profile/12412031470006761145noreply@blogger.com0tag:blogger.com,1999:blog-1061062602867709175.post-34387379601398248922011-03-02T02:42:00.000-08:002011-03-02T03:00:29.813-08:00Start or stop Concurrent Manager by using unix script / Relance GTS avec shell UnixAfter modication of workflow(pkg, wft or other workflow files), we have to restart the concurrent manager, otherwise the workflow will not work. <br /><br />The following steps allows us to restart the concurrent manager in Unix :<br /><br /><span style="font-style:italic;">cd $COMMON_TOP/admin/scripts/$CONTEXT_NAME</span><br /> <br />Execute the script : <span style="font-style:italic;">adcmctl.sh stop apps/apps</span><br /> <br />Wait that all process FNDLIBR are killed, to check : <span style="font-style:italic;">ps -fu $USER</span><br />Sometimes this step could take several minutes.<br /> <br />To restart the concurrent manager : <span style="font-style:italic;">adcmctl.sh start apps/apps</span>ccchuanhttp://www.blogger.com/profile/12412031470006761145noreply@blogger.com1tag:blogger.com,1999:blog-1061062602867709175.post-2013262916899146652011-01-25T06:03:00.000-08:002011-01-25T06:25:52.583-08:00Customization of Oracle Workflow (AP Remittance advice workflow APPEWF)The first thing before any action is amend Oracle workflow access in Workflow builder in order to amend the standard workflow APPEWF.wft :<br /><br />Menu : Help -> About Oracle Workflow Builder XXXXXX<br /><br />In the opening window, modify the access level to 20 and enable the Allow modifications of customized objects case.<br /><br />Then we can modify the standard workflow file APPEWF.wft<br /><br />Example of modification : add cc list for workflow email(AP remittance advice email).<br /><br />Step 1 - Add a new global attribute in workflow : XX_CC_NAME<br /><br />Step 2 - Create a new attribute #WFM_CC in message level, and attached to the global attirbute created previously<br /><br />Step 3 - Initialize the global attribute XX_CC_NAME in PL/SQL package, in our case here, in AP_PAYMENT_EVENT_WF_PKG.get_check_info, add the following lines :<br /><br /> BEGIN<br /> SELECT NVL(fpov.profile_option_value, '')<br /> INTO l_se_cc <br /> FROM fnd_profile_options fpo, fnd_profile_option_values fpov<br /> WHERE fpo.application_id =20003<br /> AND fpo.profile_option_name = 'XXXXXXX' -- XXXXXX is the profil option's name<br /> AND fpo.profile_option_id = fpov.profile_option_id<br /> AND fpov.level_id = 10006<br /> AND fpov.level_value = l_org_id;<br /> EXCEPTION<br /> WHEN OTHERS THEN<br /> l_se_cc := '';<br /> END; <br /> wf_engine.setitemattrtext(p_item_type,<br /> p_item_key,<br /> 'XX_CC_NAME',<br /> l_se_cc); <br /><br />Step 4 - Upload the new workflow, restart the GTS.ccchuanhttp://www.blogger.com/profile/12412031470006761145noreply@blogger.com0tag:blogger.com,1999:blog-1061062602867709175.post-16660382956580105252010-12-17T07:31:00.000-08:002011-03-01T11:13:19.320-08:00Oracle - API to get AP invoice validation status via SQL QueryThe AP invoice validation status is determinated in AP invoice Forms. There is only one API to get invoice approval status, but no API available to get the validation status. <br /><br />We developped the following function to return the AP invoice validation status. <br /><br />SQL:<br /><br /><span style="font-style:italic;">FUNCTION get_invoice_validation_status(l_invoice_id IN NUMBER) RETURN VARCHAR2 <br /> IS <br /> l_status VARCHAR2(50);<br /> l_validation_status VARCHAR2(50);<br /> l_inv_sel_count NUMBER;<br /> l_step VARCHAR2(10);<br /><br /><br /> l_NLS_TRANSLATION varchar2(15) := 'NLS TRANSLATION';<br /> l_QUICKPRO varchar2(8) := 'QUICKPRO';<br /> l_POSTING_STATUS varchar2(14) := 'POSTING STATUS';<br /> l_P varchar2(1) := 'P';<br /> l_S varchar2(1) := 'S';<br /> l_ANY_MULTIPLE varchar2(12) := 'ANY MULTIPLE';<br /> l_UNMATCHED varchar2(9) := 'UNMATCHED';<br /> l_SYSTEM varchar2(6) := 'SYSTEM';<br /> l_APPROVED varchar2(8) := 'APPROVED';<br /> l_CANCELLED varchar2(9) := 'CANCELLED';<br /> l_NEEDS_REAPPROVAL varchar2(16) := 'NEEDS REAPPROVAL';<br /> l_NEVER_APPROVED varchar2(14) := 'NEVER APPROVED';<br /> l_INVOICE_DISTRIBUTION_TYPE varchar2(25) := 'INVOICE DISTRIBUTION TYPE';<br /> l_ITEM varchar2(4) := 'ITEM';<br /> l_INVOICE_TYPE varchar2(12) := 'INVOICE TYPE';<br /> l_STANDARD varchar2(8) := 'STANDARD';<br /> l_MISC_PHRASES varchar2(12) := 'MISC PHRASES';<br /> l_B varchar2(1) := 'B';<br /> l_SELECTED_FOR_PAYMENT varchar2(20) := 'SELECTED FOR PAYMENT';<br /><br /><br /> l_YES_NO_ALL varchar2(10) := 'YES_NO_ALL';<br /> l_Y varchar2(1) := 'Y';<br /> l_N varchar2(1) := 'N';<br /><br /> l_NLS_REPORT_PARAMETER varchar2(20) := 'NLS REPORT PARAMETER';<br /> l_ALL varchar2(3) := 'ALL';<br /> l_PREPAY_STATUS varchar2(13) := 'PREPAY STATUS';<br /> l_AVAILABLE varchar2(9) := 'AVAILABLE';<br /> l_FULL varchar2(4) := 'FULL';<br /> l_UNAPPROVED varchar2(10) := 'UNAPPROVED';<br /> l_UNPAID varchar2(6) := 'UNPAID';<br /> l_PERMANENT varchar2(9) := 'PERMANENT';<br /><br /><br /> l_AP_WFAPPROVAL_STATUS varchar2(20) := 'AP_WFAPPROVAL_STATUS';<br /> l_NOT_REQUIRED varchar2(12) := 'NOT REQUIRED';<br /> l_REQUIRED varchar2(8) := 'REQUIRED';<br /> l_INITIATED varchar2(9) := 'INITIATED';<br /> l_WFAPPROVED varchar2(10) := 'WFAPPROVED';<br /> l_REJECTED varchar2(8) := 'REJECTED';<br /> l_MANUALLY_APPROVED varchar2(17) := 'MANUALLY APPROVED';<br /> l_NEEDS_WFREAPPROVAL varchar2(18) := 'NEEDS WFREAPPROVAL';<br /><br /> l_dummy fnd_lookup_values.meaning%TYPE; <br /> l_nls_partial fnd_lookup_values.meaning%TYPE;<br /> l_nls_selected fnd_lookup_values.meaning%TYPE;<br /> l_nls_approved fnd_lookup_values.meaning%TYPE;<br /> l_nls_cancelled fnd_lookup_values.meaning%TYPE;<br /> l_nls_needs_reapproval fnd_lookup_values.meaning%TYPE;<br /> l_nls_never_approved fnd_lookup_values.meaning%TYPE;<br /> l_nls_selected_for_payment fnd_lookup_values.meaning%TYPE;<br /> l_nls_all fnd_lookup_values.meaning%TYPE;<br /> l_nls_available fnd_lookup_values.meaning%TYPE;<br /> l_nls_full fnd_lookup_values.meaning%TYPE;<br /> l_nls_unapproved fnd_lookup_values.meaning%TYPE;<br /> l_nls_unpaid fnd_lookup_values.meaning%TYPE;<br /> l_nls_permanent fnd_lookup_values.meaning%TYPE;<br /> l_nls_not_required fnd_lookup_values.meaning%TYPE;<br /> l_nls_required fnd_lookup_values.meaning%TYPE;<br /> l_nls_initiated fnd_lookup_values.meaning%TYPE;<br /> l_nls_wfapproved fnd_lookup_values.meaning%TYPE;<br /> l_nls_rejected fnd_lookup_values.meaning%TYPE;<br /> l_nls_manually_approved fnd_lookup_values.meaning%TYPE;<br /> l_nls_wf_needs_reapproval fnd_lookup_values.meaning%TYPE;<br /><br />CURSOR c_invoices is<br /> SELECT i.invoice_id<br /> ,i.invoice_amount<br /> ,i.payment_status_flag<br /> ,i.invoice_type_lookup_code, i.invoice_num<br /> FROM ap_invoices_all i<br /> WHERE invoice_id = l_invoice_id;<br /> <br /> BEGIN<br /> l_step := '1';<br /> SELECT l1.displayed_field,<br /> l2.displayed_field,<br /> l3.displayed_field,<br /> l4.displayed_field,<br /> l5.displayed_field,<br /> l6.displayed_field,<br /> l7.displayed_field,<br /> l13.displayed_field,<br /> l8.displayed_field,<br /> l9.displayed_field,<br /> l10.displayed_field,<br /> l11.displayed_field,<br /> l12.displayed_field,<br /> l14.displayed_field<br /> INTO l_dummy, -- l_quickpro_prefix,<br /> l_nls_partial,<br /> l_nls_selected,<br /> l_dummy, -- l_nls_multiple,<br /> l_dummy, -- l_nls_unmatched,<br /> l_dummy, -- l_nls_system,<br /> l_nls_approved,<br /> l_nls_cancelled,<br /> l_nls_needs_reapproval,<br /> l_nls_never_approved,<br /> l_dummy, -- l_nls_item,<br /> l_dummy, -- l_nls_standard,<br /> l_dummy, -- l_nls_not_applicable,<br /> l_nls_selected_for_payment<br /> FROM ap_lookup_codes l1,<br /> ap_lookup_codes l2,<br /> ap_lookup_codes l3,<br /> ap_lookup_codes l4,<br /> ap_lookup_codes l5,<br /> ap_lookup_codes l6,<br /> ap_lookup_codes l7,<br /> ap_lookup_codes l8,<br /> ap_lookup_codes l9,<br /> ap_lookup_codes l10,<br /> ap_lookup_codes l11,<br /> ap_lookup_codes l12,<br /> ap_lookup_codes l13,<br /> ap_lookup_codes l14<br /> WHERE l1.lookup_type = l_NLS_TRANSLATION<br /> AND l1.lookup_code = l_QUICKPRO<br /> AND l2.lookup_type = l_POSTING_STATUS<br /> AND l2.lookup_code = l_P<br /> AND l3.lookup_type = l_POSTING_STATUS<br /> AND l3.lookup_code = l_S<br /> AND l4.lookup_type = l_NLS_TRANSLATION<br /> AND l4.lookup_code = l_ANY_MULTIPLE<br /> AND l5.lookup_type = l_NLS_TRANSLATION<br /> AND l5.lookup_code = l_UNMATCHED<br /> AND l6.lookup_type = l_NLS_TRANSLATION<br /> AND l6.lookup_code = l_SYSTEM<br /> AND l7.lookup_type = l_NLS_TRANSLATION<br /> AND l7.lookup_code = l_APPROVED<br /> AND l13.lookup_type = l_NLS_TRANSLATION<br /> AND l13.lookup_code = l_CANCELLED<br /> AND l8.lookup_type = l_NLS_TRANSLATION<br /> AND l8.lookup_code = l_NEEDS_REAPPROVAL<br /> AND l9.lookup_type = l_NLS_TRANSLATION<br /> AND l9.lookup_code = l_NEVER_APPROVED<br /> AND l10.lookup_type = l_INVOICE_DISTRIBUTION_TYPE<br /> AND l10.lookup_code = l_ITEM<br /> AND l11.lookup_type = l_INVOICE_TYPE<br /> AND l11.lookup_code = l_STANDARD<br /> AND l12.lookup_type = l_MISC_PHRASES<br /> AND l12.lookup_code = l_B<br /> AND l14.lookup_type = l_NLS_TRANSLATION<br /> AND l14.lookup_code = l_SELECTED_FOR_PAYMENT;<br /> l_step := '2';<br /> SELECT l1.displayed_field,<br /> l2.displayed_field,<br /> l3.displayed_field,<br /> l4.displayed_field,<br /> l5.displayed_field,<br /> l6.displayed_field<br /> INTO l_nls_all,<br /> l_nls_available,<br /> l_nls_full,<br /> l_nls_unapproved,<br /> l_nls_unpaid,<br /> l_nls_permanent<br /> FROM ap_lookup_codes l1,<br /> ap_lookup_codes l2,<br /> ap_lookup_codes l3,<br /> ap_lookup_codes l4,<br /> ap_lookup_codes l5,<br /> ap_lookup_codes l6<br /> WHERE l1.lookup_type = l_NLS_REPORT_PARAMETER<br /> AND l1.lookup_code = l_ALL<br /> AND l2.lookup_type = l_PREPAY_STATUS<br /> AND l2.lookup_code = l_AVAILABLE<br /> AND l3.lookup_type = l_PREPAY_STATUS<br /> AND l3.lookup_code = l_FULL<br /> AND l4.lookup_type = l_PREPAY_STATUS<br /> AND l4.lookup_code = l_UNAPPROVED<br /> AND l5.lookup_type = l_PREPAY_STATUS<br /> AND l5.lookup_code = l_UNPAID<br /> AND l6.lookup_type = l_PREPAY_STATUS<br /> AND l6.lookup_code = l_PERMANENT;<br /> <br /> l_step := '3';<br /> SELECT l1.displayed_field,<br /> l2.displayed_field,<br /> l3.displayed_field,<br /> l4.displayed_field,<br /> l5.displayed_field,<br /> l6.displayed_field,<br /> l7.displayed_field<br /> INTO l_nls_not_required,<br /> l_nls_required,<br /> l_nls_initiated,<br /> l_nls_wfapproved,<br /> l_nls_rejected,<br /> l_nls_manually_approved,<br /> l_nls_wf_needs_reapproval<br /> FROM ap_lookup_codes l1,<br /> ap_lookup_codes l2,<br /> ap_lookup_codes l3,<br /> ap_lookup_codes l4,<br /> ap_lookup_codes l5,<br /> ap_lookup_codes l6,<br /> ap_lookup_codes l7<br /> WHERE l1.lookup_type = l_AP_WFAPPROVAL_STATUS<br /> AND l1.lookup_code = l_NOT_REQUIRED<br /> AND l2.lookup_type = l_AP_WFAPPROVAL_STATUS<br /> AND l2.lookup_code = l_REQUIRED<br /> AND l3.lookup_type = l_AP_WFAPPROVAL_STATUS<br /> AND l3.lookup_code = l_INITIATED<br /> AND l4.lookup_type = l_AP_WFAPPROVAL_STATUS<br /> AND l4.lookup_code = l_WFAPPROVED<br /> AND l5.lookup_type = l_AP_WFAPPROVAL_STATUS<br /> AND l5.lookup_code = l_REJECTED<br /> AND l6.lookup_type = l_AP_WFAPPROVAL_STATUS<br /> AND l6.lookup_code = l_MANUALLY_APPROVED<br /> AND l7.lookup_type = l_AP_WFAPPROVAL_STATUS<br /> AND l7.lookup_code = l_NEEDS_WFREAPPROVAL;<br /><br /><br />FOR r in c_invoices loop<br /> l_step := '4';<br /> l_status := AP_INVOICES_PKG.GET_APPROVAL_STATUS(r.INVOICE_ID<br /> ,r.INVOICE_AMOUNT<br /> ,r.PAYMENT_STATUS_FLAG<br /> ,r.INVOICE_TYPE_LOOKUP_CODE );<br /> l_step := '5';<br />--dbms_output.put_line(r.invoice_num || ' - ' || l_status);<br /><br /> if (l_status = <br /> 'NEVER APPROVED') then <br /> l_validation_status := <br /> l_nls_never_approved;<br /> elsif (l_status = 'APPROVED') then <br /> l_validation_status := l_nls_approved;<br /> elsif (l_status = 'CANCELLED') then <br /> l_validation_status := l_nls_cancelled;<br /> elsif (l_status = <br /> 'NEEDS REAPPROVAL') then <br /> l_validation_status := <br /> l_nls_needs_reapproval;<br /> elsif (l_status = 'AVAILABLE') then <br /> l_validation_status := l_nls_available;<br /> elsif (l_status = 'FULL') then <br /> l_validation_status := l_nls_full;<br /> elsif (l_status = 'UNAPPROVED') then <br /> l_validation_status := l_nls_unapproved;<br /> elsif (l_status = 'UNPAID') then <br /> l_validation_status := l_nls_unpaid;<br /> elsif (l_status = 'PERMANENT') then <br /> l_validation_status := l_nls_permanent;<br /> elsif (l_status = 'NOT REQUIRED') then <br /> l_validation_status := l_nls_not_required;<br /> elsif (l_status = 'REQUIRED') then <br /> l_validation_status := l_nls_required;<br /> elsif (l_status = 'INITIATED') then <br /> l_validation_status := l_nls_initiated;<br /> elsif (l_status = 'WFAPPROVED') then <br /> l_validation_status := l_nls_wfapproved;<br /> elsif (l_status = 'REJECTED') then <br /> l_validation_status := l_nls_rejected;<br /> elsif (l_status = 'MANUALLY APPROVED') then <br /> l_validation_status := l_nls_manually_approved; <br /> elsif (l_status = 'NEEDS WFREAPPROVAL') then <br /> l_validation_status := l_nls_wf_needs_reapproval; <br /> end if;<br /><br /> -- Added for Payment Process Enhancements.<br /> if (l_status <br /> IN ('APPROVED','UNPAID')) then<br /> SELECT count(*)<br /> INTO l_inv_sel_count<br /> FROM ap_payment_schedules<br /> WHERE invoice_id = r.invoice_id<br /> AND checkrun_id IS NOT NULL<br /> AND rownum =1; --bug5691219<br /><br /> if (l_inv_sel_count > 0) then<br /> l_validation_status :=<br /> l_nls_selected_for_payment;<br /> end if;<br /> end if;<br /> <br /> --dbms_output.put_line(r.invoice_num || ' - ' || l_validation_status);<br /><br />END LOOP;<br /> RETURN(l_validation_status);<br /> <br /> EXCEPTION<br /> WHEN OTHERS THEN <br /> RETURN ('l_step = ' || l_step || ' ' || SQLERRM);<br /> END get_invoice_validation_status;</span><br /><br />This function should be used in Oracle application environnement, it will not work in TOAD or SQL Developper even if after contexualization...ccchuanhttp://www.blogger.com/profile/12412031470006761145noreply@blogger.com4tag:blogger.com,1999:blog-1061062602867709175.post-56952820331602051222010-12-17T06:45:00.000-08:002010-12-17T07:01:15.564-08:00Oracle AP Payment APIThere is no public Oracle API for the AP payments. We have developed a custom interface by using the standard procedure : ap_checks_pkg.insert_row.<br /><br />Suppose that we have the following informations at the beginning :<br /><br />siaxp2.org_id,<br />siaxp2.invoice_currency_code,<br />siaxp2.invoice_amount,<br />siaxp.reference_id, <br />siaxp.currency_code,<br />DECODE(siaxp2.invoice_currency_code,'XOF',siaxp2.invoice_amount,siaxp.payment_amount) payment_amount,<br />siaxp.base_amount,<br />siaxp.payment_date,<br />siaxp.transaction_code,<br />siaxp.internal_bank_account,<br />siaxp.vendor_id,<br />siaxp.vendor_site_id <br /><br /><span style="font-style:italic;">-- Calculate bank account <br /><br /> SELECT abaa2.bank_account_id,<br /> abaa2.currency_code<br /> INTO n_internal_bank_account_id,<br /> n_currency_code<br /> FROM ap_bank_accounts_all abaa,<br /> ap_bank_accounts_all abaa2<br /> WHERE abaa.attribute1 = r_payment_xrt.internal_bank_account<br /> AND abaa.org_id = abaa2.org_id<br /> AND abaa.bank_account_name = abaa2.bank_account_name<br /> AND abaa.bank_branch_id = abaa2.bank_branch_id<br /> AND abaa2.org_id = r_payment_xrt.org_id;<br /><br />-- Calculate payment document <br /><br /> SELECT ACS.LAST_DOCUMENT_NUM+1,<br /> acs.check_format_id,<br /> acs.check_stock_id,<br /> apaa.bank_account_num,<br /> apaa.bank_account_name,<br /> apaa.account_type,<br /> acs.doc_category_code,<br /> fdsa.doc_sequence_id<br /> INTO n_check_number,<br /> n_check_format_id,<br /> n_check_stock_id,<br /> n_bank_account_num,<br /> n_bank_account_name,<br /> n_account_type,<br /> v_doc_category_code,<br /> n_doc_sequence_id<br /> FROM ap_check_stocks_all acs,<br /> ap_check_formats acf,<br /> ap_bank_accounts_all apaa,<br /> fnd_doc_sequence_assignments fdsa,<br /> ap_bank_branches abb<br /> WHERE abb.bank_branch_id = apaa.bank_branch_id<br /> AND apaa.bank_account_id = n_internal_bank_account_id<br /> AND apaa.set_of_books_id = r_societe.set_of_books_id<br /> AND apaa.bank_account_id = acs.bank_account_id<br /> AND NVL(acs.inactive_date, SYSDATE+1) > SYSDATE<br /> AND acs.check_format_id = acf.check_format_id<br /> AND acf.payment_method_lookup_code = 'EFT'<br /> AND acs.doc_category_code = fdsa.category_code<br /> AND acs.name = DECODE(r_payment_xrt.currency_code,n_currency_code,'VIREMENT','VIRDEV')<br /> AND fdsa.method_code= 'A'<br /> AND fdsa.set_of_books_id = r_societe.set_of_books_id<br /> AND ROWNUM = 1;<br /><br />-- Calculate supplier info<br /><br /> SELECT pv.vendor_name,<br /> pvsa.vendor_site_code,<br /> pv.vendor_id,<br /> pvsa.vendor_site_id,<br /> pvsa.address_line1,<br /> pvsa.address_line2,<br /> pvsa.address_line3,<br /> pvsa.city,<br /> pvsa.country<br /> INTO v_vendor_name,<br /> v_vendor_site_code,<br /> n_vendor_id,<br /> n_vendor_site_id,<br /> v_address_line1,<br /> v_address_line2,<br /> v_address_line3,<br /> v_city,<br /> v_country<br /> FROM po_vendor_sites_all pvsa,<br /> po_vendors pv<br /> WHERE pvsa.vendor_site_id = r_payment_xrt.vendor_site_id<br /> AND pv.vendor_id = pvsa.vendor_id;<br /><br />-- Check id <br /><br /> SELECT ap_checks_s.NEXTVAL<br /> INTO n_check_id<br /> FROM dual;<br /><br />-- Sequence <br /><br /> SELECT db_sequence_name <br /> INTO v_sequence<br /> FROM fnd_document_sequences <br /> WHERE doc_sequence_id = n_doc_sequence_id;<br /><br />-- Doc sequence value<br /><br /> v_proc_stmt := 'select ' || v_sequence || '.nextval into :next_val from sys.dual';<br /> EXECUTE IMMEDIATE v_proc_stmt INTO n_doc_sequence_value;<br /><br />-- Final Insertion <br /><br />ap_checks_pkg.insert_row (<br /> x_rowid => v_rowid,<br /> x_amount => r_payment_xrt.payment_amount,<br /> x_bank_account_id => n_internal_bank_account_id,<br /> x_bank_account_name => n_bank_account_name,<br /> x_check_date => r_payment_xrt.payment_date,<br /> x_check_id => n_check_id,<br /> x_check_number => n_check_number,<br /> x_currency_code => r_payment_xrt.invoice_currency_code,<br /> x_last_updated_by => l_user_id,<br /> x_last_update_date => SYSDATE,<br /> x_payment_method_lookup_code => 'EFT',<br /> x_payment_type_flag => 'Q',<br /> x_address_line1 => v_address_line1,<br /> x_address_line2 => v_address_line2,<br /> x_address_line3 => v_address_line3,<br /> x_checkrun_name => 'Règlement express : ID='||TO_CHAR(n_check_id),<br /> x_check_format_id => n_check_format_id,<br /> x_check_stock_id => n_check_stock_id,<br /> x_city => v_city,<br /> x_country => v_country,<br /> x_created_by => l_user_id,<br /> x_creation_date => SYSDATE,<br /> x_last_update_login => l_user_id,<br /> x_status_lookup_code => 'NEGOTIABLE',<br /> x_vendor_name => v_vendor_name,<br /> x_vendor_site_code => v_vendor_site_code,<br /> x_external_bank_account_id => n_external_bank_account_id,<br /> x_bank_account_num => n_external_bank_account_num,<br /> x_doc_category_code => v_doc_category_code,<br /> x_doc_sequence_id => n_doc_sequence_id,<br /> x_doc_sequence_value => n_doc_sequence_value,<br /> x_org_id => n_org_id,<br /> x_vendor_id => n_vendor_id,<br /> x_vendor_site_id => n_vendor_site_id,<br /> x_exchange_rate => n_exchange_rate, --r_payment_xrt.base_amount/r_payment_xrt.payment_amount,<br /> x_exchange_date => n_exchange_date, --r_payment_xrt.payment_date,<br /> x_exchange_rate_type => n_exchange_rate_type, --'User',<br /> x_base_amount => n_base_amount, -- r_payment_xrt.base_amount, 1.3<br /> x_calling_sequence => v_sequence<br /> );<br /><br />ap_pay_invoice_pkg.ap_pay_invoice (<br /> p_invoice_id => r.invoice_id,<br /> p_check_id => n_check_id,<br /> p_payment_num => r.payment_num,<br /> p_invoice_payment_id => n_invoice_payment_id,<br /> p_period_name => n_period_name,<br /> p_accounting_date => r_payment_xrt.payment_date,<br /> p_amount => r.amount_remaining,<br /> p_discount_taken => 0,<br /> p_invoice_base_amount => ROUND(r.amount_remaining * n_exchange_rate, 2), -- 1.3 n_invoice_base_amount, -- A confirmer<br /> p_payment_base_amount => ROUND(r.amount_remaining * n_exchange_rate, 2), -- A confirmer<br /> p_accrual_posted_flag => 'N',<br /> p_cash_posted_flag => 'N',<br /> p_posted_flag => 'N',<br /> p_set_of_books_id => n_sob_id,<br /> p_last_updated_by => l_user_id,<br /> p_last_update_login => l_user_id,<br /> p_currency_code => r_payment_xrt.invoice_currency_code,<br /> p_exchange_rate => n_exchange_rate,<br /> p_exchange_rate_type => n_exchange_rate_type, --'User',<br /> p_exchange_date => n_exchange_date, --r_payment_xrt.payment_date,<br /> p_replace_flag => 'N',<br /> p_bank_account_id => n_external_bank_account_id,<br /> p_bank_account_num => n_external_bank_account_num,<br /> p_payment_mode => 'PAY'<br /> );<br /><br /></span>ccchuanhttp://www.blogger.com/profile/12412031470006761145noreply@blogger.com3tag:blogger.com,1999:blog-1061062602867709175.post-88220105686501877072010-12-17T05:54:00.000-08:002010-12-17T07:02:51.080-08:00Oracle PO API to mass close POThe following procedure has to be executed in Oracle environnement, but not in TOAD or SQL Developper with contexualization. <br /><br /><span style="font-style:italic;">PROCEDURE Mass_close_PO(<br /> PR_po_header_id IN NUMBER, <br /> PR_po_line_id IN NUMBER, <br /> PR_po_shipment_id IN NUMBER, <br /> PR_action IN VARCHAR2, <br /> PR_reason IN VARCHAR2,<br /> PR_result OUT BOOLEAN,<br /> PR_return_code OUT VARCHAR2<br /> ) IS<br /> -- =====================================================================<br /> -- P R O C E D U R E Mass_close_PO<br /> -- =====================================================================<br /> -- Description : Mass close or finally close PO<br /> -- =====================================================================<br /> -- I N P U T<br /> -- =====================================================================<br /> -- Nom Description<br /> -- PR_po_header_id po_header_id<br /> -- PR_po_line_id po_line_id<br /> -- PR_po_shipment_id po_shipment_id<br /> -- PR_action po_action<br /> -- PR_reason po_closed_reason<br /> -- =====================================================================<br /> -- O U T P U T<br /> -- =====================================================================<br /> -- Nom Description<br /> -- PR_result TRUE or FALSE <br /> -- PR_return_code Error message <br /> -- ===================================================================== <br /><br /><br /> BEGIN<br /> g_step := 'Mass_close_PO - PR_po_header_id = '|| PR_po_header_id || ' PR_po_line_id = ' || PR_po_line_id || ' PR_po_shipment_id = ' || PR_po_shipment_id;<br /> fnd_file.put_line(fnd_file.log, to_char(SYSDATE,'DD-MM-RRRR HH24:MI:SS : ') || g_step);<br /><br /> PR_result := PO_ACTIONS.CLOSE_PO( <br /> P_DOCID => PR_po_header_id, <br /> P_DOCTYP => 'PO', <br /> P_DOCSUBTYP => 'STANDARD', <br /> P_LINEID => PR_po_line_id,<br /> P_SHIPID => PR_po_shipment_id,<br /> P_ACTION => PR_action, <br /> P_REASON => PR_reason, <br /> P_CALLING_MODE => 'PO', <br /> P_CONC_FLAG => 'N', <br /> P_RETURN_CODE => PR_return_code, <br /> P_AUTO_CLOSE => 'N' ,<br /> P_ACTION_DATE => SYSDATE ,<br /> P_ORIGIN_DOC_ID => NULL <br /> );<br /><br /> EXCEPTION<br /> WHEN OTHERS THEN<br /> RAISE;<br /> END Mass_close_PO; </span><br /><br /> Create a cursor to select eligible shipment lines in po_line_locations_all. Specify the action (CLOSE or FINALLY CLOSE) and the closed reason, call the below procedure to mass close PO.<br /><br /> The standard logic of this API will be the following : after closing the shipment line, the program will control the related po line, if all shipment line are closed or finally closed, api will close this po line. Item for the po header, if all related po lines are closed or finally closed, api will close the po header.ccchuanhttp://www.blogger.com/profile/12412031470006761145noreply@blogger.com0tag:blogger.com,1999:blog-1061062602867709175.post-55249003522871762962010-05-30T16:42:00.001-07:002010-05-30T16:49:20.941-07:00推荐两个智能化图像、声音搜索网站1,[ http://tineye.com ]<br />这是个很酷的网站,如果你有张你不知道的明星的照片,或者是某处风景图等等,你可以从自己电脑上传图片,,然后点左面的那个框,上传,让它进行对比,帮你找<br /><br />比如说,任意一张图,或者是画,你不知道它的名字,但是你可以上传上去,TINEYE会马上显示出一些有这个图片的网址,那么你可以点击这个网址,看看对你寻找图片的出处有没有帮助。<br /><br />智能化的图片对比搜索技术,对人们的生产生活产生的有益影响都是巨大的!<br /><br />2,[ http://www.midomi.com/ ]<br />这是一个很好玩的网站,大家在看视频的时候,比如说,WOW有关的PVP视频,里面有很多喜欢的歌曲,但是你不知道名字。你可以在优酷上发留言问,有人回答,那再好不过,没人回答就傻眼了?<br /><br />不,你可以上这个网站,首页上就有录音功能,你可以开麦,然后哼唱一段。让智能化的米多米帮你搜索你要的歌曲。<br /><br />如果你实在五音不全,你可以把你要搜索的歌曲拷一段放进你手机等能功放的设备里,然后让手机话筒对着你的麦、、、ccchuanhttp://www.blogger.com/profile/12412031470006761145noreply@blogger.com0tag:blogger.com,1999:blog-1061062602867709175.post-34556313723455220122010-05-30T16:32:00.001-07:002010-05-30T16:32:38.922-07:00图片搜索时代终于来临了?关于图片搜索和声音搜索,我已经期待和思考了很久。今天终于看到国内一家公司推出的图片识别搜索服务,很是兴奋,赶快试用了一下。<br /><br /><br /><br />淘淘搜网址:http://www.taotaosou.com/ (不禁PS一下,估计是淘宝出资赞助的,连名字都这么淘。。。)<br /><br /><br /><br />目前这家网站还只能搜索T-Shirt。可搜图片有两种方式,一种是本地上传,一种是网络上的图片。<br /><br />关于第一种方式,可以理解为哪一天你走在大街上,看到一MM传的衣服特别可爱,也想买一件,但又不知道能到哪儿买。你就可以拿出你的手机,偷拍下这个MM,完之后把照片上传到这个网站,这网站就会到淘宝上的图片库里搜同样样子的T-Shirt。<br /><br />关于第二种方式,方便了追星族模仿明星的穿着。我们如果对哪个明星的穿着感兴趣的话,就可以把新闻上的照片导过来,开动搜索,查一查淘宝上有没有人翻这件衣服的。<br /><br /><br /><br />放眼当前的互联网市场,图片搜索功能到现在都没有成功研究出来(最起码是没有一家成功推广的),个中肯定是有原因的。一个可能就是技术问题。我估计Image的后台识别和处理方式不像文字数字那样简单。关于这一方面,可能还没有制定统一的标准。再一个就是商业化的问题。没有商业投资的话,研究人员就不可能继续下去。在这一点上,这家网站就非常聪明。联合淘宝开发,既实现了对图片搜索的研究,又可以将阶段性的成果结合淘宝的庞大图片库来测试,阶段性上线后即可以为淘宝服务,真是淘宝和研究人员的双赢。<br /><br /><br /><br />再来说说我的测试结果:概念很好,结果很差!<br /><br />我从电脑里找了一张模特T-Shirt图,传上去,搜了一下。结果搜不到,也算正常吧,这衣服可能国内淘宝上没卖的。在提示我没有找到同样衣服的同时,就跟google一样,其他的T-Shirt在下边建议了出来。好吧,那我就用一件你建议给我的衣服搜,看看能不能搜出同样的出来。我就copy了一件衣服图片的link,用第二种方法开搜。结果同样的衣服没搜出来,到搜出来了10几件八杆子打不着的T-Shirt。。。 哭笑不得。。。<br /><br /><br /><br />这家网站的理念真的不错,但如果没有成熟技术的支持,匆忙上线只能是拔苗助长,摆出来贻笑大方。<br /><br />图片搜索和声音搜索到现在还没有大范围推广,肯定是理论和技术上还有没过关的地方。希望研究人员多多努力,赶快把这项技术成功的推广开来。ccchuanhttp://www.blogger.com/profile/12412031470006761145noreply@blogger.com0tag:blogger.com,1999:blog-1061062602867709175.post-39297877395799174552010-05-30T15:23:00.001-07:002010-05-30T15:23:58.173-07:00创业者的Plan A和Plan B创业是在生与死之间的搏弈,创业之路要经过火焰山,要经过地狱之门,为了确保行程安全,上路时最好准备两手计划:Plan A和Plan B。<br /><br />Plan A:如果我能搞到VC的钱,就高调出发,过把瘾,好好地大干一场!<br /><br />Plan B:如果我搞不到VC的钱,就自己掏钱,低调苦干,一定赚进钱来!<br /><br />Plan A:产品多样化,产业链上下都要抓,企业多元化经营才能不在一棵树上吊死。<br /><br />Plan B:只做一件事情,把一件事情做好、做透、做到了极致,别的什么也不去做。<br /><br />Plan A:市场是要靠钱去砸出来的,市场费用的多少,决定了我的市场占有率。<br /><br />Plan B:创新的产品,过硬的品质,客户的体验,不需自我炒作,口碑传万家。<br /><br />Plan A:高薪聘请大公司的高管,高标准、高水平、严格按流程管理。<br /><br />Plan B:用股票期权激励团队,用激情、梦想、结果导向,自我管理。<br /><br />Plan A:有没有利润、赚不赚钱不要紧,只要速度快,故事动人,马上能IPO上市。<br /><br />Plan B:不做亏本生意,不去跟风,有现金流、有利润、有增长,就是一桩好生意。<br /><br />Plan A:防止竞争的最好方法是专利,消灭竞争的最好办法是收购竞争对手。<br /><br />Plan B:防止竞争的最好方法是迅速商用,消灭竞争的最好方法是不断创新。<br /><br />Plan A:这商业世界的次序是大鱼吃小鱼,天经地义。<br /><br />Plan B:这商业世界的次序是快鱼吃慢鱼,天经地义。<br /><br />Plan A:辞掉了高薪的职位去创业,不成功,实在是亏大了,只准成功、不许失败!<br /><br />Plan B:辞掉了高薪的职位去创业,是自己的选择,不成功,东山再起、从头再来!<br /><br />世界上有多少事情是预先想好的?有多少成功是一帆风顺的?有多少创业公司的Plan A能够得以完满兑现?Plan A是理想的,前提是如果有 钱、如果做大、如果、如果、如果……Plan B是迫不得已的,没有办法的办法,当创业者走到了陷阱的边缘、生死关头,相信都会清醒过来的,因为你别无选 择。<br /><br />作者简介:<br /><br />查立:乾龙创投合伙人;网易科技名博;曾在ZiffDavis等公司任管理职务;在英国上市公司MotionPoster其亚洲区任CEO。ccchuanhttp://www.blogger.com/profile/12412031470006761145noreply@blogger.com0tag:blogger.com,1999:blog-1061062602867709175.post-87322509619992306922010-04-27T08:16:00.000-07:002010-04-27T08:37:20.473-07:00Problème compilation Oracle forms 6i - 10g lors de la migration 11.5.9 à 11.5.10Contexte : <br /><br />Après la migration 11.5.10, les spécifiques doivent être ajoutés sur l'écran de facture AR standard (version 11.5.10). <br /><br />Etape 1 > Prendre l'écran standard 11.5.10 via FTP<br /><br />Etape 2 > le modifier avec Oracle Forms 6i<br /><br />Etape 3 > déposer la nouvelle forms sur le serveur dans $AU_TOP/forms/F ou US<br /><br />Etape 4 > compiler la forms avec f60gen, mettre le fmx dans $AR_TOP/forms/F ou US<br /><br />Problème : <br /><br />A l'étape 2, si la forms est déposé dans un répertoire normale <br />==> impossible de l'ouvrir avec Oracle forms 6i, l'outil plante sans message d'erreur. Il est possible de l'ouvrir avec Oracle forms 10g mais après on aura un problème de compilation à l'étape 4 f60gen : message d'erreur ACCESS DENIED.<br /><br />Solution :<br /><br />Mettre le forms standard dans un répertoire local. Avant de l'ouvrir, il faut télécharger toutes les forms standard de $AU_TOP/forms/F ou US et les mettre dans le même répertoire. Une fois toutes les forms téléchargées, on pourra ouvrir cette forms avec 6i puis la modifier. La forms modifiée sera compilée sans problème à l'étape 4 sur le serveur Unix.ccchuanhttp://www.blogger.com/profile/12412031470006761145noreply@blogger.com0tag:blogger.com,1999:blog-1061062602867709175.post-22191989339416717322010-04-23T07:08:00.000-07:002010-04-23T07:09:29.049-07:00VAProxyD.dll 导致的IE内核的浏览器崩溃的解决办法今晚RP小爆发,偶的浏览器不幸崩溃了。<br /><br /> <br /><br />好久以前就卸掉了Firefox,只留了IE和Maxthon,两个都是IE内核的,所以这次都给挂了。<br /><br /> <br /><br />花了将近一个小时查毒+调试+卸载,最后终于弄好了。估计在国外看PPLIVE的人不少,so方法发上来,大家备用吧。<br /><br /> <br /><br />现在回头想想,原因应该是今晚卸载的一个UUSEE插件。之后在打开一个视频网页的时候,浏览器就崩溃了。只不过当时是在新标签里打开视频,所以只是新标签崩溃,浏览器中其他非视频网页仍然正常运行。<br /><br /> <br /><br />当浏览器彻底关闭以后,再次打开时,错误信息就弹出来了:<br /><br />程序无法正常启动。<br /><br />点击详细信息的话,信息如下:<br /><br />问题签名:<br /> 问题事件名称: APPCRASH<br /> 应用程序名: iexplore.exe<br /> 应用程序版本: 8.0.6001.18904<br /> 应用程序时间戳: 4b835fec<br /> 故障模块名称: VAProxyD.dll<br /> 故障模块版本: 1.0.0.50<br /> 故障模块时间戳: 4bcfe868<br /> 异常代码: c0000005<br /> 异常偏移量: 0000a8bd<br /> OS 版本: 6.0.6001.2.1.0.768.3<br /> 区域设置 ID: 2052<br /> 其他信息 1: fd00<br /> 其他信息 2: ea6f5fe8924aaa756324d57f87834160<br /> 其他信息 3: fd00<br /> 其他信息 4: ea6f5fe8924aaa756324d57f87834160<br /><br /> <br /><br />第一感觉就是RP爆发,病毒来了。一边祝福着360的全体人员的老母,一边无奈的打开360查杀(一时半会儿也没别的,唉)。<br /><br />与此同时,一颗红心,两手准备。我感觉也说不定是IE的哪个插件设置变了,于是右键IE,通过属性进入加载项,看来看去也没找到陌生的插件,只好放弃。<br /><br />继续等待漫长的查毒,忽然想起了刚才删除的UUSEE的插件。说不定删这个的时候,把它用到的其他的视频软件的插件需要的component也顺带删掉了。。。事已至此,只好闭上眼睛试了(反正我也没装太多的视频插件)。第一个删掉的就是PPLIVE的加速器。删掉之后,重新打开浏览器,BINGO!可以用了!<br /><br /> <br /><br />这次漏洞最不方便的地方就是出问题之后,所有的浏览器(IE内核的)都无法打开了。所以就不能上网找解决方案+下载其他内核浏览器,而且浏览器崩溃的错误信息给的很不明确,让人无从下手。其实这倒也不能怪微软了,如果它这样开放IE内核视频interface的话,势必会造成插件管理和兼容的混乱。对我们用户来说,在浏览器提供更丰富功能的前提下,适当的小崩溃就一笑而过吧。。。ccchuanhttp://www.blogger.com/profile/12412031470006761145noreply@blogger.com0tag:blogger.com,1999:blog-1061062602867709175.post-13448542336480628682010-03-29T03:29:00.000-07:002010-03-29T03:40:21.474-07:00SQL Loader fichier CTL 不可理解的ORA-01722: Nombre non valideLoader文件如下:<br /><br />LOAD DATA<br />APPEND<br />INTO TABLE SE_KN_HEADERS<br />FIELDS TERMINATED BY ';'<br />(<br /> NOKN,<br /> NOEXP,<br /> MODEXP,<br /> LOCATION,<br /> COUNTRY,<br /> IATA_CODE,<br /> AIRPORT,<br /> AWB_NUMBER,<br /> FLIGHT,<br /> DEPART_DATE "to_date(:DEPART_DATE,'DDMMYYYY')",<br /> DEPART_TIME "to_date(:DEPART_TIME,'HH24MI')",<br /> ARR_DATE "to_date(:ARR_DATE,'DDMMYYYY')",<br /> ARR_TIME "to_date(:ARR_TIME,'HH24MI')",<br /> INVOICE_NUM,<br /> INVOICE_AMOUNT "to_number(:INVOICE_AMOUNT,'9999999999.99')",<br /> CURRENCY,<br /> INVOICE_DATE "to_date(:INVOICE_DATE,'DDMMYYYY')",<br /> POD_DATE "to_date(:POD_DATE,'DDMMYYYY')",<br /> POD_TIME "to_date(:POD_TIME,'HH24MI')",<br /> POD_SIGN,<br /> SHIPMENT_WEIGHT,<br /> NUMLOT "to_number(:NUMLOT,'99999999')"<br />)<br /><br />测试的输入文件如下:<br /><br />“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<br /><br />”<br /><br />在Oracle中运行后程序以warning结束,错误信息如下:<br /><br />Enregistrement 1 : Rejeté - Erreur sur table "SE"."SE_KN_HEADERS", colonne NUMLOT. ORA-01722: Nombre non valide<br /><br />分析:<br />文本文件中的NUMLOT一列是100,明明是Nombre,为什么会显示Nombre non valide呢?<br />问题在于csv文件中看不到的最后一个字符:回车。<br />文本中有两行,一行数据,另外一个是空行。就是这个空行和第一行最后一列里的数据连了起来,导致loader不能正确识别数字。<br />另外,如果分割符标错了的话(应该用‘;’分割,结果在某一数字列后用了‘,’,于是数字列就和后边的列合并了),一样也会出现这样的错误。ccchuanhttp://www.blogger.com/profile/12412031470006761145noreply@blogger.com0tag:blogger.com,1999:blog-1061062602867709175.post-53711804419660847972010-03-26T08:32:00.000-07:002010-04-30T07:54:14.159-07:00Vérification des réceptions/expéditions pour une commande en PL/SQL dans Oracle applicationsPour vérifier les réceptions:<br /><br />SELECT mtl.transaction_date DATE_MVT,<br /> mtl.transaction_quantity QTE_RECUE,<br /> rsh.receipt_num "Receipt",<br /> po_h.segment1 "PO"<br /> FROM rcv_transactions rcv,<br /> po_distributions_all po_pod,<br /> po_lines_all po_l,<br /> po_headers_all po_h,<br /> rcv_shipment_headers rsh,<br /> mtl_material_transactions mtl<br />WHERE 1=1<br /> AND rcv.po_line_id = po_pod.po_line_id<br /> AND rcv.po_header_id = po_pod.po_header_id<br /> AND po_pod.po_line_id = po_l.po_line_id<br /> AND po_pod.po_header_id = po_l.po_header_id<br /> AND mtl.rcv_transaction_id = rcv.transaction_id<br /> AND po_l.org_id = po_h.org_id<br /> AND po_l.po_header_id = po_h.po_header_id<br /> AND rcv.shipment_header_id = rsh.shipment_header_id<br /> AND po_h.segment1 = '99750'; -- PO to check<br /><br />Pour vérifier les expéditions (requête spécifique qui n'est utilisable que chez un client ;-)):<br /><br />SELECT sel.*<br /> FROM se_exped_lines sel, po_lines_all pla, po_headers_all pha<br /> WHERE sel.cmde_line_num = pla.po_line_id<br /> AND pla.po_header_id = pha.po_header_id<br /> AND pha.segment1 = '102575'; -- Numéro de commandeccchuanhttp://www.blogger.com/profile/12412031470006761145noreply@blogger.com0tag:blogger.com,1999:blog-1061062602867709175.post-32763746860673985412010-03-24T04:08:00.000-07:002010-03-25T07:13:50.185-07:00Oracle Applications中经常用到的FNDLOAD指令1 - Jeu de valeur / Value Set<br /><br />Download:<br />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"<br /><br />Upload:<br />FNDLOAD apps/apps O Y UPLOAD $FND_TOP/patch/115/import/afffload.lct CHA-ICS-XXXX.ldt<br /><br />2 - Champs Utilisateurs Flexibles / Descriptive Flex field<br /><br />Download:<br />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'<br /><br />APPLICATION_SHORT_NAME 和DESCRIPTIVE_FLEXFIELD_NAME都可以在设置界面的Diagnostic->Examin里找到。<br /><br />Upload:<br />FNDLOAD apps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/afffload.lct SE_DFF_HR_LOCATIONS.ldt<br /><br />3 - Traitement simultané / Concurrent program<br /><br />Download:<br />FNDLOAD apps/apps 0 Y DOWNLOAD $FND_TOP/patch/115/import/afcpprog.lct SE_XXXX.ldt PROGRAM CONCURRENT_PROGRAM_NAME='SE_XXXX<br /><br />Upload:<br />FNDLOAD apps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/afcpprog.lct SE_XXXX.ldt<br /><br />4 - Jeu de traitements / Request Sets<br /><br />Download:<br />FNDLOAD apps/apps O Y DOWNLOAD $FND_TOP/patch/115/import/afcprset.lct SE_XXXX.ldt REQ_SET REQUEST_SET_NAME='SE_XXXX'<br /><br />Upload:<br />FNDLOAD apps/apps O Y UPLOAD $FND_TOP/patch/115/import/afcprset.lct SE_XXXX.ldt<br /><br />5 - Lien dans jeu de traitements / Request Sets Link<br /><br />Download:<br />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'<br /><br />Upload:<br />FNDLOAD apps/apps O Y UPLOAD $FND_TOP/patch/115/import/afcprset.lct SE_XXXX_LINK.ldt<br /><br />6- Groupe de traitement / Request Group<br /><br />Download:<br />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"<br /><br />下载之后,所有All Reports Group和Oracle Purchasing Application的concurrent request都会被下载下来。如果希望将所有requests全部传到新的base上的话,直接上传即可。<br />若希望只上传某一个request,则需要打开ldt文件,将其它的request删除,只保留需要上传的request。<br /><br />Upload:<br />FNDLOAD apps/apps O Y UPLOAD $FND_TOP/patch/115/import/afcpreqg.lct All_Reports.ldtccchuanhttp://www.blogger.com/profile/12412031470006761145noreply@blogger.com0tag:blogger.com,1999:blog-1061062602867709175.post-3699120354056804422010-03-05T06:38:00.000-08:002010-03-05T08:57:27.219-08:00ORA-00960: nom de colonne ambigu dans liste de sélection 解决办法程序报错:ORA-00960: nom de colonne ambigu dans liste de sélection<br /><br />原因:<br /><br />这是因为在source中使用了类似于select <span style="font-weight: bold;">A</span>,B,C,<span style="font-weight: bold;">A</span> from TEST之类的语句。Oracle不允许在select里出现两次同一列的名称。<br /><br />在这种情况下,只需要为第二次呼叫的列名添加一个alias就可以了:select <span style="font-weight: bold;">A</span>,B,C,<span style="font-weight: bold;">A “D”</span> from TESTccchuanhttp://www.blogger.com/profile/12412031470006761145noreply@blogger.com0tag:blogger.com,1999:blog-1061062602867709175.post-36531012581159113062010-03-05T06:17:00.000-08:002010-03-05T08:58:35.444-08:00Input truncated to * characters 解决办法"Input truncated to 5 characters" s'affiche dans le fichier de sortie du concurrent programme.<br /><br />Cause :<br />Dans le fichier exécutable sql, à la fin juste après "/" , ajouter un retour chariot, supprimer les espaces inutiles. 在“/”后边如果不是紧接回车的话 就会出现这个信息,不是很mechant,但放到结果里很不好看。ccchuanhttp://www.blogger.com/profile/12412031470006761145noreply@blogger.com0