




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
目錄R12WEBADI設(shè)置過(guò)程講解-Integratorsetup 2R12WEBADI設(shè)置過(guò)程講解-Interfacesetup 3R12WEBADI設(shè)置過(guò)程講解-Contentsetup 6R12webadi導(dǎo)入程序設(shè)置 9R12WEBADI刪除API 10R12WEBADI的一個(gè)小技巧 11R12WEBADI建立不了的解決辦法 11R12WEBADI基于TABLE的LOV詳細(xì)研究 12R12WEBADI的參數(shù)設(shè)置研究之一:設(shè)置CreateDocumentParameters 14R12WEBADI中如何建立DATE字段的LOV驗(yàn)證 20R12WEBADI中建立基于KeyFlexfields的LOV驗(yàn)證 20R12WEBADI如何建立基于table的LOV驗(yàn)證 21R12WEBADI如何在template中自動(dòng)生成sequence字段 24R12WEBADI-關(guān)于ADIsecurityrules 25在WEBADI中實(shí)現(xiàn)組織屏蔽 25R12WEBADI表結(jié)構(gòu) 27
R12WEBADI設(shè)置過(guò)程講解-Integratorsetup這是建立ADI的第一步,需要設(shè)置的東西如下:IntegratorName:隨便寫(xiě),如果有namingstandard,要遵守InternalName:即Integratorcode,這里不宜輸入太長(zhǎng)的code,建議10個(gè)以?xún)?nèi),以保證后面生成其它對(duì)象的code不會(huì)超長(zhǎng),因?yàn)閻盒牡膐racle會(huì)在自定義的對(duì)象code后面加?xùn)|西,比如這個(gè)integratorcode,如果你輸入CAPINV,存到表里后是CAPINV_XINTG,無(wú)故多出6個(gè)字符。Application:一般選客制化專(zhuān)用的applicationReportingOnly:僅用于下載數(shù)據(jù)的Integrator,如果是upload的,這項(xiàng)萬(wàn)萬(wàn)不能選Enabled:Yes,必須的DisplayinCreateDocuementPage:因?yàn)镮ntegrator要提供給user使用的話,有兩種途徑,一種是為這個(gè)Integrator單獨(dú)建個(gè)form.function,然后加入到user的menu中;還有一種就是把標(biāo)準(zhǔn)的CreateDocument功能提供給user,而user能在里面找到這個(gè)Integrator就必須選上這項(xiàng).一般來(lái)說(shuō)我們會(huì)用第一種方式,所以這項(xiàng)一般不用選.IntegratorParameters:目前我只測(cè)了DocumentParameters,另兩個(gè)不知干什么用的,可惡的oracle也沒(méi)文檔.SecurityRules:如果這個(gè)Profile:BNEAllowNoSecurityRule設(shè)成No的話,這項(xiàng)要設(shè),可選個(gè)user肯定有的function或自已建個(gè)新的subfunction,做為securityfunction,不過(guò)如果是自已建的function的話,需要另外加入user的menu中,否則user無(wú)法使用這個(gè)Integrator.R12WEBADI這里支持多個(gè)securityfunction,但目前我用的這個(gè)版本的ADI只能選一個(gè),不知是bug還是其它原因。這步設(shè)置對(duì)應(yīng)的后臺(tái)表為bne_integrators_b和bne_integrators_tl.客制化的Integrator后臺(tái)表bne_integrators_b中的source為'C',因此我們可以在manager職責(zé)中修改,如果不想讓人改,把C刪了;同樣,如果想修改oracle標(biāo)準(zhǔn)的Integrator,可把source改為C,這樣就可以修改了,不過(guò)不建議修改,因?yàn)樯?jí)不支持。不過(guò)改成C后,你可以直觀的在manager職責(zé)中看到它的詳細(xì)的setup,比在后臺(tái)看方便一點(diǎn).R12WEBADI設(shè)置過(guò)程講解-Interfacesetup這是建立一個(gè)新的Integrator的第二步,也是最關(guān)鍵的一步!InterfaceName:隨便寫(xiě),反正oracle會(huì)生成一個(gè)interfacecode,而這個(gè)才是我們需要的,而我們需要的,oracle偏偏不讓我們看到,而且還加?xùn)|西。。。生成的code應(yīng)該是integratorcode+INTF1之類(lèi)的InterfaceType:主要是Table和APIProcedure.那么什么時(shí)候用Table,什么時(shí)候用Procedure呢?下面是我個(gè)人的意見(jiàn),僅供參考:1.如果validation特別簡(jiǎn)單(都是單行單字段的校驗(yàn)),且template上的數(shù)據(jù)要進(jìn)到某一張表里的話,用table.2.如果validation比較復(fù)雜(可能包含了多行組合校驗(yàn),比如訂單行金額是否等于頭金額;多字段組合校驗(yàn),比如某個(gè)vendor,某個(gè)vendorsite下不能有這種currency的invoice之類(lèi)的;duplicate校驗(yàn),比如某個(gè)asset,在basetable或interface里已經(jīng)有了,不能再用tempate導(dǎo)一遍之類(lèi)的,因?yàn)檫@些校驗(yàn)要寫(xiě)javaclass,我不知怎么寫(xiě)(可惡的oracle也沒(méi)文檔).所以只能用Procedure去做.3.如果template的數(shù)據(jù)僅僅用來(lái)傳給標(biāo)準(zhǔn)API,用來(lái)做某種處理,不用進(jìn)到某張表的話,當(dāng)然不要用table,而是用Procedure.TableName:表名,此表需要注冊(cè)在database里,否則無(wú)法識(shí)別.PackageName:不用說(shuō)了,你寫(xiě)的uploadpackage的名字ProcedureName:UploadProcedure的名字APIreturns:Procedure/Function傳出的參數(shù),一般選fndmessagecode,用來(lái)接收procedure中raise出來(lái)的error.Apply一下:AttributeName:其實(shí)就是table的字段或Procedure的傳入?yún)?shù)名.PromptLeft:這個(gè)要改一下,一般格式是"InvoiceNumber"這樣的,你可以只為要放到layoutheader上的字段改,因?yàn)樾猩系淖侄沃挥蠵romptabove,沒(méi)有l(wèi)eft.DataType:從table或procedure繼承下來(lái)的Enabled:此項(xiàng)如果不選的話,該字段即使在template可以顯示,并且可以填東西,但數(shù)據(jù)不會(huì)參與upload.即此字段完全無(wú)用了(適合一些無(wú)需填值的字段).Displayed:此項(xiàng)如果不選的話,在定義layout時(shí),將無(wú)法看到此項(xiàng).也就無(wú)法在template中看到。當(dāng)然,就算你這選了,但layout中沒(méi)選此項(xiàng),也是無(wú)法看到的.DefaultType/DefaultValue:用來(lái)設(shè)定字段的默認(rèn)值,在11i里我一般是在layout里定義的,但R12好象主要在這里定義了,layout中的default反而不用了,而且我在layout中定義好象也老出問(wèn)題,不知是bug,還是其它原因.EnvironmentParameters:OAUSER.ID/SYSDATE/DATABASE常用的,另外一些sob的,例如sob.chartofaccountsid,sob.periodsetname,sob.setofbooksid之類(lèi)的,也不知還能不能用,還沒(méi)測(cè)Constant:這個(gè)最簡(jiǎn)單,直接寫(xiě)個(gè)東西進(jìn)去就行了。SQL:這個(gè)也簡(jiǎn)單,寫(xiě)個(gè)SQL完事,結(jié)果多行的話,取第一行。sql里可包含$env$.userid,$env$.appid,$env$.respid之類(lèi)的環(huán)境變量,還有$PROFILES$.default_org_id之類(lèi)的取profileoptions的東東。ProfileOption:從字面上理解,是用來(lái)取配置文件中某個(gè)option的值,但我測(cè)了,不成功,不知是bug還是別的原因.Lookups:不知干什么的,前兩天無(wú)意看到有個(gè)標(biāo)準(zhǔn)的Integrator具然包含多個(gè)Interface,而Interface間的聯(lián)接似乎就用這個(gè)。。。因?yàn)榇隧?xiàng)在后臺(tái)叫TABLELOOKUP...多Interface的Integrator還不知怎么做,待研究.ExcelFormula:這項(xiàng)不需要選defaulttype,直接在defaultvalue中輸入公式,格式如下:=R[]C[]*R[]C[]之類(lèi)的,比如=RC[-1]*RC[-2],即表示此字段的值為左邊兩列的乘積.Sequence:此項(xiàng)需后臺(tái)修改表,defaulttype為SEQUENCE_EACH_ROW,defaultvalue為sequence的名字,如果不在apps下的話,需要在apps下建同義詞AttributeType:Real表明此字段為真實(shí)的表字段或過(guò)程參數(shù),而Custom的是我們另外建的字段,一般用來(lái)做占位列(比如一個(gè)LOV顯示的是DESC,存的是ID,這個(gè)DESC一般就放在這種列里)或只讀顯示項(xiàng),比如顯示當(dāng)前的database信息.通過(guò)點(diǎn)后面的update,可以修改字段的一些屬性.DataType:不需改,從table或procedure中繼承下來(lái)的Length:大家發(fā)現(xiàn)這項(xiàng)沒(méi)有,因?yàn)檫@是基于procedure的interface,而對(duì)于procedure來(lái)說(shuō),所有的傳入?yún)?shù)都是沒(méi)有l(wèi)ength的,而如果基于table的話,則會(huì)有l(wèi)ength.而沒(méi)有l(wèi)ength的結(jié)果就是excel無(wú)法做字段寬度的校驗(yàn),你就需要在procedure中寫(xiě)這樣的語(yǔ)句:iflength(p_vendor_name)>50thenraise_application_error(-20001,'Lengthexceedsmaxchars');endif;這樣明顯增加了開(kāi)發(fā)的量,所以對(duì)于procedure的interface,我們可以通過(guò)直接修改后臺(tái)表來(lái)設(shè)定字段的length.AttributeType:無(wú)需修改Required:此項(xiàng)很重要,設(shè)定字段為必填字段,如果你在template上沒(méi)輸?shù)脑挘琫xcel校驗(yàn)會(huì)報(bào)錯(cuò),這樣的話,你就不用在procedure中寫(xiě)這樣的語(yǔ)句了:ifp_vendor_nameisnullthenraise_application_error(-20001,'YouhavetoenteraVendorname');endif;EnabledforMapping:設(shè)定該字段是否可建mapping,當(dāng)你的Integrator中含有Content時(shí),這項(xiàng)有用,一般來(lái)說(shuō),要在layout中顯示的字段這項(xiàng)要選,其它可選可不選。Availableforsummary:這項(xiàng)不知道,字面看是是否允許匯總。沒(méi)測(cè)過(guò)NotNull:這項(xiàng)似乎和required功能一樣啊ReadOnly:設(shè)定某字段為只讀字段,一般適用于Custom類(lèi)型的顯示字段.或不需用戶(hù)修改的有默認(rèn)值的字段.下面的是建validation的部分,這里可建tableLOV,dateLOV,KFF/DFFLOV,及java類(lèi)型的LOV.最后一部分是設(shè)Promptabove,對(duì)于line上的字段,此項(xiàng)要寫(xiě)一下。UserHint最好也寫(xiě)一下,必填字段的一般為*Text,*Date,*Number這樣的,非必填的把*去了。有LOV的一般為*List-Text或List-Text之類(lèi)的.R12WEBADI設(shè)置過(guò)程講解-Contentsetup這是建立一個(gè)新的Integrator的第三步,當(dāng)然,不是必須要設(shè)置的一步。Content的作用是在user下載template的時(shí)候,可以把本機(jī)的準(zhǔn)備好的datafile傳給這個(gè)template,這樣的話,download下來(lái)的template就是一個(gè)有數(shù)據(jù)的template,也就不需要user輸入或copy數(shù)據(jù)了.ContentName:隨便寫(xiě)ContentType:主要是TextFile和SQLQuery,TextFile很明顯是user需要提供一個(gè)datafile,而SQL則是直接從系統(tǒng)中取數(shù)據(jù)到template中。我們先看TextFile的。NumberOfColumns:根據(jù)需要確定,一般來(lái)說(shuō),你的layout有多少列,這是就寫(xiě)多少,與layout一一對(duì)應(yīng)。也可少于layout的列,僅針對(duì)部分列傳入。但最好不要多于layout列。ReportingOnly:萬(wàn)萬(wàn)不能選,此項(xiàng)僅用于下載數(shù)據(jù).Apply一下:ContentColumns這是我選的是3列,DisplayName可改可不改,改了也就是為了后面建mapping的時(shí)候看的清楚點(diǎn),沒(méi)什么實(shí)際用途.ContentParameters:此項(xiàng)很重要,一定要有個(gè)parameterlist,這里ADI已經(jīng)預(yù)置了一個(gè),我們直接拿來(lái)用即可:Parameterlistname:WebADI:Download"TextFile"ParametersApplication:WebApplicationDesktopIntegratorSumbit修改,然后開(kāi)始建Mapping.Mapping的功能是建立Content字段與Interface字段的映射關(guān)系,也就是datafile的列與layout列的映射,告訴ADIdatafile里的每一列分別導(dǎo)到template里的哪一列上.Mapping的建立過(guò)程很簡(jiǎn)單,不過(guò)有一個(gè)要特別注意的,在第二步我們?cè)O(shè)定interface的時(shí)候,點(diǎn)update修改字段屬性時(shí),有一項(xiàng)叫做EnabledforMapping,這項(xiàng)如果不選的話,該字段就無(wú)法與Content建立映射。DefineMapping選擇相應(yīng)的Integrator后,系統(tǒng)會(huì)查詢(xún)有沒(méi)有建好的Mapping,如沒(méi)有的話,點(diǎn)definemapping新建一個(gè)MappingName:隨便寫(xiě)MappingKey:Unique的,而且要大寫(xiě)NumberofColumns:與Content的列數(shù)一致左邊選Content列,右邊選對(duì)應(yīng)的Interface列。注意,一定要選,手工輸會(huì)有問(wèn)題。Submit修改.現(xiàn)在來(lái)Preview一下IntegratorDonwloadtemplate時(shí),有一步會(huì)讓我們選Content,選剛建好的這個(gè).出現(xiàn)ContentParameter的界面,LocalFilename:選擇本機(jī)中已經(jīng)準(zhǔn)備好的數(shù)據(jù)文件,如果多于3列的話,后面的列會(huì)忽略,ADI只讀前3列.TextFileDelimiter:列分隔符,按數(shù)據(jù)文件中的實(shí)際分隔符來(lái)選,一般為逗號(hào)或Tab.DelimiterCharacter:上面如果選Other的話,需要在這手工輸入分隔符IgnoreConsecutiveDelimiters:連續(xù)分隔符是否忽略,比如文件中有這樣的格式:AAA,BBB,,,CCC,ADI會(huì)認(rèn)為是3列,如不選的話,ADI會(huì)認(rèn)為是5列.StartImportingatLineNumber:如果數(shù)據(jù)文件有標(biāo)題行的話,選2,否則輸1.Next后downloadtemplate,你會(huì)發(fā)現(xiàn)下載的template已經(jīng)有數(shù)據(jù)了.R12webadi導(dǎo)入程序設(shè)置如果你導(dǎo)入的數(shù)據(jù)不是插入到系統(tǒng)標(biāo)準(zhǔn)的接口表,或者插入到接口表之后要手動(dòng)提交一個(gè)請(qǐng)求,才能將接口表里的數(shù)據(jù)導(dǎo)入到ERP,則需要設(shè)置導(dǎo)入程序。導(dǎo)入程序是指你一次性導(dǎo)入幾十上百條數(shù)據(jù)之后,再一次性跑請(qǐng)求,將這些數(shù)據(jù)導(dǎo)入到ERP正式表,千萬(wàn)不要把跑請(qǐng)求的代碼寫(xiě)到接口程序里,那樣會(huì)導(dǎo)致導(dǎo)入非常慢。選擇導(dǎo)入程序類(lèi)型一般選擇“異常并發(fā)請(qǐng)求”或者PL/SQLAPI,個(gè)人覺(jué)得把跑請(qǐng)求的代碼寫(xiě)到一個(gè)PL/SQL里,可能會(huì)方便,這里假定選擇“異步并發(fā)請(qǐng)求”。設(shè)置并發(fā)程序不知道是BUG還是什么原因,在這里輸入之后,還要在bne_attributes表中后臺(tái)更新1,2,3,4,5行數(shù)據(jù)是系統(tǒng)自動(dòng)加進(jìn)去的,實(shí)際就是調(diào)用的fnd_request.submit_request(application=>,program=>,description=>,start_time=>,sub_request=>,argument1=>,argument2=>,argument3=>),要特別留意的是,參數(shù)如果是文本,要給值加上引號(hào),‘200’組定義:組定義的意思是分幾次跑請(qǐng)求,一般在組織ID上定義一個(gè)組,這樣相同的組織就會(huì)跑一次。R12WEBADI刪除APIR12WEBADI刪除一個(gè)WEBADI不要在界面上刪除,這樣會(huì)還有很多冗余數(shù)據(jù)還在后臺(tái)表里,要通過(guò)bne_integrator_utils.DELETE_INTEGRATOR這個(gè)API去刪,這樣會(huì)把跟這樣WEBADI有關(guān)的接口、內(nèi)容、導(dǎo)入程序、加載程序、參數(shù)等全都刪掉。R12WEBADI的一個(gè)小技巧現(xiàn)遇到這么一個(gè)情況,如果多個(gè)用戶(hù)同時(shí)往一張表里導(dǎo)數(shù)據(jù),為了解決并發(fā)問(wèn)題,有時(shí)我們需要為每個(gè)用戶(hù)的template數(shù)據(jù)生成一個(gè)唯一的batchnumber,用來(lái)在表里區(qū)分各自的數(shù)據(jù)。有三種辦法:1.最簡(jiǎn)單的,用createdby來(lái)區(qū)分,但如果兩個(gè)user用同一個(gè)account去導(dǎo)的話,這種區(qū)分會(huì)失敗.2.用一個(gè)autosequence來(lái)生成batchnumber,這個(gè)雖然是唯一的,也可以區(qū)分,但又有個(gè)問(wèn)題,這個(gè)sequence一般我們會(huì)在downloadtemplate的時(shí)候生成在某個(gè)字段的默認(rèn)值里,如果用戶(hù)保存了這個(gè)template,隔段時(shí)間再打開(kāi),這個(gè)sequence仍是舊的值,這就又產(chǎn)生了risk,如果表里正好也有舊的batch的數(shù)據(jù)還沒(méi)處理,那用戶(hù)用這個(gè)舊的模塊上傳新的數(shù)據(jù)就會(huì)產(chǎn)生問(wèn)題,兩批數(shù)據(jù)會(huì)混在一起。當(dāng)然,這是很極端的情況了.3.用EXCEL公式來(lái)解決,這是目前我發(fā)現(xiàn)的最好的辦法。公式如下:=VALUE(TEXT(NOW(),"YYYYMMDDHHMMSS"))可在template里建個(gè)number類(lèi)型的字段,放在context中,readonly,把上述公式放在interface的defaultvalue中,這樣的話,不管用戶(hù)是下載,還是保存后重新打開(kāi),這個(gè)值取的都是當(dāng)前的日期時(shí)間(已轉(zhuǎn)成數(shù)字).而這個(gè)時(shí)間的重復(fù)可能性基本為0.另,每次導(dǎo)入時(shí)取當(dāng)前的SESSIONID做為BATCHNUMBER也不失為一個(gè)好辦法!R12WEBADI建立不了的解決辦法如果在建WEBADI時(shí),瀏覽器一直在運(yùn)行,但是就是怎么都進(jìn)不去,可能是某個(gè)人LOCK了這個(gè)表,可以通過(guò)后臺(tái)查是不是BNE打頭的表被鎖定了,可以通過(guò)SQL強(qiáng)制解鎖如果進(jìn)不了WEBADI,首先通過(guò)后臺(tái)查哪些表鎖住了,再將鎖死的表刪掉selectsess.sid,sess.serial#,lo.oracle_username,lo.os_user_name,ao.object_name,lo.locked_modefromv$locked_objectlo,dba_objectsao,v$sessionsesswhereao.object_id=lo.object_idandlo.session_id=sess.sid;解鎖altersystemkillsession'73,31';
--以下幾個(gè)為相關(guān)表
SELECT*FROMv$lock;
SELECT*FROMv$sqlarea;
SELECT*FROMv$session;
SELECT*FROMv$process;
SELECT*FROMv$locked_object;
SELECT*FROMall_objects;
SELECT*FROMv$session_wait;如果能進(jìn)去,但是一建就報(bào)錯(cuò),可能就是你在刪除WEBADI時(shí),有數(shù)據(jù)沒(méi)刪干凈,特別要留意以下幾個(gè)表中的數(shù)據(jù)SELECT*FROMBNE_PARAM_LISTS_TLWHEREAPPLICATION_ID=20003;SELECT*FROMBNE_PARAM_LISTS_BWHEREAPPLICATION_ID=20003;SELECT*FROMBNE_PARAM_LIST_ITEMSWHEREAPPLICATION_ID=20003;SELECT*FROMBNE_ATTRIBUTESWHEREAPPLICATION_ID=20003;R12WEBADI基于TABLE的LOV詳細(xì)研究R12WEBADI提供了基于Table的LOV的功能,很方便,但由于LOV的顯示或值的提取與component的定義有很大關(guān)系,所以特做了幾個(gè)例子驗(yàn)證一下。LOV的定義可以在interface的定義界面上做(但component需另外定義),也可以使用API去做,相比較而言,我較傾向于用API.另外,如用API定義時(shí),不提供component的參數(shù)的話,WEBADI會(huì)依據(jù)LOV的相關(guān)信息為我們建立默認(rèn)的component,但我發(fā)現(xiàn),結(jié)果總是差強(qiáng)人意,因此建議,component還是顯式定義為好,不要讓W(xué)EBADI自動(dòng)建.有一點(diǎn)不好的是,用API創(chuàng)建LOV時(shí),依據(jù)參數(shù)建立的component的默認(rèn)源是ORACLE,這樣的話,我們無(wú)法在managercomponents的WEB頁(yè)面中修改這個(gè)component(除非你改componentcode,好象在前面加_XX_,但這樣還要修改bne_interface_cols_b中的componentcode,很麻煩,因此最好直接后臺(tái)修改component的信息(在bne_param_list_items_b表中),不要?jiǎng)觕omponentcode).假設(shè)Template上有三個(gè)字段,vendor_id,vendor_num,vendor_name,要求LOV建在vendor_num上,選擇后,提取id,num,name分別到三個(gè)字段中。API代碼:beginbne_integrator_utils.CREATE_TABLE_LOV(P_APPLICATION_ID=>20003,P_INTERFACE_CODE=>'A1_XINTG_INTF1',P_INTERFACE_COL_NAME=>'VENDOR_NUM'--以下為L(zhǎng)OV定義參數(shù),P_ID_COL=>'VENDOR_ID',P_MEAN_COL=>'SEGMENT1',P_DESC_COL=>'VENDOR_NAME',P_TABLE=>'ap_suppliers',P_ADDL_W_C=>'ROWNUM<10',P_WINDOW_CAPTION=>'Vendor',P_WINDOW_WIDTH=>null,P_WINDOW_HEIGHT=>null,P_TABLE_BLOCK_SIZE=>null,P_TABLE_SORT_ORDER=>null,P_USER_ID=>10653--以下為component的定義參數(shù),P_TABLE_COLUMNS=>'VENDOR_ID,SEGMENT1,VENDOR_NAME'--提取的表的實(shí)際字段,即LOV的顯示字段,P_TABLE_SELECT_COLUMNS=>'VENDOR_ID,VENDOR_NUM,VENDOR_NAME'--需要提取到template上的字段,需與interface的字段名一致,P_TABLE_COLUMN_ALIAS=>'VENDOR_ID,VENDOR_NUM,VENDOR_NAME'--如果提取的LOV字段名與interface的字段名不一樣,需要在此為L(zhǎng)OV的字段定義別名,與interface字段名一致即可,P_TABLE_HEADERS=>'VendorID,VendorNum,VendorName');end;最終效果如下:如果僅提取id,num,不提取name,則修改成:P_TABLE_SELECT_COLUMNS=>'VENDOR_ID,VENDOR_NUM'但如果你僅想提取VendorNUM,如果你修改成這樣的話:P_TABLE_SELECT_COLUMNS=>'VENDOR_NUM'你會(huì)發(fā)現(xiàn)結(jié)果變成了這樣:提取的仍是vendorid,并且放到了vendornum這個(gè)字段上去了...因此,我們還需要修改這個(gè):P_TABLE_COLUMNS=>'SEGMENT1,VENDOR_ID,VENDOR_NAME'P_TABLE_COLUMN_ALIAS=>'VENDOR_NUM,VENDOR_ID,VENDOR_NAME'P_TABLE_HEADERS=>'VendorNum,VendorID,VendorName'把segment1提到第一位去,這樣的話,它將被第一個(gè)提取出來(lái),放到template中的vendorNUM中.從上可以看出,LOV定義的各字段都可以顯示在LOV中,并且提取到template中,但如何提取,這就要看component的了...R12WEBADI的參數(shù)設(shè)置研究之一:設(shè)置CreateDocumentParameters在WEBADI中,我們可以定義一些參數(shù)用來(lái)在整個(gè)WEBADI的導(dǎo)入過(guò)程中使用,一般來(lái)說(shuō),可分3個(gè)部分:1.在生成template時(shí)所使用的參數(shù),一般用來(lái)為layout中的字段設(shè)置默認(rèn)值或初始化一些變量供LOV使用2.在定義Uploader時(shí)所使用的參數(shù),一般用來(lái)在Upload數(shù)據(jù)前提供給User一些option,可改變Upload的模式,例如要不要做validaiton,要不要import,要不要import一些非正常記錄(如借貸不平的記錄)。3.在定義Importer時(shí)所使用的參數(shù),一般用來(lái)在數(shù)據(jù)進(jìn)入interface前和后所需要完成的一些事情,比如可在數(shù)據(jù)進(jìn)入interface后,調(diào)用一個(gè)Concurrent(這個(gè)Concurrent可能需要參數(shù))等等。這里先說(shuō)下第一種參數(shù),在生成template的過(guò)程中使用的參數(shù).這種參數(shù)一般有兩個(gè)用途:1.在生成template的過(guò)程中,用戶(hù)可選擇某些參數(shù)值,這些值可用來(lái)做為template中的字段默認(rèn)值或用于LOV的where條件2.在生成template的過(guò)程中,參數(shù)可引用某些環(huán)境變量或profile值,然后用于生成template中的字段默認(rèn)值或用于LOV.首先來(lái)看第一種,用戶(hù)可在template生成時(shí)選擇一些參數(shù),來(lái)定義字段默認(rèn)值.假設(shè)我現(xiàn)在開(kāi)發(fā)一個(gè)Integrator用來(lái)導(dǎo)入FAassets.是分book導(dǎo)入,要求template生成時(shí)booktypecode默認(rèn)為用戶(hù)在downloadtemplate時(shí)所選擇的book,并且在template中無(wú)法修改。以下是開(kāi)發(fā)步驟:1.建立一個(gè)valueset,此valueset用來(lái)顯示所有的有效的Corpbook,供用戶(hù)選擇.2.建立integrator,生成interface(含有book_type_code字段),依次建立uploader,importer后保存.3.建立Parameterlist,此list將包含一個(gè)參數(shù),此參數(shù)將引用上述的valueset.Path:DesktopIntegrationManager/DefineParameterApplication選擇你所需的應(yīng)用,應(yīng)與integrator的應(yīng)用一致.建立一個(gè)新的Parameterlist,code為CUST_INV_INTE_P,并新增一個(gè)參數(shù)為P_BOOK_TYPE_CODE新建此參數(shù)P_BOOK_TYPE_CODE的Definition注意:1.Source為WEBADI:Parameter2.Category為Data3.Validationtype為valueset,Validationvalue即為上面建的valueset4.Displaytype為L(zhǎng)istbox,即為下拉列表保存上面所有的定義:Parameterlist/Parameteritem/Parameterdefinition4.把上面定義的Parameterlist加入到Intergrator中,此步可以在定義integrator時(shí)定義integratorparameters時(shí)定義,也可直接update后臺(tái)表,這里我直接Update.表名:bne_integrators_b找到你定義的integrator記錄,update下面兩個(gè)字段:CREATE_DOC_LIST_APP_IDupdate為上面的Parameterlist的應(yīng)用CREATE_DOC_LIST_CODEupdate為上面的Parameterlistcode5.DefineLayout,把booktypecode字段放到Context上,并定義Defaulttype為Parameter,Defaultvalue為上面定義的參數(shù)名:P_BOOK_TYPE_CODE.6.Downloadtemplate這是Download的最開(kāi)始顯示的,用戶(hù)需選擇一個(gè)BOOK.然后依次下去,最后Downlaod.這是最終的template,我們發(fā)現(xiàn)用戶(hù)選的BOOK已經(jīng)出來(lái),并且無(wú)法修改.到此,完成了IntegratorParameter的設(shè)置.R12WEBADI中如何建立DATE字段的LOV驗(yàn)證前提:后臺(tái)客制化表或標(biāo)準(zhǔn)Interface中含有日期型字段建立步驟:1.新建integrator,按照向?qū)б来谓nterface,uploader,importer,保存2.通過(guò)如下API為日期型字段建立LOVbne_integrator_utils.CREATE_CALENDAR_LOV(P_APPLICATION_ID=>20003,--YourcustomapplicationP_INTERFACE_CODE=>'CUST_INV_XINTG_INTF1',--YourcustominterfacecodeP_INTERFACE_COL_NAME=>'INVOICE_DATE',--YourdateitemininterfaceP_WINDOW_CAPTION=>'SelectData',--WindowPromptP_WINDOW_WIDTH=>null,--UsedefaultP_WINDOW_HEIGHT=>null,--UsedefaultP_TABLE_COLUMNS=>'INVOICE_DATE',--YourtabledatefieldsP_USER_ID=>5693);Commit后下載template,發(fā)現(xiàn)已可以實(shí)現(xiàn)日期類(lèi)型的LOV:R12WEBADI中建立基于KeyFlexfields的LOV驗(yàn)證前提:后臺(tái)表中有存儲(chǔ)CCID的字段(如果是標(biāo)準(zhǔn)interface的話,這個(gè)字段應(yīng)該已經(jīng)具備)步驟:1.新建Customintegrator2.新建Interface,attribute中包括上述的CCID字段3.依次建立uploader,importer后保存4.使用下述的API建立KFF的LOV驗(yàn)證bne_integrator_utils.CREATE_CCID_KFF(P_APPLICATION_ID=>20003,--YourcustomapplicationidP_INTERFACE_CODE=>'CUST_INV_XINTG_INTF1',--YourcustominterfacecodeP_INTERFACE_COL_NAME=>'CCID',--YourCCIDitemininterfaceP_NUM_FLEX_SEGS=>30,--GLcodecombinationsegmentscount,最大30,實(shí)際顯示的為啟用的段P_GROUP_NAME=>'Account',--AttributeGroupname,隨便寫(xiě)P_FLEX_APPLICATION_ID=>101,--GLapplicationidP_FLEX_CODE=>'GL#',--AccountflexcodeP_FLEX_NUM=>50328,--Chartsofaccountid,這里可用參數(shù),比如“SOB.ChartOfAccountsID"p_vrule=>NULL,p_effective_date_col=>'date_col02',--如interface中有effectivedate字段的話,會(huì)提供CCID的effectivedate到此字段(還沒(méi)測(cè))p_prompt_above=>'CCID',p_prompt_left=>'CCID',p_user_hint=>'CCID',p_user_id=>5693);Commit后,生成Template,發(fā)現(xiàn)已經(jīng)生效:注意:在測(cè)試中,發(fā)現(xiàn)如果P_NUM_FLEX_SEGS給的不夠的話,文件生成時(shí)會(huì)報(bào)錯(cuò)。我一開(kāi)始給的是7(因?yàn)橹粏⒂昧?段),結(jié)果不行。后搞了半天,才發(fā)現(xiàn)這個(gè)問(wèn)題,這里一律給最大的segment數(shù)量.R12WEBADI如何建立基于table的LOV驗(yàn)證假設(shè)interface中有一字段為customernumber,需要提供LOV供用戶(hù)選擇,建立步驟如下:1.建立ComponentComponent主要定義LOV彈出窗口的風(fēng)格、布局及字段提取的規(guī)則輸入Displayname/Internalname和ApplicationComponentType選LOV-TABLEtable-column-alias:輸入提取的字段放在哪個(gè)interfacecolumn中(interface中的字段名)table-column-sort:保持默認(rèn)table-columns:輸入需要顯示的表字段,按顯示順序輸入,中間用逗號(hào)間隔table-headers:輸入各字段的標(biāo)題table-select-column:輸入提取的字段放在哪個(gè)interfacecolumn中(interface中的字段名)window-caption:根據(jù)需要輸入提示信息2.定義interface字段的屬性找出之前定義好的integrator,點(diǎn)update,next到interface頁(yè)面后,顯示如下:update相應(yīng)的字段,此處是CUSTOM_NUMBER,顯示如下:ValidationType:TableIdColumn:account_numberMeaningColumn:cust_account_idValidationEntity:hz_cust_accounts(查詢(xún)的表名,用逗號(hào)分隔多張表)WhereClause:根據(jù)需要輸入,不要加WhereComponentName:輸入上面定義的Componentname此步定義與EBS中的基于table的valueset定義基本一樣.保存后,downloadtemplate,實(shí)際效果如下:R12WEBADI如何在template中自動(dòng)生成sequence字段最近要做大量的WEBADI開(kāi)發(fā)(基于R1212.1.3),因此這幾天在不斷的做新功能的研究。其實(shí)一直有不少的問(wèn)題,這次希望能一點(diǎn)點(diǎn)的研究出來(lái)。。。包括dependentLOV和attributegroupvalidation等等功能.讓exceltemplate自動(dòng)生成sequence.真沒(méi)想到這個(gè)功能Oracle居然沒(méi)提供...當(dāng)然如果integrator是基于客制化的API(package),那不存在這個(gè)問(wèn)題,直接在package里取sequence就行了。但如果直接以Interfacetable做integratorinterface時(shí),就而臨這個(gè)問(wèn)題了,你沒(méi)地方寫(xiě)語(yǔ)句去取sequence...通過(guò)標(biāo)準(zhǔn)的integrator研究,發(fā)現(xiàn)實(shí)現(xiàn)方法如下:a.createintegrator的第二步生成interface后,需要生成sequence的key字段此時(shí)已出現(xiàn)在interface里,但defaulttype里沒(méi)有關(guān)于sequence的設(shè)置b.查詢(xún)bne_interface_cols_b表,找到此key字段的記錄,進(jìn)行后臺(tái)修改,在defaulttype里放入"SEQUENCE_EACH_ROW",defaultvalue里放入sequencename(注意,此sequence需要在apps下建同義詞),submit修改。c.再進(jìn)入web頁(yè)面查出interface,你會(huì)發(fā)現(xiàn)此key字段的defaulttype居然為空...進(jìn)一步說(shuō)明可惡的Oracle沒(méi)有開(kāi)放sequence的定義功能。e.生成template后,你會(huì)發(fā)現(xiàn),定義了sequence的字段不會(huì)在excel里顯示,即使你在interface里把它選成display,系統(tǒng)也會(huì)去除勾選。這樣的話,用戶(hù)就不會(huì)錯(cuò)誤的操作此字段了.f.輸入數(shù)據(jù)上傳,查詢(xún)后臺(tái)表,sequence已正常顯示在key字段里了.R12WEBADI-關(guān)于ADIsecurityrules在11i里,我們一般是建立一個(gè)subfunction做為securityfunciton,然后與integrator建立關(guān)聯(lián),再把這個(gè)securityfunction及ADIfunction一起加入到usermenu中,user即可使用此ADI,當(dāng)時(shí)就覺(jué)得挺麻煩。當(dāng)然,你可以通過(guò)設(shè)置profile去禁用ADIsecurity.在R12中,可以很方便的在定義integrator時(shí)定義securityfunction了,而且一個(gè)integrator可以定義多個(gè)securityfunction.但我查了一下諸多的標(biāo)準(zhǔn)integrator,它們用的securityfunction大多是系統(tǒng)標(biāo)準(zhǔn)的form.function和webfunciton,而不是subfunction.這也就意味著,只要usermenu中包含某個(gè)職責(zé),這個(gè)職責(zé)下有這個(gè)form.function的話,即可使用這個(gè)ADI,這樣的話,我們就不需要再建一個(gè)subfunction了,更方便了。因此測(cè)試了一下,我們客制化的integrator也可以選擇某一個(gè)系統(tǒng)標(biāo)準(zhǔn)的form.function做為securityfunction.比如我建了一個(gè)assetmassload的ADI,我希望只要能進(jìn)行asset常規(guī)操作的user都能使用這個(gè)ADI.我選擇了一個(gè)系統(tǒng)標(biāo)準(zhǔn)的form.function:FAXASSET(AssetWorkbench),做為我的ADI的securityfunciton.但布署時(shí)要注意:你的ADI的function必須要和FAXASSET這個(gè)function在同一個(gè)menu里。即在同一個(gè)職責(zé)下。一開(kāi)始我把ADI的funciton單獨(dú)放在一個(gè)職責(zé)里,然后把此職責(zé)和另一個(gè)包含assetworkbench的職責(zé)加給用戶(hù),但測(cè)試結(jié)果是此ADI無(wú)法使用。之后把ADI的funciton加入到assetworkbench的職責(zé)中,測(cè)試通過(guò)。此項(xiàng)功能大大方便了ADI的布署,非常有用.在WEBADI中實(shí)現(xiàn)組織屏蔽這幾天做了個(gè)WEBADI的任務(wù),要求在模板里實(shí)現(xiàn)組織屏蔽。也就是有個(gè)業(yè)務(wù)實(shí)體列讓用戶(hù)選,但只能選當(dāng)前職責(zé)能操作的業(yè)務(wù)實(shí)體。最初用這樣的方法來(lái)實(shí)現(xiàn)LOV提取可操作OU:SelectnameFromhr_operating_unitshouWheremo_global.check_access(anization_id)='Y'但發(fā)現(xiàn)不行,原因可能是mo_global需要進(jìn)行初始化。最后用了下面的笨方法:思路是:檢查當(dāng)前職責(zé),當(dāng)前用戶(hù)的配置文件,取MO業(yè)務(wù)實(shí)體,MO默認(rèn)業(yè)務(wù)實(shí)體,MO安全性配置文件的信息,然后計(jì)算可操作的OU.1.寫(xiě)個(gè)函數(shù)取當(dāng)前模板的職責(zé)用戶(hù)所用的安全性配置文件,默認(rèn)只取用戶(hù)層及職責(zé)層的,如果用戶(hù)層有,則不取職責(zé)層.FUNCTIONget_sec_profile_id(pi_user_idINNUMBER,pi_resp_idINNUMBER)RETURNNUMBERISv_profile_idNUMBER;BEGINBEGINSELECTto_number(file_option_value)INTOv_profile_idFROMfnd_profile_optionspo,fnd_profile_option_valuespovWHEREfile_option_name='XLA_MO_SECURITY_PROFILE_LEVEL'ANDfile_option_id=file_option_idANDpov.level_id=10004--用戶(hù)層ANDpov.level_value=pi_user_id;EXCEPTIONWHENno_data_foundTHENBEGINSELECTto_number(file_option_value)INTOv_profile_idFROMfnd_profile_optionspo,fnd_profile_option_valuespovWHEREfile_option_name='XLA_MO_SECURITY_PROFILE_LEVEL'ANDfile_option_id=file_option_idANDpov.level_id=10003--職責(zé)層ANDpov.level_value=pi_resp_id;EXCEPTIONWHENno_data_foundTHENv_profile_id:=NULL;END;END;RETURNv_profile_id;END;2.然后業(yè)務(wù)實(shí)體的LOV用如下SQL來(lái)構(gòu)造:SELECT,anization_idFROMhr_operating_unitshouWHEREanization_id=$profiles$.org_idORanization_id=$profiles$.default_org_idOREXISTS(SELECT1FROMper_security_profilesspWHEREsp.security_profile_id=cux_common_utilities_pkg.get_sec_profile_id($env$.userid,fnd_profile.value('RESP_ID'))ANDsp.view_all_organizations_flag='Y')OREXISTS(SELECT1FROMper_security_organizationssoWHEREso.security_profile_id=cux_common_utilities_pkg.get_sec_profile_id($env$.userid,fnd_profile.value('RESP_ID'))ANDanization_id=anization_id)R12WEBADI表結(jié)構(gòu)1.bne_integrators_b:存貯定義的WebADI集成器2.bne_interfaces_b:存貯集成器對(duì)應(yīng)接口信息3.bne_interface_cols_b:存貯接口對(duì)應(yīng)的列信息,包括列的各種驗(yàn)證信息和屬性4.bne_components_b:OA組件定義,如一個(gè)驗(yàn)證的LOV就是一個(gè)組件5.bne_param_lists_b:參數(shù)列表,可以理解為參數(shù)的分組,目的是為了實(shí)現(xiàn)參數(shù)的重用6.bne_param_list_items:存貯參數(shù)列表和參數(shù)的關(guān)聯(lián)信息7.bne_param_defns_b:存貯參數(shù)定義,包括默認(rèn)值、驗(yàn)證信息、顯示信息等--1、integratortable--集成器表--altersessionsetnls_language='SIMPLIFIEDCHINESE';--altersessionsetnls_language='AMERICAN';SELECTbni.application_id,egrator_code--集成器code,bni.user_name--集成器名稱(chēng),bni.date_formatFROMbne_integrators_vlbniWHEREbni.user_nameLIKE'CUX%';--2.1集成器關(guān)聯(lián)packageSELECTbni.application_id,egrator_code--集成器code,bni.user_name--集成器名稱(chēng),bni.date_format,erface_code,erface_name--集成器關(guān)聯(lián)的packege的procedFROMbne_integrators_vlbni,bne_interfaces_vlinfWHEREbni.user_nameLIKE'CUX%'ANDbni.application_id=egrator_app_idANDegrator_code=egrator_code;--2.2集成器對(duì)應(yīng)的字段SELECTintg.application_id,egrator_code--集成器code,intg.user_name--集成器,intg.date_format,erface_code--packagecode,bic.sequence_num,bic.display_order,erface_col_name--字段名,bic.data_type,mpt_left--字段顯示名稱(chēng),mpt_above--可update此字段為中文FROMbne_interface_cols_vlbic,bne_interfaces_vlintf,bne_integrators_vlintg--集成器WHEREerface_code=erface_codeANDegrator_code=egrator_codeANDintg.user_name='CUX:WEBADI_LOV';--2.3.1Excel列的題頭和API的參數(shù)一樣,需要加以修改,需直接更新表bne_interface_cols_tl的--altersessionsetnls_language='SIMPLIFIEDCHINESE';--altersessionsetnls_language='AMERICAN';SELECTerface_code--packagecode,mpt_left--頭表題頭說(shuō)明,mpt_above--行表題頭說(shuō)明,bic.sequence_numFROMbne_interface_cols_tlbicWHEREEXISTS(SELECTNULLFROMbne_interfaces_vlintf,bne_integrators_vlintg--集成器WHEREerface_code=erface_codeANDegrator_code=egrator_codeANDintg.user_nameLIKE'CUX%')--FORUPDATE--2.3.2ExcelLOV實(shí)現(xiàn),可以直接update基表bne_interface_cols_bSELECTerface
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 六盤(pán)水總承包合同標(biāo)準(zhǔn)文本
- 供貨企業(yè)供貨合同標(biāo)準(zhǔn)文本
- 免燒磚購(gòu)銷(xiāo)合同范例
- 供貨燃?xì)夂贤瑯?biāo)準(zhǔn)文本
- 個(gè)人商品房砌墻合同標(biāo)準(zhǔn)文本
- 公路資料合同樣本
- 公司保安合同標(biāo)準(zhǔn)文本
- 充電站加盟合同樣本
- 個(gè)人水利合同標(biāo)準(zhǔn)文本
- ic采購(gòu)合同標(biāo)準(zhǔn)文本
- 手術(shù)安全核查制度
- 2023中華護(hù)理學(xué)會(huì)團(tuán)體標(biāo)準(zhǔn)-注射相關(guān)感染預(yù)防與控制
- 2024年北京電子科技職業(yè)學(xué)院高職單招筆試歷年職業(yè)技能測(cè)驗(yàn)典型例題與考點(diǎn)解析含答案
- 中藥學(xué)電子版教材
- DB41∕T 1836-2019 礦山地質(zhì)環(huán)境恢復(fù)治理工程施工質(zhì)量驗(yàn)收規(guī)范
- 錫礦選廠生產(chǎn)承包合同
- 企業(yè)員工職務(wù)犯罪培訓(xùn)ppt課件
- 基于8255的溫度顯示
- 客房服務(wù)員績(jī)效考核表
- 膜結(jié)構(gòu)七字形停車(chē)棚報(bào)價(jià)單
- IATF16949監(jiān)視和測(cè)量資源控制程序
評(píng)論
0/150
提交評(píng)論