dyntoolbar.w 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545
  1. &ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2
  2. /* Procedure Description
  3. "This SmartPanel sends navigation messages
  4. to its NAVIGATION-TARGET. Its buttons have
  5. icons and are arranged horizontally."
  6. */
  7. &ANALYZE-RESUME
  8. &Scoped-define WINDOW-NAME CURRENT-WINDOW
  9. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS P-Win
  10. /*******************************************************************
  11. * Copyright (C) 2006 by Progress Software Corporation. All rights *
  12. * reserved. Prior versions of this work may contain portions *
  13. * contributed by participants of Possenet. *
  14. * *
  15. ********************************************************************/
  16. /*------------------------------------------------------------------------
  17. File: adm2/dyntoolbar.w
  18. Description: SmartToolbar object
  19. Input Parameters:
  20. <none>
  21. Output Parameters:
  22. <none>
  23. Created: April 1999 -- Progress Version 9.1A
  24. ------------------------------------------------------------------------*/
  25. /* This .W file was created with the Progress AppBuilder. */
  26. /*----------------------------------------------------------------------*/
  27. /* Create an unnamed pool to store all the widgets created
  28. by this procedure. This is a good default which assures
  29. that this procedure's triggers and internal procedures
  30. will execute in this procedure's storage, and that proper
  31. cleanup will occur on deletion of the procedure. */
  32. CREATE WIDGET-POOL.
  33. /* *************************** Definitions ************************** */
  34. /* Parameters Definitions --- */
  35. &GLOB ADM-Panel-Type Toolbar
  36. /* tell smart.i that we can use the default destroyObject */
  37. &SCOPED-DEFINE include-destroyobject
  38. /* Local Variable Definitions --- */
  39. DEF VAR ghMenu AS HANDLE NO-UNDO.
  40. DEF VAR glResetRecord AS LOG NO-UNDO INITIAL FALSE .
  41. DEF VAR FMutFlag AS LOG NO-UNDO INIT FALSE.
  42. DEF VAR ProgName AS CHAR NO-UNDO.
  43. /* _UIB-CODE-BLOCK-END */
  44. &ANALYZE-RESUME
  45. &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
  46. /* ******************** Preprocessor Definitions ******************** */
  47. &Scoped-define PROCEDURE-TYPE toolbar
  48. &Scoped-define DB-AWARE no
  49. &Scoped-define ADM-SUPPORTED-LINKS Navigation-Source,TableIo-Source
  50. /* Name of designated FRAME-NAME and/or first browse and/or first query */
  51. &Scoped-define FRAME-NAME Panel-Frame
  52. /* Custom List Definitions */
  53. /* Box-Rectangle,List-2,List-3,List-4,List-5,List-6 */
  54. /* _UIB-PREPROCESSOR-BLOCK-END */
  55. &ANALYZE-RESUME
  56. /* ************************ Function Prototypes ********************** */
  57. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD initializeMenu P-Win
  58. FUNCTION initializeMenu RETURNS LOGICAL
  59. ( ) FORWARD.
  60. /* _UIB-CODE-BLOCK-END */
  61. &ANALYZE-RESUME
  62. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD initializeToolBar P-Win
  63. FUNCTION initializeToolBar RETURNS LOGICAL
  64. ( /* parameter-definitions */ ) FORWARD.
  65. /* _UIB-CODE-BLOCK-END */
  66. &ANALYZE-RESUME
  67. /* *********************** Control Definitions ********************** */
  68. /* ************************ Frame Definitions *********************** */
  69. DEFINE FRAME Panel-Frame
  70. WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY
  71. SIDE-LABELS NO-UNDERLINE THREE-D
  72. AT COL 1 ROW 1
  73. SIZE 67.2 BY 1.57.
  74. /* *********************** Procedure Settings ************************ */
  75. &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
  76. /* Settings for THIS-PROCEDURE
  77. Type: toolbar
  78. Allow: Basic
  79. Frames: 1
  80. Add Fields to: Neither
  81. Other Settings: PERSISTENT-ONLY COMPILE
  82. */
  83. /* This procedure should always be RUN PERSISTENT. Report the error, */
  84. /* then cleanup and return. */
  85. IF NOT THIS-PROCEDURE:PERSISTENT THEN DO:
  86. MESSAGE "{&FILE-NAME} should only be RUN PERSISTENT.":U
  87. VIEW-AS ALERT-BOX ERROR BUTTONS OK.
  88. RETURN.
  89. END.
  90. &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
  91. /* ************************* Create Window ************************** */
  92. &ANALYZE-SUSPEND _CREATE-WINDOW
  93. /* DESIGN Window definition (used by the UIB)
  94. CREATE WINDOW P-Win ASSIGN
  95. HEIGHT = 1.57
  96. WIDTH = 67.2.
  97. /* END WINDOW DEFINITION */
  98. */
  99. &ANALYZE-RESUME
  100. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB P-Win
  101. /* ************************* Included-Libraries *********************** */
  102. {src/adm2/toolbar.i}
  103. /* _UIB-CODE-BLOCK-END */
  104. &ANALYZE-RESUME
  105. /* *********** Runtime Attributes and AppBuilder Settings *********** */
  106. &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES
  107. /* SETTINGS FOR WINDOW P-Win
  108. NOT-VISIBLE,,RUN-PERSISTENT */
  109. /* SETTINGS FOR FRAME Panel-Frame
  110. NOT-VISIBLE FRAME-NAME Size-to-Fit */
  111. ASSIGN
  112. FRAME Panel-Frame:SCROLLABLE = FALSE
  113. FRAME Panel-Frame:HIDDEN = TRUE.
  114. /* _RUN-TIME-ATTRIBUTES-END */
  115. &ANALYZE-RESUME
  116. /* Setting information for Queries and Browse Widgets fields */
  117. &ANALYZE-SUSPEND _QUERY-BLOCK FRAME Panel-Frame
  118. /* Query rebuild information for FRAME Panel-Frame
  119. _Options = "NO-LOCK"
  120. _Query is NOT OPENED
  121. */ /* FRAME Panel-Frame */
  122. &ANALYZE-RESUME
  123. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK P-Win
  124. /* *************************** Main Block *************************** */
  125. &IF DEFINED(UIB_IS_RUNNING) <> 0 &THEN
  126. RUN initializeObject.
  127. &ENDIF
  128. /* _UIB-CODE-BLOCK-END */
  129. &ANALYZE-RESUME
  130. /* ********************** Internal Procedures *********************** */
  131. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI P-Win _DEFAULT-DISABLE
  132. PROCEDURE disable_UI :
  133. /*------------------------------------------------------------------------------
  134. Purpose: DISABLE the User Interface
  135. Parameters: <none>
  136. Notes: Here we clean-up the user-interface by deleting
  137. dynamic widgets we have created and/or hide
  138. frames. This procedure is usually called when
  139. we are ready to "clean-up" after running.
  140. ------------------------------------------------------------------------------*/
  141. /* Hide all frames. */
  142. HIDE FRAME Panel-Frame.
  143. IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE.
  144. END PROCEDURE.
  145. /* _UIB-CODE-BLOCK-END */
  146. &ANALYZE-RESUME
  147. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE getWindowName P-Win
  148. PROCEDURE getWindowName :
  149. /**
  150. * @desc Procedure to retrieve the filename of the window (wxxxxx.w)
  151. * @returns <code> file-name</code> Filename of windowprocedure
  152. */
  153. DEFINE VARIABLE hWin AS HANDLE NO-UNDO.
  154. ASSIGN hwin = DYNAMIC-FUNCTION('getContainerSource':U).
  155. RETURN hWin:file-name.
  156. END PROCEDURE.
  157. /* _UIB-CODE-BLOCK-END */
  158. &ANALYZE-RESUME
  159. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE onChoose P-Win
  160. PROCEDURE onChoose :
  161. /*------------------------------------------------------------------------------
  162. Purpose:
  163. Parameters: <none>
  164. Notes:
  165. ------------------------------------------------------------------------------*/
  166. DEFINE INPUT PARAMETER pcAction AS CHAR NO-UNDO.
  167. DEF VAR wHandle AS HANDLE NO-UNDO.
  168. DEF VAR MProg AS CHAR NO-UNDO.
  169. DEF VAR cTableIO AS CHAR NO-UNDO.
  170. DEF VAR hSource AS HANDLE NO-UNDO.
  171. DEF VAR cFields AS CHAR NO-UNDO.
  172. DEF VAR cValues AS CHAR NO-UNDO.
  173. DEF VAR cQueryPos AS CHAR NO-UNDO.
  174. DEF VAR iAktiv AS INT NO-UNDO.
  175. DEF VAR FAbbruch AS LOG NO-UNDO.
  176. DEF VAR Ja AS LOG NO-UNDO.
  177. DEF VAR cTabelle AS CHAR NO-UNDO.
  178. cTableIO = DYNAMIC-FUNCTION('getTableIOTarget':U) NO-ERROR.
  179. FMutFlag = DYNAMIC-FUNCTION('getMutflagAlt':U) NO-ERROR.
  180. /*
  181. hSource = DYNAMIC-FUNCTION('getTableIOTarget':U) NO-ERROR.
  182. IF NOT VALID-HANDLE(hSource) THEN RETURN.
  183. hSource = DYNAMIC-FUNCTION('getDataSource':U IN hSource) NO-ERROR.
  184. IF NOT VALID-HANDLE(hSource) THEN LEAVE.
  185. */
  186. DO WHILE TRUE:
  187. IF FMutFlag THEN LEAVE.
  188. IF pcAction = 'Next' THEN LEAVE.
  189. IF pcAction = 'Prev' THEN LEAVE.
  190. IF pcAction = 'First' THEN LEAVE.
  191. IF pcAction = 'Last' THEN LEAVE.
  192. IF pcAction = 'ADD' THEN LEAVE.
  193. IF pcAction = 'COPY' THEN LEAVE.
  194. IF pcAction = 'CANCEL' THEN LEAVE.
  195. IF pcAction = 'SAVE' THEN LEAVE.
  196. hSource = DYNAMIC-FUNCTION('getTableIOTarget':U) NO-ERROR.
  197. IF NOT VALID-HANDLE(hSource) THEN LEAVE.
  198. hSource = DYNAMIC-FUNCTION('getDataSource':U IN hSource) NO-ERROR.
  199. IF NOT VALID-HANDLE(hSource) THEN LEAVE.
  200. cQueryPos = DYNAMIC-FUNCTION('getQueryPosition':U IN hSource) NO-ERROR.
  201. IF cQueryPos = 'NoRecordAvailable' THEN DO:
  202. RUN MELDUNG ( INPUT 1014 ).
  203. RETURN NO-APPLY.
  204. END.
  205. cFields = DYNAMIC-FUNCTION('getDataColumns':U IN hSource ) NO-ERROR.
  206. iAktiv = LOOKUP('Aktiv', cFields, ',').
  207. IF iAktiv = 0 THEN LEAVE.
  208. cValues = DYNAMIC-FUNCTION('colValues':U IN hSource, 'Aktiv') NO-ERROR.
  209. IF ENTRY(2, cValues, chr(01)) BEGINS 'y' THEN LEAVE.
  210. IF ENTRY(2, cValues, chr(01)) BEGINS 'j' THEN LEAVE.
  211. ja = DYNAMIC-FUNCTION('ANTWORT_NEIN':U, INPUT 1008 ) NO-ERROR.
  212. IF NOT Ja THEN RETURN NO-APPLY.
  213. cTabelle = DYNAMIC-FUNCTION('getTables':U IN hSource) NO-ERROR.
  214. IF cTabelle = ? THEN RETURN NO-APPLY.
  215. IF cTabelle = '' THEN RETURN NO-APPLY.
  216. DYNAMIC-FUNCTION('REAKTIVIEREN':U, INPUT cTabelle) NO-ERROR.
  217. RUN refreshRow IN hSource .
  218. RETURN NO-APPLY.
  219. END.
  220. CASE pcAction:
  221. WHEN 'Next' THEN DO:
  222. IF FMutFlag = TRUE THEN RETURN NO-APPLY.
  223. END.
  224. WHEN 'Prev' THEN DO:
  225. IF FMutFlag = TRUE THEN RETURN NO-APPLY.
  226. END.
  227. WHEN 'First' THEN DO:
  228. IF FMutFlag = TRUE THEN RETURN NO-APPLY.
  229. END.
  230. WHEN 'Last' THEN DO:
  231. IF FMutFlag = TRUE THEN RETURN NO-APPLY.
  232. END.
  233. WHEN 'ADD' THEN DO:
  234. IF cTableIO = '' THEN RETURN NO-APPLY.
  235. IF FMutFlag = TRUE THEN RETURN NO-APPLY.
  236. MProg = Progname.
  237. END.
  238. WHEN 'COPY' THEN DO:
  239. IF cTableIO = '' THEN RETURN NO-APPLY.
  240. IF FMutFlag = TRUE THEN RETURN NO-APPLY.
  241. MProg = Progname.
  242. END.
  243. WHEN 'DELETE' THEN DO:
  244. IF cTableIO = '' THEN RETURN NO-APPLY.
  245. IF FMutFlag = TRUE THEN RETURN NO-APPLY.
  246. MProg = Progname.
  247. END.
  248. WHEN 'UPDATE' THEN DO:
  249. IF cTableIO = '' THEN RETURN NO-APPLY.
  250. IF FMutFlag = TRUE THEN RETURN NO-APPLY.
  251. MProg = Progname.
  252. END.
  253. WHEN 'SAVE' THEN DO:
  254. IF cTableIO = '' THEN RETURN NO-APPLY.
  255. IF FMutFlag = FALSE THEN RETURN NO-APPLY.
  256. MProg = Progname.
  257. END.
  258. WHEN 'RESET' THEN DO:
  259. IF cTableIO = '' THEN RETURN NO-APPLY.
  260. IF FMutFlag = FALSE THEN RETURN NO-APPLY.
  261. MProg = Progname.
  262. END.
  263. WHEN 'CANCEL' THEN DO:
  264. IF cTableIO = '' THEN RETURN NO-APPLY.
  265. IF FMutFlag = FALSE THEN RETURN NO-APPLY.
  266. MProg = Progname.
  267. END.
  268. END CASE.
  269. RUN SUPER( INPUT pcAction).
  270. FAbbruch = DYNAMIC-FUNCTION('getFlagAbbruchAlt':U) NO-ERROR.
  271. IF FAbbruch THEN DO:
  272. DYNAMIC-FUNCTION('setFlagAbbruchAlt':U, INPUT FALSE ) NO-ERROR.
  273. IF pcAction = 'SAVE' THEN RETURN.
  274. RUN SUPER ( INPUT 'CANCEL':U ).
  275. END.
  276. ELSE DO:
  277. CASE pcAction:
  278. WHEN 'ADD' THEN DYNAMIC-FUNCTION('setMutFlag':U, INPUT TRUE , INPUT MProg) NO-ERROR.
  279. WHEN 'COPY' THEN DYNAMIC-FUNCTION('setMutFlag':U, INPUT TRUE , INPUT MProg) NO-ERROR.
  280. WHEN 'UPDATE' THEN DYNAMIC-FUNCTION('setMutFlag':U, INPUT TRUE , INPUT MProg) NO-ERROR.
  281. WHEN 'SAVE' THEN DYNAMIC-FUNCTION('setMutFlag':U, INPUT FALSE, INPUT MProg) NO-ERROR.
  282. WHEN 'RESET' THEN DYNAMIC-FUNCTION('setMutFlag':U, INPUT TRUE , INPUT MProg) NO-ERROR.
  283. WHEN 'CANCEL' THEN DYNAMIC-FUNCTION('setMutFlag':U, INPUT FALSE, INPUT MProg) NO-ERROR.
  284. END CASE.
  285. CASE pcAction:
  286. WHEN 'ADD' OR
  287. WHEN 'COPY' OR
  288. WHEN 'UPDATE' THEN DYNAMIC-FUNCTION('sensitizeActions':U, 'SAVE,RESET', TRUE) NO-ERROR.
  289. END CASE.
  290. END.
  291. wHandle = FOCUS:PARENT NO-ERROR.
  292. DO WHILE VALID-HANDLE( wHandle ):
  293. IF wHandle:TYPE = 'WINDOW' THEN LEAVE.
  294. wHandle = wHandle:PARENT.
  295. END.
  296. /*
  297. IF pcAction = 'Next' THEN RETURN.
  298. IF pcAction = 'Prev' THEN RETURN.
  299. IF pcAction = 'First' THEN RETURN.
  300. IF pcAction = 'Last' THEN RETURN.
  301. */
  302. IF VALID-HANDLE(wHandle) THEN APPLY 'U1' TO wHandle.
  303. END PROCEDURE.
  304. /* _UIB-CODE-BLOCK-END */
  305. &ANALYZE-RESUME
  306. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE resetLink P-Win
  307. PROCEDURE resetLink :
  308. /*------------------------------------------------------------------------------
  309. Purpose:
  310. Parameters: <none>
  311. Notes:
  312. ------------------------------------------------------------------------------*/
  313. DEFINE INPUT PARAMETER pcLink AS CHARACTER NO-UNDO.
  314. DEFINE VARIABLE cActionList AS CHARACTER NO-UNDO.
  315. DEFINE VARIABLE hTarget AS HANDLE NO-UNDO.
  316. DEFINE VARIABLE iAction AS INTEGER NO-UNDO.
  317. DEFINE VARIABLE cAction AS CHARACTER NO-UNDO.
  318. cActionList = {fnarg linkActions pcLink}.
  319. IF pcLink <> '':U THEN
  320. hTarget = {fnarg activeTarget ENTRY(1,pcLink,'-':U)}.
  321. ELSE
  322. {get ContainerSource hTarget}.
  323. IF NOT VALID-HANDLE(hTarget) THEN
  324. RETURN.
  325. DO iAction = 1 TO NUM-ENTRIES(cActionList):
  326. cAction = ENTRY(iAction,cActionList).
  327. END.
  328. RETURN.
  329. END PROCEDURE.
  330. /* _UIB-CODE-BLOCK-END */
  331. &ANALYZE-RESUME
  332. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SETBREITE P-Win
  333. PROCEDURE SETBREITE :
  334. /*------------------------------------------------------------------------------
  335. Purpose:
  336. Parameters: <none>
  337. Notes:
  338. ------------------------------------------------------------------------------*/
  339. DEF INPUT PARAMETER ipBreite AS DEC NO-UNDO.
  340. DO WITH FRAME {&FRAME-NAME}:
  341. RUN resizeObject ( INPUT 20, INPUT ipBreite ).
  342. END.
  343. END PROCEDURE.
  344. /* _UIB-CODE-BLOCK-END */
  345. &ANALYZE-RESUME
  346. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE setProgname P-Win
  347. PROCEDURE setProgname :
  348. /*------------------------------------------------------------------------------
  349. Purpose:
  350. Parameters: <none>
  351. Notes:
  352. ------------------------------------------------------------------------------*/
  353. DEF INPUT PARAMETER ipProgramm AS HANDLE NO-UNDO.
  354. Progname = ENTRY(1, ipProgramm:FILE-NAME, '.').
  355. END PROCEDURE.
  356. /* _UIB-CODE-BLOCK-END */
  357. &ANALYZE-RESUME
  358. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE TOOLBAR P-Win
  359. PROCEDURE TOOLBAR :
  360. /*------------------------------------------------------------------------------
  361. Purpose:
  362. Parameters: <none>
  363. Notes:
  364. ------------------------------------------------------------------------------*/
  365. DEF INPUT PARAMETER pcAction AS CHAR NO-UNDO.
  366. RUN onChoose ( INPUT pcAction ) NO-ERROR.
  367. END PROCEDURE.
  368. /* _UIB-CODE-BLOCK-END */
  369. &ANALYZE-RESUME
  370. /* ************************ Function Implementations ***************** */
  371. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION initializeMenu P-Win
  372. FUNCTION initializeMenu RETURNS LOGICAL
  373. ( ) :
  374. /*------------------------------------------------------------------------------
  375. Purpose: Create the menus for the toolbar
  376. Notes: This function is defined locally, but will skip the default
  377. behavior if there is a super defined AND it returns true.
  378. buildMenu() is always called! so it should not be part of the
  379. super procedure.
  380. ------------------------------------------------------------------------------*/
  381. DEFINE VARIABLE lOverridden AS LOG NO-UNDO.
  382. /* Allow a super-procedure to override the default toolbar */
  383. lOverridden = SUPER() NO-ERROR.
  384. /* not (true) for unknown */
  385. IF NOT (lOverridden = TRUE) THEN
  386. DO:
  387. insertMenu("":U,"File,Navigation":U,no,?).
  388. insertMenu("File":U,
  389. "Add,Update,Copy,Delete,RULE,":U
  390. + "Save,UndoChange,Reset,Cancel,RULE,Transaction,":U
  391. + "RULE,Function,RULE,Exit":U,
  392. yes, /* expand children */
  393. ?).
  394. END.
  395. /* build the menubar */
  396. buildMenu("").
  397. RETURN TRUE.
  398. END FUNCTION.
  399. /* _UIB-CODE-BLOCK-END */
  400. &ANALYZE-RESUME
  401. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION initializeToolBar P-Win
  402. FUNCTION initializeToolBar RETURNS LOGICAL
  403. ( /* parameter-definitions */ ) :
  404. /*------------------------------------------------------------------------------
  405. Purpose: Creates the toolbar for the toolbar
  406. Notes: This function is defined locally, but will skip the default
  407. behavior if there is a super defined AND it returns true.
  408. ------------------------------------------------------------------------------*/
  409. DEFINE VARIABLE lOverridden AS LOG NO-UNDO.
  410. /* Allow a super-procedure to override the default toolbar */
  411. lOverridden = SUPER() NO-ERROR.
  412. /* not (true) for unknown */
  413. IF NOT (lOverridden = TRUE) THEN
  414. DO:
  415. createToolBar
  416. ("Tableio,RULE,Transaction,RULE,Navigation,RULE,Function,RULE").
  417. END.
  418. RETURN TRUE. /* Function return value. */
  419. END FUNCTION.
  420. /* _UIB-CODE-BLOCK-END */
  421. &ANALYZE-RESUME