SUBMIT 指定用户名错误

作者:斌将军 约 4 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Data Engineering, 开发, 数据工程

**1**

**SUBMIT** **说明**

SUBMIT 指定用户名错误 - 封面图
SUBMIT 指定用户名错误 - 封面图

在ABAP中,SUBMIT关键字用于运行另一个ABAP程序。通过SUBMIT关键字,可以在当前程序内部调用其他程序,而无需关闭当前程序。

SUBMIT语句的一般语法如下:

"--------------------@斌将军--------------------SUBMIT <program> [VIA SELECTION-SCREEN|USING SELECTION-SET <selection_set>] [VIA JOB LV_JOBNAME NUMBER LV_JOBCOUNT] [AND RETURN] [EXPORTING LIST TO MEMORY] [WITH p1 = <value1> ... pn = <value_n>] [WITH p1 = <value1> ... WITH pn = <value_n>]."--------------------@斌将军--------------------

**2**

**指定用户名**

SUBMIT 指定用户名错误 - 封面图
SUBMIT 指定用户名错误 - 封面图

** 需求说明 ** :在后台JOB中使用SUBMIT调用程序时,程序中需要指定某个账号来执行某些逻辑,所以使用USER

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_failed = 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**

**存在问题**

SUBMIT 指定用户名错误 - 封面图
SUBMIT 指定用户名错误 - 封面图

测试时,使用SAP_ALL权限的账号,没有问题,后台作业创建并执行成功

SUBMIT 指定用户名错误 - 封面图
SUBMIT 指定用户名错误 - 封面图

运行结果

SUBMIT 指定用户名错误 - 封面图
SUBMIT 指定用户名错误 - 封面图

但是此方法对于非SAP_ALL权限的账号TEST1103,执行时就出现了问题

SUBMIT 指定用户名错误 - 封面图
SUBMIT 指定用户名错误 - 封面图

作业没有正常执行

SUBMIT 指定用户名错误 - 封面图
SUBMIT 指定用户名错误 - 封面图

检查后发现原来是权限问题,使用SU53查看缺少权限

SUBMIT 指定用户名错误 - 封面图
SUBMIT 指定用户名错误 - 封面图

官方解释

SUBMIT 指定用户名错误 - 封面图
SUBMIT 指定用户名错误 - 封面图

而且指定用户名时,要用大写,否则仍然检查失败

SUBMIT 指定用户名错误 - 封面图
SUBMIT 指定用户名错误 - 封面图

所以大家在使用此关键字指定用户时,需要注意以上问题。

而对于想通过指定大权限账号来跳过权限校验这个方案,也要考虑给登录用户分配S_BTCH_NAM权限的合理性。

斌将军

关于作者:斌将军

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「SUBMIT指定用户名错误.md」整理生成,仅用于内部技术分享与学习交流。