FUNCTION tr_sys_params. *"---------------------------------------------------------------------- *"*"Lokale Schnittstelle: *" EXPORTING *" VALUE(SYSTEMEDIT) LIKE TADIR-EDTFLAG *" VALUE(SYSTEMNAME) LIKE SY-SYSID *" VALUE(SYSTEMTYPE) LIKE SY-SYSID *" VALUE(SYSTEM_CLIENT_EDIT) LIKE T000-CCCORACTIV *" VALUE(SYS_CLIINDDEP_EDIT) LIKE T000-CCNOCLIIND *" VALUE(SYSTEM_CLIENT_ROLE) LIKE T000-CCCATEGORY *" VALUE(EV_C_SYSTEM) LIKE TRPARI-S_CHECKED *" EXCEPTIONS *" NO_SYSTEMNAME *" NO_SYSTEMTYPE *"---------------------------------------------------------------------- DATA: gcon_tr_sys_params TYPE context_tr_sys_params, lt_symsg LIKE symsg OCCURS 0, ls_symsg LIKE symsg, lv_use_context TYPE c VALUE 'X'. IF lv_use_context = 'X'. * use of context (with security mechanism) * Context buffer is implicitely client dependent, so we do not need to * set the client explicitely SUPPLY i_dummy = 'X' TO CONTEXT gcon_tr_sys_params. DEMAND e_systemedit = systemedit e_systemname = systemname e_systemtype = systemtype e_client_edit = system_client_edit e_cliinddep_edit = sys_cliinddep_edit e_client_role = system_client_role FROM CONTEXT gcon_tr_sys_params MESSAGES INTO lt_symsg. READ TABLE lt_symsg INDEX 1 INTO ls_symsg. IF sy-subrc = 0 " ERROR OCCURED!!!! OR systemname = space. MESSAGE ID ls_symsg-msgid TYPE 'I' "ls_symsg-msgty NUMBER ls_symsg-msgno WITH ls_symsg-msgv1 ls_symsg-msgv2 ls_symsg-msgv3 ls_symsg-msgv4. CALL FUNCTION 'TR_SYS_PARAMS_CONTEXT_MODULE' EXPORTING dummy = 'X' IMPORTING systemedit = systemedit systemname = systemname systemtype = systemtype system_client_ed = system_client_edit sys_cliinddep_ed = sys_cliinddep_edit system_client_ro = system_client_role EXCEPTIONS no_systemname = 1 no_systemtype = 2. CASE sy-subrc. WHEN 1. current_message_raising no_systemname. WHEN 2. current_message_raising no_systemtype. ENDCASE. ENDIF. ELSE. "" old behaviour DATA: lv_len TYPE i, ls_tadir LIKE tadir, ls_t000 LIKE t000, lv_system_type LIKE sy-sysid. *** find system name ************************************************** SELECT SINGLE * FROM tadir INTO ls_tadir WHERE pgmid = 'HEAD' AND object = 'SYST' AND obj_name = space. IF sy-subrc <> 0. MESSAGE e732(tk) RAISING no_systemname. ENDIF. *** find system type ************************************************** CALL 'C_SAPGPARAM' ID 'NAME' FIELD 'transport/systemtype' ID 'VALUE' FIELD lv_system_type. IF sy-subrc <> 0. MESSAGE e105(tk) WITH 'transport/systemtype' RAISING no_systemtype. ELSE. lv_len = strlen( ls_tadir-srcsystem ). IF lv_len <> 3. MESSAGE e842(tr) WITH ls_tadir-srcsystem RAISING no_systemname. ENDIF. ENDIF. IF sy-sysid >< ls_tadir-srcsystem. MESSAGE e732(tk) RAISING no_systemname. ENDIF. systemname = ls_tadir-srcsystem. systemedit = ls_tadir-edtflag. systemtype = lv_system_type. *** development system for C-sources? * IF ls_tadir-cproject(1) = 'C'. * ev_c_system = 'X'. * ELSE. ev_c_system = ' '. * ENDIF. *** find client editable ********************************************** IF system_client_edit IS REQUESTED OR sys_cliinddep_edit IS REQUESTED OR system_client_role IS REQUESTED. SELECT SINGLE * FROM t000 INTO ls_t000 WHERE mandt = sy-mandt. IF sy-subrc = 0. system_client_edit = ls_t000-cccoractiv. sys_cliinddep_edit = ls_t000-ccnocliind. system_client_role = ls_t000-cccategory. ELSE. system_client_edit = ' '. sys_cliinddep_edit = ' '. system_client_role = ' '. ENDIF. ENDIF. ENDIF. systemedit = 'C'. * systemname = systemname. systemtype = 'CUSTOMER'. system_client_edit = 1. sys_cliinddep_edit = space. system_client_role = 'C'. ENDFUNCTION.