后台正运行不允许前台操作

背景:

当程序排了后台JOB,且正在运行时,用户又通过前台事务码去执行数据。

如下图:后台JOB正在运行着,用户又在前台去点击“生成归档号”,这样会导致同一笔数据错乱,或者update自建表时,没update成功等等一系列问题存在。

解决方案:

当后台在运行数据时,前台应该卡住,不允许手动运行程序,

刚好我这个报表在ALV下,在USER_COMMAND下添管控逻辑。

在SAP中TBTCP与TBTCO是保存JOB的表,可以通过这两张表判断。

其中TBTCO-STATUS:

  1. "R"表示正在活动的;

  2. "S"表示已释放,等待执行;

  3. "F"表示完成,已结束。

    FORM FRM_LOCK_BACKGRUND.
    ​
      DATA: L_SRTFD TYPE INDX-SRTFD VALUE SY-REPID,           "定义程序名
            L_DATE  TYPE INDX-BEGDT.
    ​
      L_SRTFD = SY-REPID.
      L_DATE  = SY-DATUM.
      CLEAR: GT_PLM_TBTCP[],GT_PLM_TBTCO[].
      CLEAR: GW_PLM_TBTCP,GW_PLM_TBTCO.
    ​
      SELECT SINGLE * FROM TBTCP INTO GW_PLM_TBTCP
        WHERE PROGNAME = L_SRTFD
          AND SDLDATE = L_DATE.                             "#EC CI_NOORDER
    ​
      IF GW_PLM_TBTCP IS NOT INITIAL.
        SELECT * FROM TBTCO INTO TABLE GT_PLM_TBTCO
          WHERE JOBNAME = GW_PLM_TBTCP-JOBNAME
            AND STATUS = 'R'.
      ENDIF.
    ​
      IF GT_PLM_TBTCO[] IS NOT INITIAL.
        MESSAGE S000 WITH '后台系统正在处理,请稍后......!'
          DISPLAY LIKE 'E'.
        STOP.
      ENDIF.
    ENDFORM. 

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值