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.
- Meine Eclipse-Plugins - 22. November 2024
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024