想不到从写SAP文档到现在,关注人数已经到1000人了,算是个小小里程碑,感谢大家的支持和关注,在此谢谢大家。本期分享下一些SQL的逻辑,方便做query或者abap取数。(本期的内容没有任何干货,都是水。。。)
1 PS部分
1.1 项目定义与项目进度计划关系
elect * from sapsr3.proj proj -- 项目信息
join sapsr3.prps prps on PROJ.PSPNR=PRPS.PSPHI --WBS信息
项目信息一些关键字段:
-- 项目基本信息一些主要字段
select pspnr,-- 项目定义(内部)
pspid,-- 项目定义
post1,-- PS:短描述1
objnr,-- 对象号
ernam,-- 创建对象的人员名称
vernr,-- 负责人编号
verna,-- 负责人姓名(项目管理者)
astnr,-- 申请人号
astna,-- 申请人
vbukr,-- 项目的公司代码
vgsbr,-- 项目的业务部门
vkokr,-- 此项目的控制范围
prctr,-- 利润中心
pwhie,-- WBS货币(项目定义)
werks,-- 工厂
kostl,-- 成本中心
plfaz,-- 项目计划开始日期
plsez,-- 项目计划完成日期
sprog,-- 项目定义的预测开始日期
eprog-- 项目定义的预测完成日期
from sapsr3.proj t8 ;--项目基本信息
WBS的一些关键字段
-- 项目进度计划信息一些主要字段
select
pspnr,-- WBS要素(内码)
posid,-- 工作分解结构元素(WBS元素)(外部展示码)
post1,-- PS:短描述(第一行文本)
objnr,-- 对象号
psphi,-- 合适的项目的当前编号
poski,-- WBS元素简明标识
verna,-- 负责人姓名(项目管理者)
astnr,-- 申请人号
astna,-- 申请人
prart-- 项目类型
from sapsr3.prps t9 --项目WBS信息
1.2 项目进度计划和网络
select * from sapsr3.proj proj -- 项目信息
join sapsr3.prps prps on PROJ.PSPNR=PRPS.PSPHI --WBS信息
join sapsr3.AUFK AUFK on prps.PSPNR = aufk.PSPEL -- 关联网络
1.3 典型取项目WBS、网络对象号的做法
-- 都是prps关联网络,一个是取WBS的对象号,一个是取网络的对象号,两个union
SELECT DISTINCT t.PSPNR as PSPNR --WBS要素内码
,t2.PSPEL as PSPEL -- 网络内码
,t.OBJNR as OBJNR -- WBS对象号
FROM sapsr3.prps t
LEFT join sapsr3.aufk t2
on t.PSPNR=t2.PSPEL
WHERE t.mandt='201' and t2.mandt='201'
union all
SELECT DISTINCT t.PSPNR as PSPNR
,t2.PSPEL as PSPEL
,t2.OBJNR as OBJNR -- 网络对象号
FROM sapsr3.prps t
LEFT join sapsr3.aufk t2
on t.PSPNR=t2.PSPEL
WHERE t.mandt='201' and t2.mandt='201'
;
PRGUID:项目WBS的所有对象号
1.4 取项目下所有采购申请的做法
-- 项目专用库存的采购申请,先根据PROJ-PSPID=PRPS-PSPHI查询项目下所有的WBS对应的对象WBS的,再关联采购申请
select EBKN.*,proj.pspid from sapsr3.proj proj -- 项目信息
join sapsr3.prps prps on PROJ.PSPNR=PRPS.PSPHI --WBS信息
join sapsr3.EBKN EBKN on PRPS.PSPNR = EBKN.PS_PSP_PNR --采购申请信息
where proj.pspid = 'B68882100001'
-- 服务类采购申请
union
select EBKN.*,proj.pspid from sapsr3.proj proj -- 项目信息
join sapsr3.prps prps on PROJ.PSPNR=PRPS.PSPHI --WBS信息
join sapsr3.AUFK AUFK on prps.PSPNR = aufk.PSPEL -- 关联网络
join sapsr3.EBKN EBKN on aufk.AUFNR = EBKN.NPLNR --采购申请信息
where proj.pspid = 'B68882100001'
and AUFK.AUTYP='20'
1.5 取对象的系统状态和用户状态
select objnr, -- 工单对象ID
LISTAGG(case when stat LIKE 'I%' then stat end, '/') WITHIN GROUP(ORDER BY objnr) AS istat,
LISTAGG(case when stat LIKE 'I%' then txt30 end, '/') WITHIN GROUP(ORDER BY objnr) AS istattx,
LISTAGG(case when stat LIKE 'E%' then stat end, '/') WITHIN GROUP(ORDER BY objnr) AS estat,
LISTAGG(case when stat LIKE 'E%' then txt04 end, '/') WITHIN GROUP(ORDER BY objnr) AS estattx
--,group_concat('/', case when stat LIKE 'I%' then stat end) AS istat
-- ,group_concat('/',case when stat LIKE 'I%' then txt30 end) AS istattx
-- ,group_concat('/',case when stat LIKE 'E%' then stat end) AS estat
-- ,group_concat('/',case when stat LIKE 'E%' then txt04 end) AS estattx
from
(
SELECT DISTINCT objnr
,stat
FROM sapsr3.jest -- 工单状态信息表
WHERE inact = ' '
) a --3.1 主表是工单状态表
LEFT JOIN -- 3.2 下面是取状态对应的文本描述
(
SELECT DISTINCT istat
,txt30
FROM sapsr3.tj02t
WHERE spras = '1'
) tj02t ON a.stat = tj02t.istat -- 通过状态表和描述表的ID关联
LEFT JOIN -- 3.3 下面是取用户状态
(
SELECT DISTINCT estat
,txt04
FROM sapsr3.tj30t
WHERE spras = '1'
) tj30t ON a.stat = tj30t.estat
group by objnr
仅取系统状态:
SELECT DISTINCT t.MANDT AS MANDT
,t.OBJNR AS OBJNR
,t.STAT AS STAT
,t.INACT AS INACT
,t.CHGNR AS CHGNR
FROM sapsr3.jest t
WHERE t.STAT LIKE 'I%'
AND T.INACT = ' '
AND mandt = '201'
仅取用户状态:
SELECT t.ISTAT
,t.TXT30 AS NAME
,t.ISTAT as ISTAT
,t.TXT04 AS TXT04
,t.SPRAS AS SPRAS
,t.TXT30 as TXT30
FROM sapsr3.tj02t t
WHERE t.spras='1'
;
JSTO:对象用户状态引用的状态参数文件
JCDS:用户和系统状态变更记录
1.6 取网络上挂的服务的金额
SELECT aufnr -- AUFNR订单编号
,
afko.aufpl -- 工序的任务清单号AUFPL
,
afvc.aufpl -- 工序的任务清单号AUFPL
,
afvc.steus -- 控制码
,
t430t.txt -- 控制码描述
,
afvc.packno -- 软件包编号
,
esll.PACKNO -- 软件包编号
,
esll.sub_packno -- 上级软件包编号
,
es.srvpos -- 作业编号
,
es.ktext1 -- 短文本
,
es.netwr -- 净值
FROM sapsr3.afko -- 7.1 afko是订单主表,存的工序的任务清单号等,因为aufk主表没有工序任务清单号
JOIN sapsr3.afvc -- 7.2 afvc是订单工序表,通过工序任务ID关联具体工序
ON afko.aufpl = afvc.aufpl -- 通过工序的任务清单号关联
JOIN sapsr3.t430t -- t430t是控制码描述,转描述
ON afvc.steus = t430t.steus
and t430t.spras = '1'
JOIN -- 7.4 取服务行数据,只取软件包编号即可
(SELECT packno -- 软件包编号
,
srvpos -- 作业编号
,
ktext1 -- 短文本
,
netwr -- 净值
,
sub_packno -- 包
FROM sapsr3.esll
GROUP BY packno, srvpos, ktext1, netwr, sub_packno) esll
ON afvc.PACKNO = esll.PACKNO
LEFT JOIN -- 8 通过取到的软件包编号,取子软件包内容,获取金额,以及作业编号
(SELECT PACKNO -- 软件包编号
,
SRVPOS -- 作业编号
,
KTEXT1 -- 短文本
,
NETWR -- 净值
,
SUB_PACKNO -- 上级软件包编号
FROM sapsr3.esll) es
ON esll.SUB_PACKNO = es.PACKNO
1.7 取项目WBS预算
-- 总体预算 ,取类型为41的
SELECT t.OBJNR as OBJNR -- 对象ID
,t.WTGES as WTGES -- 预算值
,t.MANDT AS MANDT
,t.LEDNR AS LEDNR
,t.POSIT AS POSIT
,t.TRGKZ AS TRGKZ
,t.WRTTP AS WRTTP
,t.GEBER AS GEBER
,t.VERSN AS VERSN
,t.VORGA AS VORGA
,t.TWAER AS TWAER
,t.SUBVO AS SUBVO
,t.FAREA AS FAREA
,t.WLGES AS WLGES
,t.WTGEV AS WTGEV
,t.WLGEV AS WLGEV
,t.KALNR AS KALNR
,t.KLVAR AS KLVAR
,t.BELTP AS BELTP
FROM sapsr3.bpge t
WHERE mandt='201' and wrttp='41'
-- 取年度预算
SELECT
t.OBJNR AS OBJNR
,t.WTJHR AS WTJHR
,t.MANDT AS MANDT
,t.LEDNR AS LEDNR
,t.POSIT AS POSIT
,t.TRGKZ AS TRGKZ
,t.WRTTP AS WRTTP
,t.GJAHR AS GJAHR
,t.GEBER AS GEBER
,t.VERSN AS VERSN
,t.VORGA AS VORGA
,t.TWAER AS TWAER
,t.SUBVO AS SUBVO
,t.GNJHR AS GNJHR
,t.FAREA AS FAREA
,t.WLJHR AS WLJHR
,t.WTJHV AS WTJHV
,t.WLJHV AS WLJHV
,t.KALNR AS KALNR
,t.KLVAR AS KLVAR
,t.SPRED AS SPRED
,t.BELTP AS BELTP
FROM sapsr3.bpja t
where mandt = '201'
;
1.8 取网络上服务确认金额
SELECT t.MANDT AS MANDT
,t.LBLNI AS LBLNI
,t.TXZ01 AS TXZ01
,t.LBLNE AS LBLNE
,t.ERNAM AS ERNAM
,t.ERDAT AS ERDAT
,t.AEDAT AS AEDAT
,t.AENAM AS AENAM
,t.SBNAMAG AS SBNAMAG
,t.SBNAMAN AS SBNAMAN
,t.DLORT AS DLORT
,t.LBLDT AS LBLDT
,t.LZVON AS LZVON
,t.LZBIS AS LZBIS
,t.LWERT AS LWERT
,t.UWERT AS UWERT
,t.UNPLV AS UNPLV
,t.WAERS AS WAERS
,t.PACKNO AS PACKNO
,t.TXZ01 AS name
,t.EBELN AS EBELN
,t.EBELP AS EBELP
,t.LOEKZ AS LOEKZ
,t.KZABN AS KZABN
,t.FINAL AS FINAL
,t.FRGGR AS FRGGR
,t.FRGSX AS FRGSX
,t.FRGKL AS FRGKL
,t.FRGZU AS FRGZU
,t.FRGRL AS FRGRL
,t.F_LOCK AS F_LOCK
,t.PWWE AS PWWE
,t.BLDAT AS BLDAT
,t.BUDAT AS BUDAT
,t.XBLNR AS XBLNR
,t.BKTXT AS BKTXT
,t.KNTTP AS KNTTP
,t.KZVBR AS KZVBR
,t.NETWR AS NETWR
,t.BANFN AS BANFN
,t.BNFPO AS BNFPO
,t.WARPL AS WARPL
,t.WAPOS AS WAPOS
,t.ABNUM AS ABNUM
,t.FKNUM AS FKNUM
,t.FKPOS AS FKPOS
,t.USER1 AS USER1
,t.USER2 AS USER2
,t.NAVNW AS NAVNW
,t.SPEC_NO AS SPEC_NO
,t.CUOBJ AS CUOBJ
,t.LEMIN AS LEMIN
FROM sapsr3.essr t
where mandt = '201'
;
1.9 取项目成本
-- 一个是取RPSCO
SELECT t.OBJNR
,t.GJAHR AS name
,t.OBJNR AS OBJNR
,t.GJAHR AS GJAHR
,t.MANDT AS MANDT
,t.LEDNR AS LEDNR
,t.WRTTP AS WRTTP
,t.TRGKZ AS TRGKZ
,t.ACPOS AS ACPOS
,t.VORGA AS VORGA
,t.VERSN AS VERSN
,t.ABKAT AS ABKAT
,t.GEBER AS GEBER
,t.TWAER AS TWAER
,t.PERBL AS PERBL
,t.BELTP AS BELTP
,t.WLP00 AS WLP00
,t.WLP01 AS WLP01
,t.WLP02 AS WLP02
,t.WLP03 AS WLP03
,t.WLP04 AS WLP04
,t.WLP05 AS WLP05
,t.WLP06 AS WLP06
,t.WLP07 AS WLP07
,t.WLP08 AS WLP08
,t.WLP09 AS WLP09
,t.WLP10 AS WLP10
,t.WLP11 AS WLP11
,t.WLP12 AS WLP12
,t.WLP13 AS WLP13
,t.WLP14 AS WLP14
,t.WLP15 AS WLP15
,t.WLP16 AS WLP16
,t.WTP00 AS WTP00
,t.WTP01 AS WTP01
,t.WTP02 AS WTP02
,t.WTP03 AS WTP03
,t.WTP04 AS WTP04
,t.WTP05 AS WTP05
,t.WTP06 AS WTP06
,t.WTP07 AS WTP07
,t.WTP08 AS WTP08
,t.WTP09 AS WTP09
,t.WTP10 AS WTP10
,t.WTP11 AS WTP11
,t.WTP12 AS WTP12
,t.WTP13 AS WTP13
,t.WTP14 AS WTP14
,t.WTP15 AS WTP15
,t.WTP16 AS WTP16
FROM sapsr3.rpsco t
WHERE wrttp = '04'
AND mandt = '201'
;
统计类:
-- RPSCO是COSP的子集
COSP:外部对象CO统计,主要是初级成本要素的
COSS:内部对象CO统计,基本上次级成本要素
COSL:按作业维度的统计
明细类:
COBK:抬头
COEP/COEJ:CO行(按月/年)
COES:挂接在销售订单的值
COKR:统计指标
COFP:项目现金管理
COVP:是CO凭证抬头COBK和行项目COEP合并成的一个视图
计划类:
COKS:是次级成本要素计划
COKP:初级成本要素计划
-- 也可以直接取视图covp,这个covp是CO凭证抬头COBK和行项目COEP合并成的一个视图
1.10 标准WBS、网络等
PROJS:标准项目定义
PRPSS:标准WBS
PRHIS:标准WBS关系
PLKO:标准网络头
PLPO:标准网络活动
PLAB:活动间关系
SMLS:标准里程碑
1.11 取项目交货信息
PSLI:项目交货信息,含项目定义和交货单信息
1.12 活动的确认及相关挂接到活动的信息
1.活动确认主表:AFRU,存网络+活动粒度的确认信息,当然生产订单的报工信息也存在该表
2.AFWI/AFWD:确认对应的货物移动确认情况,如果无物料的自动移动则不显示
3.AFRC:确认时,当成本计算不正确时,会记录到该表
4.TRUG:完成确认中差异的原因
5.KBED:网络活动能力,通过BEDID产能需求标识与网络活动关联
6.CRHD:工作中心抬头,标记活动上的工作中心抬头
7.AFVV/AFVU:活动的用户字段、活动的需求数量等
8.AFAB:活动间的关系
9.MLST:活动上挂的里程碑 MLTX:里程碑描述
10.AFFH:关联文件 CRVD_B:链接到文件 DRAW:文本信息记录
11.FMZUOB:分配CO对象到FM
1.13 取预留相关信息
RKPF:预留头,存预留的控制范围、移动类型等,以及与网络头的对应
RESB:预留信息,如果自动拖拽物料形成预留+采购申请,那么也会有采购申请信息
RSDBS:存了采购申请和预留的对应,相当于跑MRP的也都在此对应,相当于RESB的索引
RSDB 预留/作业下挂物料,多出计划订单,相当于RESB的索引
rsadd:存储了预留的创建日期、更改日期等
1.14 取挂接到PS的对象
1.PS文本:PRTX、PSTX
2.PRST:基于WBS建的WBS BOM
3.MLST:里程碑
1.15 取WBS结算信息
1.COBRA/COBRB:订单结算的结算规则/分配规则结算规则订单结算,一个存订单结算规则信息,一个存结算对象
2.CJIF,对应的后台表是COSB/COVPB
2 MM部分
2.1 取采购申请和采购订单
-- 采购申请和采购订单行关系
select * from sapsr3.EBAN t7 --采购申请信息
left join sapsr3.EKPO t6 on t6.banfn = t7.banfn and t6.bnfpo = t7.bnfpo-- 采购订单项目
where t7.BANFN ='0010000131'
select
BSART,-- 采购申请凭证
BNFPO,-- 采购申请的项目编号
BSTYP,-- 采购凭证类别,其中B代表了该凭证类别是采购申请
MENGE,-- 采购申请数量
MEINS,-- 采购申请计量单位
BUMNG,-- 短缺数量(范围内的库存)
BADAT,-- 需求(请求)日期
PREIS,-- 采购申请中的价格
PEINH,-- 价格单位
STATU,-- 采购申请处理状态
FRGST,-- 采购请求中的批准策略
FRGGR,-- 审批组
BANPR,-- 申请处理状态
FRGDT,-- 采购申请批准日期
EKGRP,-- 采购组
ERNAM,-- 创建对象的人员名称2
ERDAT,-- 更改日期
AFNAM,-- 需求者/请求者姓名
TXZ01,-- 短文本
MATNR,-- 物料号
WERKS,-- 工厂(申请单位)
LGORT,-- 库存地点
MATKL,-- 物料组
RESWK,-- 转储单的供应(发出)工厂
LIFNR,-- 期望的供应商
FLIEF,-- 固定的供应商
EKORG,-- 采购组织
BESWK,-- 采购工厂
LPEIN,-- 交货日期的类别
LFDAT,-- 项目交货日期
WEBAZ,-- 以天计的收货处理时间
PSTYP,-- 采购凭证中的项目类别
KNTTP,-- 科目分配类别
KZVBR,-- 消耗过帐
KFLAG,-- 可改变的科目分配
EBAKZ,-- 已结算的采购申请
TWRKZ,-- 部分发票标识
WEPOS,-- 货物收据标识
WEUNB,-- 收货,未估价
REPOS-- 发票收据标识
--ZZWEMPF,-- 收货方/运达方
--PUR_MODE,-- 采购方式
--ZQGDHXM,-- 请购单行项目(Ariba)
--ZZCSSL,-- 超市物料数量
--ZGCGM,-- 工程规模
--ZJSGQ,-- 设计施工监理工期
--ZZQQGDHXM,-- 请购单行项目(采购专区)
--ZQID,-- 标识(采购专区)
from sapsr3.EBAN t7 --采购申请信息
where t7.BANFN ='0010000131'
-- 采购申请和科目分配
SELECT DISTINCT t.PSPEL AS PSPEL
,t.AUFNR AS AUFNR
,t2.NPLNR AS NPLNR
,t2.BANFN AS BANFN
,t2.BNFPO AS BNFPO
FROM sapsr3.aufk t
JOIN sapsr3.ebkn t2
ON t.AUFNR = t2.NPLNR
AND t.mandt = '201'
AND t2.mandt = '201'
;
2.2 取采购订单与物料凭证
-- 采购订单抬头和项目关系
select * from sapsr3.EKKO t5 -- 采购订单抬头
left join sapsr3.EKPO t6 on t5.ebeln = t6.ebeln-- 采购订单项目
-- 采购订单和物料凭证关系
select * from sapsr3.MSEG t2 -- 物料凭证行信息表
left join sapsr3.EKPO t6 on t2.ebeln = t6.ebeln and t2.ebelp = t6.ebelp-- 采购订单项目
where t6.ebeln ='4500000015'
-- 物料凭证抬头和行的关系
select * from sapsr3.MKPF t1 --物料凭证抬头
left join sapsr3.MSEG t2 on t1.mblnr = t2.mblnr-- 物料凭证行信息表
2.3 取发票入账与采购订单
-- 发票与采购订单关系
select * from sapsr3.RSEG t4 -- 发票凭证行
left join sapsr3.EKPO t6 on t4.ebeln = t6.ebeln and t4.ebelp = t6.ebelp-- 采购订单项目
where t4.belnr ='5105600781'
-- 发票抬头和凭证的关系
select * from sapsr3.RBKP t3-- 发票凭证抬头
left join sapsr3.RSEG t4 on t3.belnr = t4.belnr-- 发票凭证行
where t3.belnr ='5105600781'
-- 付款与供应商,通过外部制造商emnfr与MDM关联。
2.4 库存相关
mard:物料的数量、位置等
MBEW:物料的库存价值
mspr:项目库存数量、位置等
qbew:项目库存的价值
QBEWH:项目库存价值的历史表
2.5 物料与BOM关系等
MAST:存物料和BOM的映射
STKO:BOM头
STPO:BOM行
3 PM部分
3.1 PM工单信息查询,查询设备
SELECT aufk.AUFNR -- 订单号
afih.AUFNR -- 订单号
,
afih.EQUNR -- 设备ID
,
afih.ILART -- PM维护作业类型
,
iloa.TPLNR -- 功能位置编号
,
t353i_t.ILATX -- PM维护作业类型描述
,
t.pltxt -- 功能位置文本描述
FROM sapsr3.aufk
join
-- 9.1 主表是afih维修订单的表头
(SELECT AUFNR -- 订单号
,
EQUNR -- 设备ID
,
ILOAN -- 功能位置内部编号
,
ILART -- 维护作业类型
FROM sapsr3.afih
) afih
ON aufk.AUFNR = afih.AUFNR -- 订单编号与订单编号关联
JOIN -- 9.2 表iloa是功能位置信息,通过内部编号关联
(SELECT ILOAN -- 功能位置内部编号
,
TPLNR -- 功能位置编号
,
AUFNR -- 结算订单
FROM sapsr3.iloa
) iloa
ON afih.ILOAN = iloa.ILOAN
JOIN -- 9.3 表t353i_t是作业类型描述
(SELECT ILART -- PM作业类型ID
,
ILATX -- PM作业类型描述
FROM sapsr3.t353i_t
WHERE spras = '1') t353i_t
ON afih.ILART = t353i_t.ILART
JOIN -- 9.4 表iflot是功能位置的上下级关系,正常是存功能位置
(SELECT TPLNR -- 功能位置
FROM sapsr3.iflot
) iflot
ON iloa.TPLNR = iflot.TPLNR
LEFT JOIN -- 9.5 表iflot是功能位置描述表,也就是功能位置文本信息
(SELECT DISTINCT tplnr -- 功能位置
,
pltxt -- 功能位置文本描述
FROM sapsr3.iflotx
) t
ON substr(iloa.tplnr, 1, 15) = t.tplnr
3.2 设备与资产关系
SELECT a.anlnr, --资产编号
b.equnr as equnr --设备编号
FROM ( -- 14.1 设备科目信息
SELECT iloan, -- 设备科目分配
anlnr -- 资产编号
FROM sapsr3.iloa) a
INNER JOIN -- 14.2 设备时间段信息
(SELECT iloan, -- 设备科目分配
equnr -- 设备ID
FROM sapsr3.equz) b
ON a.iloan = b.iloan
4 财务部分
4.1资产
1.资产基本信息
ANLA:存资产的常规信息,例如资本化日期、描述、首次购置年度等。主键就是公司代码、资产、子编号
anlz:存储资产的与时间相关的信息
ANLU:存储资产的自定义字段
anek:资产抬头过账信息,打开aw01n,可以看到的资产入账。
anep:资产凭证过账行信息,主要是存着每个折旧范围的过账信息
anlb:折旧范围信息,比如折旧期限、折旧码等
anlc:价值变动记录,例如计划折旧、实际折旧等
anlp:记录资产的期间价值,按年
版权声明:本文为stuforever原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。