HAND-Oracle EBS Forms開發指南(入門)_第1頁
HAND-Oracle EBS Forms開發指南(入門)_第2頁
HAND-Oracle EBS Forms開發指南(入門)_第3頁
HAND-Oracle EBS Forms開發指南(入門)_第4頁
HAND-Oracle EBS Forms開發指南(入門)_第5頁
已閱讀5頁,還剩84頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

信息技術最佳實踐

ORACLE核心應用技術

E-BUSINESSSUITE

Forms開發指南

Author:黃建華

CreationDate:October16,2006

LastUpdated:March25,2023

DocumentRef:〈DocumentReferenceNumber>

Version:DRAFT1A

Approvals:

<Approver1>

<Approver2>

CopyNumber

DocumentControl

ChangeRecord

DateAuthorVersionChangeReference

16-Oct-<36Jianhua.HuangDraftlaNoPreviousDocument

Reviewers

NamePosition

Distribution

CopyNo.NameLocation

1LibraryMasterProjectLibrary

2ProjectManager

3

4

NoteToHolders:

Ifyoureceiveanelectroniccopyofthisdocumentandprintitout,pleasewriteyour

nameontheequivalentofthecoverpage,fordocumentcontrolpurposes.

Ifyoureceiveahardcopyofthisdocument,pleasewriteyournameonthefront

cover,fordocumentcontrolpurposes.

Contents

DocumentControlii

1.開發背景與基礎2

1.1.讀者基礎要求2

1.2.用戶和常用工具2

1.3.AOL開發框架2

1.4.多組織支持6

1.5.主要實例6

2.基于EBS的Forms開發過程8

2.1.Form文件類型8

2.2.FormsBuilder安裝8

23.下我Template相關文件12

2.4.一個簡單的例子.創建數據庫對象14

2.5.一個簡單的例子.從模版開始設計25

2.6.一個簡單的例子.編寫數據操作觸發器32

2.7.一個簡單的例子.上傳&編譯37

2.8.一個簡單的例子.在EBS中注冊運行37

3.參數、List、LOV、字段和記錄控制、日歷40

3.1.例子:Parameter參數40

32例子;List值列表41

3.3.例子:LOV窗口式值列表42

3.4.例子:字段和記錄控制44

3.5.例子:日歷45

3.6.上傳&編譯&運行46

4.行指示符、主.從塊、滾動條、Stacked&Tab畫布、多行文本47

4.1.例子:銷售訂單行47

4.2.例子:Master-Detail主從塊49

4.3.例子:滾動條51

4.4.例子:Stacked畫布52

4.5.畫布小結57

4.6.例子:Tab畫布59

4.7.例子:控制Tab畫布62

4.8.例子:多行文本框63

5.Lov查詢、塊查詢、Button65

5.1.查詢原理65

5.2.例子:Lov查詢65

5.3.例子:塊查詢67

5.4.例子:Button69

6.觸發器層次關系、常用觸發器編寫規范70

6.1.理解層次關系70

6.2.觸發器原理70

6.3.基于EBS模版開發的觸發器71

6.4.一些觸發器的理解72

7.描述性彈性域、Key彈性域、Key彈性域查詢74

7.1.描述性彈性域開發步驟74

7.2.Key彈性域開發步驟77

附錄:我開始學習Form時的筆記1,僅供參考,未必100%正確80

附錄:我開始學習Form時的筆記2,僅供參考,未必100%正確83

8.OpenandClosedIssuesforthisDeliverable86

OpenIssues86

ClosedIssues86

1.開發背景與基礎

1.1.讀者基礎要求

1、有EBS的使用經驗,尤其是Form的使用經驗

2、創建客戶化應用,參考《深入淺HlOracleEBS之全模塊設置詳例》第一章節

3、熟悉PL/SQL

4、熟悉Telnet和FTP工具,熱悉Windows常規操作

5、理解或開發過數據庫應用系統

6、有Form開發經驗則更佳

1.2.用戶和常用工具

1.2.1.區分3類用戶

1、OS用戶:包括超級用戶root,應用OS用戶如applprod,數據庫OS用戶如

oraprodo后兩個用戶具體由dba安裝環境時創嶷,名字不定。

2、數據庫用戶:包括內置管理用戶sys、system,EBS用戶apps,EBS各模塊用戶

applsys、gl、inv、po^ar、ap等等,EBS網關用戶applsyspub。

3、EBS用戶:也叫OA用戶、應用用戶、ERP用戶,包括默認超級用戶sysadmin,其

他內置用戶(參見《深入淺出OracleEBS之安全機制探索》),企業實施、使用過

程中創建的用戶。

1.2.2.Form開發使用的用戶和工具

Forms開發過程中需要具體使用如下3個用戶。

1、應用OS用戶:用telnet工具如SecureCRT登錄服務器,獲得各$XXX_TOP的具體

路徑、編譯form和pH:用FTP如cuteftp連接服務器,下載必要文件、上傳開發的

form。

2、APPS:用PL/SQLDeveloper登錄數據庫,創建各類數據庫對象,

3、sysadmin或者擁有應用開發員和系統管理員職責的等價用戶:注冊form等各AOL

對象、測試form。

13AOL開發框架

1.3.1.再說Navigator

Forms自身菜單其實和傳統菜單一樣:

Si深入演出OmdeEB5之Forms要點薈萃.docMicrosoftWord

爻"?擱■a)視圖W)到入(I)格式@)工耳(I)表格?雷口(X)幫助加AdobePDFAcrobatOnents

然而EBS中基本摒棄Forms自身的菜單功能,而是專門開發「一個Navigator界面,采

用樹形結構顯示菜單,每個菜單項對應一個Forms:

這里的菜單是可隨意組織的,因此非常靈活,而不用如傳統菜單那樣要么寫死要么用

代碼控制。

實際上,該方式完成了EBS最主要的安全性控制一一功能安全性,為什么這么說呢?

1.3.2.AOL開發框架:EBS功能安全性基本原理

這里僅說明Forms部分,其他的可參考《深入淺出OracleEBS之安全機制探索》。

安全性最終都要落實到“用戶”身上,即某一用戶是否具有某一權限;功能安全性的

核心就是某一用戶是否具有運行某一個Forms的權限。

為了方便管理,分類維護,EBS在“用戶”和“Fonns”之間加了幾個層次。考察如下

過程:

1、“用戶”如sysadmin登錄,系統驗證其用戶名/密碼

2、如果OK,系統列出其擁有的所有角色,在EBS中叫“職責”(Responsibility),

而每個職責,都對應一個定義好的“菜單”

3、當用戶選擇相應的職責進入“Navigator”后,顯示的就是此菜單的內容

4、每個底層菜單項,還不是直接對應Forms,而是先對應一個“功能”

(Function),由功能再去對應一個具體的“Forms”。這里的好處是,在功能上

可以定義參數比如查詢條件、控制碼等,然后傳遞給Forms,當然大部分情況是不

定義參數,所以功能和Forms基本上是一一對應關系

5、用戶點擊菜單項,到定義Forms時指定的應用的TOP下,找到“fmx文件”執行之

所以,反過來,如果我們開發好一個Forms,要在EBS中跑起來,完整的過程就是為該

“Forms”定義“功能”,定義“菜單”調用該功能,定義“職責”使用該菜單,最

后把職責分配給“用戶”等一系列無Coding的定義工作。

1.3.3.Template.fmb

專業的軟件系統,其操作方式、界面風格總是非常統一,即便是后來收購集成進來的

模塊,經過調整優化后,風格也基本一致。那么如何才能做到統一呢?一是依賴于規

范文檔,大家老老實實照標準開發;二是采用更加直接有效的辦法一一模版。

OracleEBS的Forms,基本上都是從Template.fmb開始,該模版預先定義了:

1、各種界面元素的屬性集一一子類

2、常用的控件一一日歷、進度條

3、一系列Form級觸發器,統一處理各種未被明確處理的事件

4、豐富的PLL庫函數,大大超越了FormsBuilder內置的函數

所以,我們基于EBS的開發,當然也是從Template.fmb開始

1.3.4.EBS文件系統

EBS文件系統,指其以怎樣的目錄結構組織各種可執行文件、命令文件、配置文件

的。

從整個EBS的角度看,分DB、APP兩部分、五個大目錄:

DatabaseApplicationTier

ServerServers

IIi

DATADBAPPLORACOMM

Oracle9:OracleHomeOracle1AS80.6Common

databasefilesfortheApplicationsOracleHomesfiles,suchis

usedbyOracle%productfilesfortheOraclelog.output.

OracleRDBMSApplicationsHTML,and

ApplicationsTechnologyJavafiles

Stack

其中COMN目錄(對應環境變量$。3>皿0?>1」0口)存放服務啟停腳本和基于HTML

的應用文件(Java類、JSP頁等):

COMMON.TOP

APPL(對應環境變:t$APPL_TOP)則存放配置文件、各種管理腳本、各模塊應用代

碼:

APPI.TOP

(otherprodtct

<CONTEXTJiAME>jenvdirectories)

adminauInd

APPS--CONTEXTNAME”m

】1JQ11.5.0B3.0

「I,

(otherproductsubdirectoriesandfiles)

APPL下的各個應用模塊目錄,則是本次介紹的主角了:

AU模塊存放fmb、plkplx文件、各應用模塊存放fmx文件,具體是:

$AU_TOiyresource:pll文件、plx文件

$AU_TOiyforms/US:英文fmb文件

$AU_TOiyformy<語言代碼〉:特定語種(如ZHS)的fmb文件

$〈應用簡稱>_TOI7forms/US:各模塊英文fmx文件錄

$<應用簡稱>」(^^00?5/〈語言代碼〉:特定語種(如ZHS)fmb文件

上面(應用簡稱〉,如INV、GL、AP、AR等等,在SystemAdministrator職責下的

Application/Register中定義。

通常各個企業都會創建一個客戶化應用來管理二次開發的所有代碼和設置,比如

CUX、HAND等,下面以CUX(客戶化的意思)為例。

總之我們需要的模版及相關文件在AL_TOP下:我們開發的fmb文件呢,也應根據上

述規則傳至臨AU_TOP/forms的相關語言路徑卜,不過為管理、備份方便,實際開發

中可能故意違反EBS的規則,與fmx一起放在$(21^」€^/£0門1^的相關語言路徑下。

詳情川參考:Arone的《lliConcepts.ppt》或Oracle的《OracleApplications

Concepts))PDF。

1.4.多組織支持

1.4.1.說明

Oracle的多組織數據屏蔽,設計要點如下:

1、核心層次:業務組BG-賬套SOB-法人實體LE-經營單位OU->庫存組織INV,

這些層次統稱為組織,可通過視圖org_organization_dcfinitions直看關系。

2、數據級別:表中設計有組織ID來解敝:小同模塊因為針對的層次小同,其組織1D

含義不同,比如HR的表用Business_Group」d,GL的表用Sct_Of_Book」d,

AR/AP/PO/OM等表用經營單位Orgjd,INV/MRP/WIP/BOM等模塊用庫存

組織Organization」d。

3、程序級別:用戶登錄、選擇職責后,其所能操作的業務組、賬套、法人實體、經

營單位就確定了,這個是通過相關的Profile來設置的:當進入制造和庫存相關模

塊,需要通過ChangeOrganization菜單來獲得可操作的庫存組織。Oracle標準的

Package、Form、Java等程序,都是嚴格根據當前用戶的參數來過濾各模塊表數

據。

1.5.主要實例

本文檔主要圍繞開發銷售訂單來介紹Form開發過程中涉及的關鍵技術點。

1.5.1.銷售訂單

銷售廠單最核心的內容為:某客戶,在某天,以何價格,購買多少數量的哪些商品。

一張銷售訂單,客戶是一定的,俏售員可能有多個,這里假定只記錄主銷售員,所以

這兩個信息構成銷售訂單的“頭信息”:一次訂單,客尸通常會同時購買多種商品,

并且未必是同一天要貨,這樣需求日期、商品、數量、價格構成銷售訂單的“行信

息”。

1.5.2.開發需求分析

銷售訂單還需要記錄其它重要的內容,這個可直接參照EBS的“SalesOrder”,為學

習方便,這里僅加入如下不完整、不嚴謹的信息。

頭信息:訂單編號、訂單日期、內銷還是外銷、所采用的價目表、總價、幣別、訂單

狀態;非''錄入"的不能刪除,“部分履行”或“完全履行”的不能修改。

訂單狀態:錄入、確定、部分履行、完全履行。

行信息:發貨日期、收款日期:如果已發貨,商品和數量不能修改,記錄不能刪除:

如果已收款,整條記錄都不能修改、不能刪除。

全部行都已發貨、己收款則訂單狀態為“完全履行”,部分發貨或部分收款,則訂單

狀態為“部分履行”。

訂單查詢:需要提供按訂單號、訂單日期、客戶、銷售員、銷售類型、商品、是否發

貨、是否收款等條件進行組合杳詢,杳詢表現方式分為Folder形式和Grid形式。

1.5.3.其它說明

本文檔使用“SCF”客戶化應用做開發,不過數據庫對象仍然沿用“CUX”前綴:沒

有建立專門的索引表空間。

2.基于EBS的Forms開發過程

2.1.Form文件類型

2.1.1.Form文件類型

.fmb:源文件,目前是二進制格式,也可以轉成早期版本的ASCH格式

.fmx:可執行文件,類似VB的.exe文件,其也需要在FormsRuntime環境中運行

.pH:庫函數源文件,類似所有開發語言的庫函數,如VC的.cpp文件

.plx:庫函數可執行文件

調用關系:fmb文件可以引用其他fmb文件、pll文件,pH文件可以進一步引用其他pll

文件,引用是可以嵌套的。所以要成功打開一個forms源文件,必須保證其直接引用、

間接引用的fmb、pH文件均存在。

怎樣才叫“存在”呢?類似各種語言如C的IncludePath或Java的ClassPath,Formst±l

有一個參數一一注冊表FORMS60_PATH來指示引用的路徑,只要需要的文件在該路

徑下即可。

22FormsBuilder安裝

22L版本

盡管Oracle的Developer工具已經升級到9i、10g,但EBS中使用的FormsServer和

FormsBuilder版本還是6i,今后的開發將逐步轉移到Java,Oracle將來也不會在EBS中

使用高于6i的Forms。

可以從http:///EPD/Search/getformI'載,其包含在EBSfor

Wind。ws版本的下載列表中。

2.2.2.OracleHome

OracleHome:Oracle產品的根目錄及其名稱;不同產品可以裝到不同的目錄,擁有

各自的OracleHome:通過安裝目錄下的bin\oracle.key來指示使用哪個注冊表項。

DefaultHome:指所有OracleHome中,哪個是Default,其名字則未必叫Default。

Developer6i的安裝不夠友好,必須安裝到DefaultHome,為避免手工修改注冊表的

煩惱,最好先安裝6i,再安裝其他Oracle產品。

2.2.3.基本安裝過程,請采用Custom

1、運行Setup,選擇安裝目錄和語言,建議采用English:

2、選擇OracleFormsDeveloper:

Tips:待裝完FormsDeveloper,需要重新運行Setup來安裝ReportsDeveloper,至于

兩個Server,基于EBS的開發不需要,裝了也用不了。

3、選擇安裝類型,請采用Custom:

InstallationOptionsxj

Whattypeofinstallationwouldyouliketo

perform?

「Typical

<?Custom^

幫助國)返回以確定Q)取消?)

4、選擇安裝FormsBuilder,將自動分析并安裝需要的相關組件和文件:

5SoftwareAssetManagerxj

Arailabl*Prednet&atC:\forasr?p0rtsPr?dart£tat

AssistftntComonFil?s1010.0

HUtiba”Tables6.0800

?GUICowonPil?s605.35Oc

N^vij&3or60.3.00

JavtCTfl)RuntineEnvironntnt1.1,715.1

JDKAppletViever31。

LoaiBalancerCl>ent6.0610

LoalBalancerServer6.0.61.0

■OrazleFonts6.0811.3

FontsAPI1.3

_______Fom二AppletJarFile」1.3

FormsCuaCwdSoundFilas6.0.811.4

FornzDatabg。Tabloi6.0.8.11.3

FormsJftVftCLASSSupportFil?s608110

FormsSuppl?n?nt608117

Forns6.08H3

Fom備S*rv4r8113

Fom*Y-bCGICirtri<U<608.11.3

?Ora:leFon>s"Documentation60.8114

0??.lePvi5nde?5eMvlesC.0.011.4

?Or?:leGraphics6.0.810.1

Ora:leInstaller3

OrazleJimtiator1。

SpaceRequired

Spac?r?quiradis:5Nin1ProductsAvailobi?Spac。784W

SelectedProducts

For?:Builder:FormsRuntineallow二youtorunadvancedfoms-basedApplicationscreatedwithth*FornsDesigner.

<1I2J

HipIViLog..|Options...IR?stor?IconsIExit

如果系統足夠“干凈”,通常?路OK就能順利安裝;點擊Exit退出。

5、請從頭開始,安裝ReportsDeveloper:

夕JftlabI-H兇

ATailablePredvctsatC:\£?rasre>orIsProductsInstalledatD:\orant

?OrslcExpressConnectionEditor6.20.01+GUIContionF:14E60.535Oc

HJr?eleGraphics60.8101Infori?atior?H&uigNor6030.0

0r?d.eInstaller3.3.1.2.4JDKAppletViewer1.1.7.31o

?OroclaKet8Products8.060.0-1181195+0rftclaFortts6.0.8113

OracleOCXPack60.000?OracleForr?s-Docwentatioo608114

Or?=l?ODBCDriverforRdb2.10.13.0*OracleGraphics6.0.810.1

?Org】。Op?nClientAdapterforODBC605.290OracleNan?dPipesProtocolAdapt”80.60O-!18!

?VreeleUpenLnteri&cesb.U.3.UUUracleWeWUiientb.U6U.U-1W11?>

*Or必QProcedureBuilder6.0.811.0449OracleQueryBuilder6.0.5.32.0

?OreeleProjectBuilder60572Or^cloTCP/IPProtocolAdapter80600T181195

?OracleQueryBuilder6.OS.32.0OracleTraceCollectionServices80.6.00-991006

QueryBuilderComponent6.0.5.32.0

RtQuirtdSupportFiles80.600-1154153

ReportsCueCardSoundPiles6.0.8.11.4SystenSupportFiles6.0.8.00

ReportsDatobaxTftbl?z6.0.811.3+TOO156.0.532Oj

ReportsLtnguM/Suppl60.8117

ReportsRuntine1.3

。—?—一▲一<*?-.《.eno??。

2.2.4.打Patch,請采用Typical

上述安裝的Developer6i的版本是6.081L3,在編輯比較復雜的Form時會報錯退出,

需要打Patch,我打的是6.0825。

1、運行Setup,選擇安裝目錄和語言,默認即可。

2、選擇安裝類型,請采用Typical:

通常?路OK就能順利安裝。

2.2.5.配置TNSNAME

從DBA或他人索要SQLNET.ORA和TNSNAMES.ORA,直接覆蓋到安裝目錄的

NET8D\ADMIN下。

SQLNET.ORA是OracleSQL*Nct協議配置文件,樣例如下:

SQLNET.AUTHENTICAT1ON_SERVICES=NONE

NAMES.DIRECTORY_PATH=(TNS7AMES,ONAMES,HOSTNAME)

SQLNET.EXPIRE_TIME=1

TNSNAMES.ORA是OracleSQL*Net數據庫服務解析文件,樣例如下:

PROD=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=tcp)(HOST=HUAJHUA.)(PORT=1521))

(CONNECT_DATA=

(SERVICE_NAME=PROD)

(INSTANCE_NAME=PROD)

)

)

2.2.6.配置FORMS60PATH

基于EBS的Forms開發,需要從服務器上下載必要的fmb和pH文件到本地,比如兩類文

件都放在d:\oracle\resource,那么需要添加注冊表的字符串值FORMS60_PATH,類

似C語言的IncludeDirectory或者Java的ClassPath:

H0ORACLE■anti

0CJALL_HOMES

EE-dIDO

(JHOMEDant\

fc)CJORACLE_HOMES

CJORACLEO

GBQPolicies

RogramGroups

(?ICJratDVD

ant

fflQRealNetworks

L?:Wraht\

(SCJRkyX

也1560REG_EXPAND_SZD:\oraht\

(i)Cj邛iKjmberyw?VG56O

REG_EXPAND_SZD:\oraht\

CjSecure

ffloSMesoft當FORMS60_PATHREGJZ

2.27配置NLSLANG

修改注冊表:LocalMachine/Software/Oracle/NLS_LANG

改為AMERICAN_AMERICA.ZHS16GBK,這樣開發IDE使用英文,字符集可滿足英

文、簡體中文、繁體中文的需要。

為NET80REG.EXPAND.SZD:\orantVJET8O

TCjIHerVideo

?NLS_LANGAMERICAN_AMER!CA.WE8ISO8859PI

+CJLenovoREG_EXRAND_5Z

WJNLSRTL33REG_EXPAND_5ZD:\orantVlSRTL33

由OMacromedia

iyocLeo

I__|NacserlenREG-EXPAND.SZD:\orant\GRAPH60

至]OIN

3CJMAXSOFT-OCRONREG.EXPANO.SZD:\orant\OIN

由QMDC回OIN60REGEXPANDSZD:\orant\OIN60

4CJM>crosoft5RTL33\DATA

王I__|MorticeKernSystemsWindowsNT

EOMozlaPlugins

由CJODBCiOME

百日ORACLE除

0_JALL_HOMESNIT

,□HOMEOReports6i\devp6i\INSTALL

H_JORACLE.HOMES

N

+CJPolices

FRACE8O

LJFro夕amGroups

現PISQL80REG.EXPAND.SZD:\orant\PLSQL80

用LJratDVD

現PRO80REGEXPANDSZD:\orant\PRO60

習慣上也同時修改其他子分支下的NLSJLANG。

2.3.下載Template相關文件

用FTF以應用操作系統用戶登錄EBS服務費,進入到$AU_TOP目錄下。

2.3.1.下載TEMPLATE.fmb

從$人111(^/儂1^/135下載TEMPLATE.fmb到FORMS60_PATH對應的目錄下。

2.3.2.啟動FormBuilder

通過開始菜單啟動:

福程序(中ThnkVantage

-啟動

e文檔(3目

u3游戕

o二

-

s口,設置⑸遠程協助

s眼

gWindowsLiveMessenger

J

O戶搜索(C)OracleForms6i的FormBuilder

QdZ#才。

XOracleForms&Reports6i歌rmCompiler

切幫助和支持(由0國反篁Wqant'BirTI

SOracleForms&Reports61Doc

M

O0

P口運行…OracleOlapCbent2.2

U?0

-OracleReports6i

關機/“、…V

去掉Displayatstartup,點擊Cancel:

2.3.3.打開TEMPLATE.fmb及報錯分析

N:點擊Open,打開TEMPLATE.fmb

本地僅有TEMPLATE,fmb,將報fmb文件找不到SourceModule后就是form文件

名:

Forms兇

FRM-18108:Failedtoloadthefollowingobjects.

SourceModule:APPSTAND

SourceObject:STANDARD_PC_AND_VA

SourceModule:APPSTAND

QSourceObject:5TANDARD_TOOLBAR

SourceModule:APPSTAND

SourceObject:STANDARD_CALENDAR

.|Help|

點擊。K,再報pH文件找不到一一PL/SQLlibrary后面就是就是pH文件名:

Forms

FRM-19102:CannotattachPL/SQLlibraryAPPCORE.Thislibrary.

attachmentwillbelostiFthemoduleissave

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論