ABAP 工单状态读取

CDS代码

CDS代码如下,可自行转换成OPEN SQL代码

@AbapCatalog.sqlViewName: 'ZPPV024'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: '读取生产工单状态'
define view ZPPV024_DDL as select distinct from aufk
  left outer join jest  on aufk.objnr  = jest.objnr // 系统状态
  left outer join tj02  on jest.stat   = tj02.istat // 排除前台隐藏的状态
  left outer join tj04  on jest.stat   = tj04.istat // 状态顺序
  left outer join tj02t on jest.stat   = tj02t.istat and // 状态描述
                           tj02t.spras = $session.system_language
{
  key aufk.aufnr  , // 工单号
  key min( case tj04.obtyp
        when 'ORH' then tj04.linep   
        else '99'  end ) as linep , // 排序码( 标准代码排序逻辑 )
  key min( tj04.statp )  as statp , // 优先级
  key min( tj02t.txt04 ) as txt04 , // 前台状态号
      tj02t.txt30   // 前台状态描述
} where
    aufk.autyp = '10'  and // 工单 
    tj02.nodis <> 'X'  and // 不显示隐藏的状态
    jest.inact <> 'X'      // 不显示未激活状态
  group by aufk.aufnr,
           tj02t.txt30

表间关系

相关的表一共就3个
jest是状态表,可以用主表aufk的objnr关联后取数
在这里插入图片描述
jest里面只有编码没有描述,所以要关联tj02t取描述的状态文本和状态描述文本
在这里插入图片描述
跟前台数据比对,发现数据库表里取出来的数据比实际的多
在这里插入图片描述
有两个原因,第一个原因是前台只显示了激活状态的状态,通过jest.inact字段可以控制是否显示激活状态的字段
在这里插入图片描述
另外一个原因是有些状态是默认前台不显示的,可以通过tj02.nodis字段控制是否显示不显示的字段
排除掉未激活的字段和不显示的字段,此时就已经和前台显示的字段一致了
在这里插入图片描述
还有最后一个问题,前台显示的时候是有顺序的,但是现在取出的结果是无序的
翻翻标准函数STATUS_TEXT_EDIT的代码…
这个函数执行的结果就跟前台的一致,debug发现前台获取状态也是用的这个函数
在这里插入图片描述
debug看眼逻辑
主要的逻辑就在这儿,如果能通过OBTYP = ‘ORH’ 和状态编码从tj04取到行,那就记录下该行的顺序码tj04.linep,优先级tj04.statp;如果取不到行就设置该行linep = ‘99’
在这里插入图片描述
最后根据linep statp txt04排序即可获得最后结果
在这里插入图片描述
按上述逻辑distinct去重之后,发现存在有多行满足关联条件的情况
在这里插入图片描述
根据主键linep statp txt04 取满足条件的第一行,使用聚合函数min()即可
最后视图的关联关系和条件就如下图所示了
在这里插入图片描述
顺序和前台一致,用open sql加个string_agg就完美了,可惜cds里面不支持该函数
在这里插入图片描述

相关推荐

  1. 了解监控易(33):管理

    2024-01-08 12:42:03       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-08 12:42:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-08 12:42:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-08 12:42:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-08 12:42:03       18 阅读

热门阅读

  1. mysql 高阶查询

    2024-01-08 12:42:03       33 阅读
  2. C语言-蓝桥杯2022年第十三届省赛真题-质因数个数

    2024-01-08 12:42:03       38 阅读
  3. 数据结构1

    2024-01-08 12:42:03       21 阅读
  4. 安全防御之安全审计技术

    2024-01-08 12:42:03       34 阅读