Hi, i need your help with progress c# please

poplas

New Member
Please could by anyone help me and write me how i can write and do it or fix it. Thank you for any advice.

my homework is follow:
1. input parameter R_Adressen to Temp-Table for firmenummer / i dont know how i make it./
2. use buffer for R_Adressen, but no directly
3. Temp-Table send to displey /disp/ but with a sort so by nummer
5. for input or load data to Temp-Table use procedure p-Fetch Data


i try write this, but i am sure is too bad:

DEF INPUT PARAMETER R_Adressen AS INT NO-UNDO.
DEF PARAMETER BUFFER lbuf-adressen FOR R_Adressen.


DEF VAR lv-Firma AS INTEGER NO-UNDO.
DEF BUFFER lbuf-sorte FOR R_sorte.


DEF TEMP-TABLE R_Adressen NO-UNDO
FIELDS nummer AS INT
FIELDS sorte AS CHAR
FIELD name AS CHAR FORMAT "X(27)" .


FOR EACH R_Adressen NO-LOCK:
DISPLAY R_Adressen.
END.
 

Cringer

ProgressTalk.com Moderator
Staff member
I'm afraid I don't understand your requirements as they are completely without context.

By the way, were the requirements written in a different language? I think something might have been lost in translation.
 

poplas

New Member
Hi, so i am student only... so maybe context is bad. Progres version : 10.2A, os-windows.

1. input tables R_Adressen to Temp-Table for firmenummer = 60 - R_Adressen is tables in databases Lesson1
2. use buffer for R_Adressen, but no directly
3. preview Temp-Table via displey
sort by nummer

5. for load data to Temp-Table use procedure p-Fetch Data



for examples i find one program with same lesson but higher level maybe can help us:
DEFINE VARIABLE myVersion AS CHARACTER INIT "2.8a" NO-UNDO.
{recydef.i}
{global.i}
{rcy0160.i}
{rcypkto0.i} /* Tabeldef */
{faz.i}
{rcypkto1.i} /* TabelFill */


DEF INPUT PARAMETER ip-Parameter AS CHAR NO-UNDO.
DEF INPUT PARAMETER ip-pos_q AS CHAR NO-UNDO.
DEF INPUT PARAMETER ip-stat_q AS CHAR NO-UNDO.
DEF INPUT-OUTPUT PARAMETER TABLE FOR tt-WB.

DEF SHARED BUFFER lbuf-R_WB_POS FOR R_WB_POS.
DEF SHARED BUFFER lbuf-R_Stat FOR R_Stat.


DEF SHARED QUERY lq-pos FOR lbuf-R_WB_POS.
DEF SHARED QUERY lq-stat FOR lbuf-R_Stat.
DEFINE BUFFER tt-WBB FOR tt-WB.
DEF VAR lv-Firmennr LIKE R_WB_POS.firmennr NO-UNDO.
DEF VAR lv-MgTyp AS INTEGER NO-UNDO.
DEFINE VARIABLE lv-Auswahl AS INTEGER NO-UNDO.
DEFINE VARIABLE lv-ListType AS INTEGER NO-UNDO.
DEFINE VARIABLE lv-DateType AS INTEGER NO-UNDO.
DEFINE VARIABLE lv-KSB AS CHARACTER NO-UNDO.
DEFINE VARIABLE lv-KalkFracht0 AS LOG NO-UNDO INIT NO.
DEF VAR dMenge AS DECIMAL NO-UNDO.
DEF VAR dBetrag AS DECIMAL NO-UNDO.
DEF VAR dWeigerung AS DECIMAL NO-UNDO.
DEF VAR dFracht AS DECIMAL NO-UNDO.
DEF VAR dKalkFracht AS DECIMAL NO-UNDO.
DEF VAR dErloes AS DECIMAL NO-UNDO.
DEFINE VARIABLE sTmp AS CHARACTER NO-UNDO.
DEFINE VARIABLE iDropCount AS INTEGER INIT 0 NO-UNDO.
DEFINE VARIABLE iCreateCount AS INTEGER INIT 0 NO-UNDO.
DEFINE VARIABLE sFawLog AS CHARACTER INIT "rcy0160a.log" NO-UNDO.
DEF VAR lOK AS LOG INIT NO NO-UNDO.
DEF VAR lv-BelegNr AS CHAR NO-UNDO INIT "".
DEF VAR lv-Waggon AS CHAR NO-UNDO INIT "".
DEF VAR lv-Type1 AS INT INIT 3 NO-UNDO. /* R_WB_Kopf.zkz_9: 0=Aufwendung;1=Erloese */ .
DEF VAR lv-Anfstelle AS LOG INIT NO NO-UNDO.
DEF VAR lv-Container AS CHAR NO-UNDO INIT "".
DEF VAR lv-Nk AS INTEGER NO-UNDO.
DEF VAR lv-AktuellKurs AS LOG NO-UNDO INIT NO.




DEF TEMP-TABLE lt-SoGrSp NO-UNDO
FIELD Nummer AS INTEGER
FIELD Bez AS CHAR
FIELD Sparte AS INTEGER
INDEX Nummer
Nummer.


DEF TEMP-TABLE tt-Adr NO-UNDO
FIELD Nummer LIKE R_Adressen.Nummer
FIELD Namek LIKE R_Adressen.Name1
FIELD OK AS LOGICAL
INDEX Nummer Nummer.


DEF TEMP-TABLE ttSpedition NO-UNDO /* Frachtkostenarten R_Tabellen.tb_art = 09*/
FIELD nummer LIKE R_Tabellen.tb_schl /* int */
FIELD sname LIKE R_Adressen.name1
FIELD perskonto LIKE R_Adressen.nummer
FIELD vkzweig AS INTEGER
INDEX idx-Nummer IS UNIQUE nummer.


DEF TEMP-TABLE ttFkostenart NO-UNDO /* Frachtkostenarten R_Tabellen.tb_art = 11*/
FIELD nummer LIKE R_Tabellen.tb_schl /* int */
FIELD sname LIKE R_Tabellen.tb_bez
INDEX idx-Nummer IS UNIQUE nummer.


DEF TEMP-TABLE ttAnfstelle NO-UNDO
FIELD nummer LIKE M_Anfahrstelle.numme
FIELD name1 LIKE M_Anfahrstelle.name1
INDEX indx-Nummer nummer.


DEFINE TEMP-TABLE ttAbt NO-UNDO
FIELD nummer AS INTEGER
FIELD NAME AS CHARACTER
INDEX nummer nummer.


/* Für Fortschrittsanzeige */
DEFINE VARIABLE lv-faz_handle AS HANDLE NO-UNDO.
DEFINE VARIABLE lv-faz_count AS INTEGER NO-UNDO.
DEFINE VARIABLE lv-faz_mod AS INTEGER NO-UNDO.
DEFINE VARIABLE lv-faz_max AS INTEGER NO-UNDO.
DEFINE VARIABLE lv-leave AS LOGICAL NO-UNDO INIT FALSE.


DEFINE RECTANGLE faz_rect EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 50 BY 3.


DEFINE FRAME lf-faz
faz_rect AT ROW 1.25 COL 2
WITH 1 DOWN KEEP-TAB-ORDER OVERLAY
NO-LABELS SIDE-LABELS NO-UNDERLINE THREE-D
VIEW-AS DIALOG-BOX
CENTERED ROW 7
SIZE 53 BY 5
TITLE "Daten werden ermittelt" FONT 21.

RUN chglng.p(INPUT FRAME lf-faz:HANDLE).


/****************************************************************************/
/* Functions */
/****************************************************************************/


FUNCTION FN_DayEx RETURNS DECIMAL (INPUT pv-ip_DS AS CHARACTER, INPUT pv-ip_KS AS DECIMAL,INPUT pv-ip_ekvk AS INT) FORWARD.


FUNCTION f-GetAnfStelle RETURN CHAR
(INPUT ip-anf_stelle AS INT):
FIND FIRST ttAnfstelle WHERE ttAnfstelle.nummer = ip-anf_stelle NO-ERROR.
IF AVAIL ttAnfstelle THEN RETURN ttAnfstelle.name1.
FOR FIRST M_Anfahrstelle FIELDS(firmennr nummer name1)
WHERE M_Anfahrstelle.firmennr = lv-firmennr AND
M_Anfahrstelle.nummer = ip-anf_stelle USE-INDEX nummer NO-LOCK:
CREATE ttAnfstelle.
ttAnfstelle.nummer = M_Anfahrstelle.nummer.
ttAnfstelle.name1 = M_Anfahrstelle.name1.
RETURN M_Anfahrstelle.name1.
END.
RETURN "?".
END FUNCTION.




FUNCTION f-GetFahrt RETURN INT
(BUFFER pbuf-WBP FOR R_WB_Pos):


DEF BUFFER pbuf-fa FOR M_Fahrauftrag-pos.
DEF VAR pv-fahrt AS INT NO-UNDO INIT 0.


IF pbuf-wbp.fanr = "" OR pbuf-wbp.fanr = ? THEN
RETURN 0.
/* Fahrtennr. ermitteln */
FOR FIRST pbuf-fa FIELDS (firmennr nummer fahrt) NO-LOCK
WHERE pbuf-fa.firmennr = pbuf-wbp.firmennr
AND pbuf-fa.nummer = INT(ENTRY(1,pbuf-wbp.fanr, "-")):
pv-fahrt = pbuf-fa.fahrt.
END.
IF pv-fahrt = ? THEN pv-fahrt = 0.


RETURN pv-fahrt.
END FUNCTION.




FUNCTION f-GetAbt RETURNS CHARACTER
(INPUT pv-ip_abt AS INTEGER):

DEFINE BUFFER pbuf-abt FOR R_Abtstamm.

FIND FIRST ttabt NO-LOCK
WHERE ttabt.nummer = pv-ip_abt NO-ERROR.
IF AVAILABLE ttabt THEN
RETURN ttabt.name.

FIND FIRST pbuf-abt NO-LOCK
WHERE pbuf-abt.firmennr = lv-firmennr
AND pbuf-abt.nummer = pv-ip_abt
USE-INDEX nummer NO-ERROR.
IF AVAILABLE pbuf-abt THEN
DO:
CREATE ttabt.
BUFFER-COPY pbuf-abt TO ttabt.
RETURN ttabt.name.
END.

RETURN "".
END FUNCTION.




FUNCTION FnGetText RETURNS CHAR
(INPUT pv-ip_txt AS CHAR):
RUN GET_text.p(pv-ip_txt,gv-language,OUTPUT pv-ip_txt).
RETURN pv-ip_txt.
END FUNCTION.

/****************************************************************************/
/* Events */
/****************************************************************************/


/* Exit point */
ON WINDOW-CLOSE OF FRAME lf-faz DO:
DEFINE VARIABLE pv-i AS INTEGER NO-UNDO.
DEFINE VARIABLE pv-ok AS LOGICAL NO-UNDO.


pv-ok = CURRENT-WINDOW:LOAD-MOUSE-POINTER("ARROW").
PROCESS EVENTS.

RUN dlgsub.p(INPUT 937,INPUT FnGetText("Ergebnisse sind nicht vollständig."),INPUT "OK",OUTPUT pv-ok).
lv-leave = TRUE.


pv-ok = CURRENT-WINDOW:LOAD-MOUSE-POINTER("WAIT").
PROCESS EVENTS.
END.


/****************************************************************************/
/* Main */
/****************************************************************************/
RUN p-mk_PktoSB_Init. /* in rcypkto1.i */


ASSIGN
lv-MgTyp = INTEGER(ENTRY( 1,ip-Parameter,CHR(1)))
lv-firmennr = INTEGER(ENTRY( 2,ip-Parameter,CHR(1)))
lv-Auswahl = INTEGER(ENTRY( 3,ip-Parameter,CHR(1)))
lv-ListType = INTEGER(ENTRY( 4,ip-Parameter,CHR(1)))
lv-KSB = ENTRY(5,ip-Parameter,CHR(1))
lv-DateType = INTEGER(ENTRY( 6,ip-Parameter,CHR(1)))
lv-BelegNr = ENTRY(10,ip-Parameter,CHR(1))
lv-Type1 = INT(ENTRY(13,ip-Parameter,CHR(1))) /* R_WB_Kopf.zkz_9: 0=Aufwendung;1=Erloese */
lv-Anfstelle = ENTRY(14,ip-Parameter,CHR(1)) = "YES"
lv-Container = ENTRY(15,ip-Parameter,CHR(1)) WHEN NUM-ENTRIES(ip-Parameter,CHR(1)) >= 15
lv-Container = ENTRY(15,ip-Parameter,CHR(1)) WHEN NUM-ENTRIES(ip-Parameter,CHR(1)) >= 15
lv-KalkFracht0 = ENTRY(16,ip-Parameter,CHR(1)) = "Y" WHEN NUM-ENTRIES(ip-Parameter,CHR(1)) >= 16
lv-AktuellKurs = ENTRY(17,ip-Parameter,CHR(1)) = "Y" WHEN NUM-ENTRIES(ip-Parameter,CHR(1)) >= 17
lv-Waggon = ENTRY(18,ip-Parameter,CHR(1))
.


iclv-SB_EKVK = lv-KSB
.




FIND recypar NO-LOCK
WHERE recypar.firmennr=lv-firmennr NO-ERROR.


lv-NK = Recypar.par-int[45].
IF lv-Nk < 2 OR lv-Nk = ? THEN lv-Nk = 2.


FOR EACH tt-WB:
DELETE tt-WB.
END.

RUN pFillPreChecker.


/*** Unverbuchte ***/
IF ip-pos_q <> "" AND (lv-Auswahl EQ 2 OR lv-Auswahl EQ 3) THEN
RUN p-statistic_uvb.


/*** Verbuchte ***
im Auftrag von BK: Wenn "kalk. und effektive Fracht = 0" ausgewählt ist,nur die ungebuchten Frachten */
IF lv-KalkFracht0 = FALSE THEN
IF lv-Auswahl EQ 1 OR lv-Auswahl EQ 3 THEN
RUN p-statistic_vb.


/****************************************************************************/
/* Procedures */
/****************************************************************************/
PROCEDURE p-statistic_uvb:
DEF VAR pv-Mng AS DECIMAL NO-UNDO.
DEFINE VARIABLE pv-Abtname AS CHAR INIT "" NO-UNDO.
DEF VAR pv-AbName AS CHAR NO-UNDO.
DEF VAR pv-LName AS CHAR NO-UNDO.
DEF VAR pv-LNummer AS INT NO-UNDO.
DEF VAR pv-container AS CHAR NO-UNDO.
DEF VAR pv-kalkfracht AS DEC NO-UNDO.
DEF VAR pv-effektfracht AS DEC NO-UNDO.
DEF VAR pv-devsymb AS CHAR NO-UNDO.
DEF VAR pv-devkurs AS DEC NO-UNDO.


DEF BUFFER pbuf-DS FOR R_Waehrung.

QUERY lq-pos:QUERY-PREPARE(ip-pos_q).
QUERY lq-pos:QUERY-OPEN().
PROCESS EVENTS.
QUERY lq-pos:GET-FIRST(NO-LOCK).

FRAME lf-faz:TITLE = FnGetText("unverbuchte Datensätze werden gelesen").
VIEW FRAME lf-faz.
lv-faz_count = 0.
lv-faz_max = QUERY lq-pos:NUM-RESULTS.
IF lv-faz_max = ? THEN
lv-faz_max = 0.
lv-faz_mod = lv-faz_max / 50.
IF lv-faz_mod <= 0 THEN
lv-faz_mod = 1.


lv-leave = FALSE.
RUN p-Init_Faz(FRAME lf-faz:HANDLE,?,2,lv-faz_max,1.1,"%",OUTPUT lv-faz_handle).

DO WHILE NOT QUERY lq-pos:QUERY-OFF-END AND lv-leave = FALSE:
lOK = TRUE.
/* Container filtern */
IF lv-Container <> "" THEN
RUN p-chk-container(lbuf-R_WB_POS.fkkey,lv-container, OUTPUT lOK).


IF lOK THEN DO:
RUN p-mk_sorten_info(lbuf-R_WB_POS.Firmennr,lbuf-R_WB_POS.sonr).
RUN p-mk_PktoSB(lbuf-R_WB_POS.perskonto,
lbuf-R_WB_POS.ekvk,
lbuf-R_WB_POS.Abteilung,
lt-SoGrSp.Sparte,OUTPUT lOK).
END.


IF NOT lOK THEN DO:

lv-faz_count = lv-faz_count + 1.
IF lv-faz_count MOD lv-faz_mod = 0 THEN
RUN p-FILL_FAZ(lv-faz_handle,lv-faz_count,lv-faz_max).

QUERY lq-pos:GET-NEXT.
NEXT.
END.


FIND FIRST R_WB_Kopf NO-LOCK
WHERE R_WB_Kopf.firmennr = lbuf-R_WB_Pos.firmennr AND
R_WB_Kopf.perskonto = lbuf-R_WB_Pos.Perskonto AND
R_WB_Kopf.type = lbuf-R_WB_Pos.type AND
R_WB_Kopf.ekvk = {&WB_EK} AND
R_WB_Kopf.anr = lbuf-R_WB_Pos.anr NO-ERROR.


/* Belegenummer filtern */
IF lv-BelegNr <> "" THEN
DO:
IF NOT AVAILABLE R_WB_Kopf THEN
lOK = NO.
ELSE
IF lv-BelegNr <> R_WB_Kopf.beleg_nr AND lv-BelegNr <> R_WB_Kopf.fbeleg THEN
lOK = NO.
END.


/* Waggon filtern */
IF lv-Waggon <> "" THEN
DO:
IF NOT AVAILABLE lbuf-R_WB_POS THEN DO:
lOK = NO.
END.
ELSE DO:
IF lv-Waggon <> lbuf-R_WB_POS.Waggonnr AND INDEX(lbuf-R_WB_POS.Waggonnr,lv-Waggon) = 0 THEN
lOK = NO.
END.
END.

IF lv-Type1 < 2 AND lOK THEN DO: /* Aufwendungen/Erloese filtern */
/* R_WB_Kopf.zkz_9: 0=Aufwendung;1=Erloese;2=Alles */ .
IF NOT AVAIL R_WB_Kopf THEN lOK = NO.
ELSE lOK = R_WB_Kopf.zkz_9 = lv-Type1.
END.


pv-kalkFracht = lbuf-R_WB_Pos.pf_3.
pv-effektfracht = IF lbuf-R_WB_Pos.Anr = 0 THEN ? ELSE lbuf-R_WB_Pos.pf_5.


IF lv-KalkFracht0 THEN /* im Auftrag von BK: nur die Frachten, bei denen die kalk. und effektive Fracht = 0 ist */
IF (pv-kalkFracht = 0 or pv-kalkFracht = ?) AND (pv-effektfracht = 0 or pv-effektfracht = ?) THEN.
ELSE lOK = NO.


OUTPUT CLOSE.
IF NOT lOK THEN DO:

lv-faz_count = lv-faz_count + 1.
IF lv-faz_count MOD lv-faz_mod = 0 THEN
RUN p-FILL_FAZ(lv-faz_handle,lv-faz_count,lv-faz_max).

QUERY lq-pos:GET-NEXT.
NEXT.
END.

pv-devsymb = lbuf-R_WB_Pos.frachtbasis.


IF lbuf-R_WB_Pos.Anr <> 0 AND AVAIL R_WB_Kopf THEN
pv-devsymb = R_WB_Kopf.dev_symb1.


IF pv-devsymb <> "" AND lv-AktuellKurs THEN DO:
FIND FIRST pbuf-DS NO-LOCK
WHERE pbuf-DS.Firmennr = lbuf-R_WB_Pos.firmennr AND
pbuf-DS.Symbol = pv-devsymb NO-ERROR.
IF AVAILABLE pbuf-DS THEN DO:
pv-devkurs = FN_DayEx(pbuf-DS.symbol,pbuf-DS.Kurs,lbuf-R_WB_Pos.ekvk).
IF pv-devkurs = 0 OR pv-devkurs = ? THEN
pv-devkurs = pbuf-DS.Kurs.


pv-kalkFracht = ROUND(lbuf-R_WB_Pos.Dev_wert2 * pv-devkurs / pbuf-DS.faktor,lv-NK).
pv-effektfracht = ROUND(lbuf-R_WB_Pos.Dev_wert1 * pv-devkurs / pbuf-DS.faktor,lv-NK).
END.
END.


RUN p-mk_Pkto_info(lbuf-R_WB_pos.Firmennr, lbuf-R_WB_pos.vkgebiet, lbuf-R_WB_Pos.ekvk).
pv-AbName = tt-Adr.NameK.
pv-LName = "?".
pv-LNummer = 0.
IF AVAIL R_WB_Kopf THEN DO: /* Fracht wurde zugeordnet */
RUN p-mk_Pkto_info(lbuf-R_WB_pos.Firmennr, lbuf-R_WB_pos.perskonto, lbuf-R_WB_Pos.ekvk).
pv-LName = tt-Adr.NameK.
pv-LNummer = lbuf-R_WB_pos.perskonto.
END.
ELSE DO: /* Fracht ist nicht zugeordnet */
FIND FIRST ttSpedition WHERE ttSpedition.nummer EQ lbuf-R_WB_pos.spednr NO-LOCK NO-ERROR.
IF AVAIL ttSpedition THEN DO:
RUN p-mk_Pkto_info(lbuf-R_WB_pos.Firmennr, ttSpedition.perskonto, lbuf-R_WB_Pos.ekvk).
pv-LName = tt-Adr.NameK + " (" + STRING(lbuf-R_WB_pos.perskonto) + ")".
pv-LNummer = tt-Adr.nummer.
END.
END.
/* Now Check for Spedition in selection !!! If Sped NOT in selection then iNoDelete = 0 */
FIND FIRST ttSpedition WHERE ttSpedition.nummer EQ lbuf-R_WB_Pos.spednr NO-LOCK NO-ERROR.
/* Now Check for Frachtkostenart poskz_1 in selection !!! */
FIND FIRST ttFkostenart WHERE ttFkostenart.nummer EQ lbuf-R_WB_Pos.poskz_1 NO-LOCK NO-ERROR.
IF AVAILABLE(ttSpedition) AND AVAILABLE(ttFkostenart) AND tt-Adr.OK THEN DO:

pv-abtname = f-GetAbt(lbuf-R_WB_Pos.abteilung).


/* RUN p-mk_sorten_info(lbuf-R_WB_POS.Firmennr,lbuf-R_WB_POS.sonr). */

pv-Mng = IF lv-MgTyp EQ 1 THEN lbuf-R_WB_Pos.lief_menge ELSE
(IF lbuf-R_WB_Pos.fmenge = 0 THEN lbuf-R_WB_Pos.lief_menge ELSE lbuf-R_WB_Pos.fmenge).

IF lv-ListType EQ 4 /* Abteilung Summe */ OR lv-ListType EQ 6 /* Personenkonten Summe */ THEN
IF CAN-FIND(FIRST tt-WBB NO-LOCK WHERE tt-WBB.fkkey EQ lbuf-R_WB_Pos.fkkey) THEN
pv-Mng = 0.



CREATE tt-WB.
ASSIGN
tt-WB.fkkey = lbuf-R_WB_Pos.fkkey
tt-WB.Waggonnr = lbuf-R_WB_Pos.Waggonnr
tt-WB.belegnr = (IF AVAIL R_WB_Kopf THEN (IF R_WB_Kopf.fbeleg <> "" THEN R_WB_Kopf.fbeleg ELSE R_WB_Kopf.beleg_nr) ELSE "")
tt-WB.Abnehmer = lbuf-R_WB_Pos.vkgebiet
tt-WB.AbName = pv-AbName
tt-WB.Lieferant = pv-LNummer
tt-WB.Lname = pv-LName /* tt-Adr.Namek = R_adressen.Name1 */
tt-WB.spednr = lbuf-R_WB_Pos.spednr
tt-WB.spedname = ttSpedition.sname
tt-WB.fkart = ttFkostenart.nummer
tt-WB.fkartbez = ttFkostenart.sname
tt-WB.vzweig = ttSpedition.vkzweig
tt-WB.Sonr = lbuf-R_WB_Pos.Sonr
tt-WB.Sobez = lt-SoGrSp.bez
tt-WB.sparte = lt-SoGrSp.Sparte
tt-WB.ldatum = lbuf-R_WB_Pos.Lief_dat
tt-WB.lMonth = STRING(YEAR(lbuf-R_WB_Pos.Lief_dat)) + STRING(MONTH(lbuf-R_WB_Pos.Lief_dat),"99")
tt-WB.abteilung = lbuf-R_WB_Pos.Abteilung
tt-WB.abtBezeich = pv-Abtname
tt-WB.kalkFracht = pv-kalkfracht
tt-WB.kosten = pv-effektfracht
tt-WB.lmenge = lbuf-R_WB_Pos.lief_menge
tt-WB.fmenge = lbuf-R_WB_Pos.fmenge
tt-WB.ekvk = lbuf-R_WB_Pos.ekvk
tt-WB.type1 = R_WB_Kopf.zkz_9 WHEN AVAIL R_WB_Kopf
tt-WB.Anf_stelle = lbuf-R_WB_Pos.Anf_stelle
tt-WB.wiegenr = lbuf-R_WB_Pos.wiegenr
tt-WB.lager = lbuf-R_WB_Pos.lager
iCreateCount = iCreateCount + 1.
IF lv-Anfstelle THEN
tt-WB.Anf_stelle_bez = f-GetAnfStelle(lbuf-R_WB_Pos.Anf_stelle).
tt-WB.Fahrt = f-GetFahrt(BUFFER lbuf-R_WB_Pos).


IF lbuf-R_WB_Pos.fkkey <> 0 THEN
RUN p-get-mengen(INPUT lbuf-R_WB_Pos.fkkey, OUTPUT tt-WB.lmenge, OUTPUT tt-WB.fmenge).


END.
ELSE
iDropCount = iDropCount + 1.

lv-faz_count = lv-faz_count + 1.
IF lv-faz_count MOD lv-faz_mod = 0 THEN
RUN p-FILL_FAZ(lv-faz_handle,lv-faz_count,lv-faz_max).

QUERY lq-pos:GET-NEXT.
END.

HIDE FRAME lf-faz.
RUN p-kill_FAZ(lv-faz_handle).
END PROCEDURE /* p-statistic_uvb */.


/*----------------------------------------------------------------------------*/


PROCEDURE p-statistic_vb:
DEF VAR pv-Mng AS DECIMAL NO-UNDO.
DEFINE VARIABLE pv-Abtname AS CHAR INIT "" NO-UNDO.
DEFINE VARIABLE dtStat AS DATE NO-UNDO.
DEF VAR pv-AbName AS CHAR NO-UNDO.
DEF VAR pv-LName AS CHAR NO-UNDO.


/*
DEFINE VARIABLE lv-Konto AS INTEGER NO-UNDO.
DEFINE VARIABLE lv-Weight LIKE R_Stat.lief_menge NO-UNDO.
*/

QUERY lq-stat:QUERY-PREPARE(ip-stat_q).
QUERY lq-stat:QUERY-OPEN().
PROCESS EVENTS.
QUERY lq-stat:GET-FIRST(NO-LOCK).

FRAME lf-faz:TITLE = FnGetText("verbuchte Datensätze werden gelesen").
VIEW FRAME lf-faz.
lv-faz_count = 0.
lv-faz_max = QUERY lq-stat:NUM-RESULTS.
IF lv-faz_max = ? THEN
lv-faz_max = 0.
lv-faz_mod = lv-faz_max / 50.
IF lv-faz_mod <= 0 THEN
lv-faz_mod = 1.


lv-leave = FALSE.
RUN p-Init_Faz(FRAME lf-faz:HANDLE,?,2,lv-faz_max,1.1,"%",OUTPUT lv-faz_handle).

DO WHILE NOT QUERY lq-stat:QUERY-OFF-END AND lv-leave = FALSE:
lOK = TRUE.




/* Container filtern */
IF lv-Container <> "" THEN
RUN p-chk-container(lbuf-R_Stat.fkkey,lv-container, OUTPUT lOK).


/* Waggon filtern */
IF lv-Waggon <> "" THEN
DO:
IF NOT AVAILABLE lbuf-R_Stat THEN DO:
lOK = NO.
END.
ELSE DO:
IF lv-Waggon <> lbuf-R_Stat.Waggonnr AND INDEX(lbuf-R_Stat.Waggonnr,lv-Waggon) = 0 THEN
lOK = NO.
END.
END.


IF lOK THEN DO:
RUN p-mk_sorten_info(lbuf-R_Stat.Firmennr,lbuf-R_Stat.sonr).
RUN p-mk_PktoSB(lbuf-R_Stat.perskonto,
lbuf-R_Stat.ekvk,
lbuf-R_Stat.Abteilung,
lt-SoGrSp.Sparte,OUTPUT lOK).
IF lv-BelegNr <> "" THEN
IF lv-BelegNr <> lbuf-R_Stat.beleg_nr THEN lOK = NO.
END.


IF NOT lOK THEN DO:
QUERY lq-stat:GET-NEXT.
NEXT.
END.


/* Get Konto */
/*
lv-Konto = 0.

IF lbuf-R_Stat.fkkey NE 0 THEN DO:
FOR FIRST R_WB_pos FIELDS(Firmennr perskonto Fkkey type fmenge lief_menge) NO-LOCK
WHERE (R_WB_pos.firmennr = lv-firmennr
AND R_WB_pos.Fkkey = lbuf-R_Stat.fkkey
AND R_WB_pos.type = {&WB_NORMAL}) OR
(R_WB_pos.firmennr = lv-firmennr
AND R_WB_pos.Fkkey = lbuf-R_Stat.fkkey
AND R_WB_pos.type ={&WB_ZUAB}):
ASSIGN
lv-Konto = R_WB_Pos.perskonto
lv-Weight = IF lv-MgTyp EQ 1 THEN R_WB_pos.lief_menge ELSE
(IF R_WB_pos.fmenge = 0 THEN R_WB_pos.lief_menge ELSE R_WB_pos.fmenge)
.
END.
IF lv-Konto EQ 0 THEN
FOR FIRST R_Stat FIELDS(Firmennr perskonto Fkkey type fmenge lief_menge) NO-LOCK
WHERE (R_Stat.firmennr = lv-firmennr
AND R_Stat.Fkkey = lbuf-R_Stat.fkkey
AND R_Stat.type ={&WB_NORMAL}) OR
(R_Stat.firmennr = lv-firmennr
AND R_Stat.Fkkey = lbuf-R_Stat.fkkey
AND R_Stat.type ={&WB_ZUAB}):
ASSIGN
lv-Konto = R_Stat.perskonto
lv-Weight = IF lv-MgTyp EQ 1 THEN R_Stat.lief_menge ELSE
(IF R_Stat.fmenge = 0 THEN R_Stat.lief_menge ELSE R_Stat.fmenge)
.
END.
END. IF pv-ip_Fkkey <> 0 */


RUN p-mk_Pkto_info(lbuf-R_Stat.Firmennr, lbuf-R_Stat.vkgebiet, lbuf-R_Stat.ekvk).
pv-AbName = tt-Adr.Namek.
RUN p-mk_Pkto_info(lbuf-R_Stat.Firmennr, lbuf-R_Stat.perskonto, lbuf-R_Stat.ekvk).
pv-LName = tt-Adr.Namek.

/* Now Check for Spedition in selection !!! If Sped NOT in selection then iNoDelete = 0 */
FIND FIRST ttSpedition WHERE ttSpedition.nummer EQ lbuf-R_stat.spednr NO-LOCK NO-ERROR.
/* Now Check for Frachtkostenart poskz_1 in selection !!! */
FIND FIRST ttFkostenart WHERE ttFkostenart.nummer EQ lbuf-R_stat.kostenfeld_3 NO-LOCK NO-ERROR.
IF AVAILABLE(ttSpedition) AND AVAILABLE(ttFkostenart) AND tt-Adr.OK THEN DO:

pv-abtname = f-GetAbt(lbuf-R_Stat.abteilung).

/* RUN p-mk_sorten_info(lbuf-R_Stat.Firmennr,lbuf-R_Stat.sonr). */


pv-Mng=IF lv-MgTyp=1 THEN lbuf-R_Stat.Lief_menge ELSE
(IF lbuf-R_Stat.fmenge = 0 THEN lbuf-R_Stat.Lief_menge ELSE lbuf-R_Stat.fmenge).

IF lv-ListType EQ 4 /* Abteilung Summe */ OR lv-ListType EQ 6 /* Personenkonten Summe */ THEN
IF CAN-FIND(FIRST tt-WBB NO-LOCK WHERE tt-WBB.fkkey EQ lbuf-R_stat.fkkey) THEN
pv-Mng = 0.

dtStat = IF lv-DateType EQ 2 THEN lbuf-R_stat.Lief_dat ELSE lbuf-R_stat.beleg_datum.
CREATE tt-WB.
ASSIGN
tt-WB.fkkey = lbuf-R_stat.fkkey
tt-WB.Waggonnr = lbuf-R_stat.Waggonnr
tt-WB.belegnr = lbuf-R_stat.beleg_nr
tt-WB.Abnehmer = lbuf-R_stat.vkgebiet
tt-WB.AbName = pv-Abname /* R_adressen.Name1 */
tt-WB.Lieferant = lbuf-R_stat.perskonto /* lv-Konto */
tt-WB.Lname = pv-LName /* R_adressen.Name1 */
tt-WB.spednr = lbuf-R_stat.spednr
tt-WB.spedname = ttSpedition.sname
tt-WB.fkart = ttFkostenart.nummer
tt-WB.fkartbez = ttFkostenart.sname
tt-WB.vzweig = ttSpedition.vkzweig
tt-WB.Sonr = lbuf-R_stat.SOnr
tt-WB.Sobez = lt-SoGrSp.bez
tt-WB.sparte = lt-SoGrSp.Sparte
tt-WB.ldatum = dtStat
tt-WB.lMonth = STRING(YEAR(dtStat)) + STRING(MONTH(dtStat),"99")
tt-WB.abteilung = lbuf-R_stat.Abteilung
tt-WB.abtbezeich = pv-Abtname
tt-WB.lmenge = lbuf-R_stat.lief_menge
tt-WB.fmenge = lbuf-R_stat.fmenge
tt-WB.kalkFracht = lbuf-R_stat.frachtkosten
tt-WB.kosten = lbuf-R_stat.pos_wert
tt-WB.ekvk = lbuf-R_Stat.ekvk
tt-WB.Anf_stelle = lbuf-R_Stat.Anf_stelle
tt-WB.wiegenr = lbuf-R_Stat.wiegenr
tt-WB.lager = lbuf-R_Stat.lager
iCreateCount = iCreateCount + 1.
IF lv-Anfstelle THEN
tt-WB.Anf_stelle_bez = f-GetAnfStelle(lbuf-R_Stat.Anf_stelle).


IF lbuf-R_Stat.fkkey <> 0 THEN
RUN p-get-mengen(INPUT lbuf-R_Stat.fkkey, OUTPUT tt-WB.lmenge, OUTPUT tt-WB.fmenge).


END.
ELSE
iDropCount = iDropCount + 1.

lv-faz_count = lv-faz_count + 1.
IF lv-faz_count MOD lv-faz_mod = 0 THEN
RUN p-FILL_FAZ(lv-faz_handle,lv-faz_count,lv-faz_max).

QUERY lq-stat:GET-NEXT.
END.

HIDE FRAME lf-faz.
RUN p-kill_FAZ(lv-faz_handle).
END PROCEDURE /* p-statistic_vb */.


/*----------------------------------------------------------------------------*/


PROCEDURE p-mk_sorten_info:
DEFINE INPUT PARAMETER pv-ip_Firma AS INTEGER NO-UNDO.
DEFINE INPUT PARAMETER pv-ip_Sonr AS INTEGER NO-UNDO.


FIND FIRST lt-SoGrSp WHERE lt-soGrSp.Nummer=pv-ip_Sonr NO-ERROR.
IF AVAILABLE lt-soGrSp THEN LEAVE.
ELSE DO:
CREATE lt-SoGrSp.
ASSIGN
lt-SoGrSp.Nummer =pv-ip_sonr
lt-SoGrSp.Bez ="?"
lt-SoGrSp.Sparte = 1.
FOR FIRST R_Sorte FIELDS(Firmennr Nummer Sparte Sklasse Sorte_Von Bemerkung Me) NO-LOCK
WHERE R_Sorte.firmennr=pv-ip_Firma AND R_Sorte.nummer =pv-ip_Sonr:
ASSIGN
lt-SoGrSp.Bez =ENTRY(1,R_Sorte.bemerkung,CHR(10))
lt-SoGrSp.Sparte = (IF R_Sorte.Sparte=? THEN 1 ELSE R_Sorte.Sparte) .
END.
END.


END PROCEDURE. /* p-mk_sorten_info */


/*----------------------------------------------------------------------------*/
PROCEDURE p-mk_Pkto_info:
DEFINE INPUT PARAMETER pv-ip_Firma AS INTEGER NO-UNDO.
DEFINE INPUT PARAMETER pv-ip_Pnr AS INTEGER NO-UNDO.
DEFINE INPUT PARAMETER pv-ip_Ekvk AS INTEGER NO-UNDO.


DEFINE BUFFER bAdr FOR R_Adressen.
DEFINE VARIABLE pv-OK AS LOGICAL INIT FALSE NO-UNDO.

FIND FIRST tt-Adr WHERE tt-Adr.Nummer = pv-ip_Pnr NO-ERROR.
IF AVAILABLE tt-Adr THEN LEAVE.


FOR FIRST bAdr FIELDS(Firmennr Nummer name1 Sb_ek sb_vk) NO-LOCK WHERE
bAdr.firmennr = pv-ip_Firma AND
bAdr.nummer = pv-ip_Pnr:
pv-OK=TRUE.
IF lv-KSB NE "" THEN
IF (IF pv-ip_Ekvk EQ {&WB_EK} THEN bAdr.sb_ek ELSE bAdr.sb_vk) NE lv-KSB THEN pv-OK = FALSE.
CREATE tt-Adr.
ASSIGN
tt-Adr.Nummer = bAdr.Nummer
tt-Adr.Name = bAdr.Name1
tt-Adr.OK = pv-OK.
END.
IF NOT AVAILABLE tt-Adr THEN DO:
CREATE tt-Adr.
ASSIGN
pv-OK = TRUE
tt-Adr.Nummer = pv-ip_Pnr
tt-Adr.Name = IF pv-ip_Pnr EQ 0 THEN "" ELSE "? (" + STRING(pv-ip_Pnr) + ")"
tt-Adr.OK = lv-KSB EQ "".
END.
END PROCEDURE /* p-mk_Pkto_info */.


/*----------------------------------------------------------------------------*/
PROCEDURE pFillPreChecker:


DEFINE VARIABLE sSpeditionen AS CHARACTER NO-UNDO.
DEFINE VARIABLE sFKArten AS CHARACTER NO-UNDO.
DEFINE VARIABLE sFKArtenTyp AS CHARACTER NO-UNDO.
DEFINE VARIABLE sFKArtenArt AS CHARACTER NO-UNDO.
DEFINE VARIABLE sVZweige AS CHARACTER NO-UNDO.
DEFINE VARIABLE iVkZweig AS INTEGER NO-UNDO.
DEFINE VARIABLE lOK AS LOGICAL NO-UNDO.


ASSIGN
sSpeditionen = ENTRY(7, ip-Parameter, CHR(1))
sFKArten = ENTRY(8, ip-Parameter, CHR(1))
sVZweige = ENTRY(9, ip-Parameter, CHR(1))
sFKArtenTyp = ENTRY(11, ip-Parameter, CHR(1))
sFKArtenArt = ENTRY(12, ip-Parameter, CHR(1))
.
/* sTmp = "Spedition:'" + sSpeditionen + "';;FArten:'" + sFKArten + "';;VZweige:'" + sVZweige.
RUN logmes.p(sFawLog, sTmp).
*/
/* Speditionen */
FOR EACH R_Tabellen WHERE R_Tabellen.firmennr = lv-firmennr AND
R_Tabellen.tb_art = {&TB_SPEDITION} NO-LOCK:


ASSIGN
iVkZweig = INTEGER(SUBSTRING(R_Tabellen.tb_xkz, 1, 1)) NO-ERROR.


RUN p-is_in_menge(0, R_Tabellen.tb_schl, sSpeditionen, OUTPUT lOK).
IF NOT lOK THEN NEXT.
RUN p-is_in_menge(0, iVkZweig, sVZweige, OUTPUT lOK).
IF NOT lOK THEN NEXT.


CREATE ttSpedition.
ASSIGN
ttSpedition.nummer = R_Tabellen.tb_schl
ttSpedition.sname = R_Tabellen.tb_bez
ttSpedition.perskonto = R_Tabellen.tb_kz_1
ttSpedition.vkzweig = iVkZweig.
.
END.
/* Frachtkostenarten */
FOR EACH R_Tabellen WHERE R_Tabellen.firmennr = lv-firmennr AND
R_Tabellen.tb_art = {&TB_FRACHTART} NO-LOCK:
RUN p-is_in_menge(0, R_Tabellen.tb_schl, sFKArten, OUTPUT lOK).
IF NOT lOK THEN NEXT.
RUN p-is_in_menge(0, SUBSTRING(R_tabellen.tb_xkz,2,1), sFKArtenTyp, OUTPUT lOK).
IF NOT lOK THEN NEXT.
RUN p-is_in_menge(0, SUBSTRING(R_tabellen.tb_xkz,3,1), sFKArtenArt, OUTPUT lOK).
IF NOT lOK THEN NEXT.
CREATE ttFkostenart.
ASSIGN
ttFkostenart.nummer = R_Tabellen.tb_schl
ttFkostenart.sname = R_Tabellen.tb_bez
.
END.
FIND FIRST ttFkostenart WHERE ttFkostenart.nummer EQ 0 NO-LOCK NO-ERROR.
IF NOT AVAILABLE ttFkostenart THEN DO:
CREATE ttFkostenart.
ASSIGN
ttFkostenart.nummer = 0
ttFkostenart.sname = "Frachtkostenart 0"
.
END.
END PROCEDURE. /* pFillSpeditionen */
/*----------------------------------------------------------------------------*/
PROCEDURE p-is_in_menge:
/* USAGE
RUN p-is_in_menge(0, VAR-IS, VAR-SHOULD, OUTPUT YES/NO)*/
DEF INPUT PARAMETER pv-ip_Lvl AS INTEGER NO-UNDO.
DEF INPUT PARAMETER ip-int AS INTEGER NO-UNDO.
DEF INPUT PARAMETER ip-bereich AS CHAR NO-UNDO.
DEF OUTPUT PARAMETER pv-op_OK AS LOGICAL NO-UNDO INIT FALSE.


DEF VAR pv-i AS INTEGER NO-UNDO.
DEF VAR pv-ii AS INTEGER NO-UNDO.
DEF VAR pv-el AS CHAR NO-UNDO.


IF ip-bereich EQ "" THEN
pv-op_OK = (pv-ip_Lvl EQ 0).
ELSE DO:
pv-ii=INDEX(ip-bereich,",").
pv-el=ENTRY(1,ip-bereich,",").
pv-i=INDEX(pv-el,"-").
IF pv-i > 0 THEN DO:
/* von - bis Bereich */
IF ip-int >= INTEGER(SUBSTRING(pv-el,1,pv-i - 1))
AND ip-int <= INTEGER(SUBSTRING(pv-el,pv-i + 1,LENGTH(pv-el) - pv-i)) THEN
pv-op_OK=TRUE.
ELSE DO:
IF pv-ii > 0 THEN
ip-bereich=SUBSTRING(ip-bereich,pv-ii + 1,LENGTH(ip-bereich) - pv-ii).
ELSE
ip-bereich="".
RUN p-is_in_menge(pv-ip_Lvl + 1,INPUT ip-int,INPUT ip-bereich,OUTPUT pv-op_OK).
END. END.
ELSE DO:
/* Zahl*/
IF INTEGER(pv-el)=ip-int THEN
pv-op_OK=TRUE.
ELSE DO:
IF pv-ii > 0 THEN
ip-bereich=SUBSTRING(ip-bereich,pv-ii + 1,LENGTH(ip-bereich) - pv-ii).
ELSE
ip-bereich="".
RUN p-is_in_menge(pv-ip_Lvl + 1,INPUT ip-int,INPUT ip-bereich,OUTPUT pv-op_OK).
END.
END.
END.
END.


/*----------------------------------------------------------------------------*/


PROCEDURE p-get-mengen:
DEFINE INPUT PARAMETER ipsub-fkkey AS INTEGER NO-UNDO.
DEFINE OUTPUT PARAMETER opsub-lmenge AS DECIMAL NO-UNDO.
DEFINE OUTPUT PARAMETER opsub-fmenge AS DECIMAL NO-UNDO.


DEFINE VARIABLE lvsub-int AS INTEGER NO-UNDO.


DEFINE BUFFER pbuf-wb-pos FOR R_WB_POS.
DEFINE BUFFER pbuf-stat FOR R_STAT.


/* unverbuchte Warenposition */
FOR FIRST pbuf-wb-pos
WHERE pbuf-wb-pos.firmennr = lv-firmennr
AND pbuf-wb-pos.fkkey = ipsub-fkkey
AND pbuf-wb-pos.type >= {&WB_NORMAL}
AND pbuf-wb-pos.type <= {&WB_KASSE}
NO-LOCK:

ASSIGN
lvsub-int = lvsub-int + 1
opsub-lmenge = opsub-lmenge + pbuf-wb-pos.lief_menge
opsub-fmenge = opsub-fmenge + pbuf-wb-pos.fmenge.
END.

/* sobald eine Position gefunden wurde raus */
IF lvsub-int > 0 THEN
LEAVE.


/* verbuchte Warenpositionen: Suche splitten, da ohne OR-Verknüpfung schneller */
FOR FIRST pbuf-stat
WHERE pbuf-stat.firmennr = lv-firmennr
AND pbuf-stat.fkkey = ipsub-fkkey
AND pbuf-stat.type = {&WB_NORMAL}
NO-LOCK:

ASSIGN
lvsub-int = lvsub-int + 1
opsub-lmenge = opsub-lmenge + pbuf-stat.lief_menge
opsub-fmenge = opsub-fmenge + pbuf-stat.fmenge.
END.

/* sobald eine Position gefunden wurde raus */
IF lvsub-int > 0 THEN
LEAVE.

FOR FIRST pbuf-stat
WHERE pbuf-stat.firmennr = lv-firmennr
AND pbuf-stat.fkkey = ipsub-fkkey
AND pbuf-stat.type = {&WB_ZUAB}
NO-LOCK:

ASSIGN
lvsub-int = lvsub-int + 1
opsub-lmenge = opsub-lmenge + pbuf-stat.lief_menge
opsub-fmenge = opsub-fmenge + pbuf-stat.fmenge.
END.
/*
ASSIGN
opsub-lmenge = opsub-lmenge / lvsub-int
opsub-fmenge = opsub-fmenge / lvsub-int.
*/


END PROCEDURE.


/*----------------------------------------------------------------------------*/


PROCEDURE p-chk-container:


DEFINE INPUT PARAMETER ipsub-fkkey AS INTEGER NO-UNDO.
DEFINE INPUT PARAMETER ipsub-cont AS CHARACTER NO-UNDO.
DEFINE OUTPUT PARAMETER opsub-ok AS LOGICAL NO-UNDO.


DEFINE BUFFER pbuf-container FOR R_container.


DEFINE VARIABLE lvsub-lkw2 AS CHARACTER NO-UNDO.
DEFINE VARIABLE lvsub-conr AS INTEGER NO-UNDO.
DEFINE VARIABLE pv-container AS CHARACTER NO-UNDO.


DEFINE BUFFER pbuf-wb-pos FOR R_WB_POS.
DEFINE BUFFER pbuf-stat FOR R_STAT.


IF ipsub-fkkey = 0 OR ipsub-fkkey = 1 THEN
LEAVE.


opsub-ok = TRUE.


FIND FIRST pbuf-wb-pos NO-LOCK
WHERE pbuf-wb-pos.firmennr = lv-firmennr
AND pbuf-wb-pos.fkkey = ipsub-fkkey
AND (pbuf-wb-pos.TYPE = {&WB_NORMAL}
OR pbuf-wb-pos.TYPE = {&WB_KASSE}) NO-ERROR.
IF AVAILABLE pbuf-wb-pos THEN
ASSIGN
lvsub-lkw2 = pbuf-wb-pos.lkw2
lvsub-conr = pbuf-wb-pos.conr.
ELSE
DO:
FIND FIRST pbuf-stat NO-LOCK
WHERE pbuf-stat.firmennr = lv-firmennr
AND pbuf-stat.fkkey = ipsub-fkkey
AND (pbuf-stat.TYPE = {&WB_NORMAL}
OR pbuf-stat.TYPE = {&WB_KASSE}
OR pbuf-stat.TYPE = {&WB_ZUAB}) NO-ERROR.
IF AVAILABLE pbuf-stat THEN
ASSIGN
lvsub-lkw2 = pbuf-stat.stat-char[1]
lvsub-conr = pbuf-stat.conr.
END.

IF lvsub-conr > 0 AND lvsub-conr <> ? THEN
FIND FIRST pbuf-container NO-LOCK
WHERE pbuf-container.firmennr = lv-firmennr
AND pbuf-container.conr = lvsub-conr NO-ERROR.


IF AVAILABLE pbuf-container THEN
opsub-ok = CAN-DO(ipsub-cont,pbuf-container.bez).
ELSE
DO:
pv-container = "".
ASSIGN pv-container = ENTRY(2,lvsub-lkw2,CHR(1)) WHEN NUM-ENTRIES(lvsub-lkw2,CHR(1)) >= 2.


IF ipsub-cont <> "" THEN
opsub-ok = CAN-DO(ipsub-cont,pv-container).
END.


END PROCEDURE.




FUNCTION FN_DayEx RETURNS DECIMAL /* Diese Funktion wurde von rcyFindPr.p kopiert */
(INPUT pv-ip_DS AS CHARACTER,
INPUT pv-ip_KS AS DECIMAL,
INPUT pv-ip_ekvk AS INT):


DEF VAR pv-op_kurs AS DECIMAL NO-UNDO INIT ?.


DEF BUFFER pbuf-kurse FOR R_Kurse.


FIND LAST pbuf-kurse NO-LOCK
WHERE pbuf-kurse.firmennr = lv-firmennr
AND pbuf-kurse.art = 2
AND pbuf-kurse.symbol = pv-ip_DS
AND pbuf-kurse.Tag = TODAY
USE-INDEX Nummer NO-ERROR.


IF NOT AVAILABLE pbuf-kurse THEN
FIND LAST pbuf-kurse NO-LOCK
WHERE pbuf-kurse.firmennr = lv-firmennr
AND pbuf-kurse.art = 2
AND pbuf-kurse.symbol = pv-ip_DS
AND pbuf-kurse.Tag < TODAY
USE-INDEX Nummer NO-ERROR.


IF AVAILABLE pbuf-kurse AND (TODAY - pbuf-kurse.Tag) / 31 < 2 THEN /* nicht älter als 2 monate seit hügler und uralt daten */
pv-op_kurs = (IF pv-ip_ekvk = {&WB_EK} THEN pbuf-kurse.Kurs_ka ELSE pbuf-kurse.Kurs_kn).


IF pv-op_kurs = ? THEN
pv-op_kurs = pv-ip_KS.


RETURN pv-op_kurs.
END FUNCTION.





 

FrancoisL

Member
my homework is follow:
1. input parameter R_Adressen to Temp-Table for firmenummer / i dont know how i make it./
2. use buffer for R_Adressen, but no directly
3. Temp-Table send to displey /disp/ but with a sort so by nummer
5. for input or load data to Temp-Table use procedure p-Fetch Data


Where did instruction number 4 go? lol
 
Top