Baanboard.com

Baanboard.com (http://www.baanboard.com/baanboard/index.php)
-   Deutsches Forum (http://www.baanboard.com/baanboard/forumdisplay.php?f=65)
-   -   Report nach Report drucken (http://www.baanboard.com/baanboard/showthread.php?t=69682)

MS-Tech 23rd January 2017 12:42

Report nach Report drucken
 
Hallo Zusammen,

ich drucke einen Report und möchte nachdem dieser Report gedruckt ist noch 2 weitere Reports auf dem gleichen Drucker drucken.

Ich habe folgende Code in das ReportScript eingefügt.

Code:

after.program:

        long brp_id
        long spooler1
        long spooler2
       
        spooler1 = spool.open("", spool.device, 1)
        brp_id = brp.open("reportId1", spool.device, 0)
        brp.ready(brp_id)
        brp.close(brp_id)
        spool.close()

        brp_id = 0
        spooler2 = spool.open("", spool.device, 1)
        brp_id = brp.open("reportId2", spool.device, 0)
        brp.ready(brp_id)
        brp.close(brp_id)
        spool.close()

Ist das denn so okay? Wenn ich z.B. in HiDOX keinen eigenen Spooler für jeden Report öffne, dann erhalte ich nur den Hauptreport. So erhalte ich 3 PDF-Dokumente.

Wenn ich die beiden neuen geöffneten Spooler wieder schließe, werden dann auch nur diese Spooler geschlossen? Was ist mit dem Spooler des Hauptreports?

Gibt es eine andere Möglichkeit Reports nach einem Report zu drucken?

Grüße
MS-Tech

bdittmar 23rd January 2017 13:28

Realisierung im Sessionscript
 
Hallo,

im Sessionscript laesst es sich so realisierem:
Code:

declaration:

extern Long brp_id1, brp_id2, brp_id3

choice.print.data:
on.choice:

brp_id1 = brp.open("Report1", spool.device, 0)
    function(A)
brp.close(brp_id1)

brp_id2 = brp.open("Report2", spool.device, 0)
    function(B)
brp.close(brp_id2)

............................>

In function(A) :
    brp.ready(brp_id1)

In function(B) :
    brp.ready(brp_id2)
...........................>

Alternativ ist das/ein UserExit zu verwenden.
Habe ich realisiert mit HiDox in "Auftragsdokumente drucken" (tisfc001ue)
Hier wird zu den Produktionsdokumenten eine weitere Drucksession angesteuert, die einen zus. Hidox-Report auf den gleichen Spooler druckt.
(Das ist eine aufwendigere Entwicklung)
Regards

MS-Tech 23rd January 2017 13:58

Hallo,

danke für deine Antwort.

Ich habe auf das Sessionskript leider keinen Zugriff. Ich kann das nur über das Reportskript oder auch über eine UserExit bauen. Wie sieht das dann in einer UserExit aus? Wo ist hier der Einsprungspunkt beim Druck? Hier gibts ja nur die Sections... vor dem Speichern, nach dem Speichern etc.

Gruß
MS-Tech

bdittmar 23rd January 2017 14:08

User Exit BSP.
 
Hallo,

das kann so aussehen :
(Bitte Kommentare ausblenden !)
Code:

function extern long ue.after.after.save.object(long mode)
{
        on case mode
        case DAL_NEW:
                ...............................
                activate("odhsfc0201s100", tisfc001.pdno)        | Dokumente drucken und freigeben
                break
        case DAL_UPDATE:
        |BD20141022 added logic gor MAC, iPLC and Assembly-Plan
       
                mpdebug = 10
                check.mplan.exclude.parameter()
                check.mplan.printed()
       
                if (tisfc001.srnl = tisfc.pdst.doc.printed and (tisfc001.osta = tcosta.in.prod or tisfc001.osta = tcosta.active or tisfc001.osta = tcosta.closed)) then       
                        set.zoom.variables()
                                       
                        count.id.present()
                                if tisfc001.qrdr = id.count then
                                        check.for.mac.and.test()
                                       
                                        |Run sessions for MAC, PLC, TEST
                                        if mac.need = true then
                                                read.id.number.from.timfc010(prod.pdno, prod.item, prod.cprj)

                                        endif        |mac.need
                                       
                                        |BD20100930
                                        check.and.built.plc.crc()
                                       
                                        |Run sessions for PLC-CRC
                                        if plc.crc.need = true then
                                       
                                                read.id.numbers.for.plc(prod.pdno, prod.item, prod.cprj)
                                                                                               
                                        else
                                                |Reset variables
                                                plc.bom.level = ""
                                                crc.value = ""
                                        endif        |PLC = true
                                       
                                        |BD20150421 Customer serial numbers in FP9
                                        check.for.customer.serial.numbers()
                                       
                                        if valid.item.cuno = true then
                                                read.id.numbers.for.cuno.clot(prod.pdno, prod.item, prod.cprj)
                                        endif        |Customers serials

                                        |BD20141029 Here testerdata is checked and processed
                                        if tdata = true then
                                                check.testerfile.is.created(prod.pdno)
                                                if tfile.created = false then
                                                        |Call the function for testerdata
                                                        dhexc0010.built.data.for.testequipment(prod.cprj,
                                                                                                                                  prod.item,
                                                                                                                                  prod.pdno)
                                               
                                                        |Comming back from function
                                                        write.testerfile.created.to.dhexc110(prod.pdno)
                                               
                                                endif
                                               
                                        endif
                                                                               
                                        |BD20101208 Handled in SUB
                                       
                                        |BD20110527 Assembly Plan
                                        |!! Spooler is already open !!  ----<<
                                       
                                                mpdebug = 50
                                                |BD20141114 Montageplan nur wenn noch kein Testerfile erzeugt ist !
                                                |ansonsten wird 2x gedruckt !
                                                |BD20150702 new logic
                                                if (tfile.created = false and mplan.need = true) then
                                                        print.assembly.plan()
                                                        write.mplan.printed()                |+BD20150707
                                                endif
                                else
                                        suspend(5000)
                                        count.id.present()
                                endif        |Quantity identical to ID-Numbers
                else
                        |BD20101015 Meldungen im UE !
                        |dal.set.warning.message("dhsfc00100001")
                        |show.dal.messages(MSG.ALL)
                       
                        |BD20150702 Print MPlan for non ID items if needed
                        |BD20150710 No output at releasepoint
                        mpdebug = 30
                        check.mplan.printed()
                        if (mplan.need = true and mplan.printed = false) then        |+BD20150710
                                set.zoom.variables()
                                |BD20151222 default printer for job process
                                if isspace(curr.printer) then
                                        curr.printer = "LDL-079-2P"    |--> default printer
                                else
                                        curr.printer = spool.device
                                endif
                                |BD20151222 default printer for job process
                                before.zoom:
                                export("curr.printer", curr.printer)
                                get.var(pid, "prog.name$", sessioncode)                                |+BD20150710
                               
                                if sessioncode = "tisfc0204m000" then                                |+BD20150710
                                        start.session(0, "dhsfc0408m0bd", "zoom.pdno", "")
                                        write.mplan.printed()
                                endif                        |sessioncode
                        endif
                       
                endif
       
        break
        endcase
        return(0)
}

Die Verriegelung und Trigger erfolgt zum Teil ueber separate Parametertabellen, in denen abgeprueft wird, ob bestimmte Funktionalitaeten bereits erfolgt sind, wenn nicht, werden die Funktionen abgearbeitet und deren Status dann in die zustaendige Parametertabelle zurueckgeschrieben.

MFG

MS-Tech 9th February 2017 15:02

Hallo.

Ich habe es soweit angepasst und funktioniert auch soweit.

Danke und Grüße


All times are GMT +2. The time now is 01:33.


vB.Sponsors
©2001-2017 - Baanboard.com - Baanforums.com