/* USING Progress.Json.ObjectModel.* FROM PROPATH. USING PROGRESS.Lang.* FROM PROPATH. DEF VAR ttMenu AS HANDLE NO-UNDO. DEF VAR hbttMenu AS HANDLE NO-UNDO. DEF VAR ttHMenu AS HANDLE NO-UNDO. DEF VAR hbttHMenu AS HANDLE NO-UNDO. DEF VAR hFeld AS HANDLE NO-UNDO. DEF VAR oJsonObject AS JsonObject. DEF VAR oJsonMenu AS jsonObject. DEF VAR oJsonSub1 AS JsonObject. DEF VAR oJsonSub2 AS JsonObject. lcString = chr(123). lcString = lcString + '"Adressverwaltung": ' + CHR(125). MESSAGE STRING(lcString) VIEW-AS ALERT-BOX INFORMATION BUTTONS OK. CREATE TEMP-TABLE ttMenu. ttMenu:ADD-NEW-FIELD('Dummy', 'CHARACTER'). ttMenu:TEMP-TABLE-PREPARE('Adressverwaltung'). hbttMenu = ttMenu:DEFAULT-BUFFER-HANDLE. CREATE TEMP-TABLE ttHMenu. ttHMenu:ADD-NEW-FIELD('Adressen', 'CHARACTER'). ttHMenu:TEMP-TABLE-PREPARE('Adressen'). hbttHMenu = ttHMenu:DEFAULT-BUFFER-HANDLE. hbttHMenu:BUFFER-CREATE(). hFeld = hbttHMenu:BUFFER-FIELD('Adressen'). hFeld:BUFFER-VALUE = 'adressen.html'. oJsonObject = NEW JsonObject(). oJsonObject:READ(ttMenu). oJsonMenu = NEW JsonObject(). oJsonMenu:READ(ttHMenu). hbttHMenu:FIND-FIRST(). oJsonObject:ADD(hbttHMenu:NAME, hbttHMenu:BUFFER-FIELD('Adressen'):BUFFER-VALUE). oJsonObject:ADD('Debitoren', 'debitoren.html'). oJsonObject:WRITE(lcString, TRUE). MESSAGE STRING(lcString) VIEW-AS ALERT-BOX INFORMATION BUTTONS OK. /* DEF TEMP-TABLE ttMenu NO-UNDO FIELD Dummy AS CHAR XML-NODE-TYPE "HIDDEN" . DEF TEMP-TABLE ttHauptMenu NO-UNDO XML-NODE-NAME "HIDDEN" FIELD cTitel AS CHAR FIELD ttMenu_Id AS RECID XML-NODE-TYPE "HIDDEN" . DEF TEMP-TABLE ttSubMenu1 NO-UNDO XML-NODE-NAME "HIDDEN" FIELD cTitel AS CHAR FIELD ttHauptMenu_Id AS RECID XML-NODE-TYPE "HIDDEN" . DEF TEMP-TABLE ttSubMenu2 NO-UNDO XML-NODE-NAME "HIDDEN" FIELD cTitel AS CHAR FIELD ttSubMenu1_Id AS RECID XML-NODE-TYPE "HIDDEN" . DEF TEMP-TABLE ttLink NO-UNDO XML-NODE-NAME "HIDDEN" FIELD cLink AS CHAR FIELD ttSubMenu2_Id AS RECID XML-NODE-TYPE "HIDDEN" . DEFINE DATASET MENU_Dset XML-NODE-TYPE "HIDDEN" FOR ttMenu, ttHauptMenu, ttSubMenu1, ttSubMenu2, ttLink PARENT-ID-RELATION relatione1 FOR ttMenu, ttHauptMenu PARENT-ID-FIELD ttMenu_Id PARENT-ID-RELATION relatione2 FOR ttHauptMenu, ttSubMenu1 PARENT-ID-FIELD ttHauptMenu_Id PARENT-ID-RELATION relatione3 FOR ttSubMenu1, ttSubMenu2 PARENT-ID-FIELD ttSubMenu1_Id PARENT-ID-RELATION relatione4 FOR ttSubMenu2, ttLink PARENT-ID-FIELD ttSubMenu2_Id . CREATE ttMenu. CREATE ttHauptMenu. ASSIGN ttHauptMenu.cTitel = 'Adresseverwaltung' ttHauptMenu.ttMenu_Id = RECID(ttMenu). CREATE ttSubMenu1. ASSIGN ttSubMenu1.cTitel = 'Adressen' ttSubMenu1.ttHauptMenu_Id = RECID(ttHauptMenu). CREATE ttSubMenu2. ASSIGN ttSubMenu2.cTitel = '' ttSubMenu2.ttSubMenu1_Id = RECID(ttSubMenu1). CREATE ttLink. ASSIGN ttLink.cLink = 'adressen.html' ttLink.ttSubMenu2_Id = RECID(ttSubMenu2). CREATE ttSubMenu1. ASSIGN ttSubMenu1.cTitel = 'Debitoren' ttSubMenu1.ttHauptMenu_Id = RECID(ttHauptMenu). CREATE ttSubMenu2. ASSIGN ttSubMenu2.cTitel = '' ttSubMenu2.ttSubMenu1_Id = RECID(ttSubMenu1). CREATE ttLink. ASSIGN ttLink.cLink = 'debitoren.html' ttLink.ttSubMenu2_Id = RECID(ttSubMenu2). CREATE ttSubMenu1. ASSIGN ttSubMenu1.cTitel = 'Tabellen' ttSubMenu1.ttHauptMenu_Id = RECID(ttHauptMenu). CREATE ttSubMenu2. ASSIGN ttSubMenu2.cTitel = 'Artikeltabellen' ttSubMenu2.ttSubMenu1_Id = RECID(ttSubMenu1). CREATE ttLink. ASSIGN ttLink.cLink = 'kleingebide.html' ttLink.ttSubMenu2_Id = RECID(ttSubMenu2). CREATE ttSubMenu1. /*DATASET MENU_DSet:FILL().*/ DEF VAR hMENU_Dset AS HANDLE. hMENU_Dset = DATASET MENU_Dset:HANDLE. DATASET MENU_Dset:WRITE-JSON( "File", 'C:\TEMP\GEMIS_WEB.json', TRUE, /* Formatted */ "UTF-8", TRUE ). /* ommit-initial-values */ */ */ USING Progress.Json.ObjectModel.* FROM PROPATH. USING PROGRESS.Lang.* FROM PROPATH. DEF VAR lcString AS LONGCHAR NO-UNDO. DEF VAR iAktStufe AS INTEGER NO-UNDO. DEF TEMP-TABLE ttMenu NO-UNDO FIELD Cd1 AS INT FIELD Cd2 AS INT FIELD Cd3 AS INT FIELD Stufe AS INT FIELD cMenu AS CHAR FIELD cLink AS CHAR INDEX ttMenu-k1 IS PRIMARY Cd1 Cd2 Cd3 Stufe . iAktStufe = 0. CREATE ttMenu. ASSIGN ttMenu.Cd1 = 10 ttMenu.Cd2 = 0 ttMenu.Cd3 = 0 ttMenu.Stufe = 0 ttMenu.cMenu = 'Adressverwaltung' ttMenu.cLink = ''. CREATE ttMenu. ASSIGN ttMenu.Cd1 = 20 ttMenu.Cd2 = 0 ttMenu.Cd3 = 0 ttMenu.Stufe = 1 ttMenu.cMenu = 'Adressen' ttMenu.cLink = 'adressen.html'. CREATE ttMenu. ASSIGN ttMenu.Cd1 = 30 ttMenu.Cd2 = 0 ttMenu.Cd3 = 0 ttMenu.Stufe = 1 ttMenu.cMenu = 'Debitoren' ttMenu.cLink = 'debitoren.html'. CREATE ttMenu. ASSIGN ttMenu.Cd1 = 40 ttMenu.Cd2 = 0 ttMenu.Cd3 = 0 ttMenu.Stufe = 2 ttMenu.cMenu = 'Kreditoren' ttMenu.cLink = ''. CREATE ttMenu. ASSIGN ttMenu.Cd1 = 50 ttMenu.Cd2 = 0 ttMenu.Cd3 = 0 ttMenu.Stufe = 2 ttMenu.cMenu = 'Kreditorenstamm' ttMenu.cLink = 'kreditoren.html'. CREATE ttMenu. ASSIGN ttMenu.Cd1 = 60 ttMenu.Cd2 = 0 ttMenu.Cd3 = 0 ttMenu.Stufe = 2 ttMenu.cMenu = 'Zahlungskontidionen' ttMenu.cLink = 'kredzahlung.html'. CREATE ttMenu. ASSIGN ttMenu.Cd1 = 70 ttMenu.Cd2 = 0 ttMenu.Cd3 = 0 ttMenu.Stufe = 0 ttMenu.cMenu = 'Artikelverwaltung' ttMenu.cLink = ''. CREATE ttMenu. ASSIGN ttMenu.Cd1 = 80 ttMenu.Cd2 = 0 ttMenu.Cd3 = 0 ttMenu.Stufe = 1 ttMenu.cMenu = 'Artikelstamm' ttMenu.cLink = 'artikel.html'. CREATE ttMenu. ASSIGN ttMenu.Cd1 = 90 ttMenu.Cd2 = 0 ttMenu.Cd3 = 0 ttMenu.Stufe = 1 ttMenu.cMenu = 'Lieferanten' ttMenu.cLink = 'artlief.html'. lcString = CHR(123) + ' ' + CHR(10). FOR EACH ttMenu BREAK BY Cd1 BY Cd2 BY Cd3 BY Stufe: CASE ttMenu.Stufe: WHEN 0 THEN DO: IF iAktStufe = 1 THEN DO: lcString = lcString + SUBSTITUTE('&2&1, ', CHR(125), CHR(10) ). END. IF iAktStufe = 2 THEN DO: lcString = lcString + SUBSTITUTE('&1, &2 &1, &2', CHR(125), CHR(10) ). END. IF ttMenu.cLink = '' THEN lcString = lcString + SUBSTITUTE('&1: &2 &3' , QUOTER(ttMenu.cMenu), CHR(123), CHR(10) ). ELSE lcString = lcString + SUBSTITUTE('&1: &2,', QUOTER(ttMenu.cMenu), QUOTER(ttMenu.cLink) ) + CHR(10). iAktStufe = ttMenu.Stufe. END. WHEN 1 THEN DO: IF iAktStufe = 2 THEN DO: lcString = lcString + SUBSTITUTE('&2 &1, ', CHR(125), CHR(10) ). END. IF ttMenu.cLink = '' THEN lcString = lcString + SUBSTITUTE('&1: &2' , QUOTER(ttMenu.cMenu), CHR(123) ) + CHR(10). ELSE lcString = lcString + SUBSTITUTE('&1: &2,', QUOTER(ttMenu.cMenu), QUOTER(ttMenu.cLink) ) + CHR(10). iAktStufe = ttMenu.Stufe. END. WHEN 2 THEN DO: IF ttMenu.cLink = '' THEN lcString = lcString + SUBSTITUTE('&1: &2' , QUOTER(ttMenu.cMenu), CHR(123) ) + CHR(10). ELSE lcString = lcString + SUBSTITUTE('&1: &2,', QUOTER(ttMenu.cMenu), QUOTER(ttMenu.cLink) ) + CHR(10). iAktStufe = ttMenu.Stufe. END. END CASE. END. IF iAktStufe = 2 THEN lcString = lcString + SUBSTITUTE('&1,&2&1,', CHR(125), CHR(10) ). IF iAktStufe = 1 THEN lcString = lcString + SUBSTITUTE('&1,' , CHR(125), CHR(10) ). lcString = lcString + CHR(10) + CHR(125). MESSAGE STRING(lcString) VIEW-AS ALERT-BOX INFORMATION BUTTONS OK. /* FOR EACH Katalog NO-LOCK WHERE Katalog.Firma = '1010' AND Katalog.Cd1 < 100 BREAK BY Katalog.Cd1 BY Katalog.Cd2 BY Katalog.Cd3 BY Katalog.Artnr: IF FIRST-OF(Katalog.Cd1) THEN DO: lcString = lcString + (IF lcString = '' THEN + CHR(123) ELSE ', '). FIND FIRST KatSt1 NO-LOCK OF Katalog NO-ERROR. lcString = lcString + SUBSTITUTE('&1: &2', QUOTER(KatSt1.Bezeichnung), CHR(123)). END. IF FIRST-OF(Katalog.St2) THEN DO: IF FIRST-OF(Katalog.Cd3) THEN DO: FIND FIRST KatSt2 NO-LOCK OF Katalog NO-ERROR. lcString = lcString + SUBSTITUTE('&1: &2', QUOTER(KatSt2.Bezeichnung), CHR(123)). lcString = lcString + SUBSTITUTE('&1: &2,', QUOTER( END. END. IF LAST-OF(Katalog.Cd1 THEN DO: lcString = lcString + END. END. */