版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
目錄R12WEBADI設置過程講解-Integratorsetup 2R12WEBADI設置過程講解-Interfacesetup 3R12WEBADI設置過程講解-Contentsetup 6R12webadi導入程序設置 9R12WEBADI刪除API 10R12WEBADI的一個小技巧 11R12WEBADI建立不了的解決辦法 11R12WEBADI基于TABLE的LOV詳細研究 12R12WEBADI的參數(shù)設置研究之一:設置CreateDocumentParameters 14R12WEBADI中如何建立DATE字段的LOV驗證 20R12WEBADI中建立基于KeyFlexfields的LOV驗證 20R12WEBADI如何建立基于table的LOV驗證 21R12WEBADI如何在template中自動生成sequence字段 24R12WEBADI-關于ADIsecurityrules 25在WEBADI中實現(xiàn)組織屏蔽 25R12WEBADI表結構 27
R12WEBADI設置過程講解-Integratorsetup這是建立ADI的第一步,需要設置的東西如下:IntegratorName:隨便寫,如果有namingstandard,要遵守InternalName:即Integratorcode,這里不宜輸入太長的code,建議10個以內(nèi),以保證后面生成其它對象的code不會超長,因為惡心的oracle會在自定義的對象code后面加東西,比如這個integratorcode,如果你輸入CAPINV,存到表里后是CAPINV_XINTG,無故多出6個字符。Application:一般選客制化專用的applicationReportingOnly:僅用于下載數(shù)據(jù)的Integrator,如果是upload的,這項萬萬不能選Enabled:Yes,必須的DisplayinCreateDocuementPage:因為Integrator要提供給user使用的話,有兩種途徑,一種是為這個Integrator單獨建個form.function,然后加入到user的menu中;還有一種就是把標準的CreateDocument功能提供給user,而user能在里面找到這個Integrator就必須選上這項.一般來說我們會用第一種方式,所以這項一般不用選.IntegratorParameters:目前我只測了DocumentParameters,另兩個不知干什么用的,可惡的oracle也沒文檔.SecurityRules:如果這個Profile:BNEAllowNoSecurityRule設成No的話,這項要設,可選個user肯定有的function或自已建個新的subfunction,做為securityfunction,不過如果是自已建的function的話,需要另外加入user的menu中,否則user無法使用這個Integrator.R12WEBADI這里支持多個securityfunction,但目前我用的這個版本的ADI只能選一個,不知是bug還是其它原因。這步設置對應的后臺表為bne_integrators_b和bne_integrators_tl.客制化的Integrator后臺表bne_integrators_b中的source為'C',因此我們可以在manager職責中修改,如果不想讓人改,把C刪了;同樣,如果想修改oracle標準的Integrator,可把source改為C,這樣就可以修改了,不過不建議修改,因為升級不支持。不過改成C后,你可以直觀的在manager職責中看到它的詳細的setup,比在后臺看方便一點.R12WEBADI設置過程講解-Interfacesetup這是建立一個新的Integrator的第二步,也是最關鍵的一步!InterfaceName:隨便寫,反正oracle會生成一個interfacecode,而這個才是我們需要的,而我們需要的,oracle偏偏不讓我們看到,而且還加東西。。。生成的code應該是integratorcode+INTF1之類的InterfaceType:主要是Table和APIProcedure.那么什么時候用Table,什么時候用Procedure呢?下面是我個人的意見,僅供參考:1.如果validation特別簡單(都是單行單字段的校驗),且template上的數(shù)據(jù)要進到某一張表里的話,用table.2.如果validation比較復雜(可能包含了多行組合校驗,比如訂單行金額是否等于頭金額;多字段組合校驗,比如某個vendor,某個vendorsite下不能有這種currency的invoice之類的;duplicate校驗,比如某個asset,在basetable或interface里已經(jīng)有了,不能再用tempate導一遍之類的,因為這些校驗要寫javaclass,我不知怎么寫(可惡的oracle也沒文檔).所以只能用Procedure去做.3.如果template的數(shù)據(jù)僅僅用來傳給標準API,用來做某種處理,不用進到某張表的話,當然不要用table,而是用Procedure.TableName:表名,此表需要注冊在database里,否則無法識別.PackageName:不用說了,你寫的uploadpackage的名字ProcedureName:UploadProcedure的名字APIreturns:Procedure/Function傳出的參數(shù),一般選fndmessagecode,用來接收procedure中raise出來的error.Apply一下:AttributeName:其實就是table的字段或Procedure的傳入?yún)?shù)名.PromptLeft:這個要改一下,一般格式是"InvoiceNumber"這樣的,你可以只為要放到layoutheader上的字段改,因為行上的字段只有Promptabove,沒有l(wèi)eft.DataType:從table或procedure繼承下來的Enabled:此項如果不選的話,該字段即使在template可以顯示,并且可以填東西,但數(shù)據(jù)不會參與upload.即此字段完全無用了(適合一些無需填值的字段).Displayed:此項如果不選的話,在定義layout時,將無法看到此項.也就無法在template中看到。當然,就算你這選了,但layout中沒選此項,也是無法看到的.DefaultType/DefaultValue:用來設定字段的默認值,在11i里我一般是在layout里定義的,但R12好象主要在這里定義了,layout中的default反而不用了,而且我在layout中定義好象也老出問題,不知是bug,還是其它原因.EnvironmentParameters:OAUSER.ID/SYSDATE/DATABASE常用的,另外一些sob的,例如sob.chartofaccountsid,sob.periodsetname,sob.setofbooksid之類的,也不知還能不能用,還沒測Constant:這個最簡單,直接寫個東西進去就行了。SQL:這個也簡單,寫個SQL完事,結果多行的話,取第一行。sql里可包含$env$.userid,$env$.appid,$env$.respid之類的環(huán)境變量,還有$PROFILES$.default_org_id之類的取profileoptions的東東。ProfileOption:從字面上理解,是用來取配置文件中某個option的值,但我測了,不成功,不知是bug還是別的原因.Lookups:不知干什么的,前兩天無意看到有個標準的Integrator具然包含多個Interface,而Interface間的聯(lián)接似乎就用這個。。。因為此項在后臺叫TABLELOOKUP...多Interface的Integrator還不知怎么做,待研究.ExcelFormula:這項不需要選defaulttype,直接在defaultvalue中輸入公式,格式如下:=R[]C[]*R[]C[]之類的,比如=RC[-1]*RC[-2],即表示此字段的值為左邊兩列的乘積.Sequence:此項需后臺修改表,defaulttype為SEQUENCE_EACH_ROW,defaultvalue為sequence的名字,如果不在apps下的話,需要在apps下建同義詞AttributeType:Real表明此字段為真實的表字段或過程參數(shù),而Custom的是我們另外建的字段,一般用來做占位列(比如一個LOV顯示的是DESC,存的是ID,這個DESC一般就放在這種列里)或只讀顯示項,比如顯示當前的database信息.通過點后面的update,可以修改字段的一些屬性.DataType:不需改,從table或procedure中繼承下來的Length:大家發(fā)現(xiàn)這項沒有,因為這是基于procedure的interface,而對于procedure來說,所有的傳入?yún)?shù)都是沒有l(wèi)ength的,而如果基于table的話,則會有l(wèi)ength.而沒有l(wèi)ength的結果就是excel無法做字段寬度的校驗,你就需要在procedure中寫這樣的語句:iflength(p_vendor_name)>50thenraise_application_error(-20001,'Lengthexceedsmaxchars');endif;這樣明顯增加了開發(fā)的量,所以對于procedure的interface,我們可以通過直接修改后臺表來設定字段的length.AttributeType:無需修改Required:此項很重要,設定字段為必填字段,如果你在template上沒輸?shù)脑?,excel校驗會報錯,這樣的話,你就不用在procedure中寫這樣的語句了:ifp_vendor_nameisnullthenraise_application_error(-20001,'YouhavetoenteraVendorname');endif;EnabledforMapping:設定該字段是否可建mapping,當你的Integrator中含有Content時,這項有用,一般來說,要在layout中顯示的字段這項要選,其它可選可不選。Availableforsummary:這項不知道,字面看是是否允許匯總。沒測過NotNull:這項似乎和required功能一樣啊ReadOnly:設定某字段為只讀字段,一般適用于Custom類型的顯示字段.或不需用戶修改的有默認值的字段.下面的是建validation的部分,這里可建tableLOV,dateLOV,KFF/DFFLOV,及java類型的LOV.最后一部分是設Promptabove,對于line上的字段,此項要寫一下。UserHint最好也寫一下,必填字段的一般為*Text,*Date,*Number這樣的,非必填的把*去了。有LOV的一般為*List-Text或List-Text之類的.R12WEBADI設置過程講解-Contentsetup這是建立一個新的Integrator的第三步,當然,不是必須要設置的一步。Content的作用是在user下載template的時候,可以把本機的準備好的datafile傳給這個template,這樣的話,download下來的template就是一個有數(shù)據(jù)的template,也就不需要user輸入或copy數(shù)據(jù)了.ContentName:隨便寫ContentType:主要是TextFile和SQLQuery,TextFile很明顯是user需要提供一個datafile,而SQL則是直接從系統(tǒng)中取數(shù)據(jù)到template中。我們先看TextFile的。NumberOfColumns:根據(jù)需要確定,一般來說,你的layout有多少列,這是就寫多少,與layout一一對應。也可少于layout的列,僅針對部分列傳入。但最好不要多于layout列。ReportingOnly:萬萬不能選,此項僅用于下載數(shù)據(jù).Apply一下:ContentColumns這是我選的是3列,DisplayName可改可不改,改了也就是為了后面建mapping的時候看的清楚點,沒什么實際用途.ContentParameters:此項很重要,一定要有個parameterlist,這里ADI已經(jīng)預置了一個,我們直接拿來用即可:Parameterlistname:WebADI:Download"TextFile"ParametersApplication:WebApplicationDesktopIntegratorSumbit修改,然后開始建Mapping.Mapping的功能是建立Content字段與Interface字段的映射關系,也就是datafile的列與layout列的映射,告訴ADIdatafile里的每一列分別導到template里的哪一列上.Mapping的建立過程很簡單,不過有一個要特別注意的,在第二步我們設定interface的時候,點update修改字段屬性時,有一項叫做EnabledforMapping,這項如果不選的話,該字段就無法與Content建立映射。DefineMapping選擇相應的Integrator后,系統(tǒng)會查詢有沒有建好的Mapping,如沒有的話,點definemapping新建一個MappingName:隨便寫MappingKey:Unique的,而且要大寫NumberofColumns:與Content的列數(shù)一致左邊選Content列,右邊選對應的Interface列。注意,一定要選,手工輸會有問題。Submit修改.現(xiàn)在來Preview一下IntegratorDonwloadtemplate時,有一步會讓我們選Content,選剛建好的這個.出現(xiàn)ContentParameter的界面,LocalFilename:選擇本機中已經(jīng)準備好的數(shù)據(jù)文件,如果多于3列的話,后面的列會忽略,ADI只讀前3列.TextFileDelimiter:列分隔符,按數(shù)據(jù)文件中的實際分隔符來選,一般為逗號或Tab.DelimiterCharacter:上面如果選Other的話,需要在這手工輸入分隔符IgnoreConsecutiveDelimiters:連續(xù)分隔符是否忽略,比如文件中有這樣的格式:AAA,BBB,,,CCC,ADI會認為是3列,如不選的話,ADI會認為是5列.StartImportingatLineNumber:如果數(shù)據(jù)文件有標題行的話,選2,否則輸1.Next后downloadtemplate,你會發(fā)現(xiàn)下載的template已經(jīng)有數(shù)據(jù)了.R12webadi導入程序設置如果你導入的數(shù)據(jù)不是插入到系統(tǒng)標準的接口表,或者插入到接口表之后要手動提交一個請求,才能將接口表里的數(shù)據(jù)導入到ERP,則需要設置導入程序。導入程序是指你一次性導入幾十上百條數(shù)據(jù)之后,再一次性跑請求,將這些數(shù)據(jù)導入到ERP正式表,千萬不要把跑請求的代碼寫到接口程序里,那樣會導致導入非常慢。選擇導入程序類型一般選擇“異常并發(fā)請求”或者PL/SQLAPI,個人覺得把跑請求的代碼寫到一個PL/SQL里,可能會方便,這里假定選擇“異步并發(fā)請求”。設置并發(fā)程序不知道是BUG還是什么原因,在這里輸入之后,還要在bne_attributes表中后臺更新1,2,3,4,5行數(shù)據(jù)是系統(tǒng)自動加進去的,實際就是調(diào)用的fnd_request.submit_request(application=>,program=>,description=>,start_time=>,sub_request=>,argument1=>,argument2=>,argument3=>),要特別留意的是,參數(shù)如果是文本,要給值加上引號,‘200’組定義:組定義的意思是分幾次跑請求,一般在組織ID上定義一個組,這樣相同的組織就會跑一次。R12WEBADI刪除APIR12WEBADI刪除一個WEBADI不要在界面上刪除,這樣會還有很多冗余數(shù)據(jù)還在后臺表里,要通過bne_integrator_utils.DELETE_INTEGRATOR這個API去刪,這樣會把跟這樣WEBADI有關的接口、內(nèi)容、導入程序、加載程序、參數(shù)等全都刪掉。R12WEBADI的一個小技巧現(xiàn)遇到這么一個情況,如果多個用戶同時往一張表里導數(shù)據(jù),為了解決并發(fā)問題,有時我們需要為每個用戶的template數(shù)據(jù)生成一個唯一的batchnumber,用來在表里區(qū)分各自的數(shù)據(jù)。有三種辦法:1.最簡單的,用createdby來區(qū)分,但如果兩個user用同一個account去導的話,這種區(qū)分會失敗.2.用一個autosequence來生成batchnumber,這個雖然是唯一的,也可以區(qū)分,但又有個問題,這個sequence一般我們會在downloadtemplate的時候生成在某個字段的默認值里,如果用戶保存了這個template,隔段時間再打開,這個sequence仍是舊的值,這就又產(chǎn)生了risk,如果表里正好也有舊的batch的數(shù)據(jù)還沒處理,那用戶用這個舊的模塊上傳新的數(shù)據(jù)就會產(chǎn)生問題,兩批數(shù)據(jù)會混在一起。當然,這是很極端的情況了.3.用EXCEL公式來解決,這是目前我發(fā)現(xiàn)的最好的辦法。公式如下:=VALUE(TEXT(NOW(),"YYYYMMDDHHMMSS"))可在template里建個number類型的字段,放在context中,readonly,把上述公式放在interface的defaultvalue中,這樣的話,不管用戶是下載,還是保存后重新打開,這個值取的都是當前的日期時間(已轉成數(shù)字).而這個時間的重復可能性基本為0.另,每次導入時取當前的SESSIONID做為BATCHNUMBER也不失為一個好辦法!R12WEBADI建立不了的解決辦法如果在建WEBADI時,瀏覽器一直在運行,但是就是怎么都進不去,可能是某個人LOCK了這個表,可以通過后臺查是不是BNE打頭的表被鎖定了,可以通過SQL強制解鎖如果進不了WEBADI,首先通過后臺查哪些表鎖住了,再將鎖死的表刪掉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';
--以下幾個為相關表
SELECT*FROMv$lock;
SELECT*FROMv$sqlarea;
SELECT*FROMv$session;
SELECT*FROMv$process;
SELECT*FROMv$locked_object;
SELECT*FROMall_objects;
SELECT*FROMv$session_wait;如果能進去,但是一建就報錯,可能就是你在刪除WEBADI時,有數(shù)據(jù)沒刪干凈,特別要留意以下幾個表中的數(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詳細研究R12WEBADI提供了基于Table的LOV的功能,很方便,但由于LOV的顯示或值的提取與component的定義有很大關系,所以特做了幾個例子驗證一下。LOV的定義可以在interface的定義界面上做(但component需另外定義),也可以使用API去做,相比較而言,我較傾向于用API.另外,如用API定義時,不提供component的參數(shù)的話,WEBADI會依據(jù)LOV的相關信息為我們建立默認的component,但我發(fā)現(xiàn),結果總是差強人意,因此建議,component還是顯式定義為好,不要讓WEBADI自動建.有一點不好的是,用API創(chuàng)建LOV時,依據(jù)參數(shù)建立的component的默認源是ORACLE,這樣的話,我們無法在managercomponents的WEB頁面中修改這個component(除非你改componentcode,好象在前面加_XX_,但這樣還要修改bne_interface_cols_b中的componentcode,很麻煩,因此最好直接后臺修改component的信息(在bne_param_list_items_b表中),不要動componentcode).假設Template上有三個字段,vendor_id,vendor_num,vendor_name,要求LOV建在vendor_num上,選擇后,提取id,num,name分別到三個字段中。API代碼:beginbne_integrator_utils.CREATE_TABLE_LOV(P_APPLICATION_ID=>20003,P_INTERFACE_CODE=>'A1_XINTG_INTF1',P_INTERFACE_COL_NAME=>'VENDOR_NUM'--以下為LOV定義參數(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'--提取的表的實際字段,即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的字段名不一樣,需要在此為LOV的字段定義別名,與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'你會發(fā)現(xiàn)結果變成了這樣:提取的仍是vendorid,并且放到了vendornum這個字段上去了...因此,我們還需要修改這個: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提到第一位去,這樣的話,它將被第一個提取出來,放到template中的vendorNUM中.從上可以看出,LOV定義的各字段都可以顯示在LOV中,并且提取到template中,但如何提取,這就要看component的了...R12WEBADI的參數(shù)設置研究之一:設置CreateDocumentParameters在WEBADI中,我們可以定義一些參數(shù)用來在整個WEBADI的導入過程中使用,一般來說,可分3個部分:1.在生成template時所使用的參數(shù),一般用來為layout中的字段設置默認值或初始化一些變量供LOV使用2.在定義Uploader時所使用的參數(shù),一般用來在Upload數(shù)據(jù)前提供給User一些option,可改變Upload的模式,例如要不要做validaiton,要不要import,要不要import一些非正常記錄(如借貸不平的記錄)。3.在定義Importer時所使用的參數(shù),一般用來在數(shù)據(jù)進入interface前和后所需要完成的一些事情,比如可在數(shù)據(jù)進入interface后,調(diào)用一個Concurrent(這個Concurrent可能需要參數(shù))等等。這里先說下第一種參數(shù),在生成template的過程中使用的參數(shù).這種參數(shù)一般有兩個用途:1.在生成template的過程中,用戶可選擇某些參數(shù)值,這些值可用來做為template中的字段默認值或用于LOV的where條件2.在生成template的過程中,參數(shù)可引用某些環(huán)境變量或profile值,然后用于生成template中的字段默認值或用于LOV.首先來看第一種,用戶可在template生成時選擇一些參數(shù),來定義字段默認值.假設我現(xiàn)在開發(fā)一個Integrator用來導入FAassets.是分book導入,要求template生成時booktypecode默認為用戶在downloadtemplate時所選擇的book,并且在template中無法修改。以下是開發(fā)步驟:1.建立一個valueset,此valueset用來顯示所有的有效的Corpbook,供用戶選擇.2.建立integrator,生成interface(含有book_type_code字段),依次建立uploader,importer后保存.3.建立Parameterlist,此list將包含一個參數(shù),此參數(shù)將引用上述的valueset.Path:DesktopIntegrationManager/DefineParameterApplication選擇你所需的應用,應與integrator的應用一致.建立一個新的Parameterlist,code為CUST_INV_INTE_P,并新增一個參數(shù)為P_BOOK_TYPE_CODE新建此參數(shù)P_BOOK_TYPE_CODE的Definition注意:1.Source為WEBADI:Parameter2.Category為Data3.Validationtype為valueset,Validationvalue即為上面建的valueset4.Displaytype為Listbox,即為下拉列表保存上面所有的定義:Parameterlist/Parameteritem/Parameterdefinition4.把上面定義的Parameterlist加入到Intergrator中,此步可以在定義integrator時定義integratorparameters時定義,也可直接update后臺表,這里我直接Update.表名:bne_integrators_b找到你定義的integrator記錄,update下面兩個字段:CREATE_DOC_LIST_APP_IDupdate為上面的Parameterlist的應用CREATE_DOC_LIST_CODEupdate為上面的Parameterlistcode5.DefineLayout,把booktypecode字段放到Context上,并定義Defaulttype為Parameter,Defaultvalue為上面定義的參數(shù)名:P_BOOK_TYPE_CODE.6.Downloadtemplate這是Download的最開始顯示的,用戶需選擇一個BOOK.然后依次下去,最后Downlaod.這是最終的template,我們發(fā)現(xiàn)用戶選的BOOK已經(jīng)出來,并且無法修改.到此,完成了IntegratorParameter的設置.R12WEBADI中如何建立DATE字段的LOV驗證前提:后臺客制化表或標準Interface中含有日期型字段建立步驟:1.新建integrator,按照向?qū)б来谓nterface,uploader,importer,保存2.通過如下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)已可以實現(xiàn)日期類型的LOV:R12WEBADI中建立基于KeyFlexfields的LOV驗證前提:后臺表中有存儲CCID的字段(如果是標準interface的話,這個字段應該已經(jīng)具備)步驟:1.新建Customintegrator2.新建Interface,attribute中包括上述的CCID字段3.依次建立uploader,importer后保存4.使用下述的API建立KFF的LOV驗證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,實際顯示的為啟用的段P_GROUP_NAME=>'Account',--AttributeGroupname,隨便寫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字段的話,會提供CCID的effectivedate到此字段(還沒測)p_prompt_above=>'CCID',p_prompt_left=>'CCID',p_user_hint=>'CCID',p_user_id=>5693);Commit后,生成Template,發(fā)現(xiàn)已經(jīng)生效:注意:在測試中,發(fā)現(xiàn)如果P_NUM_FLEX_SEGS給的不夠的話,文件生成時會報錯。我一開始給的是7(因為只啟用了7段),結果不行。后搞了半天,才發(fā)現(xiàn)這個問題,這里一律給最大的segment數(shù)量.R12WEBADI如何建立基于table的LOV驗證假設interface中有一字段為customernumber,需要提供LOV供用戶選擇,建立步驟如下:1.建立ComponentComponent主要定義LOV彈出窗口的風格、布局及字段提取的規(guī)則輸入Displayname/Internalname和ApplicationComponentType選LOV-TABLEtable-column-alias:輸入提取的字段放在哪個interfacecolumn中(interface中的字段名)table-column-sort:保持默認table-columns:輸入需要顯示的表字段,按顯示順序輸入,中間用逗號間隔table-headers:輸入各字段的標題table-select-column:輸入提取的字段放在哪個interfacecolumn中(interface中的字段名)window-caption:根據(jù)需要輸入提示信息2.定義interface字段的屬性找出之前定義好的integrator,點update,next到interface頁面后,顯示如下:update相應的字段,此處是CUSTOM_NUMBER,顯示如下:ValidationType:TableIdColumn:account_numberMeaningColumn:cust_account_idValidationEntity:hz_cust_accounts(查詢的表名,用逗號分隔多張表)WhereClause:根據(jù)需要輸入,不要加WhereComponentName:輸入上面定義的Componentname此步定義與EBS中的基于table的valueset定義基本一樣.保存后,downloadtemplate,實際效果如下:R12WEBADI如何在template中自動生成sequence字段最近要做大量的WEBADI開發(fā)(基于R1212.1.3),因此這幾天在不斷的做新功能的研究。其實一直有不少的問題,這次希望能一點點的研究出來。。。包括dependentLOV和attributegroupvalidation等等功能.讓exceltemplate自動生成sequence.真沒想到這個功能Oracle居然沒提供...當然如果integrator是基于客制化的API(package),那不存在這個問題,直接在package里取sequence就行了。但如果直接以Interfacetable做integratorinterface時,就而臨這個問題了,你沒地方寫語句去取sequence...通過標準的integrator研究,發(fā)現(xiàn)實現(xiàn)方法如下:a.createintegrator的第二步生成interface后,需要生成sequence的key字段此時已出現(xiàn)在interface里,但defaulttype里沒有關于sequence的設置b.查詢bne_interface_cols_b表,找到此key字段的記錄,進行后臺修改,在defaulttype里放入"SEQUENCE_EACH_ROW",defaultvalue里放入sequencename(注意,此sequence需要在apps下建同義詞),submit修改。c.再進入web頁面查出interface,你會發(fā)現(xiàn)此key字段的defaulttype居然為空...進一步說明可惡的Oracle沒有開放sequence的定義功能。e.生成template后,你會發(fā)現(xiàn),定義了sequence的字段不會在excel里顯示,即使你在interface里把它選成display,系統(tǒng)也會去除勾選。這樣的話,用戶就不會錯誤的操作此字段了.f.輸入數(shù)據(jù)上傳,查詢后臺表,sequence已正常顯示在key字段里了.R12WEBADI-關于ADIsecurityrules在11i里,我們一般是建立一個subfunction做為securityfunciton,然后與integrator建立關聯(lián),再把這個securityfunction及ADIfunction一起加入到usermenu中,user即可使用此ADI,當時就覺得挺麻煩。當然,你可以通過設置profile去禁用ADIsecurity.在R12中,可以很方便的在定義integrator時定義securityfunction了,而且一個integrator可以定義多個securityfunction.但我查了一下諸多的標準integrator,它們用的securityfunction大多是系統(tǒng)標準的form.function和webfunciton,而不是subfunction.這也就意味著,只要usermenu中包含某個職責,這個職責下有這個form.function的話,即可使用這個ADI,這樣的話,我們就不需要再建一個subfunction了,更方便了。因此測試了一下,我們客制化的integrator也可以選擇某一個系統(tǒng)標準的form.function做為securityfunction.比如我建了一個assetmassload的ADI,我希望只要能進行asset常規(guī)操作的user都能使用這個ADI.我選擇了一個系統(tǒng)標準的form.function:FAXASSET(AssetWorkbench),做為我的ADI的securityfunciton.但布署時要注意:你的ADI的function必須要和FAXASSET這個function在同一個menu里。即在同一個職責下。一開始我把ADI的funciton單獨放在一個職責里,然后把此職責和另一個包含assetworkbench的職責加給用戶,但測試結果是此ADI無法使用。之后把ADI的funciton加入到assetworkbench的職責中,測試通過。此項功能大大方便了ADI的布署,非常有用.在WEBADI中實現(xiàn)組織屏蔽這幾天做了個WEBADI的任務,要求在模板里實現(xiàn)組織屏蔽。也就是有個業(yè)務實體列讓用戶選,但只能選當前職責能操作的業(yè)務實體。最初用這樣的方法來實現(xiàn)LOV提取可操作OU:SelectnameFromhr_operating_unitshouWheremo_global.check_access(anization_id)='Y'但發(fā)現(xiàn)不行,原因可能是mo_global需要進行初始化。最后用了下面的笨方法:思路是:檢查當前職責,當前用戶的配置文件,取MO業(yè)務實體,MO默認業(yè)務實體,MO安全性配置文件的信息,然后計算可操作的OU.1.寫個函數(shù)取當前模板的職責用戶所用的安全性配置文件,默認只取用戶層及職責層的,如果用戶層有,則不取職責層.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--用戶層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--職責層ANDpov.level_value=pi_resp_id;EXCEPTIONWHENno_data_foundTHENv_profile_id:=NULL;END;END;RETURNv_profile_id;END;2.然后業(yè)務實體的LOV用如下SQL來構造: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表結構1.bne_integrators_b:存貯定義的WebADI集成器2.bne_interfaces_b:存貯集成器對應接口信息3.bne_interface_cols_b:存貯接口對應的列信息,包括列的各種驗證信息和屬性4.bne_components_b:OA組件定義,如一個驗證的LOV就是一個組件5.bne_param_lists_b:參數(shù)列表,可以理解為參數(shù)的分組,目的是為了實現(xiàn)參數(shù)的重用6.bne_param_list_items:存貯參數(shù)列表和參數(shù)的關聯(lián)信息7.bne_param_defns_b:存貯參數(shù)定義,包括默認值、驗證信息、顯示信息等--1、integratortable--集成器表--altersessionsetnls_language='SIMPLIFIEDCHINESE';--altersessionsetnls_language='AMERICAN';SELECTbni.application_id,egrator_code--集成器code,bni.user_name--集成器名稱,bni.date_formatFROMbne_integrators_vlbniWHEREbni.user_nameLIKE'CUX%';--2.1集成器關聯(lián)packageSELECTbni.application_id,egrator_code--集成器code,bni.user_name--集成器名稱,bni.date_format,erface_code,erface_name--集成器關聯(lián)的packege的procedFROMbne_integrators_vlbni,bne_interfaces_vlinfWHEREbni.user_nameLIKE'CUX%'ANDbni.application_id=egrator_app_idANDegrator_code=egrator_code;--2.2集成器對應的字段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--字段顯示名稱,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--頭表題頭說明,mpt_above--行表題頭說明,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實現(xiàn),可以直接update基表bne_interface_cols_bSELECTerface
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年銷售經(jīng)理區(qū)域市場拓展聘用合同模板2篇
- 2025年項目工程中介協(xié)議書模板(含設計、施工、驗收)3篇
- 2025年私人房產(chǎn)買賣合同文本與合同解除條件3篇
- 民政局2025版離婚協(xié)議書婚姻糾紛調(diào)解服務協(xié)議2篇
- 二零二五版美容院美容院連鎖加盟管理合同4篇
- 墻面裝飾板施工方案
- 窮人續(xù)寫200字6篇
- 2024年中級經(jīng)濟師考試題庫(典型題)
- 2025年消防系統(tǒng)智能化改造與安全評估合同協(xié)議3篇
- 2024年園區(qū)綠化管理制度
- 二零二五年度無人駕駛車輛測試合同免責協(xié)議書
- 北京市海淀區(qū)2024-2025學年高一上學期期末考試歷史試題(含答案)
- 常用口服藥品的正確使用方法
- 2025年湖北華中科技大學招聘實驗技術人員52名歷年高頻重點提升(共500題)附帶答案詳解
- 2024年鉆探工程勞務協(xié)作協(xié)議樣式版B版
- 《心肺復蘇機救治院內(nèi)心搏驟?;颊咦o理專家共識》解讀
- 計算機二級WPS考試試題
- 智聯(lián)招聘行測題庫及答案
- 前程無憂測評題庫及答案
- 2023中華護理學會團體標準-注射相關感染預防與控制
- 超潔凈管道(CL-PVC)施工技術
評論
0/150
提交評論