Um beim Auftragsbestätigungs- und dem Rechnungsdruck immer 7 Seriennummern in einer Zeile anzudrucken, könnt Ihr im IBExpert die Stored Procedure P_REP_SERIENNR wie unten erweitern. Hierbei ist es natürlich kein Problem, die Anzahl der dargestellten Serien-Nr. auf Euere Bedürfnisse abzuändern. Einfach in dem Term (nZaehler = 7) die "7" entsprechend ersetzen. Getestet mit den Datenbankversionen AvERP2008-A.12 und A.14
(Zur besseren Erkennung habe ich alle Erweiterungen rot markiert.)
- ***************************************************
SET TERM ^ ;
CREATE PROCEDURE P_REP_SERIENNR (
BAUFPO_ID INTEGER)
RETURNS (
SERIENNUMMERN VARCHAR(30000))
AS
DECLARE VARIABLE MASKENKEY VARCHAR(40);
DECLARE VARIABLE NZAEHLER INTEGER;
BEGIN
/* Letzter Stand 18.08.2008 09:23 Geri12 */
/* LETZTER STAND 23.05.2008 09:03:31 HB */
/* Protokollieren, dass Aktion hier durchgelaufen ist */
IF (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ('P_REP_SERIENNR');
/* Liefert für Formulardruck Auftrag, Lieferschein, Rechnung die
Seriennummern als String zurück */
SERIENNUMMERN = '';
IF (BAUFPO_ID IS NULL) THEN
EXIT;
nZaehler = 0;
FOR SELECT MASKENKEY
FROM BSSN
WHERE BAUFPO_ID_AUFNRPOS = :BAUFPO_ID
ORDER BY MASKENKEY
INTO :MASKENKEY
DO
BEGIN
IF ((SERIENNUMMERN <> '') and (nZaehler = 7)) THEN
begin
SERIENNUMMERN = SERIENNUMMERN || ', ' || F_CRLF();
nZaehler = 0;
end
if (nZaehler > 0) then
SERIENNUMMERN = SERIENNUMMERN || ', ';
SERIENNUMMERN = SERIENNUMMERN || MASKENKEY;
nZaehler = nZaehler + 1;
END
IF (SERIENNUMMERN <> '') THEN
SUSPEND;
END^
SET TERM ; ^
DESCRIBE PROCEDURE P_REP_SERIENNR
'Ausdruck: Alle Serien-Nr. fuer 1 Auftr.Pos. als String zurueckliefern';
GRANT INSERT ON A_WASMACHTIB TO PROCEDURE P_REP_SERIENNR;
GRANT SELECT ON BSSN TO PROCEDURE P_REP_SERIENNR;
GRANT EXECUTE ON PROCEDURE P_REP_SERIENNR TO "PUBLIC";
GRANT EXECUTE ON PROCEDURE P_REP_SERIENNR TO SYSDBA;
***************************************************
Code: Alles auswählen
SET TERM ^ ;
CREATE PROCEDURE P_REP_SERIENNR (
BAUFPO_ID INTEGER)
RETURNS (
SERIENNUMMERN VARCHAR(30000))
AS
DECLARE VARIABLE MASKENKEY VARCHAR(40);
DECLARE VARIABLE NZAEHLER INTEGER;
BEGIN
/* Letzter Stand 18.08.2008 09:23 Geri12 */
/* LETZTER STAND 23.05.2008 09:03:31 HB */
/* Protokollieren, dass Aktion hier durchgelaufen ist */
IF (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ('P_REP_SERIENNR');
/* Liefert für Formulardruck Auftrag, Lieferschein, Rechnung die
Seriennummern als String zurück */
SERIENNUMMERN = '';
IF (BAUFPO_ID IS NULL) THEN
EXIT;
nZaehler = 0;
FOR SELECT MASKENKEY
FROM BSSN
WHERE BAUFPO_ID_AUFNRPOS = :BAUFPO_ID
ORDER BY MASKENKEY
INTO :MASKENKEY
DO
BEGIN
IF ((SERIENNUMMERN <> '') and (nZaehler = 7)) THEN
begin
SERIENNUMMERN = SERIENNUMMERN || ', ' || F_CRLF();
nZaehler = 0;
end
if (nZaehler > 0) then
SERIENNUMMERN = SERIENNUMMERN || ', ';
SERIENNUMMERN = SERIENNUMMERN || MASKENKEY;
nZaehler = nZaehler + 1;
END
IF (SERIENNUMMERN <> '') THEN
SUSPEND;
END^
SET TERM ; ^
DESCRIBE PROCEDURE P_REP_SERIENNR
'Ausdruck: Alle Serien-Nr. fuer 1 Auftr.Pos. als String zurueckliefern';
GRANT INSERT ON A_WASMACHTIB TO PROCEDURE P_REP_SERIENNR;
GRANT SELECT ON BSSN TO PROCEDURE P_REP_SERIENNR;
GRANT EXECUTE ON PROCEDURE P_REP_SERIENNR TO "PUBLIC";
GRANT EXECUTE ON PROCEDURE P_REP_SERIENNR TO SYSDBA;
[EDIT] Hier hatte ich leider Unsinn geschrieben mit meinem ursprünglichen Verweis auf den Lieferschein statt korrekterweise auf AB und Rechnung. Asche auf mein Haupt