createAuftrag.p 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571
  1. /*------------------------------------------------------------------------
  2. File : createAuftrag
  3. Purpose :
  4. Syntax :
  5. Description :
  6. Author(s) : walter.riechsteiner
  7. Created : Mon Feb 27 11:25:49 CET 2023
  8. Notes :
  9. ----------------------------------------------------------------------*/
  10. /* *************************** Definitions ************************** */
  11. USING Progress.Json.ObjectModel.JsonObject FROM PROPATH.
  12. USING Progress.Json.ObjectModel.JsonArray FROM PROPATH.
  13. USING Progress.Json.ObjectModel.ObjectModelParser FROM PROPATH.
  14. DEFINE INPUT PARAMETER iplcJson AS CHARACTER NO-UNDO.
  15. DEFINE OUTPUT PARAMETER opcMessage AS CHARACTER NO-UNDO.
  16. DEFINE OUTPUT PARAMETER oplRetVal AS LOGICAL NO-UNDO.
  17. DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
  18. DEFINE VARIABLE cField AS CHARACTER NO-UNDO.
  19. DEFINE VARIABLE cValue AS CHARACTER NO-UNDO.
  20. DEFINE VARIABLE cZeile AS CHARACTER NO-UNDO.
  21. DEFINE VARIABLE iStufe AS INTEGER NO-UNDO.
  22. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  23. DEFINE VARIABLE ix AS INTEGER NO-UNDO.
  24. DEFINE VARIABLE iPos AS INTEGER NO-UNDO.
  25. DEFINE VARIABLE cNames AS CHARACTER EXTENT 100.
  26. DEFINE VARIABLE cFullName AS CHARACTER NO-UNDO.
  27. DEFINE VARIABLE iZeile AS INTEGER NO-UNDO.
  28. DEFINE VARIABLE lArray AS LOGICAL NO-UNDO.
  29. DEFINE VARIABLE lArrayBeginn AS LOGICAL NO-UNDO.
  30. DEFINE VARIABLE iArrayStufe AS INTEGER NO-UNDO.
  31. DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
  32. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
  33. DEFINE VARIABLE iRetVal AS INTEGER NO-UNDO.
  34. DEFINE VARIABLE iKnr AS INTEGER NO-UNDO.
  35. DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
  36. DEFINE VARIABLE nKredTot AS DECIMAL NO-UNDO.
  37. DEFINE VARIABLE iPreisArt AS INTEGER NO-UNDO.
  38. DEFINE VARIABLE nTotal AS DECIMAL DECIMALS 4 NO-UNDO EXTENT 15.
  39. DEFINE VARIABLE lLiterPreis AS LOGICAL NO-UNDO.
  40. DEFINE VARIABLE iInhalt AS INTEGER NO-UNDO.
  41. DEFINE BUFFER bFDebst FOR Debst.
  42. DEFINE BUFFER bLDebst FOR Debst.
  43. DEFINE BUFFER bAufko FOR Aufko.
  44. DEFINE TEMP-TABLE tParameter
  45. FIELD iStufe AS INTEGER
  46. FIELD cFileName AS CHARACTER
  47. FIELD cFieldName AS CHARACTER
  48. FIELD cValue AS CHARACTER
  49. .
  50. DEFINE BUFFER btParameter FOR tParameter.
  51. DEFINE TEMP-TABLE tAufko LIKE Aufko.
  52. DEFINE TEMP-TABLE tAufze LIKE Aufze.
  53. DEFINE VARIABLE htAufko AS HANDLE NO-UNDO.
  54. DEFINE VARIABLE htAufze AS HANDLE NO-UNDO.
  55. htAufko = TEMP-TABLE tAufko:DEFAULT-BUFFER-HANDLE.
  56. htAufze = TEMP-TABLE tAufze:DEFAULT-BUFFER-HANDLE.
  57. { propertiesYBM.i }
  58. { funktionen.i }
  59. /* ******************** Preprocessor Definitions ******************** */
  60. /* ************************ Function Prototypes ********************** */
  61. FUNCTION createAuftrag RETURNS LOGICAL
  62. ( ) FORWARD.
  63. FUNCTION createParameters RETURNS LOGICAL
  64. ( ) FORWARD.
  65. /* *************************** Main Block *************************** */
  66. cString = iplcJson NO-ERROR.
  67. RUN writeLogfile.r ( ENTRY(1, THIS-PROCEDURE:NAME, '.'), cLogFileName, SUBSTITUTE('&1&2', CHR(10), cString) ).
  68. lRetVal = DYNAMIC-FUNCTION ('createParameters':U IN THIS-PROCEDURE) NO-ERROR.
  69. IF NOT lRetVal THEN
  70. DO:
  71. opcMessage = 'Auftrags-Parameter konnten nicht erstellt werden'.
  72. oplRetVal = FALSE.
  73. RETURN.
  74. END.
  75. lRetVal = DYNAMIC-FUNCTION ('createAuftrag':U) NO-ERROR.
  76. oplRetVal = lRetVal.
  77. RETURN.
  78. /* ************************ Function Implementations ***************** */
  79. FUNCTION createAuftrag RETURNS LOGICAL
  80. ( ):
  81. /*------------------------------------------------------------------------------*/
  82. /* Purpose: Super Override */
  83. /* Parameters: */
  84. /* Notes: */
  85. /*------------------------------------------------------------------------------*/
  86. DEFINE VARIABLE lok AS LOGICAL NO-UNDO.
  87. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO INIT FALSE.
  88. DEFINE VARIABLE cIBest AS CHARACTER NO-UNDO.
  89. /* opcMessage = ''. */
  90. oplRetVal = FALSE.
  91. cString = SUBSTITUTE('&1&4&2&4&3', cYBMBenutzer, cYBMPassword, cYBMFirma, CHR(01)).
  92. RUN ANMELDUNG ( cString ) NO-ERROR.
  93. lok = DYNAMIC-FUNCTION('getSuperAktiv':U) NO-ERROR.
  94. IF NOT lOK THEN
  95. DO:
  96. opcMessage = 'Request konnte sich nicht am System anmelden'.
  97. RETURN lRetVal.
  98. END.
  99. CREATEAUFTRAG:
  100. DO WHILE TRUE ON ERROR UNDO, LEAVE:
  101. FIND FIRST tParameter
  102. WHERE tParameter.cFileName = 'Auftrag'
  103. AND tParameter.cField = 'type' NO-ERROR.
  104. IF NOT AVAILABLE tParameter THEN
  105. DO:
  106. opcMessage = 'Request-Type "request-delivery" fehlt '.
  107. LEAVE CREATEAUFTRAG.
  108. END.
  109. tParameter.cValue = REPLACE(tParameter.cValue, '"', '').
  110. IF tParameter.cValue <> 'request-delivery' THEN
  111. DO:
  112. opcMessage = 'Request-Type "request-delivery" fehlt '.
  113. LEAVE CREATEAUFTRAG.
  114. END.
  115. FIND FIRST tParameter
  116. WHERE tParameter.cFileName = 'Auftrag:data'
  117. AND tParameter.cField = 'id' NO-ERROR.
  118. IF AVAILABLE tParameter THEN
  119. DO:
  120. tParameter.cValue = REPLACE(tParameter.cValue, '"', '').
  121. cIBest = 'YBM: ' + tParameter.cValue.
  122. FIND FIRST Aufko NO-LOCK
  123. WHERE Aufko.Firma = cYBMFirma
  124. AND Aufko.I_Best = cIBest NO-ERROR.
  125. IF AVAILABLE Aufko THEN
  126. DO:
  127. opcMessage = SUBSTITUTE('Auftrag mit der ID &1 gibt es schon':U, tParameter.cValue ).
  128. LEAVE CREATEAUFTRAG.
  129. END.
  130. END.
  131. ELSE
  132. DO:
  133. opcMessage = SUBSTITUTE('Auftrag:data Feld Id (AuftragsID) nicht gefunden').
  134. LEAVE CREATEAUFTRAG.
  135. END.
  136. /* Besteller- / Lieferadresse */
  137. FIND FIRST tParameter
  138. WHERE tParameter.cFileName = 'Auftrag:data:customer'
  139. AND tParameter.cField = 'id' NO-ERROR.
  140. IF NOT AVAILABLE tParameter THEN
  141. DO:
  142. opcMessage = 'Kundennummer fehlt '.
  143. LEAVE CREATEAUFTRAG.
  144. END.
  145. iKnr = INTEGER(REPLACE(tParameter.cValue, '"', '')) NO-ERROR.
  146. FIND FIRST bLDebst NO-LOCK
  147. WHERE bLDebst.Firma = cYBMFirma
  148. AND bLDebst.Knr = iKnr NO-ERROR.
  149. IF NOT AVAILABLE bLDebst THEN
  150. DO:
  151. opcMessage = SUBSTITUTE('Kundennummer &1 nicht gefunden', iKnr).
  152. LEAVE CREATEAUFTRAG.
  153. END.
  154. FIND FIRST tParameter
  155. WHERE tParameter.cFileName = 'Auftrag:data:request'
  156. AND tParameter.cField = 'customer_id' NO-ERROR.
  157. IF AVAILABLE tParameter THEN
  158. DO:
  159. tParameter.cValue = REPLACE(tParameter.cValue, '"', '').
  160. FIND FIRST bFDebst NO-LOCK
  161. WHERE bFDebst.Firma = bLDebst.Firma
  162. AND bFDebst.Knr = INTEGER(tParameter.cValue) NO-ERROR.
  163. IF NOT AVAILABLE bFDebst THEN
  164. DO:
  165. opcMessage = SUBSTITUTE('Faktura-Kundennummer &1 nicht gefunden', tParameter.cValue).
  166. LEAVE CREATEAUFTRAG.
  167. END.
  168. END.
  169. ELSE
  170. DO:
  171. IF bLDebst.KnrFak > 0 THEN
  172. DO:
  173. FIND FIRST bFDebst NO-LOCK
  174. WHERE bFDebst.Firma = bLDebst.Firma
  175. AND bFDebst.Knr = bLDebst.KnrFak NO-ERROR.
  176. END.
  177. ELSE
  178. DO:
  179. FIND FIRST bFDebst NO-LOCK
  180. WHERE bFDebst.Firma = bLDebst.Firma
  181. AND bFDebst.Knr = bLDebst.Knr NO-ERROR.
  182. END.
  183. END.
  184. CREATE tAufko.
  185. ASSIGN
  186. tAufko.Firma = bLDebst.Firma
  187. tAufko.Aufnr = -1
  188. tAufko.Knr = iKnr
  189. tAufko.Abhol = FALSE
  190. tAufko.Lager = 0
  191. tAufko.Auf_Datum = TODAY
  192. tAufko.Fak_Knr = bFDebst.Knr
  193. .
  194. htAufko = TEMP-TABLE tAufko:DEFAULT-BUFFER-HANDLE.
  195. lok = DYNAMIC-FUNCTION('fillAufko':U, 0, INPUT-OUTPUT htAufko ) NO-ERROR.
  196. IF NOT lok THEN
  197. DO:
  198. opcMessage = 'Problem beim erstellen des Auftragskopfes'.
  199. LEAVE.
  200. END.
  201. FIND FIRST tAufko.
  202. tAufko.I_Best = cIBest.
  203. FIND FIRST tParameter
  204. WHERE tParameter.cFileName = 'Auftrag:data:request:scheduled'
  205. AND tParameter.cField = 'date' NO-ERROR.
  206. IF AVAILABLE tParameter THEN
  207. DO:
  208. tParameter.cValue = REPLACE(tParameter.cValue, '"', '').
  209. tAufko.Lief_Datum = DATE(INTEGER(SUBSTRING(tParameter.cValue,06,02)),
  210. INTEGER(SUBSTRING(tParameter.cValue,09,02)),
  211. INTEGER(SUBSTRING(tParameter.cValue,01,04))
  212. ) NO-ERROR.
  213. IF ERROR-STATUS:ERROR OR
  214. tAufko.Lief_Datum = ? THEN tAufko.Lief_Datum = TODAY.
  215. tAufko.Kond_Datum = TODAY.
  216. END.
  217. IF bFDebst.Kred_Lim > 0 THEN
  218. DO:
  219. nKredTot = bFDebst.Saldo.
  220. FOR EACH bAufko NO-LOCK
  221. WHERE bAufko.Firma = bFDebst.Firma
  222. AND bAufko.Fak_Knr = bFDebst.Knr:
  223. nKredTot = nKredTot + bAufko.Auf_Tot.
  224. END.
  225. IF nKredTot >= bFDebst.Kred_Lim THEN
  226. DO:
  227. opcMessage = SUBSTITUTE('Kreditlimite von &1 ist mit &2 überschritten', bFDebst.Kred_Lim, nKredTot).
  228. LEAVE CREATEAUFTRAG.
  229. END.
  230. END.
  231. FOR EACH tParameter
  232. WHERE tParameter.cFileName = 'Auftrag:data:request:user'
  233. BY tParameter.iStufe:
  234. tParameter.cValue = REPLACE (tParameter.cValue, '"', '').
  235. tAufko.Auf_Text = tAufko.Auf_Text
  236. + (IF tAufko.Auf_Text = '' THEN '' ELSE CHR(10))
  237. + tParameter.cValue.
  238. END.
  239. iAufnr = ?.
  240. tAufko.Aufnr = 0.
  241. RUN NUMMER_LOESEN ( 1, OUTPUT iAufnr ) NO-ERROR.
  242. IF iAufnr = ? OR
  243. iAufnr = 0 THEN
  244. DO:
  245. opcMessage = 'Es konnte keine Auftragsnummer gelöst werden'.
  246. LEAVE CREATEAUFTRAG.
  247. END.
  248. tAufko.Aufnr = iAufnr.
  249. REPEAT TRANSACTION ON ERROR UNDO, RETRY:
  250. CREATE bAufko.
  251. BUFFER-COPY tAufko TO bAufko.
  252. RELEASE bAufko.
  253. LEAVE.
  254. END.
  255. FIND bAufko NO-LOCK
  256. WHERE bAufko.Firma = bLDebst.Firma
  257. AND bAufko.Aufnr = iAufnr.
  258. lok = DYNAMIC-FUNCTION('createAufGebKo':U, iAufnr ) NO-ERROR.
  259. FOR EACH tParameter
  260. WHERE tParameter.cFileName = 'Auftrag:data:request:items'
  261. BY tParameter.iStufe:
  262. CASE tParameter.cFieldName:
  263. WHEN 'id' THEN
  264. DO:
  265. tParameter.cValue = REPLACE(tParameter.cValue, '"', '').
  266. EMPTY TEMP-TABLE tAufze.
  267. CREATE tAufze.
  268. ASSIGN
  269. tAufze.Firma = bAufko.Firma
  270. tAufze.Aufnr = bAufko.Aufnr
  271. tAufze.Artnr = INTEGER(ENTRY(1, tParameter.cValue, '-'))
  272. tAufze.Inhalt = INTEGER(ENTRY(2, tParameter.cValue, '-'))
  273. tAufze.Jahr = INTEGER(ENTRY(3, tParameter.cValue, '-'))
  274. .
  275. iRetVal = DYNAMIC-FUNCTION ('fillAufze':U, INPUT-OUTPUT htAufze) NO-ERROR.
  276. IF iRetVal <> 0 THEN
  277. DO:
  278. FIND FIRST Femeld NO-LOCK
  279. WHERE Femeld.Fenr = iRetVal NO-ERROR.
  280. IF AVAILABLE Femeld THEN opcMessage = SUBSTITUTE('&1 (&2)', Femeld.Fetext, iRetVal).
  281. LEAVE CREATEAUFTRAG.
  282. END.
  283. FIND FIRST btParameter
  284. WHERE btParameter.iStufe > tParameter.iStufe
  285. AND btParameter.cFileName = 'Auftrag:data:request:items:vessel'
  286. AND btParameter.cFieldName = 'unit' NO-ERROR.
  287. lLiterPreis = FALSE.
  288. IF AVAILABLE btParameter THEN
  289. DO:
  290. btParameter.cValue = REPLACE(btParameter.cValue, '"', '').
  291. IF btParameter.cValue = 'cl' THEN lLiterPreis = TRUE.
  292. FIND FIRST btParameter
  293. WHERE btParameter.iStufe > tParameter.iStufe
  294. AND btParameter.cFileName = 'Auftrag:data:request:items:vessel'
  295. AND btParameter.cFieldName = 'size' NO-ERROR.
  296. btParameter.cValue = REPLACE(btParameter.cValue, '"', '').
  297. iInhalt = INTEGER(btParameter.cValue).
  298. END.
  299. END.
  300. WHEN 'vessel_count' THEN
  301. DO:
  302. tParameter.cValue = REPLACE(tParameter.cValue, '"', '').
  303. FIND FIRST tAufze.
  304. ASSIGN
  305. tAufze.MBest = INTEGER(tParameter.cValue)
  306. tAufze.KGeb_Be = INTEGER(tParameter.cValue)
  307. tAufze.KGeb_Me = INTEGER(tParameter.cValue)
  308. tAufze.KGeb_Ru = 0
  309. tAufze.VGeb_Ru = 0
  310. tAufze.GGeb_Ru = 0
  311. .
  312. FIND GGebinde NO-LOCK
  313. WHERE GGebinde.Firma = tAufze.Firma
  314. AND GGebinde.Geb_Cd = tAufze.GGeb_Cd NO-ERROR.
  315. FIND VGebinde NO-LOCK
  316. WHERE VGebinde.Firma = tAufze.Firma
  317. AND VGebinde.Geb_Cd = tAufze.VGeb_Cd NO-ERROR.
  318. FIND KGebinde NO-LOCK
  319. WHERE KGebinde.Firma = tAufze.Firma
  320. AND KGebinde.Geb_Cd = tAufze.KGeb_Cd NO-ERROR.
  321. IF AVAILABLE VGebinde AND
  322. VGebinde.Inhalt > 0 THEN
  323. DO:
  324. IF INDEX(VGebinde.Bez, 'Tank' ) > 0 OR
  325. INDEX(VGebinde.Bez, 'Box' ) > 0 OR
  326. INDEX(VGebinde.Bez, 'Bidon') > 0 THEN
  327. DO:
  328. IF lLiterPreis THEN
  329. DO:
  330. tAufze.VGeb_Be = tAufze.MBest * iInhalt / KGebinde.Inhalt / VGebinde.Inhalt.
  331. tAufze.MBest = tAufze.VGeb_Be * VGebinde.Inhalt.
  332. tAufze.KGeb_Be = tAufze.VGeb_Be * VGebinde.Inhalt.
  333. tAufze.KGeb_Me = tAufze.VGeb_Be * VGebinde.Inhalt.
  334. END.
  335. END.
  336. ELSE tAufze.VGeb_Be = (tAufze.KGeb_Be - (tAufze.KGeb_Be MOD VGebinde.Inhalt)) / VGebinde.Inhalt.
  337. END.
  338. IF AVAILABLE GGebinde AND
  339. GGebinde.Inhalt > 0 THEN
  340. DO:
  341. tAufze.GGeb_Be = (tAufze.VGeb_Be - (tAufze.VGeb_Be MOD GGebinde.Inhalt)) / GGebinde.Inhalt.
  342. END.
  343. ASSIGN
  344. tAufze.VGeb_Me = tAufze.VGeb_Be
  345. tAufze.GGeb_Me = tAufze.GGeb_Be
  346. tAufze.MBest = tAufze.KGeb_Me
  347. tAufze.MGeli = tAufze.KGeb_Me
  348. .
  349. iPreisArt = DYNAMIC-FUNCTION('getPreisAufze':U, INPUT-OUTPUT htAufze) NO-ERROR.
  350. tAufze.PreisArt = (IF iPreisArt < 0 THEN 0 ELSE iPreisArt).
  351. DYNAMIC-FUNCTION('calculateZeilenTotal':U, INPUT-OUTPUT htAufze ) NO-ERROR.
  352. DYNAMIC-FUNCTION('fillArtbwFromAufze':U , INPUT-OUTPUT htAufze ) NO-ERROR.
  353. REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
  354. CREATE Aufze.
  355. BUFFER-COPY tAufze TO Aufze.
  356. RELEASE Aufze.
  357. LEAVE.
  358. END.
  359. END.
  360. OTHERWISE
  361. NEXT.
  362. END CASE.
  363. END.
  364. FIND FIRST tParameter
  365. WHERE tParameter.cFileName = 'Auftrag:data:request'
  366. AND tParameter.cField = 'message' NO-ERROR.
  367. IF AVAILABLE tParameter THEN
  368. DO:
  369. tParameter.cValue = REPLACE(tParameter.cValue, '"', '').
  370. EMPTY TEMP-TABLE tAufze.
  371. CREATE tAufze.
  372. ASSIGN
  373. tAufze.Firma = bAufko.Firma
  374. tAufze.Aufnr = bAufko.Aufnr
  375. tAufze.Pos = 0
  376. tAufze.Artnr = 0
  377. tAufze.Inhalt = 0
  378. tAufze.Jahr = 0
  379. tAufze.Bez1 = tParameter.cValue
  380. .
  381. iRetVal = DYNAMIC-FUNCTION ('fillAufze':U, INPUT-OUTPUT htAufze) NO-ERROR.
  382. FIND FIRST tAufze.
  383. REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
  384. CREATE Aufze.
  385. BUFFER-COPY tAufze TO Aufze.
  386. RELEASE Aufze.
  387. LEAVE.
  388. END.
  389. END.
  390. DYNAMIC-FUNCTION('calculateAuftragsTotal':U, bAufko.Firma, bAufko.Aufnr, OUTPUT nTotal ) NO-ERROR.
  391. opcMessage = STRING(iAufnr).
  392. lRetVal = TRUE.
  393. LEAVE.
  394. END.
  395. RETURN lRetVal.
  396. END FUNCTION.
  397. FUNCTION createParameters RETURNS LOGICAL
  398. ( ):
  399. /*------------------------------------------------------------------------------*/
  400. /* Purpose: Super Override */
  401. /* Parameters: */
  402. /* Notes: */
  403. /*------------------------------------------------------------------------------*/
  404. ASSIGN
  405. iArrayStufe = 0
  406. lArray = FALSE
  407. lArrayBeginn = FALSE.
  408. DO ii = 1 TO NUM-ENTRIES(cString, CHR(10)):
  409. cZeile = TRIM(ENTRY(ii, cString, CHR(10) )).
  410. IF cZeile = ']' OR
  411. cZeile = '],' THEN
  412. DO:
  413. lArray = FALSE.
  414. iArrayStufe = 0.
  415. IF iStufe > 0 THEN iStufe = iStufe - 1.
  416. IF iStufe > 1 THEN cFileName = cNames[iStufe].
  417. NEXT.
  418. END.
  419. IF cZeile = CHR(125) OR
  420. cZeile = '},' THEN
  421. DO:
  422. IF lArray AND
  423. iStufe = iArrayStufe THEN NEXT.
  424. IF iStufe > 0 THEN iStufe = iStufe - 1.
  425. IF iStufe > 1 THEN cFileName = cNames[iStufe].
  426. NEXT.
  427. END.
  428. iPos = INDEX(cZeile, ':').
  429. IF iPos = 0 THEN NEXT.
  430. cValue = TRIM(SUBSTRING(cZeile, iPos + 1)).
  431. IF SUBSTRING(cValue, LENGTH(cValue),01) = ',' THEN cValue = SUBSTRING(cValue,01,LENGTH(cValue) - 1).
  432. cField = TRIM(REPLACE(ENTRY(1, cZeile, ':'), '"', '')).
  433. IF cValue = '[' THEN
  434. DO:
  435. lArray = TRUE.
  436. lArrayBeginn = TRUE.
  437. iStufe = iStufe + 1.
  438. iArrayStufe = iStufe.
  439. cFileName = cField.
  440. cNames[iStufe] = cFileName.
  441. NEXT.
  442. END.
  443. IF cValue = '' OR
  444. cValue = CHR(123) THEN
  445. DO:
  446. IF lArrayBeginn THEN
  447. DO:
  448. /* iTitel = iTitel + 1.*/
  449. lArrayBeginn = FALSE.
  450. NEXT.
  451. END.
  452. iStufe = iStufe + 1.
  453. cFileName = cField.
  454. cNames[iStufe] = cFileName.
  455. NEXT.
  456. END.
  457. IF cFileName = '' THEN
  458. DO:
  459. iStufe = iStufe + 1.
  460. cFileName = 'Auftrag'.
  461. cNames[iStufe] = cFileName.
  462. /* iTitel = iTitel + 1.*/
  463. END.
  464. lArrayBeginn = FALSE.
  465. cFullName = ''.
  466. DO ix = 1 TO iStufe:
  467. cFullName = cFullName
  468. + (IF cFullName = '' THEN '' ELSE ':')
  469. + cNames[ix].
  470. END.
  471. iZeile = iZeile + 1.
  472. CREATE tParameter.
  473. ASSIGN
  474. tParameter.iStufe = iZeile
  475. tParameter.cFileName = cFullName
  476. tParameter.cFieldName = cField
  477. tParameter.cValue = cValue.
  478. END.
  479. opcMessage = ''.
  480. oplRetVal = TRUE.
  481. OUTPUT TO 'C:\LogFiles\YourBarMate\tParameter.csv' APPEND NO-MAP NO-CONVERT.
  482. PUT CONTROL 'Parameter ' STRING(TODAY,'99.99.9999') ' -> ' STRING(TIME,'HH:MM:SS') CHR(10).
  483. FOR EACH tParameter BY tParameter.iStufe BY tParameter.cFileName BY tParameter.cFieldName:
  484. EXPORT DELIMITER ';' tParameter.
  485. END.
  486. PUT CONTROL CHR(10) CHR(10).
  487. OUTPUT CLOSE.
  488. END FUNCTION.