Ansicht
Dokumentation

K_BATCH_REQUEST - Hintergrundverarbeitung einer Transaktion

K_BATCH_REQUEST - Hintergrundverarbeitung einer Transaktion

Addresses (Business Address Services)   rdisp/max_wprun_time - Maximum work process run time  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Allgemeines

Dieser Funktionsbaustein erledigt für eine fast beliebige Transaktion die Jobeinplanung für die Hintergrundverarbeitung.

Voraussetzung ist, dass die Transaktion mit Hilfe der Anweisung SUBMIT REPORT ... gestartet werden kann. Der gestartete Report verarbeitet die Daten wie die zugehörige Transaktion im Online.

Über den Funktionsbaustein kann der Anwender alle notwendigen Dialoge führen und im Anschluss die Jobeinplanung vornehmen.

Nähere Informationen darüber, wie der Funktionsbaustein aufzurufen ist, finden Sie in der Dokumentation der einzelnen Parameter.

Zwei Arten der Einplanung

Der Parameter PAR_PNAME ist gesetzt...

Damit wird der Dummyreport generiert mit einer SUBMIT-Anweisung für den Report . Ueber die Tabelle TAB_SELPA werden die WITH-Anweisungen erzeugt. Dabei ist zu beachten, dass Felder vom Typ P,I oder F rechtsbündig in die Felder LOW bzw. HIGH der Tabelle TAB_SELPA übernommen werden. Man kann aber auch explizit diese Felder ungepackt, linksbündig in die Tabelle übergeben. Der generierte Dummyreport kann mit SE38 angezeigt werden. Dies kann zur Kontrolle einer korrekten Jobeinplanung benutzt werden. Dieser Parameter kann ab Release 3.0D weggelassen werden.

Vorsicht !
Dieser Report wird immer wieder neu überschrieben. Deshalb einen Namen wählen, welcher im eigenen Namensraum liegt. Dafür ist der INCLUDE LKABAD01 zu pflegen.

Der Parameter PAR_PNAME ist nicht gesetzt...

Es wird kein Dummyreport generiert. Die Einplanung erfolgt direkt mit einem SUBMIT REPORT ... WITH SELECTION-TABLE.... Zu beachten ist hierbei, dass die Tabelle TAB_SELPA mit der Struktur KABA00 in eine interne Tabelle mit der Struktur RSPARAMS umgefüllt wird.

Dabei gelten folgende Übernahmeregeln:

  • KABA00-FIELD --> RSPARAMS-SELNAME

  • KABA00-SIGN --> RSPARAMS-SIGN

  • KABA00-OPTION --> RSPARAMS-OPTION

  • KABA00-LOW --> RSPARAMS-LOW

  • KABA00-HIGH --> RSPARAMS-HIGH

  • KABA00-TYPE --> RSPARAMS-KIND

Anmerkung:

  1. Das Feld RSPARAMS-SELNAME ist nur 8-stellig, im Gegensatz zum 35-stelligen Feld KABA00-FIELD.
  2. Das Feld RSPARAMS-LOW (HIGH) ist nur 45-stellig, im Gegensatz zum 200-stelligen Feld KABA00-LOW (HIGH). Man beachte dabei, dass Felder des Typs 'P', 'I' oder 'F' rechtsbündig in das Feld KABA00-LOW eingestellt werden.
  3. Das Feld KABA00-TYPE ist mit 'P' für einen Parameter und mit 'S' für eine Select-option zu versorgen.
  4. Das Feld KABA00-SIGN ist bei einer Select-option immer zu versorgen. ('I'= inklusive, 'E'=exklusive).
  5. Das Feld KABA00-OPTION kann die Werte 'EQ','BT','NB','NE','CP','NP','GE','LT','LE', oder 'GT' annehmen.

Periodische Einplanung des Jobs

  • Nach der Jobeinplanung (kein Sofortstart) kann in der Jobübersicht (SM37) der Job geändert werden. Dort kann das Startdatum und die Periode entsprechend gesetzt werden.
  • Die Transaktion hat keine zeitabhängigen Parameter (z.B. Periode, Geschäftsjahr). Durch Übergabe des Parameters PAR_PERKZ = 'X' erhält der Anwender die Möglichkeit die Periode (Tage, Wochen, Monate) anzugeben.
  • Hat die Transaktion zeitabhängige Parameter (z.B. die Buchungsperiode) und soll der Job nur einmal in der Periode laufen, so kann man sich wie folgt behelfen:
    Der Anwender plant den Job einmalig ein. Wenn der Job dann losläuft plant dieser automatisch den Job für die Folgeperiode ein.
    Der Funktionsbaustein K_BATCH_REQUEST ist ohne Dialog (PAR_DIALG) mit denselben Parametern aufzurufen. Die vom Anwender im Dialog geänderten Parameter werden mit EXPOPRTING zurückgegeben. Für den Jobnamen sollte man sich ein Namenskonvention überlegen (Verschlüsselung der Periode im Jobnamen). Jetzt muß nur noch die Buchungsperiode (TAB_SELPA) um eins erhöht werden. Dies kann mit dem Funktionsbaustein K_PERIODS_GET erfolgen.
Beispielaufruf:
call function 'K_PERIODS_GET'
exporting
par_igjahr = " Übergabe Jahr
par_ipoper = " Übergabe Periode
par_kokrs =
par_nextp = 'X' " Bestimmen nächste Periode
* PAR_PREVP = ' ' " Bestimmen Vorperiode
* PAR_SPEOK = ' ' " Sonderperioden erlaubt
importing
* PAR_ANZBP = " Anzahl Buchungsperioden
* PAR_ANZSP = " Anzahl Sonderperioden
par_egjahr = " Rückgabe Jahr
par_epoper = " Rückgabe der Periode
* PAR_FDPER = " Erster Tag der Periode
* par_LDPER = " Letzter Tage der Periode
exceptions
kokrs_invalid = 01
poper_invalid = 02
others = 99.
  • Problematisch ist die Sache wenn eine Transaktion, welche zeitbezogene Parameter besitzt, mehrmals in derselben Periode laufen soll.
--> Bisher ist dies noch ungelöst.

Die wichtigsten Übergabeparameter und ihre Bedeutung

  • PAR_DIALG
Flag: Es soll ein Dialog geführt werden.
Der Anwender kann den Jobnamen, den Starttermin etc. in einem Dialogschritt angeben. Der Job kann sofort, zu einem bestimmten Termin, nach einem Vorgängerjob oder nach einem Ereignis gestartet werden.
  • PAR_PRINT
Flag: Die Druckparameter sollen angebbar sein
Der Anwender kann in einem Dialogschritt die Druckparameter pflegen. Ansonsten können die Druckparameter auch vorgegeben werden. Dazu dienen die Parameter PAR_PRIPA (Druckparameter) und PAR_ARCPA (Archivparameter). Das bestimmen der Druckparameter sollte mit dem Funktionsbaustein 'GET_PRINT_PARAMETERS' erfolgen.
Beispiel für das Setzen/Lesen der Druckparameter:
call function 'GET_PRINT_PARAMETERS'
exporting
mode = 'CURRENT'
layout =
line_count =
line_size =
no_dialog = 'X' " Kein Dialog
importing
out_archive_parameters =
out_parameters = .
  • PAR_RNAME
Report, welcher im Hintergrund durch den Job gestartet wird
  • PAR_SRVKZ
Angabe des Zielservers möglich
Der Anwender kann im Dialog einen bestimmten Server für seinen Job direkt angeben
  • PAR_PERKZ
Periodische Einplanung möglich
Der Anwender hat alle Möglichkeiten eine periodische Jobeinplanung vorzunehmen
  • PAR_VARKZ
Die Reportvariante ist änderbar/angebbar
Der Anwender kann im Dialog eine Reportvariante für den zu startenden Report (PAR_RNAME) mit angeben
  • PAR_RFCGN
Name des Parameters: Server-Gruppe Wird hier ein Parametername für die Server-Gruppe angegeben, so kann der Anwender im Dialog die Server-Gruppe mit angeben. Dieser Parameterwert kann dann zur Parallelisierung der Anwendung herangezogen werden
  • PAR_SYSKZ
Angabe des Zielsystems möglich
Der Anwender kann im Dialog ein Zielsystem für seinen Job direkt angeben

Beenden der Jobeinplanung

Im Standard wird nach erfolgter Jobeinplanung zur rufenden Transaktion zurückgekehrt. Man kann aber auch, über Parameter gesteuert, eine der folgenden Tarnsaktionen rufen:

  • PAR_JSHOW --> Anzeigen Job

  • PAR_NSMXX --> Anzeigen benutzereigene Jobs

  • PAR_NSP01 --> Anzeigen Spoolliste

  • PAR_NSM37 --> Anzeigen Jobübersicht

Der Parameter PAR_SDMSG (Nachricht ausgeben) bewirkt, dass am Ende der Jobeinplanung eine Statusmeldung ausgegeben wird.

Der Parameter PAR_ABEND (Bei ABBRECHEN Kontrolle zurückerhalten) bewirkt, dass die rufende Transaktion im Falle eines Abbruchs in der Jobeinplanung die Kontrolle zurückerhält.

Beispielaufruf

Aufruf der Jobeinplanung mit Dialog zum Angeben des Starttermins und der Druckparameter. Am Ende wird eine Statusmeldung ausgegeben.
call function 'K_BATCH_REQUEST'
exporting
par_dialg = 'X' " Dialog: Starttermin
par_print = 'X' " Dialog: Druckparameter
par_jname =
par_pripa =
par_arcpa =
par_rname =
par_sdmsg = 'X' " Senden Statusmeldung
tables
tab_selpa =
exceptions
others = 01.

Bekannte Probleme

  • Beim Versuch der Hintergrundeinplanung erfolgt ein Abbruch im Funktionsbaustein K_BATCH_REQUEST wegen eines Generierungsfehlers im Programm xxx. Nachricht KV 099.
--> Hinweis 61603 einbauen (Release 3.0C bis 3.0E)
  • Bei der Einplanung eines Jobs für die Hintergrundverarbeitung kommt es zum Abbruch PT 019 'Keine Archivinformationen gefunden'.
--> Hinweis 89070 einbauen (Release 3.0D bis 4.0A)
  • Bei der Jobeinplanung sind auf dem Druckbild keine Druckparameter defaultmässig vorbelegt.
--> Die rufende Transaktion hat die Parameter beim Aufruf (PAR_PRIPA
PAR_ARCPA) nicht mitgegeben.
Beispiel für das Setzen der Druckparameter:
data: sav_pripa like pri_params,
sav_arcpa like arc_params.
call function 'GET_PRINT_PARAMETERS'
exporting
mode = 'CURRENT' " Modus
no_dialog = 'X' " Kein Dialog
importing
out_archive_parameters = sav_arcpa
out_parameters = sav_pripa.
IF SY-BATCH = 'X'.
SUBMIT
...
to sap-spool
spool parameters sav_pripa " <-- Wichtig!
archive parameters sav_arcpa " <-- Wichtig!
...
ELSE.
SUBMIT
...
ENDIF.
  • Es sollen mehrere Listen erzeugt werden bzw. mehrere Listausgaben zu einer Liste zusammengefasst werden (z.B. Objektliste und Nachrichten).
--> Im Druckbild kann man über den Parameter 'Neuer Spool-Auftrag'
separate Listen erzwingen (Parameter NEW_LIST_ID).
--> Beim Anzeigen der Spool-Liste aus dem Job heraus (SM37) wird
jedoch immer nur die Liste mit der höchsten Nummer angezeigt.
Dies muss nicht immer die zuletzt erzeugte Liste sein!
--> Will man Listausgaben zusammenfassen, so gelingt dies nicht immer.
Die Listparamter müssen hierzu alle identisch sein! Nur in diesem
Fall wird eine neu erzeugte Liste an eine bestehende angehängt.
Das Anhängen kann allerdings dann auch an eine schon sehr alte,
noch in der Spool stehende Liste, erfolgen!
  • Die dem im Hintergrund gestarteten Report mitgegebenen Feldwerte werden ab der Länge 45 abgeschnitten.
--> Dies passiert nur, wenn es sich um select-options handelt.
Z.Z. erlauben select-options nur Feldwerte in der Länge 45, es
sei denn, sie sind im Report mit dem Zusatz NO-DISPLAY
gekennzeichnet und erscheinen damit nicht auf dem Selektionsbild.
Die Feldwerte werden leider ohne Meldung abgeschnitten!!!
Bem.: Bei der Einplanung ohne die Verwendung des Dummyreports
erfolgt eine Verprobung der Feldlänge im
K_BATCH_REQUEST.




Parameter

PAR_ABEND
PAR_ADDPA
PAR_AMAIL
PAR_ARCPA
PAR_ARCPA
PAR_CSTAT
PAR_CSTAT
PAR_DIALG
PAR_EMAIL
PAR_EVENT
PAR_EVENT
PAR_EVTPA
PAR_EVTPA
PAR_JNAME
PAR_JNAME
PAR_JNUMM
PAR_JSHOW
PAR_KABA01
PAR_LTDAY
PAR_LTDAY
PAR_LTTME
PAR_LTTME
PAR_NONOW
PAR_NSM37
PAR_NSMXX
PAR_NSP01
PAR_OMODE
PAR_OMODE
PAR_PDAYS
PAR_PDAYS
PAR_PERKZ
PAR_PERKZ
PAR_PMNTH
PAR_PMNTH
PAR_PNAKZ
PAR_PNAME
PAR_PRCNT
PAR_PRCNT
PAR_PRINT
PAR_PRIPA
PAR_PRIPA
PAR_PRJOB
PAR_PRJOB
PAR_PWEEK
PAR_PWEEK
PAR_RFCGN
PAR_RFCGR
PAR_RFCGR
PAR_RNAME
PAR_RTIME
PAR_SDMSG
PAR_SMAIL
PAR_SPONR
PAR_SRVKZ
PAR_STDAY
PAR_STDAY
PAR_STNOW
PAR_STNOW
PAR_STTME
PAR_STTME
PAR_SWAIT
PAR_SYSKZ
PAR_TABST
PAR_TEXPR
PAR_TSYST
PAR_TSYST
PAR_VARKZ
PAR_VARNR
PAR_VARNR
PAR_WTIME
TAB_SELPA

Ausnahmen

CALENDAR_ID_NOT_DEFINED
CALENDAR_UNKNOWN_ERROR_OCCURED
DELETE_REPORT_INCORRECT
EDLIN_TOO_LONG
GENERATE_REPORT_INCORRECT
INCOMPLETE_LAST_START_DATE
INCOMPLETE_START_DATE
INSERT_REPORT_INCORRECT
INVALID_EVENT
INVALID_OPERATION_MODE
INVALID_PREDECESSOR_JOB_NAME
INVALID_WORKDAY_NUMBER_GIVEN
JNAME_MISSING
JOB_CLOSE_INCORRECT
JOB_NOT_RELEASED
JOB_OPEN_INCORRECT
LAST_START_DATE_IN_THE_PAST
LOCK_REPORT_IMPOSSIBLE
NO_EVENT_GIVEN
NO_JOB_SELECTED
NO_PERIOD_DATA_GIVEN
NO_WORKDAY_NUMBER_GIVEN
OPTION_WRONG
PERIOD_TOO_SMALL_FOR_LIMITS
PNAME_MISSING
PREDECESSOR_JOB_NOT_UNIQUE
PRED_JOB_AND_PERIOD_IMPOSSIBLE
READ_REPORT_INCORRECT
REPORT_IN_TRDIR_MISSING
REPORT_VARIANT_MISSING
RNAME_MISSING
SELNAME_HIGH_TOO_LONG
SELNAME_LOW_TOO_LONG
SELNAME_TOO_LONG
SERVER_GROUP_MISSING
SIGN_WRONG
START_DATE_BEFORE_HDAY_IN_PAST
START_DATE_IMPOSSIBLE
START_DATE_INTERVAL_TOO_LARGE
START_DATE_IN_THE_PAST
START_DATE_IS_A_HOLIDAY
START_DATE_MISSING
START_DATE_NOT_BEFORE_MISSING
START_DATE_OUT_OF_CALID_RANGE
START_TIME_ON_WORKDAY_MISSING
SUBMIT_INCORRECT
SYSTEM_ERROR
TAB_SELPA_TYPE_WRONG
TARGET_SERVER_MISSING
TARGET_SYSTEM_MISSING

Funktionsgruppe

KABA

BAL_S_LOG - Application Log: Log header data   ROGBILLS - Synchronize billing plans  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 24609 Date: 20240523 Time: 105341     sap01-206 ( 218 ms )