ABAP出口无法保存之解决方法

近日,接到项目组同事ABAP开发请求无法保存的情况,询问后得知是一出口程序无法保存,保存时一直报错,按帮助提示如下:

Diagnosis An operating system file (the SAPNAMES file of user CRCCI003) could not be accessed from the program that is running, since it is locked by another transaction.

The name of the lock file is "/usr/sap/trans/tmp/CRCCI003.LOS".

Procedure Execute the function again after a few seconds. If the message occurs regularly, contact your SAP administrator.

将原来的请求release掉,再重新生成新的请求,保存时也出现这问题。问题一定是处在OS上了,找到/usr/sap/trans/tmp目录,果然有一个lock file叫CRCCI003.LOS,是CRCCI003用户产生的锁定文件,将其删除。在删除前先做好该文件的备份,以防万一,备份为CRCCI003.LOS.BK即可,然后放心的删除CRCCI003.LOS,至此问题完美解决,请求可以保存了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ABAP 中,可以使用 SO_USER_EXIT 函数来在保存 SO 前做校验。 1. 首先,在 SE11 中创建一个结构体,用于存储校验结果及相关信息。 2. 在 SE37 中创建一个函数,通过传入 SO 的相关参数,进行校验,并返回校验结果及相关信息的结构体。 3. 在 VA01、VA02、VA03 等事务代码的用户退出函数中,调用上述函数进行校验,若校验结果为错误,则阻止 SO 的保存。 以下是一个简单的示例代码: ``` TYPES: BEGIN OF ty_so_check_result, error TYPE i, message TYPE string, END OF ty_so_check_result. FUNCTION zso_check. *"---------------------------------------------------------------------- *"*"Local Interface: *" IMPORTING *" VALUE(vbeln) TYPE vbak-vbeln *" EXPORTING *" VALUE(result) TYPE ty_so_check_result *"---------------------------------------------------------------------- DATA: wa_vbak TYPE vbak. SELECT SINGLE * FROM vbak INTO wa_vbak WHERE vbeln = vbeln. IF wa_vbak-kunnr IS INITIAL. result-error = 1. result-message = 'Customer is mandatory.'. ENDIF. ENDFUNCTION. FUNCTION zuser_exit_save_document. *"---------------------------------------------------------------------- *"*"Local Interface: *" IMPORTING *" VALUE(ta_vbak) TYPE TABLE OF vbak *" VALUE(ta_vbap) TYPE TABLE OF vbap *" EXPORTING *" VALUE(e_save) TYPE c *"---------------------------------------------------------------------- DATA: wa_so_check_result TYPE ty_so_check_result. CALL FUNCTION 'zso_check' EXPORTING vbeln = ta_vbak[ 1 ]-vbeln IMPORTING result = wa_so_check_result. IF wa_so_check_result-error = 1. MESSAGE wa_so_check_result-message TYPE 'E'. e_save = space. ELSE. e_save = 'S'. ENDIF. ENDFUNCTION. ``` 在上述示例代码中,我们首先定义了一个 ty_so_check_result 的结构体,用于存储校验结果及相关信息。然后,我们创建了 zso_check 的函数,通过传入 SO 的相关参数,进行校验,并返回校验结果及相关信息的结构体。最后,在用户退出函数 zuser_exit_save_document 中,我们调用 zso_check 函数进行校验,若校验结果为错误,则阻止 SO 的保存,否则允许 SO 的保存

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值