1、SUBMIT说明
在ABAP中,SUBMIT关键字用于运行另一个ABAP程序。通过SUBMIT关键字,可以在当前程序内部调用其他程序,而无需关闭当前程序。
SUBMIT语句的一般语法如下:
"--------------------@斌将军-------------------- SUBMIT [VIA SELECTION-SCREEN|USING SELECTION-SET ] [VIA JOB LV_JOBNAME NUMBER LV_JOBCOUNT] [AND RETURN] [EXPORTING LIST TO MEMORY] [WITH p1 = ... pn = ] [WITH p1 = ... WITH pn = ]. "--------------------@斌将军--------------------
2、指定账号
需求说明:在后台JOB中使用SUBMIT调用程序时,程序中需要指定某个账号来执行某些逻辑,所以使用USE LV_UNAME,服务器托管网用于指定运行目标程序的用户名。不管登录账号是哪个,都是使用账号BINGENERAL来执行目标程序YTESTJOB。
源程序代码如下:
"--------------------@斌将军-------------------- DATA: lv_number TYPE tbtcjob-jobcount, lv_name TYPE tbtcjob-jobname, lv_uname TYPE syst_uname, lv_print_parameters TYPE pri_params. CLEAR:lv_name ,lv_number. lv_name = |后台作业测试|. CALL FUNCTION 'JOB_OPEN' EXPORTING jobname = lv_name IMPORTING jobcount = lv_number EXCEPTIONS cant_create_job = 1 invalid_job_data = 2 jobname_missing = 3 OTHERS = 4. IF sy-subrc = 0. lv_uname = 'BINGENERAL'."调用ytestjob时,用账号:BINGENERAL执行程序 SUBMIT ytestjob TO SAP-SPOOL SPOOL PARAMETERS lv_print_parameters WITHOUT SPOOL DYNPRO VIA JOB lv_name NUMBER lv_number USER lv_uname AND RETURN. IF sy-subrc = 0. CALL FUNCTION 'JOB_CLOSE' EXPORTING jobcount = lv_number jobname = lv_name strtimmed = 'X' EXCEPTIONS cant_start_immediate = 1 invalid_startdate = 2 jobname_missing = 3 job_close_failed = 4 job_nosteps = 5 job_notex = 6 lock_fa服务器托管网iled = 7 OTHERS = 8. IF sy-subrc 0. ENDIF. ENDIF. ENDIF. "--------------------@斌将军--------------------
在YTESTJOB中校验用户是否有权限,目标程序代码如下:
"--------------------@斌将军-------------------- REPORT ytestjob. DATA(lv_message) = '执行本程序的账号:' && sy-uname. WRITE: lv_message. AUTHORITY-CHECK OBJECT 'M_MRES_WWA' ID 'ACTVT' DUMMY ID 'WERKS' FIELD 'P010'. IF sy-subrc 0. WRITE: / '权限校验失败'. ELSE. WRITE: / '权限校验成功'. ENDIF. "--------------------@斌将军--------------------
3、存在问题
测试时,使用SAP_ALL权限的账号,没有问题,后台作业创建并执行成功
运行结果
但是此方法对于非SAP_ALL权限的账号TEST1103,执行时就出现了问题
作业没有正常执行
检查后发现原来是权限问题,使用SU53发现缺少权限
官方解释
而且指定用户名时,要用大写,否则仍然检查失败
所以大家在使用此关键字指定用户时,需要注意以上问题。
而对于想通过指定大权限账号来跳过权限校验这个方案,也要考虑给登录用户分配S_BTCH_NAM权限的合理性。
定期更文,欢迎关注
Arabic | Hebrew | Polish |
Bulgarian | Hindi | Portuguese |
Catalan | Hmong Daw | Romanian |
Chinese Simplified | Hungarian | Russian |
Chinese Traditional | Indonesian | Slovak |
Czech | Italian | Slovenian |
Danish | Japanese | Spanish |
Dutch | Klingon | Swedish |
English | Korean | Thai |
Estonian | Latvian | Turkish |
Finnish | Lithuanian | Ukrainian |
French | Malay | Urdu |
German | Maltese | Vietnamese |
Greek | Norwegian | Welsh |
Haitian Creole | Persian |
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: 给 Web 前端工程师看的用 Rust 开发 wasm 组件实战 | 京东云技术团队
什么是wasm组件? wasm 全称 WebAssembly,是通过虚拟机的方式,可以在服务端、客户端如浏览器等环境执行的二进制程序。他有速度快、效率高、可移植的特点。 对我们 Web 前端工程最大的好处就是可以在浏览器端使用二进制程序处理一些计算量大的处理,…