请教关于Purchase Order Commitment By Period Report程式的运算规则

[复制链接]
查看11 | 回复7 | 2011-11-1 16:21:15 | 显示全部楼层 |阅读模式
该程式Oracle User Guide和Metalink上面讲的不清楚,我希望了解它统计哪些状态的PO以及是否对OU或者Org有限制?
不知道谁有关于这个程式更加详细的说明,谢谢!!!
回复

使用道具 举报

千问 | 2011-11-1 16:21:15 | 显示全部楼层
What POs will appeare on the PO committment report?
Pls help me~
回复

使用道具 举报

千问 | 2011-11-1 16:21:15 | 显示全部楼层
ding
回复

使用道具 举报

千问 | 2011-11-1 16:21:15 | 显示全部楼层
Purchase Order Commitment By Period Report
Report Data Model
回复

使用道具 举报

千问 | 2011-11-1 16:21:15 | 显示全部楼层
第一段SQL Query
SELECT gsb.name
c_company
,fsp.inventory_organization_id c_organization_id
,gsb.currency_code
GL_CURRENCY
,gsb.chart_of_accounts_idSTRUCTURE_ACC
,mdv.structure_id
STRUCTURE_CAT
,mdv.category_set_id c_category_set_id
,flo1.meaning
c_yes
,flo2.meaning
c_no
,fc. precision
c_precision
FROM gl_sets_of_books
gsb
,financials_system_parametersfsp
,mtl_default_sets_view mdv
,fnd_lookups
flo1
,fnd_lookups
flo2
,fnd_currencies
fc
WHEREgsb.set_of_books_id = fsp.set_of_books_id
ANDmdv.functional_area_id= 2
ANDflo1.lookup_type
= 'YES_NO'
ANDflo1.lookup_code
= 'Y'
ANDflo2.lookup_type
= 'YES_NO'
ANDflo2.lookup_code
= 'N'
AND fc.currency_code
= gsb.currency_code
AND fc.enabled_flag
='Y'
就是查询总帐的账本,会计科目,币别等相关内容
回复

使用道具 举报

千问 | 2011-11-1 16:21:15 | 显示全部楼层
第二段SQL Query内容比较多
SELECTDECODE(:P_SORT, 'VENDOR', pov.vendor_name, 'BUYER', hre.full_name, pov.vendor_name)

break_group_column
,
DECODE(:P_SORT, 'VENDOR', hre.full_name, 'BUYER', pov.vendor_name,hre.full_name )

other_group_column,
poh.segment1||decode(por.release_num,null,'','-'||por.release_num)PO_Number,
decode( mod(glp.period_num,12), mod(:P_period_num,12),
/**/

decode(poh.closed_code,

'FINALLY CLOSED',

SUM (DECODE (POL.order_type_lookup_code,

'RATE', GREATEST (PLL.amount_received, PLL.amount_billed),

'FIXED PRICE',GREATEST (PLL.amount_received, PLL.amount_billed),

GREATEST (PLL.quantity_received, PLL.quantity_billed) * PLL.price_override)),

SUM (DECODE (POL.order_type_lookup_code,

'RATE', PLL.amount - NVL(PLL.amount_cancelled, 0),

'FIXED PRICE', PLL.amount - NVL(PLL.amount_cancelled, 0),

(PLL.quantity - NVL(PLL.quantity_cancelled, 0)) * PLL.price_override))) * NVL(POH.rate, 1)

)
C_AMOUNT_PER1,
decode( mod(glp.period_num,12), mod(:P_period_num + 1,12),
/**/

decode(poh.closed_code,

'FINALLY CLOSED',

SUM (DECODE (POL.order_type_lookup_code,

'RATE', GREATEST (PLL.amount_received, PLL.amount_billed),

'FIXED PRICE',GREATEST (PLL.amount_received, PLL.amount_billed),

GREATEST (PLL.quantity_received, PLL.quantity_billed) * PLL.price_override)),

SUM (DECODE (POL.order_type_lookup_code,

'RATE', PLL.amount - NVL(PLL.amount_cancelled, 0),

'FIXED PRICE', PLL.amount - NVL(PLL.amount_cancelled, 0),

(PLL.quantity - NVL(PLL.quantity_cancelled, 0)) * PLL.price_override))) * NVL(POH.rate, 1)

)

C_AMOUNT_PER2,
decode( mod(glp.period_num,12), mod(:P_period_num + 2,12),
/**/

decode(poh.closed_code,

'FINALLY CLOSED',

SUM (DECODE (POL.order_type_lookup_code,

'RATE', GREATEST (PLL.amount_received, PLL.amount_billed),

'FIXED PRICE',GREATEST (PLL.amount_received, PLL.amount_billed),

GREATEST (PLL.quantity_received, PLL.quantity_billed) * PLL.price_override)),

SUM (DECODE (POL.order_type_lookup_code,

'RATE', PLL.amount - NVL(PLL.amount_cancelled, 0),

'FIXED PRICE', PLL.amount - NVL(PLL.amount_cancelled, 0),

(PLL.quantity - NVL(PLL.quantity_cancelled, 0)) * PLL.price_override))) * NVL(POH.rate, 1)

)
C_AMOUNT_PER3,
decode( mod(glp.period_num,12), mod(:P_period_num + 3,12),
/**/


decode(poh.closed_code,

'FINALLY CLOSED',

SUM (DECODE (POL.order_type_lookup_code,

'RATE', GREATEST (PLL.amount_received, PLL.amount_billed),

'FIXED PRICE',GREATEST (PLL.amount_received, PLL.amount_billed),

GREATEST (PLL.quantity_received, PLL.quantity_billed) * PLL.price_override)),

SUM (DECODE (POL.order_type_lookup_code,

'RATE', PLL.amount - NVL(PLL.amount_cancelled, 0),

'FIXED PRICE', PLL.amount - NVL(PLL.amount_cancelled, 0),

(PLL.quantity - NVL(PLL.quantity_cancelled, 0)) * PLL.price_override))) * NVL(POH.rate, 1),

mod(:P_period_num + 4,12),

decode(poh.closed_code,

'FINALLY CLOSED',

SUM (DECODE (POL.order_type_lookup_code,

'RATE', GREATEST (PLL.amount_received, PLL.amount_billed),

'FIXED PRICE',GREATEST (PLL.amount_received, PLL.amount_billed),

GREATEST (PLL.quantity_received, PLL.quantity_billed) * PLL.price_override)),

SUM (DECODE (POL.order_type_lookup_code,

'RATE', PLL.amount - NVL(PLL.amount_cancelled, 0),

'FIXED PRICE', PLL.amount - NVL(PLL.amount_cancelled, 0),

(PLL.quantity - NVL(PLL.quantity_cancelled, 0)) * PLL.price_override))) * NVL(POH.rate, 1),

mod(:P_period_num + 5,12),

decode(poh.closed_code,

'FINALLY CLOSED',

SUM (DECODE (POL.order_type_lookup_code,

'RATE', GREATEST (PLL.amount_received, PLL.amount_billed),

'FIXED PRICE',GREATEST (PLL.amount_received, PLL.amount_billed),

GREATEST (PLL.quantity_received, PLL.quantity_billed) * PLL.price_override)),

SUM (DECODE (POL.order_type_lookup_code,

'RATE', PLL.amount - NVL(PLL.amount_cancelled, 0),

'FIXED PRICE', PLL.amount - NVL(PLL.amount_cancelled, 0),

(PLL.quantity - NVL(PLL.quantity_cancelled, 0)) * PLL.price_override))) * NVL(POH.rate, 1)

)

C_AMOUNT_PER4,
mca.segment1seg1
FROM po_line_locations pll
,po_lines
pol
,po_releases por
,po_headerspoh
,po_vendorspov
,hr_employeeshre
,gl_period_statusesglp
,financials_system_parameters fsp
,po_system_parameters psp
,mtl_categories mca
WHEREpoh.po_header_id= pll.po_header_id
ANDpor.po_release_id (+) = pll.po_release_id
ANDpll.po_line_id =pol.po_line_id
ANDpol.category_id =mca.category_id
ANDpoh.vendor_id = pov.vendor_id
ANDhre.employee_id = poh.agent_id
ANDnvl(nvl(pll.promised_date,pll.need_by_date),sysdate)

BETWEENnvl(glp.start_date, nvl(nvl(pll.promised_date,pll.need_by_date),sysdate) - 1 )

ANDnvl(glp.end_date, nvl(nvl(pll.promised_date,pll.need_by_date),sysdate) + 1)
ANDapplication_id = 201
ANDglp.set_of_books_id = fsp.set_of_books_id
AND(( (glp.period_num

BETWEEN:P_period_numAND decode ( sign (((:P_period_num +5)/12)-1), -1, :P_period_num+5, 12))

ANDglp.period_year = :P_period_year)

OR

((glp.period_num

BETWEEN1 AND decode ( sign (((:P_period_num+5)/12)-1), -1,0, mod(:P_period_num+5,12)))

AND glp.period_year = :P_period_year + 1))
ANDpll.shipment_type in ('STANDARD', 'SCHEDULED', 'BLANKET')
ANDpov.vendor_name
BETWEENnvl(:P_vendor_from,pov.vendor_name) AND nvl(:P_vendor_to, pov.vendor_name)
AND((decode(psp.manual_po_num_type,'NUMERIC',poh.segment1,NULL)
BETWEEN decode(psp.manual_po_num_type,'NUMERIC',

to_number(nvl(:P_po_number_from, poh.segment1)),NULL)
AND decode(psp.manual_po_num_type,'NUMERIC',

to_number(nvl(:P_po_number_to, poh.segment1)),NULL))
OR (poh.segment1
BETWEEN decode(psp.manual_po_num_type,'ALPHANUMERIC',

nvl(:P_po_number_from,poh.segment1),NULL)
AND decode(psp.manual_po_num_type,'ALPHANUMERIC',

nvl(:P_po_number_to,poh.segment1),NULL)))
/* ANDhre.full_name = nvl(:P_buyer, full_name) */
/* Bug#2453022 Commented out the above condition and replaced
it as follows as the user parameter P_Buyer will now return the id and not the name */
ANDhre.employee_id = nvl(:P_buyer, hre.employee_id)
/**/
AND ( ( NVL(POH.closed_code, 'OPEN')'FINALLY CLOSED'
AND
( DECODE(POL.order_type_lookup_code,

'RATE', PLL.amount - NVL(PLL.amount_cancelled, 0),

'FIXED PRICE', PLL.amount - NVL(PLL.amount_cancelled, 0),

PLL.quantity - NVL(PLL.quantity_cancelled,0)) > 0)
)
OR
( POH.closed_code = 'FINALLY CLOSED'
AND
( DECODE(POL.order_type_lookup_code,

'RATE', NVL(GREATEST (PLL.amount_received, PLL.amount_billed), 0),

'FIXED PRICE', NVL(GREATEST (PLL.amount_received, PLL.amount_billed), 0),

NVL(GREATEST (PLL.quantity_received,PLL.quantity_billed), 0)) > 0)
)
)
AND ( DECODE (POL.order_type_lookup_code,

'RATE',

PLL.amount - NVL(PLL.amount_cancelled, 0) -

NVL( GREATEST (PLL.amount_received, PLL.amount_billed), 0),

'FIXED PRICE',

PLL.amount - NVL(PLL.amount_cancelled, 0) -

NVL( GREATEST (PLL.amount_received, PLL.amount_billed), 0),

PLL.quantity - NVL(PLL.quantity_cancelled, 0) -

NVL( GREATEST (PLL.quantity_received, PLL.quantity_billed), 0)) > 0)
/**/
AND&P_WHERE_CAT
GROUP BY
pov.vendor_name
,hre.full_name
,poh.segment1||decode(por.release_num,null,'','-'||por.release_num)
,glp.period_year,glp.period_num
,glp.period_year,glp.period_num
,glp.period_year,glp.period_num
,glp.period_year, glp.period_num
,decode(psp.manual_po_num_type,'NUMERIC',

to_number(poh.segment1),NULL),

decode(psp.manual_po_num_type,'NUMERIC',

NULL,poh.segment1),

por.release_num ,
mca.segment1 ,
poh.closed_code,
NVL(poh.rate, 1)
ORDER BY decode(psp.manual_po_num_type,'NUMERIC',

to_number(poh.segment1),NULL),

decode(psp.manual_po_num_type,'NUMERIC',

NULL,poh.segment1),

por.release_num
这段看起来好像很复杂,其实还是比较容易理解的,例如mod(:P_period_num + 1,12),就是系统在计算你选择期间之后的5个期间的金额。
至于是那些状态的PO,程式也看了一下,就是先抓去Finally Close的采购单
decode(poh.closed_code,

'FINALLY CLOSED',

SUM (DECODE (POL.order_type_lookup_code,

'RATE', GREATEST (PLL.amount_received, PLL.amount_billed),

'FIXED PRICE',GREATEST (PLL.amount_received, PLL.amount_billed),

GREATEST (PLL.quantity_received, PLL.quantity_billed) * PLL.price_override)),
如果不是该状态的,就抓取
SUM (DECODE (POL.order_type_lookup_code,

'RATE', PLL.amount - NVL(PLL.amount_cancelled, 0),

'FIXED PRICE', PLL.amount - NVL(PLL.amount_cancelled, 0),

(PLL.quantity - NVL(PLL.quantity_cancelled, 0)) * PLL.price_override))) * NVL(POH.rate, 1)

)
回复

使用道具 举报

千问 | 2011-11-1 16:21:15 | 显示全部楼层
谢谢谢谢大侠!!!!
回复

使用道具 举报

千问 | 2011-11-1 16:21:15 | 显示全部楼层
再次顶,求文字说明......
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行