SYSTEM-CALLS

Eine Auflistung von SYSTEM-CALLS. Bitte beachten Sie, dass System-Calls nur in dringenden Fällen verwendet werden sollten. Meistens gibt es auch einen Funktionsbaustein der die Aufgabe eines System-Calls übernimmt. Bei System-Calls können ohne weiteres mal die Parameter im C-Programm geändert werden, so dass der Aufruf nicht mehr oder nur noch fehlerhaft funktioniert.


Eine Information von Horst Keller zu SYSTEM-CALLS:
http://scn.sap.com/people/horst.keller/blog/2013/03/06/a-word-about-call-system


Prüfen, ob ein Funktionsbaustein per RFC gerufen wurde

call ‚RFCControl‘ id ‚CODE‘ field ‚B‘.
if sy-subrc = 0.
*** running under RFC
endif

Alternativ kann der Funktionsbaustein RFC_GET_ATTRIBUTES verwendet werden. Dieser liefert eine Excpetion, wenn er nicht im RFC aufgerufen wird. Es wird der System-Call RFCControl verwendet.

Profilparameter lesen

data a_name(30) type c value ‚zcsa/installed_languages‘.

call ‚C_SAPGPARAM‘ id ‚NAME‘  field a_name
id ‚VALUE‘ field a_value.
id ‚VALUE11‘ field val1
id ‚VALUE21‘ field val2
id ‚VALUE31‘ field val3

Aktuell gültige Sprache ermitteln

call ‚CUR_LCL‘ id ‚LANG‘     field old_lang
id ‚CODEPAGE‘ field old_cp
id ‚LOCALE‘   field old_loca
id ‚ERRMSG‘   field errmsg.

Im Workprozess zu anderer Sprache wechseln

call ‚LCL_FOR_LANG‘ id ‚NEWLANG‘ field langu
id ‚ENFORCE‘ field ‚X‘
id ‚ERRMSG‘  field errmsg.

Automatisches Logoff

call ‚SYST_LOGOFF‘.

Systembefehle ausführen

ACHTUNG: Die unsachgemäße Anwendung dieses Calls kann wichtige Dateien auf Ihrem Server zerstören!

(Programm SAPMSOS0):
DATA: PARCOM(250),
BEGIN OF TABL OCCURS 0,
LINE(200),
END OF TABL.
call ‚SYSTEM‘ ID ‚COMMAND‘ FIELD PARCOM
ID ‚TAB‘     FIELD TABL-*SYS*.

Environmentvariablen lesen

a_name: SAP_CODEPAGE
PATH_TO_CODEPAGE

data longline(170).
call ‚C_GETENV‘ id ‚NAME‘  field a_name
id ‚VALUE‘ field longline.

Funktionsgruppe DX_FILE

call ‚C_SAPGPARAM‘ id ‚NAME‘  field ‚DIR_HOME‘
id ‚VALUE‘ field i_path.

call ‚C_DIR_READ_FINISH‘
id ‚ERRNO‘  field …
id ‚ERRMSG‘ field ….

call ‚C_DIR_READ_START‘
id ‚DIR‘    field i_path
id ‚FILE‘   field filemask
id ‚ERRNO‘  field errno
id ‚ERRMSG‘ field errmsg.

call ‚C_DIR_READ_NEXT‘
id ‚TYPE‘   field type
id ‚NAME‘   field name
id ‚LEN‘    field len
id ‚OWNER‘  field owner
id ‚MTIME‘  field mtime
id ‚MODE‘   field mode
id ‚ERRNO‘  field errno
id ‚ERRMSG‘ field errmsg.

OK-Code ermitteln

Aufruf aus SAPMSSYD, um den eingegebenen OK-Code aus der OK-Code-Leiste zu bekommen:

call ‚DYNP_OKCODE_GET‘ id ‚FCODE‘
field my_ucomm.

Datei löschen:

CALL ‚C_REMOVE‘ ID ‚DIR‘ FIELD ‚/tmp/‘
ID ‚FILE‘ FIELD ‚datei.txt‘.

Trace

Schreibt einen Eintrag in das Tracefile des aktuellen Prozesses. Beispiel:

L Thu Jul 31 23:04:46 2003
L  ACHTUNG: Text1 Text2

CALL ‚WriteTrace‘
ID ‚CALL‘ FIELD ‚ACHTUNG‘
ID ‚PAR1‘ FIELD ‚Text1‘ „#EC NOTEXT
ID ‚PAR2‘ FIELD ‚Text2‘.

Uhr

CALL ‚CLOCK‘ ID ‚DATE‘ FIELD date
ID ‚TIME‘ FIELD time.

Verbucher

Prüfen, ob ein Verbucher im Spiel ist…

*– Alten Sperruser besorgen
CALL ‚C_ENQUEUE‘
ID ‚OPCODE‘ FIELD ‚7‘
ID ‚ENQKVB‘ FIELD HLP_USER1.

*– Commit Work
  COMMIT WORK.

*– Neuen Sperruser besorgen
  CALL ‚C_ENQUEUE‘
ID ‚OPCODE‘ FIELD ‚7‘
ID ‚ENQKVB‘ FIELD HLP_USER2.

Wenn die User HLP_USER1 und HLP_USER2 ungleich sind, dann ist ein Verbucher im Spiel, da die Sperre beim Aufruf an ihn weitergegeben wird.

Eine einfachere Möglichkeit ist jedoch die, das Systemfeld SY-ONCOM abzufragen. SY-ONCOM enthält normalerweise ‚S‘.
Befindet man sich im „Verbucher“ (on update task), so ist der Wert ‚V‘.
Ist eine Formroutine „on commit“ registriert, so hat SY-ONCOM den Wert ‚P‘ beim Prozessieren dieser Formroutine.
Geht es nur um den „Verbucher“ kann man auch den Funktionsbaustein „TH_IN_UPDATE_TASK“ benutzen, der auch einen Systemcall absetzt.

Name des Aufrufers ermitteln

Verwendet im Funktionsbaustein „JOB_OPEN“, um den Programmnamen des aufrufenden Programms zu ermitteln.

DATA calling_abap LIKE sy-repid.
CALL ‚AB_GET_CALLER‘ ID ‚PROGRAM‘ FIELD calling_abap.

TableControl

Gefunden in Funktionsgruppe STCX

Datendefinition

TCVIEWTAB    TYPE STANDARD TABLE OF tcview
CXNAME       TYPE tccontrol
DYNPRODEF(1) TYPE c

Felder setzen

call ‚AB_SET_CX_DATA‘
id ‚PROGRAM‘   field current_control-program
id ‚CXNAME‘    field current_control-control
id ‚TCVIEWTAB‘ field current_data[].        

Felder lesen

call ‚AB_GET_CX_DATA‘
id ‚PROGRAM‘   field current_control-program
id ‚CXNAME‘    field current_control-control
id ‚DYNPRODEF‘ field dynpdef
id ‚TCVIEWTAB‘ field current_data[] id ‚DYNPRONR‘  field dynnr.                 

Transaktion ermitteln, die das aktuelle Programm rief

call ‚GET_PARAM_TCOD‘
id ‚PTCOD‘ field calling_transaction.

Enno Wulff
follow me
Letzte Artikel von Enno Wulff (Alle anzeigen)