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
Letzte Artikel von Enno Wulff (Alle anzeigen)