|
用户名:p8499 笔名:p8499 地区: 行业:其他 |
| 日 | 一 | 二 | 三 | 四 | 五 | 六 |
11/7完成fundamentals I考试 93%
Installation Issue of Standalone 8.12 with Tools 8.97
XML Publisher
#
Run report with XML output.
Create RTF template using XML output.
Upload RTF template by P95600.
Creating Report Definiton by P95620.
Revise Report Definiton of UBE version.
Now you can run UBE.
$
Trigger
FC:改值时,手动调用Trigger
-----------------------------------------------------------------------
CONTROL: EDIT Find-MCU
EVENT: Control Exited/Changed-Asynch
-----------------------------------------------------------------------
0001 Press Button(FC trigger/OnSetFind-MCU)
----------------------------------------------------------------------
CONTROL: BUTTON trigger/OnSetFind-MCU [HIDDEN]
EVENT: Button Clicked
-----------------------------------------------------------------------
0001 SI szFindMCU = FC Find-MCU
0002 Find-CO = ""
0003 Find-E58AN8 = ""
0004 F0006.Fetch Single
FC Find-MCU = TK Business Unit
FC Find-CO <- TK Company
FC Find-E58AN8 <- TK Address Number
0005 Press Button(FC trigger/OnSetFind-CO)
0006 Press Button(FC trigger/OnSetFind-E58AN8)
0007 Update Parent
-----------------------------------------------------------------------
CALLING
-----------------------------------------------------------------------
0001 FC Find-MCU = FC Combo-MCU
0002 Press Button(FC trigger/OnSetFind-MCU)
COMBO:改值时,自动调用Trigger
-----------------------------------------------------------------------
CONTROL: COMBOBOX Combo-MCU
EVENT: Selection Changed
-----------------------------------------------------------------------
0001 Press Button(FC trigger/OnSetCombo-MCU)
-----------------------------------------------------------------------
CONTROL: BUTTON trigger/OnSetCombo-MCU [HIDDEN]
EVENT: Button Clicked
-----------------------------------------------------------------------
0001 FC Find-MCU = FC Combo-MCU
0002 Press Button(FC trigger/OnSetFind-MCU)
-----------------------------------------------------------------------
CALLING
-----------------------------------------------------------------------
0020 Select Item(FC Combo-MCU, VA evt_MCUFirst)
Wide Security完全版
Listing of ER for Application : Work With Gift Logistics Status (P58N337)
=======================================================================
FORM: Find/Browse:330 [FIND BROWSE] (W58N337A)
=======================================================================
CONTROL: FORM
EVENT: Dialog is Initialized
-----------------------------------------------------------------------
0019 // Use Security YN
0020 If PO cUseScrtyYN is equal to "1" Or PO cUseScrtyYN is equal to "Y"
0021 VA frm_UseSecurityYN = "Y"
0022 Else
0023 VA frm_UseSecurityYN = "N"
0024 End If
-----------------------------------------------------------------------
EVENT: Post Dialog is Initialized
-----------------------------------------------------------------------
0006 If VA frm_UseSecurityYN is equal to "Y"
0007 Press Button(FC func/Security)
0008 Else
0009 Hide Control(FC combo-MCU)
0010 Hide Control(FC combo-E58AN8)
0011 End If
-----------------------------------------------------------------------
EVENT: Variable
-----------------------------------------------------------------------
frm_UseSecurityYN
frm_SecurityYN
frm_SecurityDefaultCO
frm_SecurityDefaultE58AN8
frm_SecurityDefaultMCU
frm_SecurityE58AN8Number
frm_SecurityE58AN8MultiYN
=======================================================================
CONTROL: COMBOBOX combo-E58AN8
EVENT: Selection Changed
-----------------------------------------------------------------------
0001 // Security
0002 FC find-E58AN8 = FC combo-E58AN8
0003 Press Button(FC func/SetComboMCU)
0004 // ~Security
=======================================================================
CONTROL: COMBOBOX combo-MCU
EVENT: Selection Changed
-----------------------------------------------------------------------
0001 // Security
0002 FC find-MCU = FC combo-MCU
0003 Press Button(HC F&ind)
0004 // ~Security
=======================================================================
CONTROL: BUTTON func/Security [HIDDEN]
EVENT: Button Clicked
-----------------------------------------------------------------------
evt_CurrE58AN8
evt_CurrMCU
evt_CurrName
evt_CurrLineNumber2
evt_CurrLineNumber
0001 VA frm_SecurityYN = "N"
0002 Retrive Store User Profile Information By User ID
SL UserID -> BF szE58PortalUserID
VA frm_SecurityDefaultCO <- BF szCompany
VA frm_SecurityDefaultE58AN8 <- BF mnE58StoreAddressNumber
VA frm_SecurityYN <> BF cRecordExistYN
VA frm_SecurityDefaultMCU <- BF szCostCenter
0003 If A frm_SecurityYN is equal to "Y"
0004 Hide Control(FC find-MCU)
0005 Hide Control(FC FIND-MCU)
0006 Hide Control(FC find-E58AN8)
0007 Hide Control(FC FIND-E58AN8)
0008 Disable Control(FC find-CO)
0009 Initial SMS Security By user id
SL UserID -> BF szE58PortalUserID
VA frm_SecurityE58AN8Number <- BF nTotalNumberOfReturnValue
VA frm_SecurityDefaultE58AN8 -> BF mnDefaultE58StoreAddressNumber
VA frm_SecurityDefaultMCU -> BF szDefaultCostCenter
VA frm_SecurityDefaultCO -> BF szDefaultCompany
VA frm_SecurityE58AN8MultiYN <- BF cHavingMultiStoreAddressYN
0010 // Setting
0011 Remove Item by Key(FC combo-E58AN8, "1", <Remove All>)
0012 Fetch First Store Address Number
VA evt_CurrE58AN8 <- BF mnE58StoreAddressNumber
VA evt_CurrMCU <- BF szCostCenter
SL UserID -> BF szE58PortalUserID
VA evt_CurrLineNumber <> BF mnCurrentLineNumber
VA frm_SecurityE58AN8Number <- BF nTotalStoreAddressNumber
VA evt_CurrName <- BF szNameAlpha
0013 If VA frm_SecurityE58AN8Number is less than or equal to "1"
0014 Add Item(FC combo-E58AN8, VA evt_CurrE58AN8, VA evt_CurrName, <Null>)
0015 Disable Control(FC combo-E58AN8)
0016 Else
0017 VA evt_CurrLineNumber2 = "1"
0018 While VA evt_CurrLineNumber2 is less than or equal to VA frm_SecurityE58AN8Number
0019 Add Item(FC combo-E58AN8, VA evt_CurrE58AN8, VA evt_CurrName, <Null>)
0020 Fetch Next Store Address Number
VA evt_CurrE58AN8 <- BF mnE58StoreAddressNumber
VA evt_CurrMCU <- BF szCostCenter
SL UserID -> BF szE58PortalUserID
VA evt_CurrLineNumber <> BF mnCurrentLineNumber
VA evt_CurrName <- BF szNameAlpha
0021 VA evt_CurrLineNumber2 = VA evt_CurrLineNumber2+1
0022 End While
0023 End If
0024 FC combo-E58AN8 = VA frm_SecurityDefaultE58AN8
0025 FC find-CO = VA frm_SecurityDefaultCO
0026 FC find-E58AN8 = VA frm_SecurityDefaultE58AN8
0027 FC find-MCU = VA frm_SecurityDefaultMCU
0028 Press Button(FC func/SetComboMCU)
0029 // ~Setting
0030 Else
0031 Hide Control(FC combo-MCU)
0032 Hide Control(FC combo-E58AN8)
0033 End If
=======================================================================
CONTROL: BUTTON func/SetComboMCU [HIDDEN]
EVENT: Button Clicked
-----------------------------------------------------------------------
evt_MCUNumber
evt_CurrMCU
evt_CurrLineNumber
evt_CurrLineNumber2
evt_CurrName
evt_CurrCO
evt_CurrSPHD
evt_1stMCU
0001 Remove Item by Key(FC combo-MCU, "1", <Remove All>)
0002 Fetch First Store MCU Number
FC find-E58AN8 -> BF mnE58StoreAddressNumber
VA evt_CurrMCU <- BF szCostCenter
SL UserID -> BF szE58PortalUserID
VA evt_CurrLineNumber <> BF mnCurrentLineNumber
VA evt_CurrName <- BF szNameAlpha
VA evt_MCUNumber <- BF nTotalMCUNumberByStoreAddreeNo
VA evt_CurrSPHD -> BF szSpecialHandlingCode
VA evt_CurrCO <- BF szCompany
0003 FC find-CO = VA evt_CurrCO
0004 If VA evt_MCUNumber is less than or equal to "1"
0005 Add Item(FC combo-MCU, VA evt_CurrMCU, VA evt_CurrName, <Null>)
0006 FC combo-MCU = VA evt_CurrMCU
0007 Disable Control(FC combo-MCU)
0008 Else
0009 VA evt_CurrLineNumber2 = "1"
0010 VA evt_1stMCU = VA evt_CurrMCU
0011 While VA evt_CurrLineNumber2 is less than or equal to VA evt_MCUNumber
0012 Add Item(FC combo-MCU, VA evt_CurrMCU, VA evt_CurrName, <Null>)
0013 Fetch Next Store MCU Number
FC find-E58AN8 -> BF mnE58StoreAddressNumber
VA evt_CurrMCU <- BF szCostCenter
SL UserID -> BF szE58PortalUserID
VA evt_CurrLineNumber <> BF mnCurrentLineNumber
VA evt_CurrName <- BF szNameAlpha
VA evt_CurrSPHD -> BF szSpecialHandlingCode
VA evt_CurrCO <- BF szCompany
0014 VA evt_CurrLineNumber2 = VA evt_CurrLineNumber2+1
0015 End While
0016 FC combo-MCU = VA evt_1stMCU
0017 Enable Control(FC combo-MCU)
0018 End If
Saturday September 06, 2008 15:03
SubForm Routine
Sub Form MessageDispatcher
0001 If SI MSG_IN is equal to "init"
0002 Press Button(FC Msg/Init)
0003 End If
0004 //
0005 SI MSG_IN = ""
0006 SI MSG_OUT = "
Sub Form Msg/Init
0001 Get Audit Information
VA frm_Today <- BF jdDate
0002 Press Button(FC Find)
Power Form Post Dialog Initialization
0001 VA frm_01_MSG_TO = "init"
0002 Notify Child(FC Select Player)
Power Edit Notified By Child
0001 If VA frm_01_MSG_FROM is equal to "sel"
0002 FC Player ID = VA frm_01_E55PLID
0003 End If
//to clear every fromsubform parameters
JDE空值研究
地球人都知道的Excel97-03格式
http://p8499.bokee.com/inc/blank_null_zero.xls.bmp
Headerless Detail(强域)
Headerless Detail
Header fields类型
1 强域(用于分组,使用关联表的DD)
1.1 Add时
1.1.1 Grid Focus时,Check强域是否有值
1.1.2 强域Changed时自动CheckChanged
1.1.3 Load按钮逻辑:
If Grid Cols Count>0(Grid已编辑)
Fetch Single(Find他组既存行)
Y: Message Error
N: Change it successfully
Else(Grid未编辑)
Change it successfully
Find
1.1.4 Grid中对应强域的列全部继承自Header值且disabled
1.2 Update时
1.1.1 FormMode=Update时强域被disable
2 待定
事例:
http://p8499.bokee.com/inc/P58Q411_Memo_HeaderlessDetail.doc.bmp (doc文件)
Listing of ER for Application : Work With Store Procurement Orders (P58Q411)
=======================================================================
FORM: Find/Browse [FIND BROWSE] (W58Q411A)
=======================================================================
CONTROL: FORM
EVENT: Post Dialog is Initialized
-----------------------------------------------------------------------
0001 Set Form Title(TV Browsing)
0002 Hide Grid Column(FC Grid, GC BatchNumber)
0003 Hide Grid Column(FC Grid, GC UserID)
0004 Hide Grid Column(FC Grid, GC TransactionNumber)
0005 Hide Grid Column(FC Grid, GC LineNumber)
=======================================================================
CONTROL: HYPITEM &Select
EVENT: Button Clicked
-----------------------------------------------------------------------
0001 Call( App:P58Q411 , Form: W58Q411B )
GC UserID -> FI szEdiUserId
GC BatchNumber -> FI szEdiBatchNumber
GC TransactionNumber -> FI szEdiTransactNumber
GC LineNumber -> FI mnEdiLineNumber
=======================================================================
CONTROL: HYPITEM &Add
EVENT: Button Clicked
-----------------------------------------------------------------------
0001 Call( App:P58Q411 , Form: W58Q411B )
=======================================================================
FORM: Headerless Detail [HEADERLESS DETAIL] (W58Q411B)
=======================================================================
CONTROL: FORM
EVENT: Post Dialog is Initialized
-----------------------------------------------------------------------
0001 Set Form Title(TV Editing)
0002 Hide Control(FC LineNumber)
0003 Hide Control(FC LineNumber-Out-LNID)
0004 Hide Control(FC Values4New)
0005 Hide Control(FC StrongRequired)
0006 Hide Control(FC Load)
0007 Hide Control(FC Load-Out-Status)
0008 Hide Grid Column(FC Grid, GC UserID)
0009 Hide Grid Column(FC Grid, GC BatchNumber)
0010 Hide Grid Column(FC Grid, GC TransactionNumber)
0011 Hie Grid Column(FC Grid, GC YN)
0012 If SV Form_ Mode is equal to CO UPDATE_MODE
0013 Disable Control(FC Strong-EDBT)
0014 Disable Control(FC Strong-EDTN)
0015 Disable Control(FC Strong-EDUS)
0016 Press Button(HC F&ind)
0017 End If
-----------------------------------------------------------------------
EVENT: Write Grid Line-After
-----------------------------------------------------------------------
0001 GC YN = "Y"
-----------------------------------------------------------------------
EVENT: Variable
-----------------------------------------------------------------------
frm_PC_EDUS
frm_PC_EDBT
frm_PC_EDTN
frm_BC_EDBT
frm_BC_EDTN
frm_BC_EDUS
=======================================================================
CONTROL: EDIT Strong-EDUS
EVENT: Control is Entered
-----------------------------------------------------------------------
0001 Clear Control Error(FC Strong-EDUS)
0002 VA frm_PC_EDUS = FC Strong-EDUS
-----------------------------------------------------------------------
EVENT: Control Exited/Changed-Asynch
-----------------------------------------------------------------------
0001 VA frm_BC_EDUS = FC Strong-EDUS
0002 Press Button(FC Load)
0003 If FC Load-Out-Status is equal to "N"
0004 VA frm_BC_EDUS = VA frm_PC_EDUS
0005 FC Strong-EDUS = VA frm_PC_EDUS
0006 End If
=======================================================================
CONTROL: EDIT Strong-EDBT
EVENT: Control is Entered
-----------------------------------------------------------------------
0001 Clear Control Error(FC Strong-EDBT)
0002 VA frm_PC_EDBT = FC Strong-EDBT
-----------------------------------------------------------------------
EVENT: Control Exited/Changed-Asynch
-----------------------------------------------------------------------
0001 VA frm_BC_EDBT = FC Strong-EDBT
0002 Press Button(FC Load)
0003 If FC Load-Out-Status is equal to "N"
0004 VA frm_BC_EDBT = VA frm_PC_EDBT
0005 FC Strong-EDBT = VA frm_PC_EDBT
0006 End If
=======================================================================
CONTROL: EDIT Strong-EDTN
EVENT: Control is Entered
-----------------------------------------------------------------------
0001 Clear Control Error(FC Strong-EDTN)
0002 VA frm_PC_EDTN = FC Strong-EDTN
-----------------------------------------------------------------------
EVENT: Control Exited/Changed-Asynch
-----------------------------------------------------------------------
0001 VA frm_BC_EDTN = FC Strong-EDTN
0002 Press Button(FC Load)
0003 If FC Load-Out-Status is equal to "N"
0004 VA frm_BC_EDTN = VA frm_PC_EDTN
0005 FC Strong-EDTN = VA frm_PC_EDTN
0006 End If
=======================================================================
CONTROL: GRID Grid
EVENT: Add Grid Rec to DB - Before
-----------------------------------------------------------------------
0001 Press Button(FC Audit)
-----------------------------------------------------------------------
EVENT: Update Grid Rec to DB-Before
-----------------------------------------------------------------------
0001 Press Button(FC Audit)
-----------------------------------------------------------------------
EVENT: Add Last Entry Row to Grid
-----------------------------------------------------------------------
0001 GC YN = "N"
-----------------------------------------------------------------------
EVENT: Set Focus on Grid
-----------------------------------------------------------------------
0001 Press Button(FC StrongRequired)
-----------------------------------------------------------------------
EVENT: Row Exit & Changed - Asynch
-----------------------------------------------------------------------
0001 If GC YN is equal to "Y"
0002 // Existing
0003 Else
0004 If GC YN is equal to "N"
0005 // New
0006 Press Button(FC Values4New)
0007 End If
0008 End If
=======================================================================
CONTROL: BUTTON LineNumber
EVENT: Button Clicked
-----------------------------------------------------------------------
evt_RowNumber_Ori
evt_RowNumber_Curr
evt_RowNumber_Min
evt_RowNumber_Max
evt_LineNumber_Max
evt_LineNumber_Curr
evt_LineNumber_Next
0001 Get Selected Grid Row Number(FC Grid, VA evt_RowNumber_Ori)
0002 VA evt_RowNumber_Min = 0
0003 Get Max Grid Rows(FC Grid, VA evt_RowNumber_Max)
0004 VA evt_RowNumber_Curr = VA evt_RowNumber_Min
0005 While VA evt_RowNumber_Curr is less than or equal to VA evt_RowNumber_Max
0006 Get Grid Row(FC Grid, VA evt_RowNumber_Curr)
0007 If VA evt_RowNumber_Curr is equal to VA evt_RowNumber_Min
0008 VA evt_LineNumber_Max = GC LineNumber
0009 Else
0010 VA evt_LineNumber_Curr = GC LineNumber
0011 If VA evt_RowNumber_Curr is not equal to VA evt_RowNumber_Ori
0012 If VA evt_LineNumber_Curr is greater than VA evt_LineNumber_Max
0013 VA evt_LineNumber_Max = VA evt_LineNumber_Curr
0014 End If
0015 End If
0016 End If
0017 VA evt_RowNumber_Curr = VA evt_RowNumber_Curr+1
0018 End While
0019 VA evt_LineNumber_Next = VA evt_LineNumber_Max+1
0020 FC LineNumber-Out-LNID = VA evt_LineNumber_Next
=======================================================================
CONTROL: BUTTON Values4New
EVENT: Button Clicked
-----------------------------------------------------------------------
0001 Press Button(FC LineNumber)
0002 GC LineNumber = FC LineNumber-Out-LNID
=======================================================================
CONTROL: BUTTON StrongRequired
EVENT: Button Clicked
-----------------------------------------------------------------------
0001 If FC Strong-EDBT is equal to
0002 Set Control Error(FC Strong-EDBT, "0003")
0003 End If
0004 If FC Strong-EDTN is equal to
0005 Set Control Error(FC Strong-EDTN, "0003")
0006 End If
0007 If FC Strong-EDUS is equal to
0008 Set Control Error(FC Strong-EDUS, "0003")
0009 End If
0010 //
=======================================================================
CONTROL: BUTTON Load
EVENT: Button Clicked
-----------------------------------------------------------------------
evt_GridRowsCount
evt_AlertRT
0001 Get Max Grid Rows(FC Grid, VA evt_GridRowsCount)/p>
0002 If VA evt_GridRowsCount is greater than
0003 F58Q411.Fetch Single
FC Strong-EDUS = TK EDI - User ID
FC Strong-EDBT = TK EDI - Batch Number
FC Strong-EDTN = TK EDI - Transaction Number
0004 If SV File_IO_Status is equal to CO SUCCESS
0005 Call( App:P58Q411 , Form: W58Q411C )
TV Conflicting with existing records! [HIDDEN] -> FI szMessage
VA evt_AlertRT <- FI cRTCode
0006 // Error
0007 FC Load-Out-Status = "N"
0008 Else
0009 // OK
0010 FC Load-Out-Status = "Y"
0011 End If
0012 Else
0013 // OK
0014 FC Load-Out-Status = "Y"
0015 End If
=======================================================================
CONTROL: BUTTON Audit
EVENT: Button Clicked
-----------------------------------------------------------------------
0001 BC Program ID (F58Q411) = "P58Q411"
0002 Get Audit Information
BC User ID (F58Q411) <- BF szUserName
BC Date - Updated (F58Q411) <- BF jdDate
BC Time - Last Updated (F58Q411) <- BF mnTime
BC Work Station ID (F58Q411) <- BF szWorkstation_UserId
=======================================================================
FORM: Message [MESSAGE] (W58Q411C)
=======================================================================
CONTROL: FORM
EVENT: Dialog is Initialized
-----------------------------------------------------------------------
0001 Set Control Text(FC Insert Text Here, FI szMessage)
=======================================================================
CONTROL: BUTTON OK
EVENT: Button Clicked
-----------------------------------------------------------------------
0001 FI cRTCode = "Y"
Tuesday July 08, 2008 10:14
绿色是事件,黄色是Strong Fields处理
自动行号
Security via Sub Form™(2)
SSF(Security Sub Form) Side:
1. Visible elements:
CO elements(label,fc,desc,combo),
E58AN8 elements(label,fc,desc,combo)
MCU elements(label,fc,desc,combo)
2. Logic elements:
A,B,...etc.
3. Form variables:
frm_Curr_AN8
frm_Curr_MCU
frm_Curr_LNID
frm_Curr_ALPH
frm_AN8Number
frm_Curr_INT01
frm_SPHD
frm_MCUNumber
frm_1st_MCU
frm_SecurityDefaultCO
frm_SecurityDefaultE58AN8
frm_SecurityDefaultMCU
4. Set button:
0001 SI szFindCO = FC Find-CO
0002 SI mnFindE58AN8 = FC Find-E58AN8
0003 SI szFindMCU = FC Find-MCU
0004 Update Parent
5. FC-CO,Combo-CO,FC-E58AN8,Combo-E58AN8,FC-MCU,Combo-MCU:
0001 Press Button(FC Set)
6. Notified by Parent:
--eg--
0001 Hide Control(FC A)
0002 Hide Control(FC B)
0003 Hide Control(FC Set)
0004 //
0005 If SI cLogicStyle is equal to "A"
0006 Press Button(FC A)
0007 Else
0008 If SI cLogicStyle is equal to "B"
0009 Press Button(FC B)
0010 End If
0011 End If
0012 //
0013 If SI cCO_Visible is equal to "N"
0014 Hide Control(FC Combo-CO)
0015 Hide Control(FC Find-CO)
0016 Hide Control(FC COMPANY)
0017 Hide Control(FC Company)
0018 End If
0019 If SI cE58AN8_Visible is equal to "N"
0020 Hide Control(FC Combo-E58AN8)
0021 Hide Control(FC Find-E58AN8)
0022 Hide Control(FC STORE ADDRESS NUMBER)
0023 Hide Control(FC Store Address Number)
0024 End If
0025 If SI cMCU_Visible is equal to "N"
0026 Hide Control(FC Combo-MCU)
0027 Hide Control(FC Find-MCU)
0028 Hide Control(FC BUSINESS UNIT)
0029 Hide Control(FC Business Unit)
0030 End If
7. B button(logic button):
--eg--
0001 // Referencing Ajisen
0002 VA frm_Security_Exists = "N"
0003 Retrive Store User Profile Information By User ID
SL UserID -> BF szE58PortalUserID
VA frm_Security_DefaultCO <- BF szCompany
VA frm_Security_DefaultE58AN8 <- BF mnE58StoreAddressNumber
VA frm_Security_Exists <> BF cRecordExistYN
VA frm_Security_DefaultMCU <- BF szCostCenter
0004 If VA frm_Security_Exists is equal to "Y"
0005 Remove Item by Key(FC Combo-MCU, 1,
0006 F58L101.Select
VA frm_Security_DefaultCO = TK Company
VA frm_Security_DefaultE58AN8 = TK Store Address Number
0007 F58L101.Fetch Next
VA frm_Curr_MCU <- TK Business Unit
0008 VA frm_MCUNumber = 0
0009 While SV File_IO_Status is equal to CO SUCCESS
0010 VA frm_MCUNumber = VA frm_MCUNumber+1
0011 F0006 Get Business Unit Description A7
VA frm_Curr_MCU -> BF szCostcenter
VA frm_Curr_ALPH <- BF szDescription001
0012 Add Item(FC Combo-MCU, VA frm_Curr_MCU, VA frm_Curr_ALPH,
0013 F58L101.Fetch Next
VA frm_Curr_MCU <- TK Business Unit
0014 End While
0015 //
0016 // AN8:FC,Disable
0017 // MCU:Combo
0018 //
0019 Show Control(FC Find-CO)
0020 Disable Control(FC Find-CO)
0021 FC Find-CO = VA frm_Security_DefaultCO
0022 //
0023 Hide Control(FC Combo-CO)
0024 //
0025 Show Control(FC Find-E58AN8)
0026 Disable Control(FC Find-E58AN8)
0027 FC Find-E58AN8 = VA frm_Security_DefaultE58AN8
0028 //
0029 Hide Control(FC Combo-E58AN8)
0030 //
0031 Hide Control(FC Find-MCU)
0032 FC Find-MCU = VA frm_Security_DefaultMCU
0033 //
0034 Show Control(FC Combo-MCU)
0035 If VA frm_MCUNumber is greater than "1"
0036 Enable Control(FC Combo-MCU)
0037 Else
0038 Disable Control(FC Combo-MCU)
0039 End If
0040 Select Item(FC Combo-MCU, VA frm_Security_DefaultMCU)
0041 Else
0042 //
0043 // AN8:FC,Enable
0044&bsp; // MCU:FC,Enable
0045 //
0046 Show Control(FC Find-CO)
0047 FC Find-CO = "*"
0048 //
0049 Hide Control(FC Combo-CO)
0050 //
0051 Show Control(FC Find-E58AN8)
0052 Disable Control(FC Find-E58AN8)
0053 FC Find-E58AN8 = "*"
0054 //
0055 Hide Control(FC Combo-E58AN8)
0056 FC Combo-E58AN8 = "*"
0057 //
0058 Show Control(FC Find-MCU)
0059 Enable Control(FC Find-MCU)
0060 FC Find-MCU = "*"
0061 //
0062 Hide Control(FC Combo-MCU)
0063 FC Combo-MCU = "*"
0064 End If
Security via Sub Form™
Power Browse Side:
1. Put SSF(Security Sub Form) on the screen panel, surrouded with a Group element.
2. Form variables:
frm_BoolY,
frm_BoolN,
frm_SecurityStyle.
3. Post Dialog is Inisialized:
0001 VA frm_BoolY="Y"
0002 VA frm_BoolN="N"
0003 VA frm_SecurityStyle="B"
0004 Notify Child(FC Security)
4. Put these element invisibly on the panel:
View.CO[criteria=equal,wildcard display]
View.E58AN8[criteria=equal,wildcard display]
View.MCU[criteria=equal,wildcard display]
5. Set mapping link:
VA frm_SecurityStyle -> SI:cLogicStyle
FC Find-MCU <- SI:szFindMCU
FC Find-E58AN8 <- SI:mnFindE58AN8
FC Find-CO <- SI:szFindCO
VA frm_BoolY -> SI:cMCU_Visible
VA frm_BoolY -> SI:cE58AN8_Visible
VA frm_BoolY -> SI:cCO_Visible
Add Record to DB - Before
Header Detail:Add Record to DB - Before
此时,FC(除Criteria Items外)已赋给BC
未在Screen上有FC的字段,相应BC值现为空。需要在此事件中直接操作BC
事件后,程序自动通过BC更新数据库
查询条件即时变更
每个CheckBox设置一个CriteriaButton,该CriteriaButton仅Append查询条件而不Clear。当任意一个CheckBox按下时,先Clear全部查询条件,然后逐个按下所有CriteriaButton。
(原文章被误删)
Implementation-Addresses
|
Hierarchy |
Form |
View |
Table |
|
一个AN8 |
(Find/Browse:P01012/W01012B; |
V0101E |
F0101<AN8> |
|
+有多个Who |
(Detail:P0111/W0111A) |
|
F0111<AN8,IDLN> |
|
++有多个Phone |
(Detail:P0115/W0115A) |
V0115A |
F0115<AN8,IDLN,CNLN,RCK7> |
|
++有多个Internet地址 |
(Detail:P01111/W01111I) |
V01151 |
F01151<AN8,IDLN,RCK7> |
|
++有多个相关人 |
(Detail:P01111/W01111F) |
V01112 |
F01112<AN8,IDLN,CNLN> |
|
+++有多个Phone |
(Detail:P0115/W0115A) |
V0115A |
F0115<AN8,IDLN,CNLN,RCK7> |
|
++有多个AltAddress |
(Detail:P01111/W01111E) |
V01161 |
F01161<AN8,IDLN,EFTB,ATYPE> |
|
|
|
|
|
摘录PeopleBook关于Set Selection的用法
Set Selection Group
Description
The Set Selection Group system function enables you to group together fetching criteria; this is the only characteristic of this system function that makes it different from the Set Selection system function. If you are not familiar with the Set Selection system function, please review the Grid Control System Functions section in the Form Design Aid guide.
The following three examples describe how Set Selection and Set Selection Group perform, and illustrate the differences in their functionality.
The result is that all employee records with the name ABC and all customer records are fetched.
Example
Example 1 – Set Selection
A form has a filter field called Alpha Name (ALPH), which is associated with the Alpha Name column in the F0101 table. In addition, there are two Set Selection system functions under the Find Button Clicked event. These two system functions are as follows:
Set Selection (FC Grid,F0101,AT1,<equal>,'E',<AND>)
Set Selection (FC Grid,F0101,AT1,<equal>,'C',<OR>)
AT1 is the Search Type column in table F0101. Value ‘E’ is for Employee and value ‘C’ is for Customer.
When a user enters ABC in the filter field and then clicks the Find button, the following conceptual WHERE clause is created:
WHERE ALPH=ABC AND AT1=E OR AT1=C
Example 2 – Set Selection Group
A form has a filter field called Alpha Name (ALPH), which is associated with the Alpha Name column in the F0101 table. In addition, there are two Set Selection Group system functions under the Find Button Clicked event. These two system functions are as follows:
Set Selection Group (FC Grid,F0101,AT1,<equal>,'E',<AND>)
Set Selection Group (FC Grid, F0101,AT1,<equal>,'C',<OR>)
AT1 is the Search Type column in the F0101 table. Value ‘E’ is for Employee and value ‘C’ is for Customer.
When a user enters ABC in the filter field and then clicks the Find button, the following conceptual WHERE clause is created:
WHERE ALPH=ABC AND (AT1=E OR AT1=C)
The result is that all employee and all customer records with the name ABC are fetched.
Example 3 – Set Selection and Set Selection Group
A form has a filter field called Alpha Name (ALPH), which is associated with the Alpha Name column in the F0101 table. In addition, there are two Set Selection system functions and two Set Selection Group system functions under the Find Button Clicked event. These four system functions are as follows:
Set Selection (FC Grid,F0101,AN8,<greater than>,'100',<AND>)
Set Selection Group (FC Grid,F0101,AT1,<equal>,'E',<AND>)
Set Selection (FC Grid,F0101,AN8,<less than>,'200',<AND>)
Set Selection Group (FC Grid,F0101,AT1,<equal>,'C',<OR>)
AN8 is the Address Number column in the F0101 table; AT1 is the Search Type column in the F0101 table. Value ‘E’ is for Employee and value ‘C’ is for Customer.
When a user enters ABC in the filter field and then clicks the Find button, the following conceptual WHERE clause is created:
WHERE ALPH=ABC AND AN8>100 AND AN8<200 AND (AT1=E OR AT1=C)
The result is that all employee and all customer records with the name ABC and address number in the range of 100 to 200 are fetched.
Although shown in this example, the usage of mixed Set Selection and Set Selection Group is not a good practice. The purpose of this example is to show the runtime behavior - Set Selection Group system functions are grouped and appended to the WHERE clause at the end.
Security代码
Listing of ER for Application : Potential Member Master (P58N223)
=======================================================================
FORM: Potential Member Master Data Maintenance [FIND BROWSE] (W58N223A)
======================================================================
CONTROL: BUTTON Security [HIDDEN]
EVENT: Button Clicked
-----------------------------------------------------------------------
evt_Curr_AN8
evt_Curr_MCU
evt_Curr_LNID
evt_Curr_ALPH
evt_AN8Number
evt_Curr_INT01
evt_SPHD
evt_MCUNumber
evt_1st_MCU
0001 // Retrieve Values
//通用:函数Out参数:当前用户有否Security限制
0002 FC Security-Exists [HIDDEN] = "N"
//通用:查询当前用户(By UserID)的默认CO,AN8,MCU
0003 Retrive Store User Profile Information By User ID
SL UserID -> BF szE58PortalUserID
FC Security-DefaultCo [HIDDEN] <- BF szCompany
FC Security-DefaultAN8 [HIDDEN] <- BF mnE58StoreAddressNumber
FC Security-Exists [HIDDEN] <> BF cRecordExistYN
FC Security-DefaultMCU [HIDDEN] <- BF szCostCenter
0004 //
//如果当前用户有Security限制
0005 If FC Security-Exists is equal to "Y"
0006 //
0007 // Retrieve Values
//有Security:查询当前用户共有多少AN8
0008 Initial SMS Security By user id
SL UserID -> BF szE58PortalUserID
FC Security-AN8Number [HIDDEN] <- BF nTotalNumberOfReturnValue
FC Security-DefaultAN8 [HIDDEN] -> BF mnDefaultE58StoreAddressNumber
FC Security-DefaultMCU [HIDDEN] -> BF szDefaultCostCenter
FC Security-DefaultCo [HIDDEN] -> BF szDefaultCompany
FC Security-AN8Multi [HIDDEN] <- BF cHavingMultiStoreAddressYN
0009 //
0010 // Initialize Controls
//有Security:Find&Combo控件设置(FC:CO;Combo:AN8,MCU)
0011 FC Find-E58AN8 = FC Security-DefaultAN8 [HIDDEN]
0012 FC Find-CO = FC Security-DefaultCo [HIDDEN]
0013 FC Find-MCU = FC Security-DefaultMCU [HIDDEN]
0014 Hide Control(FC Find-E58AN8)
0015 Hide Control(FC Find-MCU)
0016 Show Control(FC Find-CO)
0017 Show Control(FC Combo-AN8)
0018 Show Control(FC Combo-MCU)
0019 Disable Control(FC Find-CO)
0020 //
0021 // Set Combo AN8
//有Security:获得该用户首个AN8和总AN8数。
0022 Remove Item by Key(FC Combo-AN8, "1", )
0023 Fetch First Store Address Number
VA evt_Curr_AN8 <- BF mnE58StoreAddressNumber
VA evt_Curr_MCU <- BF szCostCenter
SL UserID -> BF szE58PortalUserID
VA evt_Curr_LNID <> BF mnCurrentLineNumber
VA evt_AN8Number <- BF nTotalStoreAddressNumber
VA evt_Curr_ALPH <- BF szNameAlpha
//首个AN8处理
0024 Add Item(FC Combo-AN8, VA evt_Curr_AN8, VA evt_Curr_ALPH, )
//当一个AN8
0025 If FC Security-AN8Number is less than or equal to "1"
0027 Disable Control(FC Combo-AN8)
//当多个AN8
0028 Else
0030 VA evt_Curr_INT01 = 1
0031 While VA evt_Curr_INT01 is less than or equal to VA evt_AN8Number
0032 Fetch Next Store Address Number
VA evt_Curr_AN8 <- BF mnE58StoreAddressNumber
VA evt_Curr_MCU <- BF szCostCenter
SL UserID -> BF szE58PortalUserID
VA evt_Curr_LNID <> BF mnCurrentLineNumber
VA evt_Curr_ALPH <- BF szNameAlpha
0033 Add Item(FC Combo-AN8, VA evt_Curr_AN8, VA evt_Curr_ALPH, )
0034 VA evt_Curr_INT01 = VA evt_Curr_INT01+1
0035 End While
0036 End If
//有Security:ComboAN8当前值设置
0037&nsp; FC Combo-AN8 = FC Security-DefaultAN8 [HIDDEN]
0038 //
0039 // Set Combo MCU
0040 Press Button(FC Set Combo-MCU)
0041 //
0042 Else
0043 //
0044 // 2 Non-Existed
//无Security:Find控件设置(CO,AN8,MCU全FC)
0045 Show Control(FC Find-E58AN8)
0046 Show Control(FC Find-MCU)
0047 Show Control(FC Find-CO)
0048 Hide Control(FC Combo-AN8)
0049 Hide Control(FC Combo-MCU)
0050 Show Grid Column(FC Grid, GC Co)
0051 Show Grid Column(FC Grid, GC CompanyDescription)
0052 Show Grid Column(FC Grid, GC Store AddressNumber)
0053 Show Grid Column(FC Grid, GC Address NumberDescription)
0054 //
0055 End If
Monday May 12, 2008 15:51
=======================================================================
FORM: Potential Member Master Data Maintenance [FIND BROWSE] (W58N223A)
=======================================================================
CONTROL: BUTTON Set Combo-MCU [HIDDEN]
EVENT: Button Clicked
-----------------------------------------------------------------------
evt_MCUNumber
evt_SPHD
evt_Curr_MCU
evt_Curr_LNID
evt_Curr_ALPH
evt_Curr_CO
evt_Curr_INT01
evt_1st_MCU
0001 // --------IN--------
0002 // FC Find-AN8
0003 // --------OUT--------
0004 // FC Combo-MCU
0005 //
0006 // Remove
0007 Remove Item by Key(FC Combo-MCU, 1,
0008 //
0009 // Get the 1st
0010 Fetch First Store MCU
FC Find-E58AN8 -> DSMEMBER
VA evt_Curr_MCU <- DSMEMBER
SL UserID -> DSMEMBER
VA evt_Curr_LNID <> DSMEMBER
VA evt_Curr_ALPH <- DSMEMBER
VA evt_MCUNumber <- DSMEMBER
VA evt_SPHD -> DSMEMBER
VA evt_Curr_CO <- DSMEMBER
0014 Add Item(FC Combo-MCU, VA evt_Temp_MCU, VA evt_Curr_ALPH,
0011 //
0012 If VA evt_MCUNumber is less than or equal to "1"
0013 // Set the 1st
0015 FC Combo-MCU = VA evt_Curr_MCU
0016 Disable Control(FC Combo-MCU)
0017 Else
0018 // Set All
0019 VA evt_Curr_INT01 = 1
0020 VA evt_1st_MCU = VA evt_Curr_MCU
0021 While VA evt_Curr_INT01 is less than or equal to VA evt_MCUNumber
0023 Fetch First Store MCU
FC Find-E58AN8 -> DSMEMBER
VA evt_Curr_MCU <- DSMEMBER
SL UserID -> DSMEMBER
VA evt_Curr_LNID <> DSMEMBER
VA evt_Curr_ALPH <- DSMEMBER
VA evt_SPHD -> DSMEMBER
VA evt_Curr_CO <- DSMEMBER
0024 VA evt_Curr_INT01 = VA evt_Curr_INT01+1
0025 End While
0026 Enable Control(FC Combo-MCU)
0027 FC Combo-MCU = VA evt_1st_MCU
0028 End If
Monday June 16, 2008 16:26
Fix/Inspect的FI大体
JDE的单体是Form.
Fix/Inspect的FI大体:
[key_DD] KeySet Key_1...Key_n (I)
[col_DD] NormalCols Col_1...Col_n (I&O)
[dir_EV01] DirCode (O)
JDE中时间人性化显示问题
NumericTime--实际值,隐藏
FormatedTime--面对用户的输入,显示值
函数B1700280
从数据库读出时显示NumericTime->FormatedTime
[Form.Write Grid Line-After]
0001 Format and Edit Time
GC NumericTime [HIDDEN] <> BF mnNumericTime
GC FormatedTime <> BF szFormattedTime
<Zero> -> BF cMode
GC退出时对用户输入的FormatedTime->NumericTime
[Grid.Row Exit & Changed - Asynch]
0001 Format and Edit Time
GC NumericTime [HIDDEN] <> BF mnNumericTime
GC FormatedTime <> BF szFormattedTime
"1" -> BF cMode
JDE Log
JDE Log设置文件:
C:\e812\system\OC4J\j2ee\home\applications\webclient.ear\webclient\WEB-INF\jdelog.properties
JDE Log文件(JAS Log):
C:\e812\system\OC4J\j2ee\home\log
J2ME for SonyEricsson K310
The following are the Java libraries which SonyEricsson K310 supports:
JSR 118(MIDP 2.0)
JSR 139(CLDC 1.1)
JSR 185(Java Technology for the Wireless Industry)
JSR 135(Mobile Media API)
JSR 75(PDA Optional Packages)
JSR 184(Mobile 3D Graphics)
JSR 172(J2ME Web Services)
JSR 120(Wireless Messaging API)
JSR 205(Wireless Messaging API 2.0)
Nokia UI API 1.1
Mascot Capture
对实例变量初始化get()的修改
哪些代码段需要获取对象锁
//对线程安全对象状态的修改
//操作过程中不希望对象被其他线程干扰
示例:
public class A
{ protected String name;
protected String getName()
{ if(name==null)
{ name="ABC";
}
return name;
}
public A()
{ name=null;
}
}
分析getName()方法中有代码是需要事务性[1]完成的,不需要暂停所有其他线程,只需暂停所有:A上的”加锁”操作。
改动方法1:
界定事务边界----上至if(name==null),下至return name。
原因是避免行代码执行前与后,实例状态不一致[2] 。
protected String getName()
{ synchronized(this)
{ if(name==null)
{ name="ABC";
}
return name;
}
}
[1]该段代码希望一次性执行完;
该对象在被操作过程中,状态始终不被其他线程所干扰(非加锁方法仍可执行,所以对实例状态有变化的代码都应锁住实例)
[2]关于行代码执行前后,对象状态不统一:
|| ||
if(name==null) ||
|| name="ABC";
name=”ABC”; ||
|| ||
(线程1) (线程2)
线程1在作判断时,得到true,但它的下一行代码执行前,线程2已经对name赋值使其不为null。
return name前,怕有其他代码对name有影响。
改动方法2:(参见http://lonegunman.spaces.live.com/blog/cns!9C763BD9399B0328!1648.entry以及http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html)