| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331 |
-
- /*------------------------------------------------------------------------
- File : queryHandler
- Purpose :
- Syntax :
- Description :
- Author(s) : walter.riechsteiner
- Created : Wed Jul 10 18:09:37 CEST 2024
- Notes :
- ----------------------------------------------------------------------*/
- USING Progress.Json.ObjectModel.JsonObject FROM PROPATH.
- USING System.Reflection.Emit.Label FROM ASSEMBLY.
- CLASS utilities.utilitiesHandler:
- DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
- DEFINE VARIABLE i2 AS INTEGER NO-UNDO.
- DEFINE VARIABLE cProgramm AS CHARACTER NO-UNDO.
- DEFINE TEMP-TABLE ttBrowserKo LIKE browser_ko.
- DEFINE TEMP-TABLE ttViewerKo LIKE viewer_ko.
- DEFINE TEMP-TABLE ttExterneFelder NO-UNDO
- FIELD cTabelle AS CHARACTER
- FIELD hBuffer AS HANDLE
- FIELD cKeyFelder AS CHARACTER
- FIELD cWhere AS CHARACTER
- FIELD cFelder AS CHARACTER
- FIELD cDataType AS CHARACTER
- .
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC HANDLE createExterneFelder(
- INPUT ipcTabelle AS CHARACTER ,
- INPUT ipcFeld AS CHARACTER ,
- INPUT ipcDatatype AS CHARACTER ,
- INPUT iphttInput AS HANDLE
- ):
-
- DEFINE VARIABLE hBuffer AS HANDLE NO-UNDO.
- DEFINE VARIABLE cKeyFeld AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cKeyValue AS CHARACTER NO-UNDO.
-
- FIND FIRST ttExterneFelder
- WHERE ttExterneFelder.cTabelle = ipcTabelle NO-ERROR.
-
- DO WHILE TRUE:
- IF AVAILABLE ttExterneFelder THEN LEAVE.
-
- FIND AnaDat._File NO-LOCK WHERE AnaDat._File._File-name = ipcTabelle NO-ERROR.
- IF NOT AVAILABLE AnaDat._File THEN RETURN hBuffer.
-
- FIND FIRST AnaDat._Field NO-LOCK OF _File
- WHERE AnaDat._Field._Field-Name = ipcFeld NO-ERROR.
- IF NOT AVAILABLE AnaDat._Field THEN RETURN hBuffer.
-
- CREATE BUFFER hBuffer FOR TABLE ipcTabelle.
- CREATE ttExterneFelder.
- ASSIGN
- ttExterneFelder.cTabelle = ipcTabelle
- ttExterneFelder.hBuffer = hBuffer.
-
-
- FIND FIRST AnaDat._Index WHERE RECID(_Index) = _File._Prime-Index NO-LOCK.
- FOR EACH AnaDat._Index-Field
- WHERE _Index-Field._Index-Recid = RECID(_Index):
- FIND AnaDat._Field WHERE RECID(_Field) = _Index-Field._Field-Recid.
-
- cKeyFeld = _Field._Field-Name.
- cKeyValue = ''.
- CASE cKeyFeld:
- WHEN 'Firma' OR
- WHEN 'Mandant' THEN
- DO:
- cKeyValue = QUOTER(iphttInput::mandant).
- END.
- WHEN 'Sprcd' THEN
- DO:
- cKeyValue = iphttInput::sprcd.
- END.
- WHEN 'Benutzer' THEN
- DO:
- cKeyValue = iphttInput::benutzer.
- END.
- END CASE.
-
- IF cKeyValue <> '' THEN
- DO:
- CASE ipcDatatype:
- WHEN 'character' THEN
- cKeyValue = QUOTER(cKeyValue).
- END CASE.
-
- ttExterneFelder.cWhere = ttExterneFelder.cWhere
- + (IF cWhere = '' THEN 'WHERE ' ELSE 'AND ')
- + SUBSTITUTE('&1.&2 = &3':U, ipcTabelle, cKeyFeld, cKeyValue).
- NEXT.
- END.
-
- ttExterneFelder.cKeyFelder = ttExterneFelder.cKeyFelder
- + (IF ttExterneFelder.cKeyFelder = '' THEN '' ELSE ';')
- + cKeyFeld.
- END.
-
- IF LOOKUP(ipcFeld, ttExterneFelder.cFelder, ';') > 0 THEN NEXT.
- ttExterneFelder.cFelder = ttExterneFelder.cFelder
- + (IF ttExterneFelder.cFelder = '' THEN '' ELSE ';')
- + ipcFeld.
- ttExterneFelder.cDataType = ttExterneFelder.cDataType
- + (IF ttExterneFelder.cDataType = '' THEN '' ELSE ';')
- + ipcFeld.
-
- END.
- // DELETE OBJECT hBuffer NO-ERROR.
-
- RETURN hBuffer.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC LOGICAL createQuery(
- INPUT httInput AS HANDLE,
- INPUT httBrowserKo AS HANDLE,
- OUTPUT hQuery AS HANDLE,
- OUTPUT hBuffer AS HANDLE
- ).
-
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO INIT FALSE.
- DEFINE VARIABLE cWhere AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cAnd AS CHARACTER NO-UNDO INIT 'WHERE'.
- DEFINE VARIABLE cTabelle AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cSortFeld AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cRichtung AS CHARACTER NO-UNDO.
- DEFINE VARIABLE iAnzRec AS INTEGER NO-UNDO.
- DEFINE VARIABLE iModulo AS INTEGER NO-UNDO.
- cTabelle = httInput::tabelle.
- cSortFeld = httBrowserKo::sortfeld.
- cRichtung = ''.
- IF cSortFeld <> '' THEN
- DO:
- IF NUM-ENTRIES(cSortfeld, ':') > 1 THEN
- DO:
- cRichtung = ENTRY(2, cSortfeld, ':').
- cSortfeld = ENTRY(1, cSortfeld, ':').
- END.
- IF cRichtung = '' THEN cRichtung = 'ASCENDING'.
- END.
- CREATE QUERY hQuery.
- CREATE BUFFER hBuffer FOR TABLE cTabelle.
- hQuery:SET-BUFFERS (hBuffer).
-
- IF httInput::action = 'last' THEN
- DO:
- cWhere = SUBSTITUTE('PRESELECT EACH &1 NO-LOCK ', httInput::tabelle).
- IF httBrowserKo::lmandant THEN
- DO:
- cWhere = cWhere + SUBSTITUTE('&1 &2.Firma = "&3" ', cAnd, httInput::tabelle, httInput::mandant).
- END.
- hQuery:QUERY-PREPARE (cWhere).
- hQuery:QUERY-OPEN ().
- iAnzRec = hQuery:NUM-RESULTS.
- iModulo = iAnzRec MOD httBrowserKo::pagesize.
- IF iModulo > 0 THEN httBrowserKo::actualpage = (iAnzRec - (iAnzRec MOD httBrowserKo::pagesize)) / httBrowserKo::pagesize.
- ELSE httBrowserKo::actualpage = (iAnzRec / httBrowserKo::pagesize) - 1.
- hQuery:QUERY-CLOSE ().
- END.
-
- i1 = 0.
- cWhere = SUBSTITUTE('FOR EACH &1 NO-LOCK ', httInput::tabelle).
- IF httBrowserKo::lmandant THEN
- DO:
- cWhere = cWhere + SUBSTITUTE('&1 &2.Firma = "&3" ', cAnd, httInput::tabelle, httInput::mandant).
- cAnd = 'AND'.
- END.
- IF cRichtung = 'ASCENDING' THEN cRichtung = ''.
- IF cSortFeld <> '' THEN cWhere = cWhere + ' BY ' + cSortFeld + ' ' + cRichtung.
-
- MESSAGE 'cWhere-Statement = ' cWhere.
-
- hQuery:QUERY-PREPARE (cWhere).
-
- lRetVal = TRUE.
- RETURN lRetVal.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC LOGICAL createSearchQuery(
- INPUT httInput AS HANDLE,
- INPUT httBrowserKo AS HANDLE,
- OUTPUT hQuery AS HANDLE,
- OUTPUT hBuffer AS HANDLE
- ).
-
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO INIT FALSE.
- DEFINE VARIABLE cWhere AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cAnd AS CHARACTER NO-UNDO INIT 'WHERE'.
- DEFINE VARIABLE cTabelle AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cSuchFeld AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cSortfeld AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cRichtung AS CHARACTER NO-UNDO.
- DEFINE VARIABLE iAnzRec AS INTEGER NO-UNDO.
- DEFINE VARIABLE lcWortIndex AS LONGCHAR NO-UNDO.
- DEFINE VARIABLE ii AS INTEGER NO-UNDO.
- DEFINE VARIABLE iFelder AS INTEGER NO-UNDO.
- DEFINE VARIABLE iFound AS INTEGER NO-UNDO.
- DEFINE VARIABLE cInhalt AS CHARACTER NO-UNDO.
- DEFINE VARIABLE rRecid AS RECID NO-UNDO.
-
- DEFINE VARIABLE httTemp AS HANDLE NO-UNDO.
- DEFINE VARIABLE hbTabelle AS HANDLE NO-UNDO.
- DEFINE VARIABLE hqTabelle AS HANDLE NO-UNDO.
- DEFINE VARIABLE hFeld AS HANDLE NO-UNDO.
- DEFINE VARIABLE hWortIndex AS HANDLE NO-UNDO.
- DEFINE VARIABLE hSuchFeld AS HANDLE NO-UNDO.
- DEFINE VARIABLE cFeld AS CHARACTER NO-UNDO.
- DEFINE VARIABLE hFeldTabelle AS HANDLE NO-UNDO EXTENT 10.
- DEFINE VARIABLE cInhaltTabelle AS CHARACTER NO-UNDO EXTENT 10.
- DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
- DEFINE VARIABLE ix AS INTEGER NO-UNDO.
- DEFINE VARIABLE iy AS INTEGER NO-UNDO.
- DEFINE VARIABLE lQuoter AS LOGICAL NO-UNDO.
-
- cTabelle = httInput::tabelle.
- cSuchFeld = httInput::suchfeld.
- cSortfeld = httBrowserKo::sortfeld.
- cRichtung = ''.
-
- IF cSortFeld <> '' THEN
- DO:
- IF NUM-ENTRIES(cSortfeld, ':') > 1 THEN
- DO:
- cRichtung = ENTRY(2, cSortfeld, ':').
- cSortfeld = ENTRY(1, cSortfeld, ':').
- END.
- IF cRichtung = '' THEN cRichtung = 'ASCENDING'.
- END.
- MESSAGE 'Suchfeld = ' cSuchfeld ' Sortfeld = ' cSortfeld ' Richtung = ' cRichtung.
-
- CREATE TEMP-TABLE httTemp.
- httTemp:CREATE-LIKE (cTabelle).
- httTemp:ADD-NEW-FIELD ('ident', 'CHARACTER').
- httTemp:TEMP-TABLE-PREPARE('ttTemp').
- hBuffer = httTemp:DEFAULT-BUFFER-HANDLE.
-
- CREATE QUERY hqTabelle.
- CREATE BUFFER hbTabelle FOR TABLE cTabelle.
- hqTabelle:SET-BUFFERS ( hbTabelle ).
- hWortIndex = hbTabelle:BUFFER-FIELD('WortIndex') NO-ERROR.
- iFelder = NUM-ENTRIES(cSuchFeld, ' ').
-
- ASSIGN
- hFeldTabelle = ?
- cInhaltTabelle = ''
- ix = 0.
- IF NUM-ENTRIES(cSuchfeld, '=') > 1 THEN
- DO:
- DO ii = 1 TO NUM-ENTRIES(cSuchfeld, ' '):
- cString = ENTRY(ii, cSuchFeld, ' ').
- IF NUM-ENTRIES(cString, '=') > 1 THEN
- DO:
- cFeld = ENTRY(1, cString, '=').
- hSuchFeld = hbTabelle:BUFFER-FIELD(cFeld) NO-ERROR.
- IF NOT VALID-HANDLE(hSuchFeld) THEN NEXT.
- ix = ix + 1.
- hFeldTabelle [ix] = hSuchFeld.
- cInhaltTabelle[ix] = ENTRY(2, cString, '=').
- NEXT.
- END.
- IF NOT VALID-HANDLE(hSuchfeld) THEN NEXT.
- cInhaltTabelle[ix] = cInhaltTabelle[ix] + ',' + cString.
- END.
- END.
-
- cWhere = SUBSTITUTE('PRESELECT EACH &1 NO-LOCK ', cTabelle).
- IF httBrowserKo::lmandant THEN
- DO:
- cWhere = cWhere + SUBSTITUTE('&1 &2.Firma = "&3" ', cAnd, cTabelle, httInput::mandant).
- cAnd = 'AND'.
- END.
- MESSAGE 'cWhere beim Suchen ' cWhere.
- hqTabelle:QUERY-PREPARE (cWhere).
- hqTabelle:QUERY-OPEN ().
-
- NEXTDATENSATZ:
- DO WHILE TRUE:
- hqTabelle:GET-NEXT() NO-ERROR.
- IF hqTabelle:QUERY-OFF-END THEN LEAVE.
-
- lcwortindex = ''.
- rRecid = hbTabelle:RECID.
- DO WHILE ix > 0:
- MESSAGE 'Suchen mit bestimmtenm feldern' ix.
- iFound = 0.
- DO ii = 1 TO ix:
- hFeld = hFeldTabelle [ii].
- cSuchfeld = cInhaltTabelle[ii].
- cInhalt = hFeld:BUFFER-VALUE(0) NO-ERROR.
- IF ERROR-STATUS:ERROR THEN NEXT.
- IF cInhalt = ? THEN NEXT.
- DO iy = 1 TO NUM-ENTRIES(cSuchFeld, ','):
- cString = ENTRY(iy, cSuchFeld, ',').
- MESSAGE 'Kommt der Wert ' cString 'in' cInhalt 'vor?'.
- IF LOOKUP(cString, cInhalt, ' ') = 0 THEN NEXT.
- iFound = iFound + 1.
- LEAVE.
- END.
- END.
- IF iFound < ix THEN NEXT NEXTDATENSATZ.
- LEAVE.
- END.
-
- DO WHILE ix = 0:
- iFound = 0.
- IF VALID-HANDLE(hWortIndex) THEN
- DO:
- lcWortIndex = hWortIndex:BUFFER-VALUE(0).
- END.
- ELSE
- DO:
- DO ii = 1 TO hbTabelle:NUM-FIELDS:
- hFeld = hbTabelle:BUFFER-FIELD(ii).
- IF hFeld:EXTENT > 0 THEN NEXT.
- cInhalt = getBufferFieldValue(INPUT hFeld, OUTPUT lQuoter).
- IF cInhalt = '' THEN NEXT.
- lcWortIndex = lcWortIndex
- + (IF lcWortindex = '' THEN '' ELSE ' ')
- + cInhalt.
- END.
- END.
-
- DO ii = 1 TO iFelder:
- cInhalt = ENTRY(ii, cSuchfeld, ' ').
- IF INDEX(lcWortIndex, cInhalt) = 0 THEN NEXT.
- iFound = iFound + 1.
- END.
- IF iFound < iFelder THEN NEXT NEXTDATENSATZ.
- LEAVE.
- END.
- hBuffer:BUFFER-CREATE ().
- hBuffer:BUFFER-COPY (hbTabelle).
- hBuffer::ident = TRIM(STRING(rRecid,'>>>>>>>>9')).
- END.
- hqTabelle:QUERY-CLOSE ().
- DELETE OBJECT hqTabelle.
-
- CREATE QUERY hQuery.
- hQuery:SET-BUFFERS ( hBuffer ).
-
- cWhere = SUBSTITUTE('FOR EACH ttTemp NO-LOCK ').
-
- IF cRichtung = 'ASCENDING' THEN cRichtung = ''.
- IF cSortFeld <> '' THEN cWhere = cWhere + ' BY ' + cSortFeld + ' ' + cRichtung.
-
- hQuery:QUERY-PREPARE (cWhere).
- lRetVal = TRUE.
-
- RETURN lRetVal.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC VOID createTemptableBrowser(
- INPUT httInput AS HANDLE,
- INPUT httBrowserKo AS HANDLE,
- OUTPUT httBrowser AS HANDLE
- ):
-
- DEFINE VARIABLE cFeld AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cLabel AS CHARACTER NO-UNDO.
- DEFINE VARIABLE httTable AS HANDLE NO-UNDO.
- DEFINE VARIABLE hFremdBuff AS HANDLE NO-UNDO.
-
- EMPTY TEMP-TABLE ttExterneFelder.
-
- DEFINE BUFFER bbrowser_ze FOR browser_ze.
-
- FIND FIRST browser_ze NO-LOCK
- WHERE browser_ze.mandant = httInput::mandant
- AND browser_ze.benutzer = httInput::benutzer
- AND browser_ze.program = httInput::programm NO-ERROR.
- IF NOT AVAILABLE browser_ze THEN
- DO:
- FIND FIRST browser_ze NO-LOCK
- WHERE browser_ze.mandant = httInput::mandant
- AND browser_ze.benutzer = 'admin'
- AND browser_ze.program = httInput::programm NO-ERROR.
- END.
-
- IF NOT AVAILABLE browser_ze THEN RETURN.
-
- REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
- IF browser_ze.benutzer <> 'admin' THEN LEAVE.
- IF httInput::benutzer = 'admin' THEN LEAVE.
-
- FOR EACH browser_ze NO-LOCK
- WHERE browser_ze.mandant = httInput::mandant
- AND browser_ze.benutzer = 'admin'
- AND browser_ze.program = httInput::programm:
-
- CREATE bbrowser_ze.
- BUFFER-COPY browser_ze
- EXCEPT browser_ze.benutzer
- TO bbrowser_ze
- ASSIGN
- bbrowser_ze.benutzer = httInput::benutzer.
- RELEASE bbrowser_ze.
- END.
- LEAVE.
- END.
-
- CREATE TEMP-TABLE httTable.
- httTable:SERIALIZE-NAME = 'browser'.
- httTable:ADD-NEW-FIELD ('ident', 'CHARACTER').
- httTable:ADD-NEW-FIELD ('sel' , 'CHARACTER').
- FOR EACH browser_ze NO-LOCK
- WHERE browser_ze.mandant = httInput::mandant
- AND browser_ze.benutzer = httInput::benutzer
- AND browser_ze.program = httInput::programm
-
- BY browser_ze.prior:
-
- httTable:ADD-NEW-FIELD (browser_ze.feld, 'CHARACTER').
-
- IF browser_ze.tabelle <> httInput::tabelle THEN
- DO:
- hFremdBuff = createExterneFelder (
- INPUT browser_ze.tabelle,
- INPUT browser_ze.feld,
- INPUT browser_ze.feldtype,
- INPUT httInput
- ).
- END.
- END.
- httTable:TEMP-TABLE-PREPARE ('ttBrowser').
- httBrowser = httTable:DEFAULT-BUFFER-HANDLE.
-
- httBrowser:BUFFER-CREATE ().
- DO i1 = 1 TO httBrowser:NUM-FIELDS:
- IF i1 = 1 THEN
- DO:
- httBrowser:BUFFER-FIELD(i1):BUFFER-VALUE = 'ident'.
- NEXT.
- END.
- IF i1 = 2 THEN
- DO:
- httBrowser:BUFFER-FIELD(i1):BUFFER-VALUE = 'sel'.
- NEXT.
- END.
- cFeld = httBrowser:BUFFER-FIELD(i1):NAME.
- FIND FIRST labeltexte NO-LOCK
- WHERE labeltexte.mandant = httInput::mandant
- AND labeltexte.benutzer = httInput::benutzer
- AND labeltexte.program = httInput::program
- AND labeltexte.tabelle = httInput::tabelle
- AND labeltexte.feld = cFeld
- AND labeltexte.sprcd = httInput::sprcd NO-ERROR.
- IF NOT AVAILABLE labeltexte THEN
- DO:
- FIND FIRST labeltexte NO-LOCK
- WHERE labeltexte.mandant = httInput::mandant
- AND labeltexte.program = httInput::program
- AND labeltexte.tabelle = httInput::tabelle
- AND labeltexte.feld = cFeld
- AND labeltexte.sprcd = httInput::sprcd NO-ERROR.
- END.
- IF NOT AVAILABLE labeltexte THEN
- DO:
- FIND FIRST labeltexte NO-LOCK
- WHERE labeltexte.mandant = httInput::mandant
- AND labeltexte.tabelle = httInput::tabelle
- AND labeltexte.feld = cFeld
- AND labeltexte.sprcd = httInput::sprcd NO-ERROR.
- END.
- IF NOT AVAILABLE labeltexte THEN
- DO:
- FIND FIRST labeltexte NO-LOCK
- WHERE labeltexte.mandant = httInput::mandant
- AND labeltexte.feld = cFeld
- AND labeltexte.sprcd = httInput::sprcd NO-ERROR.
- END.
- cLabel = (IF AVAILABLE labeltexte THEN labeltexte.headlabel ELSE cFeld).
- httBrowser:BUFFER-FIELD(i1):buffer-VALUE(0) = cLabel + '/@/' + labeltexte.ausrichtung.
- END.
- RETURN.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC VOID createTemptableViewer(
- INPUT httInput AS HANDLE,
- INPUT httViewerKo AS HANDLE,
- OUTPUT httViewer AS HANDLE
- ):
-
- DEFINE VARIABLE cFeld AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cLabel AS CHARACTER NO-UNDO.
- DEFINE VARIABLE httTable AS HANDLE NO-UNDO.
- DEFINE VARIABLE cTabelle AS CHARACTER NO-UNDO.
- DEFINE VARIABLE hBufTabelle AS HANDLE NO-UNDO.
-
- DEFINE BUFFER bviewer_ze FOR viewer_ze.
-
- FIND FIRST viewer_ze NO-LOCK
- WHERE viewer_ze.mandant = httInput::mandant
- AND viewer_ze.benutzer = httInput::benutzer
- AND viewer_ze.program = httInput::programm
- AND viewer_ze.tabelle = httInput::tabelle NO-ERROR.
- IF NOT AVAILABLE viewer_ze THEN
- DO:
- FIND FIRST viewer_ze NO-LOCK
- WHERE viewer_ze.mandant = httInput::mandant
- AND viewer_ze.benutzer = 'admin'
- AND viewer_ze.program = httInput::programm
- AND viewer_ze.tabelle = httInput::tabelle NO-ERROR.
- END.
-
- IF NOT AVAILABLE viewer_ze THEN RETURN.
-
- cTabelle = viewer_ze.tabelle.
-
- REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
- IF viewer_ze.benutzer <> 'admin' THEN LEAVE.
- IF httInput::benutzer = 'admin' THEN LEAVE.
-
- FOR EACH viewer_ze NO-LOCK
- WHERE viewer_ze.mandant = httInput::mandant
- AND viewer_ze.benutzer = 'admin'
- AND viewer_ze.program = httInput::programm
- AND viewer_ze.tabelle = httInput::tabelle:
-
- CREATE bviewer_ze.
- BUFFER-COPY viewer_ze
- EXCEPT viewer_ze.benutzer
- TO bviewer_ze
- ASSIGN
- bviewer_ze.benutzer = httInput::benutzer.
- RELEASE bviewer_ze.
- END.
- LEAVE.
- END.
-
- CREATE BUFFER hBufTabelle FOR TABLE cTabelle.
- CREATE TEMP-TABLE httTable.
- httTable:SERIALIZE-NAME = 'viewerdaten'.
- FOR EACH viewer_ze NO-LOCK
- WHERE viewer_ze.mandant = httInput::mandant
- AND viewer_ze.benutzer = httInput::benutzer
- AND viewer_ze.program = httInput::programm
- AND viewer_ze.tabelle = httInput::tabelle
-
- BY viewer_ze.prior:
- IF viewer_ze.addFieldTabelle = '' AND
- NOT viewer_ze.feld BEGINS 'DUMMY' AND
- NOT viewer_ze.feld BEGINS 'ident' THEN
- httTable:ADD-LIKE-FIELD (viewer_ze.feld, hBufTabelle:BUFFER-FIELD(viewer_ze.feld)).
- ELSE httTable:ADD-NEW-FIELD (viewer_ze.feld, 'CHARACTER').
- /* MESSAGE viewer_ze.feld ' hinzugefügt'.*/
- END.
- httTable:TEMP-TABLE-PREPARE (cTabelle).
- httViewer = httTable:DEFAULT-BUFFER-HANDLE.
-
- DELETE OBJECT hBufTabelle.
-
- RETURN.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC INTEGER fillBrowserTT(
- INPUT httBrowserKo AS HANDLE,
- INPUT hQuery AS HANDLE,
- INPUT hbttInput AS HANDLE,
- INPUT-OUTPUT httBrowser AS HANDLE
- ):
-
- DEFINE VARIABLE hbQuery AS HANDLE NO-UNDO.
- DEFINE VARIABLE hFeld AS HANDLE NO-UNDO.
- DEFINE VARIABLE hFeldRecid AS HANDLE NO-UNDO.
- DEFINE VARIABLE cFeld AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cInhalt AS CHARACTER NO-UNDO.
- DEFINE VARIABLE iAnzRec AS INTEGER NO-UNDO.
- DEFINE VARIABLE iSkip AS INTEGER NO-UNDO.
- DEFINE VARIABLE iPageSize AS INTEGER NO-UNDO.
-
- hQuery:QUERY-OPEN ().
-
- iSkip = httBrowserKo::actualpage * httBrowserKo::pagesize.
- hQuery:REPOSITION-FORWARD (iSkip).
- MESSAGE 'anzahl records skip = ' iSkip.
-
- iAnzRec = 0.
- hbQuery = hQuery:GET-BUFFER-HANDLE ().
- hFeldRecid = hbQuery:BUFFER-FIELD('ident') NO-ERROR.
- iPageSize = (IF hbttInput::suchfeld = '' THEN httBrowserKo::pagesize ELSE 100).
- DO i1 = 1 TO iPageSize:
- hQuery:GET-NEXT() NO-ERROR.
- IF hQuery:QUERY-OFF-END THEN LEAVE.
-
- httBrowser:BUFFER-CREATE ().
- IF hbttInput::action = 'search' AND
- i1 = 1 THEN hbttInput::ident = TRIM(STRING(INT64(hbQuery::ident),'>>>>>>>>>9')).
- IF VALID-HANDLE(hFeldRecid) THEN httBrowser::ident = TRIM(STRING(INT64(hbQuery::ident),'>>>>>>>>>9')).
- ELSE httBrowser::Ident = TRIM(STRING(hbQuery:RECID)).
- IF httBrowser::ident = hbttInput::ident THEN httBrowser::sel = 'TRUE'.
-
- DO i2 = 3 TO httBrowser:NUM-FIELDS:
- cFeld = httBrowser:BUFFER-FIELD(i2):NAME.
- hFeld = hbQuery :BUFFER-FIELD(cFeld) NO-ERROR.
- IF NOT VALID-HANDLE(hFeld) OR
- ERROR-STATUS:ERROR THEN
- DO:
- cInhalt = getFieldValueExtern(INPUT cFeld, INPUT hbttInput, INPUT httBrowser ).
- httBrowser:BUFFER-FIELD(i2):BUFFER-VALUE = cInhalt.
- NEXT.
- END.
- CASE hFeld:DATA-TYPE:
- WHEN 'INTEGER' OR
- WHEN 'INT64' THEN
- cInhalt = TRIM(STRING(INTEGER(hFeld:BUFFER-VALUE(0)),'->>>,>>>,>>9')).
- WHEN 'DECIMAL' THEN
- cInhalt = TRIM(STRING(DECIMAL(hFeld:BUFFER-VALUE(0)),'->>>,>>>,>>9.99<<<')).
- WHEN 'DATE' THEN
- cInhalt = STRING(DATE(hFeld:BUFFER-VALUE(0)),'99.99.9999').
- OTHERWISE
- cInhalt = hFeld:BUFFER-VALUE(0).
- END CASE.
- httBrowser:BUFFER-FIELD(i2):BUFFER-VALUE = cInhalt.
- END.
- iAnzRec = iAnzRec + 1.
- END.
-
- RETURN iAnzRec.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC LOGICAL getBrowserKopf(
- INPUT httInput AS HANDLE,
- OUTPUT httBrowserKo AS HANDLE
- ):
- MESSAGE 'getBrowserKopf mit ' httInput::mandant '/' httInput::benutzer '/' httInput::programm '/' httInput::tabelle.
- FIND FIRST browser_ko NO-LOCK
- WHERE browser_ko.mandant = httInput::mandant
- AND browser_ko.benutzer = httInput::benutzer
- AND browser_ko.program = httInput::programm
- AND browser_ko.tabelle = httInput::tabelle NO-ERROR.
- IF NOT AVAILABLE browser_ko THEN
- DO:
- FIND FIRST browser_ko NO-LOCK
- WHERE browser_ko.mandant = httInput::mandant
- AND browser_ko.benutzer = 'admin'
- AND browser_ko.program = httInput::programm
- AND browser_ko.tabelle = httInput::tabelle NO-ERROR.
- END.
-
- IF NOT AVAILABLE browser_ko THEN RETURN FALSE.
-
- httBrowserKo = TEMP-TABLE ttBrowserKo:DEFAULT-BUFFER-HANDLE.
- httBrowserKo:EMPTY-TEMP-TABLE ().
- httBrowserKo:BUFFER-CREATE ().
- httBrowserKo:BUFFER-COPY(BUFFER browser_ko:HANDLE).
- RELEASE browser_ko.
-
- RETURN TRUE.
-
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC CHARACTER getBufferFieldValue( INPUT iphFeld AS HANDLE, OUTPUT oplQuoter AS LOGICAL ):
-
- DEFINE VARIABLE cFeldInhalt AS CHARACTER NO-UNDO.
- cFeldInhalt = ''.
- oplQuoter = FALSE.
- CASE iphFeld:DATA-TYPE:
- WHEN 'CHARACTER' THEN
- ASSIGN
- cFeldInhalt = iphFeld:BUFFER-VALUE(0)
- oplQuoter = TRUE.
- WHEN 'DECIMAL' OR
- WHEN 'INTEGER' THEN
- cFeldInhalt = TRIM(STRING(INTEGER(iphFeld:BUFFER-VALUE),'>>>>>>>>9')).
- WHEN 'DATE' THEN
- cFeldInhalt = STRING(DATE(iphFeld:BUFFER-VALUE),'99.99.9999').
- OTHERWISE
- cFeldInhalt = iphFeld:BUFFER-VALUE.
- END CASE.
-
- IF cFeldInhalt = ? THEN cFeldInhalt = ''.
-
- RETURN cFeldInhalt.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC VOID getErrorMessage(
- INPUT cFehlerNo AS CHARACTER,
- INPUT iSprcd AS INTEGER,
- INPUT cParam AS CHARACTER,
- OUTPUT cMessage AS LONGCHAR
- ):
-
- DEFINE VARIABLE lcJsonString AS CHARACTER NO-UNDO.
- DEFINE VARIABLE ii AS INTEGER NO-UNDO.
- DEFINE VARIABLE iNo AS INTEGER NO-UNDO.
- DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cParameter AS CHARACTER NO-UNDO EXTENT 5.
-
- cParam = REPLACE(cParam, ',', ';').
- DO ii = 1 TO NUM-ENTRIES(cParam, ';'):
- cParameter[ii] = ENTRY(ii, cParam, ';').
- IF ii = 5 THEN LEAVE.
- END.
- lcJsonString = '"ERROR": "(&1) : &2"'.
- cFehlerNo = REPLACE(cFehlerNo, ',', ';').
- DO ii = 1 TO NUM-ENTRIES(cFehlerNo, ';'):
- iNo = INTEGER(ENTRY(ii, cFehlerNo, ';')).
- FIND Femeld NO-LOCK
- WHERE Femeld.Fenr = iNo
- AND Femeld.Sprcd = iSprcd NO-ERROR.
- IF NOT AVAILABLE Femeld THEN
- DO:
- FIND FIRST Femeld NO-LOCK
- WHERE Femeld.Fenr = iNo NO-ERROR.
- END.
-
- IF NOT AVAILABLE Femeld THEN
- DO:
- cString = cString
- + (IF cString = '' THEN '' ELSE ' ')
- + 'Systemfehler, Administrator benachrichtigen !'.
- END.
- ELSE
- DO:
- cString = cString
- + (IF cString = '' THEN '' ELSE ' ')
- + Femeld.FeText.
- END.
- END.
- MESSAGE cString '-' cParam.
- cString = SUBSTITUTE(cString, cParameter[01], cParameter[02], cParameter[03], cParameter[04], cParameter[05]).
- MESSAGE cString.
-
- lcJsonString = CHR(123) + SUBSTITUTE(lcJsonString, cFehlerNo, cString) + CHR(125).
-
- cMessage = lcJsonString.
-
- RETURN.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC LOGICAL getField(
- INPUT httInput AS HANDLE,
- INPUT cTabelle AS CHARACTER,
- INPUT cTabFeld AS CHARACTER,
- INPUT cKeyFelder AS CHARACTER,
- INPUT cKeyValues AS CHARACTER,
- INPUT hTabelle AS HANDLE,
- OUTPUT cInhalt AS CHARACTER
- ):
-
- DEFINE VARIABLE hBuffer AS HANDLE NO-UNDO.
- DEFINE VARIABLE hFeldBuffer AS HANDLE NO-UNDO.
- DEFINE VARIABLE cWhere AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cFeld AS CHARACTER NO-UNDO.
- DEFINE VARIABLE hFeld AS HANDLE NO-UNDO.
- DEFINE VARIABLE ii AS INTEGER NO-UNDO.
- DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cWert AS CHARACTER NO-UNDO.
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
-
- CREATE BUFFER hBuffer FOR TABLE cTabelle.
-
- cKeyFelder = REPLACE(cKeyFelder, ',', ';').
- cKeyValues = REPLACE(cKeyValues, ',', ';').
- cString = ''.
- DO ii = 1 TO NUM-ENTRIES(cKeyFelder, ';'):
- cString = cString
- + (IF cString = '' THEN '' ELSE ' AND ')
- + ENTRY(ii, cKeyFelder, ';')
- + ' = &1 '.
- cFeld = ENTRY(ii, cKeyFelder, ';').
- hFeldBuffer = hBuffer:BUFFER-FIELD(cFeld).
- IF ENTRY(ii, cKeyValues, ';') BEGINS '@' THEN
- DO:
- cFeld = TRIM(SUBSTRING(ENTRY(ii, cKeyValues, ';'),02)).
- hFeld = hTabelle:BUFFER-FIELD(cFeld) NO-ERROR.
- IF NOT VALID-HANDLE(hFeld) THEN hFeld = httInput:BUFFER-FIELD(cFeld) NO-ERROR.
- cWert = hFeld:BUFFER-VALUE(0).
- END.
- ELSE cWert = TRIM(ENTRY(ii, cKeyValues, ';')).
-
- CASE hFeldBuffer:DATA-TYPE:
- WHEN 'character' OR
- WHEN 'date' THEN
- cString = SUBSTITUTE(cString, QUOTER(cWert) ).
- OTHERWISE
- cString = SUBSTITUTE(cString, cWert ).
- END CASE.
- END.
-
- cWhere = SUBSTITUTE('WHERE &1 ', cString).
- MESSAGE cWhere.
- lRetVal = hBuffer:FIND-UNIQUE (cWhere, NO-LOCK).
- MESSAGE lRetVal.
-
- hFeld = hBuffer:BUFFER-FIELD(cTabFeld).
- cInhalt = hFeld:BUFFER-VALUE(0).
- MESSAGE cInhalt.
- RETURN TRUE.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC CHARACTER getFieldValueExtern(
- INPUT ipcFeld AS CHARACTER,
- INPUT iphttInput AS HANDLE,
- INPUT iphttBrowser AS HANDLE
- ):
-
- DEFINE VARIABLE cFeldInhalt AS CHARACTER NO-UNDO INIT ''.
-
- DEFINE VARIABLE cWhere AS CHARACTER NO-UNDO.
- DEFINE VARIABLE hBuffer AS HANDLE NO-UNDO.
- DEFINE VARIABLE cKeyValue AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cKeyFeld AS CHARACTER NO-UNDO.
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
- DEFINE VARIABLE ii AS INTEGER NO-UNDO.
- DEFINE VARIABLE hFeld AS HANDLE NO-UNDO.
-
- FIND FIRST ttExterneFelder NO-LOCK
- WHERE LOOKUP(ipcFeld, ttExterneFelder.cFelder, ';') > 0 NO-ERROR.
- IF NOT AVAILABLE ttExterneFelder THEN RETURN cFeldInhalt.
- hBuffer = ttExterneFelder.hBuffer.
- cWhere = ttExterneFelder.cWhere.
-
- DO ii = 1 TO NUM-ENTRIES(ttExterneFelder.cKeyFelder, ';'):
- cKeyFeld = ENTRY(ii, ttExterneFelder.cKeyFelder, ';').
- hFeld = iphttBrowser:BUFFER-FIELD(cKeyFeld) NO-ERROR.
- CASE hFeld:DATA-TYPE:
- WHEN 'INTEGER' OR
- WHEN 'INT64' THEN
- cKeyValue = TRIM(STRING(INTEGER(hFeld:BUFFER-VALUE(0)),'->>>>>>>>9')).
- WHEN 'DECIMAL' THEN
- cKeyValue = TRIM(STRING(DECIMAL(hFeld:BUFFER-VALUE(0)),'->>>>>>>>9.99<<<')).
- WHEN 'DATE' THEN
- cKeyValue = STRING(DATE(hFeld:BUFFER-VALUE(0)),'99.99.9999').
- OTHERWISE
- cKeyValue = QUOTER(hFeld:BUFFER-VALUE(0)).
- END CASE.
- cWhere = cWhere
- + (IF cWhere = '' THEN ' WHERE ' ELSE ' AND ')
- + SUBSTITUTE('&1.&2 = &3 ':U, ttExterneFelder.cTabelle, cKeyFeld, cKeyValue).
- END.
-
- lRetVal = hBuffer:FIND-FIRST (cWhere) NO-ERROR.
- IF lRetVal THEN cFeldInhalt = hBuffer:BUFFER-FIELD(ipcFeld):BUFFER-VALUE(0).
- RETURN cFeldInhalt.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC CHARACTER getHeader(
- INPUT httInput AS HANDLE
- ):
-
- DEFINE VARIABLE cHeader AS CHARACTER NO-UNDO.
- FIND FIRST labeltexte NO-LOCK
- WHERE labeltexte.mandant = httInput::mandant
- AND labeltexte.benutzer = httInput::benutzer
- AND labeltexte.program = httInput::programm
- AND labeltexte.feld = 'KOPF'
- AND labeltexte.sprcd = INTEGER(httInput::sprcd) NO-ERROR.
- IF NOT AVAILABLE labeltexte THEN
- DO:
- FIND FIRST labeltexte NO-LOCK
- WHERE labeltexte.mandant = httInput::mandant
- AND labeltexte.program = httInput::programm
- AND labeltexte.feld = 'KOPF'
- AND labeltexte.sprcd = INTEGER(httInput::sprcd) NO-ERROR.
- END.
-
- cHeader = (IF AVAILABLE labeltexte THEN labeltexte.sidelabel ELSE httInput::programm).
-
- RETURN cHeader.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC CHARACTER getLabel(
- INPUT iprRecid AS RECID,
- INPUT ipcArt AS CHARACTER,
- INPUT ipiSprcd AS INTEGER
- ):
-
- DEFINE VARIABLE cLabel AS CHARACTER NO-UNDO.
-
- DEFINE BUFFER bviewer_ze FOR viewer_ze.
-
- FIND bviewer_ze NO-LOCK WHERE RECID(bviewer_ze) = iprRecid.
-
- IF ipiSprcd = 0 OR
- ipiSprcd > 10 THEN ipiSprcd = 1.
-
- FIND FIRST labeltexte NO-LOCK
- WHERE labeltexte.mandant = bviewer_ze.mandant
- AND labeltexte.benutzer = bviewer_ze.benutzer
- AND labeltexte.program = bviewer_ze.program
- AND labeltexte.tabelle = bviewer_ze.tabelle
- AND labeltexte.feld = bviewer_ze.feld
- AND labeltexte.sprcd = ipiSprcd NO-ERROR.
- IF NOT AVAILABLE labeltexte THEN
- DO:
- FIND FIRST labeltexte NO-LOCK
- WHERE labeltexte.mandant = bviewer_ze.mandant
- AND labeltexte.program = bviewer_ze.program
- AND labeltexte.tabelle = bviewer_ze.tabelle
- AND labeltexte.feld = bviewer_ze.feld
- AND labeltexte.sprcd = ipiSprcd NO-ERROR.
- END.
- IF NOT AVAILABLE labeltexte THEN
- DO:
- FIND FIRST labeltexte NO-LOCK
- WHERE labeltexte.mandant = bviewer_ze.mandant
- AND labeltexte.tabelle = bviewer_ze.tabelle
- AND labeltexte.feld = bviewer_ze.feld
- AND labeltexte.sprcd = ipiSprcd NO-ERROR.
- END.
- IF NOT AVAILABLE labeltexte THEN
- DO:
- FIND FIRST labeltexte NO-LOCK
- WHERE labeltexte.mandant = bviewer_ze.mandant
- AND labeltexte.feld = bviewer_ze.feld
- AND labeltexte.sprcd = ipiSprcd NO-ERROR.
- END.
- CASE ipcArt:
- WHEN 'side' THEN
- cLabel = (IF AVAILABLE labeltexte THEN labeltexte.sidelabel ELSE bviewer_ze.feld).
- WHEN 'head' THEN
- cLabel = (IF AVAILABLE labeltexte THEN labeltexte.headlabel ELSE bviewer_ze.feld).
- END CASE.
-
- RETURN cLabel.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC CHARACTER getPrimaryIndexFields(
- INPUT ipcTabelle AS CHARACTER
- ):
-
- DEFINE VARIABLE cFields AS CHARACTER NO-UNDO.
- FIND AnaDat._File NO-LOCK
- WHERE AnaDat._File._File-Name = ipcTabelle.
-
- FIND AnaDat._Index NO-LOCK
- WHERE RECID(AnaDat._Index) = AnaDat._File._Prime-Index.
- FOR EACH AnaDat._Index-Field OF AnaDat._Index,
- FIRST AnaDat._Field NO-LOCK WHERE RECID(AnaDat._Field) = AnaDat._Index-Field._FIeld-Recid:
- cFields = cFields
- + (IF cFields = '' THEN '' ELSE ',')
- + AnaDat._Field._Field-Name.
- END.
- RETURN cFields.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC CHARACTER getTitle(
- INPUT httInput AS HANDLE
- ):
-
- DEFINE VARIABLE cTitel AS CHARACTER NO-UNDO.
-
- FIND FIRST labeltexte NO-LOCK
- WHERE labeltexte.mandant = httInput::mandant
- AND labeltexte.benutzer = httInput::benutzer
- AND labeltexte.program = httInput::programm
- AND labeltexte.feld = 'TITEL'
- AND labeltexte.sprcd = INTEGER(httInput::sprcd) NO-ERROR.
- IF NOT AVAILABLE labeltexte THEN
- DO:
- FIND FIRST labeltexte NO-LOCK
- WHERE labeltexte.mandant = httInput::mandant
- AND labeltexte.program = httInput::programm
- AND labeltexte.feld = 'TITEL'
- AND labeltexte.sprcd = INTEGER(httInput::sprcd) NO-ERROR.
- END.
-
- cTitel = (IF AVAILABLE labeltexte THEN labeltexte.sidelabel ELSE cProgramm).
-
- RETURN cTitel.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC LOGICAL readInputDatenFromJson(
- INPUT oJsonObject AS JsonObject,
- INPUT hbttInput AS HANDLE,
- INPUT-OUTPUT hbttTemp AS HANDLE
- ):
-
- DEFINE VARIABLE lcJsonString AS LONGCHAR NO-UNDO.
- DEFINE VARIABLE lcOriginal AS LONGCHAR NO-UNDO.
-
- DEFINE VARIABLE cTabelle AS CHARACTER NO-UNDO.
-
- DEFINE VARIABLE jsonttTemp AS jsonObject NO-UNDO.
-
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO INIT FALSE.
- DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
-
- jsonttTemp = NEW JsonObject().
- jsonttTemp = oJsonObject:GetJsonObject('ttTemp').
- lRetVal = hbttTemp:READ-JSON ('JsonObject', jsonttTemp).
- hbttTemp:FIND-FIRST ().
-
- hbttTemp:WRITE-JSON('longchar', lcJsonString, FALSE).
- MESSAGE 'Daten zweiter Buffer -> ' STRING(lcJsonString).
- lRetVal = TRUE.
- RETURN lRetVal.
-
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC VOID setSortField(
- INPUT cSortfeld AS CHARACTER,
- INPUT-OUTPUT httBrowserKo AS HANDLE
- ):
-
- DO WHILE TRUE:
- IF httBrowserKo::sortfeld = '' THEN
- DO:
- httBrowserKo::sortfeld = cSortfeld + ':ASCENDING'.
- LEAVE.
- END.
- /* ASCENDING / DESCENDING Kehren */
- IF LOOKUP(cSortfeld, httBrowserKo::sortfeld, ':') > 0 THEN
- DO:
- IF ENTRY(2, httBrowserKo::sortfeld, ':') = 'ASCENDING' THEN
- DO:
- ENTRY(2, httBrowserKo::sortfeld, ':') = 'DESCENDING'.
- LEAVE.
- END.
- ELSE
- DO:
- ENTRY(2, httBrowserKo::sortfeld, ':') = 'ASCENDING'.
- LEAVE.
- END.
- END.
- httBrowserKo::sortfeld = cSortfeld + ':ASCENDING'.
- LEAVE.
- END.
-
- updateBrowserKo( INPUT httBrowserKo ).
-
- RETURN.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC LOGICAL startBrowserKopf (
- INPUT httInput AS HANDLE,
- OUTPUT httBrowserKo AS HANDLE
- ):
-
- DEFINE VARIABLE rRecid AS RECID NO-UNDO.
-
- DEFINE BUFFER bbrowser_ko FOR browser_ko.
-
- FIND FIRST browser_ko NO-LOCK
- WHERE browser_ko.mandant = httInput::mandant
- AND browser_ko.benutzer = httInput::benutzer
- AND browser_ko.program = httInput::programm
- AND browser_ko.tabelle = httInput::tabelle NO-ERROR.
- IF NOT AVAILABLE browser_ko THEN
- DO:
- FIND FIRST browser_ko NO-LOCK
- WHERE browser_ko.mandant = httInput::mandant
- AND browser_ko.benutzer = 'admin'
- AND browser_ko.program = httInput::programm
- AND browser_ko.tabelle = httInput::tabelle NO-ERROR.
- END.
- IF NOT AVAILABLE browser_ko THEN RETURN FALSE.
-
- rRecid = RECID(browser_ko).
-
- REPEAT TRANSACTION:
- FIND browser_ko WHERE RECID(browser_ko) = rRecid.
-
- IF browser_ko.benutzer = 'admin' THEN
- DO:
- CREATE bbrowser_ko.
- BUFFER-COPY browser_ko
- EXCEPT browser_ko.benutzer
- TO bbrowser_ko
- ASSIGN
- bbrowser_ko.benutzer = httInput::benutzer.
- rRecid = RECID(bbrowser_ko).
- FIND browser_ko WHERE RECID(browser_ko) = rRecid.
- END.
-
- ASSIGN
- browser_ko.actualpage = 0
- browser_ko.lastrecid = 0.
- RELEASE browser_ko.
- LEAVE.
- END.
-
- FIND browser_ko NO-LOCK WHERE RECID(browser_ko) = rRecid.
-
- httBrowserKo = TEMP-TABLE ttBrowserKo:DEFAULT-BUFFER-HANDLE.
- httBrowserKo:EMPTY-TEMP-TABLE ().
- httBrowserKo:BUFFER-CREATE ().
- httBrowserKo:BUFFER-COPY(BUFFER browser_ko:HANDLE).
-
- RELEASE browser_ko.
-
- RETURN TRUE.
-
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC LOGICAL startViewerKopf(
- INPUT httInput AS HANDLE,
- OUTPUT httViewerKo AS HANDLE
- ):
-
- DEFINE VARIABLE rRecid AS RECID NO-UNDO.
-
- DEFINE BUFFER bviewer_ko FOR viewer_ko.
-
- FIND FIRST viewer_ko NO-LOCK
- WHERE viewer_ko.mandant = httInput::mandant
- AND viewer_ko.benutzer = httInput::benutzer
- AND viewer_ko.program = httInput::programm
- AND viewer_ko.tabelle = httInput::tabelle NO-ERROR.
- IF NOT AVAILABLE viewer_ko THEN
- DO:
- FIND FIRST viewer_ko NO-LOCK
- WHERE viewer_ko.mandant = httInput::mandant
- AND viewer_ko.benutzer = 'admin'
- AND viewer_ko.program = httInput::programm
- AND viewer_ko.tabelle = httInput::tabelle NO-ERROR.
- END.
-
- IF NOT AVAILABLE viewer_ko THEN RETURN FALSE.
-
- rRecid = RECID(viewer_ko).
-
- REPEAT TRANSACTION:
- FIND viewer_ko WHERE RECID(viewer_ko) = rRecid.
-
- IF viewer_ko.benutzer = 'admin' THEN
- DO:
- CREATE bviewer_ko.
- BUFFER-COPY viewer_ko
- EXCEPT viewer_ko.benutzer
- TO bviewer_ko
- ASSIGN
- bviewer_ko.benutzer = httInput::benutzer.
- rRecid = RECID(bviewer_ko).
- FIND viewer_ko WHERE RECID(viewer_ko) = rRecid.
- END.
-
- RELEASE viewer_ko.
- LEAVE.
- END.
-
- FIND viewer_ko WHERE RECID(viewer_ko) = rRecid.
-
- httviewerKo = TEMP-TABLE ttviewerKo:DEFAULT-BUFFER-HANDLE.
- httviewerKo:EMPTY-TEMP-TABLE ().
- httviewerKo:BUFFER-CREATE ().
- httviewerKo:BUFFER-COPY(BUFFER viewer_ko:HANDLE).
-
- RELEASE viewer_ko.
-
- RETURN TRUE.
-
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC VOID updateBrowserKo( INPUT httBrowserKo AS HANDLE ):
-
- DEFINE VARIABLE hBrowserKo AS HANDLE NO-UNDO.
-
- hBrowserKo = BUFFER browser_ko:HANDLE.
-
- REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
-
- FIND browser_ko EXCLUSIVE-LOCK
- WHERE browser_ko.mandant = httBrowserKo::mandant
- AND browser_ko.benutzer = httBrowserKo::benutzer
- AND browser_ko.program = httBrowserKo::program
- AND browser_ko.tabelle = httBrowserKo::tabelle NO-ERROR.
- IF NOT AVAILABLE browser_ko THEN LEAVE.
-
- DO i1 = 1 TO httBrowserKo:NUM-FIELDS:
- IF httBrowserKo:BUFFER-FIELD(i1):BUFFER-VALUE(0) = hBrowserKo:BUFFER-FIELD(i1):BUFFER-VALUE(0) THEN NEXT.
- hBrowserKo:BUFFER-FIELD(i1):BUFFER-VALUE(0) = httBrowserKo:BUFFER-FIELD(i1):BUFFER-VALUE(0).
- END.
-
- RELEASE browser_ko.
- LEAVE.
- END.
-
- RETURN.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- DESTRUCTOR PUBLIC utilitiesHandler ( ):
- MESSAGE 'Destructor utilitiesHandler '.
- /* DELETE OBJECT hQuery NO-ERROR. */
- /* DELETE OBJECT hBuffer NO-ERROR. */
- END DESTRUCTOR.
- END CLASS.
|