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.
- Termin an Outlook versenden - 5. September 2023
- Code-Inspector-Prüfungen auflisten - 1. September 2023
- Massenkopie von Klassen - 13. Juni 2023