服务条目与采购订单、采购申请、工单、项目及WBS的关系

2017-11-11 浏览

最近完成了服务条目审批的工作流,其中服务条目(ML81N)审批业务是PMPS模块共有的业务。本文分析一下服务条目和采购订单、采购申请、工单、项目及WBS的关系。

 

    一般而言,到服务条目审批要经过之前的创建项目(CJ20N),创建项目WBSCJ20N),下达项目(CJ20N)。如果是PM业务,需要创建工单,下达工单后系统自动创建采购申请PRPS业务不通过工单创建采购申请,直接通过手工创建采购申请。接下来流程基本相似,审批采购申请之后,可以创建采购订单PO,审批采购订单。最后通过采购订单创建服务条目,再审批服务条目。

 

      各业务对应的主要的数据表:

 

      项目:PROJ(项目定义)

 

      WBSPRPSWBS(工作中断结构元素主数据)

 

      工单:AUFK(订单主数据)

 

      采购申请:EBAN(采购申请)

                                     EBKN(采购申请帐户设置)

 

      采购订单:EKKN(采购凭证中的帐户设置)

                EKPO(采购凭证项目)

                EKKO(采购凭证抬头)

 

      服务条目:ESSR(服务输入表的表头数据)

                ESLL(服务包的行)

 

1)服务条目信息

*-服务条目信息
  
select single
                txz01     
"服务条目表的短文本
                ebeln     
"采购凭证号
                ebelp     
"采购凭证的项目编号
                bldat     
"凭证中的凭证日期
                budat     
"凭证中的过帐日期
                frgrl     
"批准尚未完全生效('X':尚未批准 '')
                netwr     
"输入表的净值(服务条目含税净值)
                lwert     
"服务价值(服务条目总价值,税前)
                f_lock    
"是否冻结('X':冻结  '':未冻结)
                kzabn     
"是否已审批('X':已审批 '':未审批)
                   banfn     "采购申请编号
                bnfpo     
"采购申请的项目编号
           
into (l_ses_txz01,
                 l_ebeln,
                 l_ebelp,
                 l_bldat,
                 l_budat,
                 l_frgrl,
                 l_ses_netwr,
                 l_ses_lwert,
                 l_f_lock,
                 l_kzabn,
                    l_banfn,
                    l_bnfpo)
           
from essr      "服务输入表的表头数据表
          
where lblni = g_lblni.
    
其中,最重要的是netwrlwert的值。netwr是税后的值,lwert是税前的值。这两个值是服务条目各个行项目的总值。

 

2)采购凭证信息
*-采购凭证信息
  
select single
                a~txz01     
"采购凭证行项目描述
                a~netwr     
"采购订单货币的订单净值(含税)
                a~brtwr     
"PO货币的全部订单值(税前)
                b~bsart
           
into (l_po_txz01,
                 l_po_netwr,
                 l_po_brtwr,
                 l_bsart)
           
from ekpo as a "采购凭证项目表
           
join ekko as b "采购凭证抬头
             
on b~ebeln = a~ebeln
          
where a~ebeln = l_ebeln
            
and a~ebelp = l_ebelp .

  
if l_bsart = 'ZPF'"PM项目
*-工单信息及WBS要素(PM)
    
select single
                  b~aufnr   
"订单号(工单号)
                  b~ktext   
"描述(工单)
                  b~pspel   
"工作分解结构要素 (WBS 要素)
             
into (l_aufnr,
                   l_ktext,
                   l_pspel)
             
from ekkn as a   "采购凭证中的帐户设置
             
join aufk as b on b~aufnr = a~aufnr "订单主数据表
            
where a~ebeln = l_ebeln
              
and a~ebelp = l_ebelp.
*-WBS要素(PS用)
  
elseif l_bsart = 'ZPB'"PS项目
    
select single
                  b~pspel
             
into l_pspel
             
from ekkn as a "采购凭证中的帐户设置
             
join aufk as b "订单主数据
               
on b~aufnr = a~nplnr
            
where a~ebeln = l_ebeln
              
and a~ebelp = l_ebelp .

  
endif.

3)项目信息
*-项目、WBS信息
  
select single
                a~pspid   
"项目定义
                a~post1   
"项目短描述
                a~prctr   
"利润中心
                a~werks   
"工厂
                b~vernr   
"项目负责人
                b~posid   
"工作分解结构元素 (WBS 元素)
                b~post1   
"WBS短描述
           
into (l_pspid,
                 l_proj_post1,
                 l_prctr,
                 l_werks,
                 l_vernr,
                 l_posid,
                 l_prps_post1
                 )
           
from proj as a
           
join prps as b on b~psphi  = a~pspnr
          
where b~pspnr = l_pspel.

*-获取支付比例
  l_percent = l_ses_lwert * 
100 / l_po_brtwr. "税前比例
  l_percent_c = l_percent.
  
call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
    
exporting
      
input  = l_percent_c
    
importing
      
output = l_percent_c.
  
concatenate l_percent_c '%' into l_percent_c.

 

注:服务条目通过服务类的采购订单创建,所以在查找对应的项目及WBS时比较简单。一般的采购订单或是采购申请是通过查找对应的工单或是网络或是WBS要素来查找对应的项目及WBS。通常情况下,采购订单或是采购申请都是挂在网络或是WBS下或是通过工单来关联项目的。这个问题在相关的文章中再分析讨论。

免费注册