判断schema是否符合要求

判断用户在选择屏幕上输入的schema 是否符合要求,实现逻辑为:

(1)判断当前的client,是否为标准的client 000

(2)如果是标准的client 000,那么就应该 在表T52CD查询该schema对应的记录;如果不是标准的client 000,那么就应该在表 T52CC 中查询该schema对应的记录A。

      查询不到记录A的话,说明该schema不存在,给出错误提示,结束处理。否则,进入第(3)步。

    T52CD  -- Schema Directory

    T52CC  -- Directory of Customer Schemas

(3)判断记录A中 execu 字段是否为空,如果为空,说明该schema为不可执行的schema,给出错误提示,结束处理。否则进入第(4)步

(4)查询表 T52BA/T52B5 ,判断该 schema是否允许该国家做使用。如果不允许该国家组使用,给出错误提示,结束处理。否则进入第(5)步

  T52BA -- Assignment of Values to Customer Objects

(5)同样查询表T52BA/T52B5,判断该schema是否可用于Payroll(即它的program class 是否为 C )。如果不可以,给出错误提示。否则说明该schema是合法的。

实现代码如下所示:

  FORM check_schema_allowed USING schema LIKE t52cc-sname.

  DATA: standard_client LIKE sy-mandt VALUE '000'.
  IF sy-mandt NE standard_client.
* customer schema
    SELECT SINGLE * FROM t52cc WHERE sname EQ schema.
    IF sy-subrc IS INITIAL.
      IF t52cc-execu EQ space.
* message schema not executable
        MESSAGE e165(pn)WITH schema.
      ENDIF.

      SELECT SINGLE * FROM t52ba WHERE potyp = 'SCHE'     AND
                                       ponam = schema    AND
                                       pattr = 'CNT'     AND
                                     ( pwert EQ gc_molga OR
                                       pwert EQ '*').
      IF sy-subrc IS INITIAL.
        SELECT SINGLE * FROM t52ba WHERE potyp = 'SCHE'   AND
                                         ponam = schema  AND
                                         pattr = 'PCL'   AND
                                         pwert = 'C'.
        IF sy-subrc NE 0.
* message wrong procl
          MESSAGE e166(pn)WITH schema.
        ENDIF.
      ELSE.
* message wrong molga
        MESSAGE e167(pn)WITH schema.
      ENDIF.
      EXIT.
    ENDIF.
  ENDIF.
* SAP schema
  SELECT SINGLE * FROM t52cd WHERE sname EQ schema.
  IF sy-subrc IS INITIAL.
    IF t52cd-execu EQ space.
* message schema not executable
      MESSAGE e165(pn)WITH schema.
    ENDIF.

    SELECT SINGLE * FROM t52b5 WHERE potyp = 'SCHE'     AND
                                     ponam = schema    AND
                                     pattr = 'CNT'     AND
                                   ( pwert EQ gc_molga OR
                                     pwert EQ '*').
    IF sy-subrc IS INITIAL.
      SELECT SINGLE * FROM t52b5 WHERE potyp = 'SCHE'   AND
                                       ponam = schema  AND
                                       pattr = 'PCL'   AND
                                       pwert = 'C'.
      IF sy-subrc NE 0.
* message wrong procl
        MESSAGE e166(pn)WITH schema.
      ENDIF.
    ELSE.
* message wrong molga
      MESSAGE e167(pn)WITH schema.
    ENDIF.
  ELSE.
* message schema does not exist
    MESSAGE e168(pn)WITH schema.
  ENDIF.
ENDFORM.           

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值