Info-books
HO33b
Toegepaste Informatica
Deel 33b:
ERP met Navision, Financieel 2 E. Goossens – T. Janssens – J. Gils
Besluit In Navision kun je formulieren ontwerpen in kaartvorm en in tabelvorm. Het is gemakkelijker om ze met een wizard te ontwerpen dan dit manueel te doen. Formulieren bevatten controls die zoals de formulieren zelf eigenschappen bezitten. Controls kun je selecteren, verplaatsen en aan eigen behoeften aanpassen. Formulieren en controls reageren op gebeurtenissen waar via triggers code aan gekoppeld wordt.
Wat je moet kennen en kunnen • • • •
een formulier manueel of met een wizard ontwerpen; controls aan een bestaand formulier toevoegen; controls selecteren, verplaatsen en aan eigen behoeften aanpassen; de programmacode oproepen die bij formulieren en controls hoort.
Opdrachten 12. Ontwerp een tabel TBLFUNCTIE die er als volgt uitziet:
13. Maak bij deze tabel ook een formulier FRMFUNCTIE met het volgende uitzicht:
Zet de volgende functies via het formulier FRMFUNCTIE in de tabel TBLFUNCTIE: A (Arbeider) B (Bediende) K (Kaderlid) Sla het rapport op met als ID 50003.
E. Goossens – T. Janssens - J. Gils
Navision 2
153
Hoofdstuk 14
Rapporten
14.1 Probleemstelling Vaak wil je gegevens uit een database op een gestructureerde manier tonen. Je wenst bijvoorbeeld een lijst van alle bestellingen per leverancier. Je wenst dus gestructureerde lijsten die voorzien zijn van koppen, waarin gegevens gegroepeerd worden en waarin totalen worden gemaakt. Om dit te bereiken kun je in Navision rapporten ontwerpen.
14.2 Een eenvoudig rapport ontwerpen Net als een formulier kun je een rapport manueel of met een wizard ontwerpen. In het voorbeeld dat volgt wordt een rapport met een wizard ontworpen. Activeer eerst de objectengroep REPORT (EXTRA, OBJECT DESIGNER) en klik op de NEWknop. In het dialoogvenster NEW REPORT selecteer je een tabel en vink je een van de opties CREATE A BLANK REPORT of CREATE A REPORT USING WIZARD AAN. Je kunt ook het type kiezen: FORM, TABULAR of LABEL.
Als je kiest voor FORM, dan beland je in een scherm waarin je uit de beschikbare velden de gewenste velden kunt overbrengen naar een vak waarin de volgorde bepaald wordt en waar je blanco lijnen of kolomovergangen kunt vastleggen.
154
Navision 2
E. Goossens – T. Janssens - J. Gils
Om het resultaat te beoordelen voor je op de FINISH-knop klikt, klik je eerst op PREVIEW en vervolgens op VOORBEELD.
Om het rapport op te slaan kies je BESTAND, SAVE AS…, je vult een ID en een naam in en je klikt op OK.
Opdrachten 1. Vul de tabellen TBLKIND en TBLWERKNEMER via de opgestelde formulieren aan met de gegevens die je in de figuur hieronder vindt:
E. Goossens – T. Janssens - J. Gils
Navision 2
155
2. Ontwerp het hierboven beschreven formulierrapport RPTKIND en geef het ID 50001. 3. Ontwerp met de Report Wizard een rapport RPTKINDLABEL met de ID 50002 waarvan het resultaat bij het runnen er als volgt uitziet:
14.3 Headers en secties toevoegen Aan een rapport kun je headers en secties toevoegen. Als de Report Designer de focus heeft kies je BEELD, SECTIONS om het dialoogvenster SECTION DESIGNER te openen. Kies daarna BEWERKEN, INVOEGEN zodat het dialoogvenster INSERT NEW SECTION verschijnt. Selecteer de tabel in het veld DATA ITEM, vink een SECTION TYPE aan en bepaal of de sectie voor of na de actieve sectie moet ingevoegd worden. Klik op OK. De nieuwe sectie wordt ingevoegd. Je kunt daar nu bijvoorbeeld een label in plaatsen. Met het oog daarop roep je de Toolbox op (BEELD, TOOLBOX) en je sleept een labelobject naar de toegevoegde sectie. Via het venster PROPERTIES kun je de eigenschappen van het toegevoegde object aanpassen.
156
Navision 2
E. Goossens – T. Janssens - J. Gils
Rapporten die met een wizard ontworpen werden vertonen vaak schoonheidfoutjes (velden die te kort zijn, te veel witruimte tussen regels, …)
E. Goossens – T. Janssens - J. Gils
Navision 2
157
In de Section Designer kun je manueel de nodige aanpassingen doen. Opdrachten 4. Voeg aan het rapport RPTKIND een header toe met de tekst ‘Kind van een werknemer’. De grootte van het lettertype is 10. 5. Voeg in de tabel TBLKIND een tekstveld FAMILIENAAM toe met een lengte van 30 en ‘Familienaam van het kind’ als omschrijving. Maak met de formulierwizard een nieuw formulier FRMKIND2 met het onderstaande uitzicht. (Je overschrijft het oude formulier). Vul ook de familienamen van de kinderen in.
6. Gebruik de Section Designer om aan het rapport RPTKIND de familienaam toe te voegen zodat het rapport getoond wordt zoals in de figuur hieronder:
7. Ontwerp een tabelrapport RPTWERKNEMER met de rapportwizard. Een preview van het resultaat brengt een aantal mankementen aan het licht: ‘Naam werknemer’ staat er een keer te veel, de kolomnamen worden niet volledig getoond en er is te veel witruimte tussen de regels. Het ziet er ongeveer als volgt uit:
158
Navision 2
E. Goossens – T. Janssens - J. Gils
Doe via de Section Designer de nodige aanpassingen zodat het rapport er als volgt uitziet:
Bewaar het rapport met de ID 50 000.
14.4 Eigenschappen aanpassen Rapporten en onderdelen van rapporten zijn objecten die eigenschappen hebben die kunnen worden geraadpleegd en aangepast via het dialoogvenster PROPERTIES. Het grootboekjournaal is een rapport dat je in de Report-objectengroep vind onder de naam CUSTOMER – TOP 10 LIST. Je krijgt de lay-out te zien via BEELD, SECTIONS:
E. Goossens – T. Janssens - J. Gils
Navision 2
159
Als je het rapport wilt laten uitvoeren klik je op de RUN-knop van de Object Designer.
Om de eigenschappen en de C/AL-code van een veld te achterhalen selecteer je dat veld en klik je met de rechtermuisknop zodat een contextgevoelig menu verschijnt waarin je PROPERTIES en C/AL CODE kunt kiezen. In de volgende figuur werd de C/AL-code opgevraagd die de datum rechts bovenaan op het rapport weergeeft. Je vindt de code onder de sectie Documentation(): Pct(Numeral1 : Decimal;Numeral2 : Decimal) : Decimal IF Numeral2 = 0 THEN EXIT(0); EXIT(ROUND(Numeral1 / Numeral2 * 100,0.1));
160
Navision 2
E. Goossens – T. Janssens - J. Gils
Een veld kan een verwijzing zijn naar een tabelveld. Het veld in kwestie heeft dan de naam van het tabelveld als waarde voor de eigenschap SOURCEEXPR:
Opdracht 8. Wat staat er in de eigenschap SOURCEEXPR van het veld TOTAAL van het rapport CUSTOMER – TOP 10 LIST? Hoe komt het dat er niet het Engelse ‘Total’ staat maar het Nederlandse ‘Totaal’? Raadpleeg daarvoor de eigenschap CAPTIONML.
14.5 Een complex rapport opstellen Wanneer gegevens uit verschillende tabellen moeten gehaald worden is het opstellen van een rapport heel wat ingewikkelder. Het rapport dat in het volgende voorbeeld gaat opgesteld worden is gebaseerd op de tabellen CUSTOMER en SALES LINE. Per klant kunnen er verschillende verkoopregels zijn. Je opent de Report Designer en je creëert een blanco rapport. Selecteer in de Report Designer de CUSTOMER-tabel als eerste waarde in de kolom DATAITEM en de SALES LINE-tabel als tweede waarde. Activeer de regel met SALES LINE en klik op de naar rechts wijzende pijl om een inspringing te krijgen.
E. Goossens – T. Janssens - J. Gils
Navision 2
161
Voor elke klant zullen nu bij het opstellen van het rapport alle verkoopregels doorlopen worden. Dit moet echter beperkt worden tot de regels die betrekking hebben op de actieve klant. Je kunt dit doen via de eigenschappen DATAITEMLINK en DATAITEMLINKREFERENCE. De DATAITEMLINKREFERENCE-eigenschap behandelt een gegeven op een hoger niveau (met een kleinere inspringing) en de DATAITEMLINK-eigenschap specificeert een veld: hier worden records alleen geselecteerd uit de SALES LINE-tabel als de SELL-TO CUSTOMER NO dezelfde is als de NO in de tabel CUSTOMER. Open het PROPERTIES-venster voor het SALES LINE-data item. Normaliter is de eigenschap DATAITEMLINKREFERENCE al automatisch correct ingevuld (
). In de VALUE-kolom klik je naast de DATAITEMLINK-eigenschap op de AssistButton zodat het DATAITEM LINK-venster verschijnt. Klik daar op de verticale pijl op de eerste regel onder FIELD om het VELDOVERZICHT-venster te doen verschijnen en selecteer daarin het veld SELL-TO CUSTOMER NO als FIELD en No als REFERENCE FIELD.
Open het PROPERTIES-venster voor het CUSTOMER DATA ITEM en zet de PRINTONLYDETAIL-eigenschap op ‘Yes’. Dit betekent dat de Customer body sections alleen afgedrukt zullen worden als er gegevens af te drukken zijn vanuit de SALES LINEtabel. Als er geen verkoopregels zijn voor een bepaalde klant dan wordt er voor die klant helemaal niet afgedrukt.
162
Navision 2
E. Goossens – T. Janssens - J. Gils
Nu kunnen de secties ontworpen worden. Open de Section Designer. Je merkt dat er al een body section voor elk data item (Customer en Sales Line). Klik op BEWERKEN, NIEUWE INVOEGEN en voeg een Header section toe voor elke klant (data item Customer).
Kies BEELD, FIELD MENU en voeg de velden NO, NAME, ADDRESS en PHONE NO toe aan de CUSTOMER, BODY (2) section. Verplaats de labels naar de Header section.
E. Goossens – T. Janssens - J. Gils
Navision 2
163
Open opnieuw het FIELD MENU-venster, deze keer van de SALES LINE-tabel. Selecteer de velden DOCUMENT NO, SHIPMENT DATE, DESCRIPTION, QUANTITY, UNIT PRICE en AMOUNT en plaats ze in de SALES LINE, BODY (1) section. Daarna kun je beslissen wat je gaat doen met de labels in deze sectie: laten staan (dan worden ze voor elke record afgedrukt) of overbrengen naar een Header section.
In de oplossing die volgt werd ervoor geopteerd om de labels van de Sales Line Body te verplaatsen naar de Header section van de Customer data item:
164
Navision 2
E. Goossens – T. Janssens - J. Gils
Selecteer de CUSTOMER, HEADER (1) section, roep het eigenschappenvenster op en zet de eigenschap PRINTONEVERYPAGE op ‘Yes’.
De labels voor zowel de Customer als de Sales Line records zullen nu als kolomkoppen in de CUSTOMER, HEADER (1) section afgedrukt worden. De standaard lay-out wordt best nog wat aangepast: • • •
Bij de labels van de SALES LINE-kolom kan de FontSize bijvoorbeeld aangepast worden; Ook het klantnummer van de CUSTOMER, BODY (2) section geef je bijvoorbeeld een FontSize van 8. Je kunt ervoor zorgen dat de kolomtitels volledig leesbaar worden.
Om bijvoorbeeld de titel ‘Documentnr’ een grotere FontSize te geven selecteer je deze titel, je klikt met de rechtermuisknop en je kiest PROPERTIES. Daar kun je de eigenschappen aanpassen.
E. Goossens – T. Janssens - J. Gils
Navision 2
165
Je kunt het rapport nu afdrukken. Activeer het rapport, klik op de RUN-knop en daarna op VOORBEELD. Het resultaat kan er als volgt uitzien:
Opdrachten 9. Stel het rapport RPTCUSTOMER op zoals hierboven beschreven werd en laat een afdrukvoorbeeld in TuinComfort zien. 10. Open CRONUS België NV en pas het rapport RPTCUSTOMER toe op dit bedrijf.
166
Navision 2
E. Goossens – T. Janssens - J. Gils
14.6 Groeperen en totalen maken In plaats van alle lijnen van alle verkoopdocumenten af te drukken zou het overzichtelijker zijn de lijnen te groeperen per itemnummer. Een afgedrukt totaal per klant zou ook wenselijk zijn. Om dit te realiseren kun je vertrekken van het vorige rapport RPTCUSTOMER. Je opent dit rapport in de Report Designer, je activeert het Sales Line data item en je roept het PROPERTIES-venster op. In het VALUE-veld van de property GROUPTOTALFIELDS klik je op de AssistButton om in het FIELD LIST-venster het veld NO te kunnen selecteren.
In het VALUE-veld van de DATAITEMTABLEVIEW-eigenschap selecteer je de sleutel waarop je wenst te groeperen. Als deze sleutel een samengestelde sleutel is, dan kan het groeperen mislopen als er in de sleutel andere velden staan dan deze waarop gegroepeerd moet worden en de inhoud van een van deze velden wijzigt. Voor rapporten moet je dan een afzonderlijke sleutel voorzien om rapportgegevens te benaderen. Voor het op te stellen rapport maak je een afzonderlijke secundaire sleutel die alleen bestaat uit het NO-veld van de SALES LINE-tabel. Open deze tabel, roep de Table Designer op, kies BEELD, KEYS en maak een secundaire sleutel bij die alleen uit het NO-veld bestaat. Selecteer als SUMINDEXFIELDS de waarde AMOUNT en sla de tabel op.
E. Goossens – T. Janssens - J. Gils
Navision 2
167
Om ervoor te zorgen dat alleen de verkooplijnen die betrekking hebben op een bepaalde klant geselecteeerd worden, dat de verkoopregels per itemnummer gegroepeeerd worden en dat er totalen gemaakt worden voor de QUANTITY- en de AMOUNT-velden moeten de Sales Line-eigenschappen DATAITEMTABLEVIEW en TOTALFIELDS aangepast worden. In het VALUE-veld van de DATAITEMTABLEVIEW-eigenschap selecteer je de sleutel waarop je wenst te groeperen:
In het VALUE-veld van de TOTALFIELDS-eigenschap selecteer je de namen van de velden waarvoor er totalen moeten berekend worden (QUANTITY en AMOUNT):
168
Navision 2
E. Goossens – T. Janssens - J. Gils
Nu kunnen secties voor de totalen in het rapport toegevoegd worden. Activeer de SALES LINE, BODY (1) section in de Section Designer en voeg achtereenvolgens een GROUPFOOTER en een FOOTER toe. Verplaats de velden uit de SALES LINE, BODY (1) naar de SALES LINE, GROUPFOOTER (1) section en verwijder het eerste veld (DOCUMENTNR). Verwijder ook het telefoonnuumer en de SALES LINE, BODY (1) section. Roep het FIELD MENU-venster op en zet het veld AMOUNT in in de sectie SALES LINE, FOOTER (2). De Section Designer ziet er nu uit als in de figuur hieronder.
Bewaar het rapport als RPTCUSTOMERTOT met de ID 50004:
E. Goossens – T. Janssens - J. Gils
Navision 2
169
Wanneer je het rapport laat runnen wanneer CRONUS België NV actief is krijg je een afdruk waarvan het begin er ongeveer als volgt uitziet:
Opdrachten 11. Maak het hierboven beschreven rapport. Vertrek van RPTCUSTOMER, doe de nodige aanpassingen en bewaar het rapport onder de ID 50004 en de naam RPTCUSTOMERTOT. 12. Laat het rapport runnen terwijl CRONUS België NV actief is.
14.7 Triggers bij rapporten Bij rapporten bestaat de belangrijkste functie van triggers erin ervoor te zorgen dat ontwerpers de mogelijkheid krijgen om te bepalen hoe gegevens geselecteerd worden in een meer complexe omgeving dan deze waarin het volstaat om eigenschappen een bepaalde waarde te geven. Om de code te zien die bij een bepaald rapport hoort activeer je dat rapport, je roept de Report Designer op en je kiest BEELD, C/AL CODE:
170
Navision 2
E. Goossens – T. Janssens - J. Gils
Naast Report Triggers zijn er Data Item Triggers en Section Triggers.
Opdrachten 13. Toon de C/AL-code die hoort bij het rapport CUSTOMER – ORDER SUMMARY. Welke triggers vind je in de C/AL-editor terug? Wat is hun betekenis? (Raadpleeg daarvoor de Help-functie.) 14. Toon de C/AL-code die hoort bij het data item GEN. JOURNAL BATCH van het rapport GENERAL JOURNAL – TEST. Welke triggers vind je in de C/AL-editor terug en wat is hun betekenis?
E. Goossens – T. Janssens - J. Gils
Navision 2
171