SAP PS 第20节常用的一些逻辑脚本

SAP系统逻辑脚本与项目管理操作示例

第20节常用的一些逻辑脚本

  • 1 PS部分
    • 1.1 项目定义与项目进度计划关系
    • 1.2 项目进度计划和网络
    • 1.3 典型取项目WBS、网络对象号的做法
    • 1.4 取项目下所有采购申请的做法
    • 1.5 取对象的系统状态和用户状态
    • 1.6 取网络上挂的服务的金额
    • 1.7 取项目WBS预算
    • 1.8 取网络上服务确认金额
    • 1.9 取项目成本
    • 1.10 标准WBS、网络等
    • 1.11 取项目交货信息
    • 1.12 活动的确认及相关挂接到活动的信息
    • 1.13 取预留相关信息
    • 1.14 取挂接到PS的对象
    • 1.15 取WBS结算信息
  • 2 MM部分
    • 2.1 取采购申请和采购订单
    • 2.2 取采购订单与物料凭证
    • 2.3 取发票入账与采购订单
    • 2.4 库存相关
    • 2.5 物料与BOM关系等
  • 3 PM部分
    • 3.1 PM工单信息查询,查询设备
    • 3.2 设备与资产关系
  • 4 财务部分
    • 4.1资产

想不到从写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, '/
### SAP PS 预算 CJ30 取数逻辑及其实现方式 在SAP PS模块中,`CJ30` 是用于创建和维护项目预算的主要事务代码之一。通过 `CJ30`,用户可以在系统中定义项目的初始预算,并将其作为后续预算管理和控制的基础。以下是关于 `CJ30` 的取数逻辑及其具体实现方式的详细介绍。 #### 1. 初始预算的创建与取数逻辑 当使用 `CJ30` 创建项目预算时,通常会基于已有的成本计划进行操作。这是因为预算通常是成本计划的一个延伸或调整版本[^1]。具体的取数逻辑如下: - **基础数据来源**: 系统中的初始预算可以通过复制现有的成本计划来完成。这一步骤确保了预算的数据结构与成本计划保持一致,从而便于后续的对比分析。 - **调整机制**: 用户可以根据实际需求,在成本计划的基础上按一定比例调整预算金额。例如,如果需要为项目增加5%的管理储备金,则可以直接在 `CJ30` 中设置相应的百分比调整规则[^1]。 #### 2. 年度预算的拆分与分配 除了整体预算外,SAP 还支持将总预算进一步分解为年度预算。这一功能主要依赖于后台配置参数文件(如 OPS9),并通过特定事务代码(如 `CJ32`)实现预算下达的操作[^2]。其核心逻辑包括以下几个方面: - **时间维度划分**: 总预算会被按照年份或其他指定的时间周期进行分割,最终形成多个时间段内的独立预算项。 - **存储位置**: 不同年份的预算数据被分别存储至不同的数据库表中。其中,项目总预算存储在 BPGE 表中,而年度预算则存储在 BPJA 表中[^2]。 #### 3. 预算类型的区分与应用 在 `CJ30` 下,还可以根据不同业务场景定义多种预算类型,主要包括以下几种: - **原始预算**:指最初分配给项目或 WBS 要素的预算额度。 - **补充预算**:用于调增现有预算的情况,适用于因范围变更等原因导致的成本上升情形。 - **返回预算**:用于减少当前可用预算的情形,常见于约措施实施后的资源释放过程[^2]。 这些不同类型预算的设计使得企业能够更加灵活地应对各种不确定性因素的影响。 #### 4. 结算参数的作用 为了确保预算的实际执行效果得到准确反映,还需注意结算过程中所使用的参数文件配置问题。在网络层面,默认情况下应将活动关联的 WBS 设定为目标结算对象;而对于某些特殊场景(比如制造类项目),可能还需要额外引入“不结算”的结算参数以满足特定核算要求[^3]。 --- ```python # 示例代码展示如何通过ABAP访问BPGE/BPJA表获取预算信息 SELECT * FROM bpge INTO TABLE @DATA(lt_bpge) WHERE ps_pspel = 'YOUR_WBS'. LOOP AT lt_bpge ASSIGNING FIELD-SYMBOL(<fs_bpge>). WRITE: / <fs_bpge>-ps_prctr, <fs_bpge>-bgt_yr_total. ENDLOOP. SELECT * FROM bpja INTO TABLE @DATA(lt_bpja) WHERE ps_pspel = 'YOUR_WBS'. LOOP AT lt_bpja ASSIGNING FIELD-SYMBOL(<fs_bpja>). WRITE: / <fs_bpja>-fiscal_year, <fs_bpja>-bgt_amount. ENDLOOP. ``` 以上代码片段展示了如何利用 ABAP 编程语言查询存储在 BPGE 和 BPJA 数据库表中的预算记录。 --- ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值