九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
在SAP BW中使用ABAP
前言
本文的目的是講述如何在BW中使用ABAP編程。在每一個(gè)項(xiàng)目中,正確使用ABAP編程會(huì)對(duì)正確的業(yè)務(wù)建模起到積極作用。在設(shè)計(jì)和藍(lán)圖階段,一個(gè)核心的功能流程是類比于如何在BW中完成類似于R3中的業(yè)務(wù)流程。SAP提供了多種路徑來實(shí)施這樣的業(yè)務(wù)流程。本文就會(huì)講述哪里、如何在BW中進(jìn)行ABAP編程。同時(shí),也會(huì)給出一些基本的SAP推薦,對(duì)于如何改善ABAP代碼的執(zhí)行。文中的例子會(huì)包括R3數(shù)據(jù)源的變換,創(chuàng)建通用的R3數(shù)據(jù)抽取器。在BW中,大部分對(duì)象都是內(nèi)部關(guān)聯(lián)的,我們可以在多個(gè)目標(biāo)數(shù)據(jù)中共享數(shù)據(jù)。因此,我們需要知道我們是如何處理數(shù)據(jù)、更新記錄和在哪里使用ABAP程序控制這些更新。
在BW中我們可以用ABAP作什么
在SAP R3和BW之間,對(duì)于我們?nèi)绾问褂肁BAP程序是有明顯不同的。要理解這樣的開發(fā)會(huì)給我們帶來什么,我們先看看BW的大致結(jié)構(gòu)。總體來首,我們是處理一些對(duì)象,這些對(duì)象是基于某種配置,比如ODS和InfoCube的連接,或者對(duì)源系統(tǒng)、數(shù)據(jù)源的創(chuàng)建。通常我們不會(huì)構(gòu)造屏幕程序和多個(gè)用戶接口去獲得其他的功能,這是在BW中的開發(fā)與R3中的顯著不同。在BW中,我們使用ABAP來按照要求轉(zhuǎn)換數(shù)據(jù),也可以在抽取、更新時(shí)進(jìn)行數(shù)據(jù)處理。
<!--[endif]-->
Technical Area
描述
BEx User Exit
允許為了key figure相關(guān)計(jì)算在運(yùn)行時(shí)創(chuàng)建和激活變量。這個(gè)用戶出口會(huì)在每次BEx執(zhí)行時(shí)被調(diào)用。
R/3 User Exit
這個(gè)用戶出口是在R3的CMOD中定義,可以在要提取結(jié)構(gòu)中填充其他的字段。我們也可以創(chuàng)建額外的業(yè)務(wù)邏輯在數(shù)據(jù)傳輸至BW前。
BW Transfer rules
這些規(guī)則在數(shù)據(jù)從R3傳輸?shù)紹W時(shí)被運(yùn)用,或者在BW中導(dǎo)出數(shù)據(jù)源和創(chuàng)建InSource時(shí)。
BW Update Rules
這些規(guī)則在數(shù)據(jù)被更新至目標(biāo)數(shù)據(jù)時(shí)調(diào)用。無論是ODS或者是InfoCube,每一個(gè)更新結(jié)果都是一條更新規(guī)則的執(zhí)行結(jié)果。
BW Start Routines
BW更新規(guī)則中的Start routine是用來對(duì)所有數(shù)據(jù)起作用的,并不是像某條更新規(guī)則只是對(duì)某個(gè)data element起作用。
在R3中,為BW可以做的ABAP編程選項(xiàng)
選項(xiàng)1:
為已有的輸出結(jié)構(gòu)添加字段;
對(duì)于這些字段運(yùn)用ABAP邏輯。
選項(xiàng)2:
為數(shù)據(jù)集創(chuàng)建一個(gè)表或者視圖;
在RSO2中創(chuàng)建一個(gè)通用的抽取器;
或者運(yùn)用自定義ABAP程序去填充表內(nèi)容或者通過function module、user exit在抽取時(shí)填充數(shù)據(jù)字段或者修改數(shù)據(jù)。
For選項(xiàng)1:
這是最直接的方式在ABAP中對(duì)于數(shù)據(jù)進(jìn)行修改,而不通過標(biāo)準(zhǔn)的抽取器。我們就使用最基本的概念,為了額外的字段去填充結(jié)構(gòu)。當(dāng)我們對(duì)要輸出的結(jié)構(gòu)增加新的字段或者要激活時(shí),我們可以在用戶出口中看到這些字段。當(dāng)我們?yōu)閷?dǎo)出結(jié)構(gòu)增加了字段之后,是可以在BW目標(biāo)系統(tǒng)中看到的。一旦這些字段被添加至輸出結(jié)構(gòu),到RSA6中,Post Processing  Datasources可以查看修改的數(shù)據(jù)源。雙擊數(shù)據(jù)源,確保新增加的字段沒有被隱藏。否則,新添字段不會(huì)在新導(dǎo)出BW系統(tǒng)中被看見。在R3中,如何激活這些數(shù)據(jù)字段在R3到BW的用戶出口中。進(jìn)入CMOD,找到自己的BW project,這個(gè)項(xiàng)目可能是在用戶命名空間中的,找到正確的項(xiàng)目后,選擇“display components”,然后F7。會(huì)顯示出所有的BW用戶出口組件,你會(huì)發(fā)現(xiàn)有四個(gè)用戶出口:
<!--[endif]-->
User Exit
Description
SAPLRSAU_001
Transactional data user exit
SAPLRSAU_002
Master Data User exit
SAPLRSAU_003
Optional
SAPLRSAU_004
Optional
這些用戶出口的配置可能是系統(tǒng)與系統(tǒng)間是不同的。舉例來說明,我們有一個(gè)數(shù)據(jù)抽取器用來從R3中抽取購買訂單數(shù)據(jù),假設(shè)我們要添加一些字段到 <!--[endif]-->2LIS_02_ITM輸出結(jié)構(gòu)。
我們這時(shí)就需要用代碼填充這些字段,然后在BW中重新初始化。雙擊 <!--[endif]-->SAPLRSAU_001會(huì)打開 <!--[endif]-->SAPLRSAU_001程序的頂層。然后點(diǎn)擊包含 <!--[endif]-->ZZRSAU01。這里就是寫自定義邏輯的地方。當(dāng)你開始數(shù)據(jù)抽取,輸出結(jié)構(gòu)被標(biāo)準(zhǔn)抽取的初始數(shù)據(jù)填充時(shí),你會(huì)發(fā)現(xiàn)這時(shí)可以向每一條記錄添加字段。在這個(gè)用戶出口中,你可以循環(huán)訪問所有數(shù)據(jù)然后添加相應(yīng)字段。到最后一步時(shí),可以把新的數(shù)據(jù)字段添加到抽取出結(jié)構(gòu)中。
For選項(xiàng)2:
進(jìn)入SE11,查看View,輸入命名Z****,創(chuàng)建它;
當(dāng)要求輸入development class時(shí),輸入正確的development class然后保存,然后會(huì)進(jìn)入view的初始定義界面;
添加需要的字段,同時(shí)補(bǔ)充表名;
創(chuàng)建一個(gè)自定義程序區(qū)填充這些base table;
當(dāng)結(jié)束激活以后,可以查看在view中有多少條數(shù)據(jù)被返回;
當(dāng)然view被創(chuàng)建完畢后,可以去RSO2中查看;
在RSA3中可以通過抽取檢查,來查看新的數(shù)據(jù)源;
你可以雙擊RSA3帶有view定義的輸出。
如何改善性能
利用選擇條件,盡量select具體的字段名;
<!--[endif]-->
Not recommended:-
Select * from /bi0/mcustomer.
Check : soursystem = ‘I2P’ and objvers = 'A'.
Endselect.
Recommended:-
Select * from /bi0/mcustomer where soursystem = ‘I2P’ and  objvers = 'A'.
Endselect.
 
采用系統(tǒng)自帶的聚合函數(shù),而不是通過ABAP代碼去自己實(shí)現(xiàn);
<!--[endif]-->
Not recommended
Maxamount = 0.
Select * from /bic/mzordods where soursystem = ‘I2P’.
Check mzordods-zamount>maxamount.
Maxamount = mzordods-zamount.
Endselect.
 
不要每次通過select語句查詢一條記錄然后插入internal table,推薦一次性將所有要查詢的記錄全部插入 ;
<!--[endif]-->
Not recommended:-
Refresh : itab_cust_t
select *
from /bi0/tcustomer
into itab_cust_t
append itab_cust_t.
clear itab_cust_t.
Recommended:-
Refresh : itab_cust_t
select *
from /bi0/tcustomer
into table itab_cust_t
 
在對(duì)內(nèi)表進(jìn)行查找時(shí),使用二分查找方法;
<!--[endif]-->
Not Recommended
Read table itab_cust_t with key soursystem=’I2P’.
Recommended
Read table itab_cust_t with key soursystem=’I2P’ binary search.
 
在操作兩個(gè)內(nèi)表時(shí),盡量使用append插入行,當(dāng)然這兩個(gè)內(nèi)表的結(jié)構(gòu)是要相同的;
<!--[endif]-->
Not Recommended
Loop at itab_cust_t.
Append itab_cust_t to itab_cust_t1.
EndLoop.
Recommended
Append lines of itab_cust_t to itab_cust_t1.
 
使用表緩存,當(dāng)如下情況時(shí),表緩存會(huì)被忽略:
1, select distinct
2, select ... for update
3, Order by, group by, having clause
4, Joins
使用FOR ALL Entries,系統(tǒng)會(huì)自動(dòng)創(chuàng)建outer join,相應(yīng)缺點(diǎn)有:
1,雷同數(shù)據(jù)會(huì)被自動(dòng)清除掉,如果不希望這樣,應(yīng)該在select中加入唯一key值查詢;
2,如果基于FOR ALL Entries查詢的表是空的,所有行都會(huì)被插入目標(biāo)表;
3,如果用于FOR ALL Entries的表記錄很大,這種情況下性能是下降而不是提升的。
<!--[endif]-->
Not Recommended
Loop at itab_cust_t.
Select single * from /bi0/mcustomer into itab_cust_m
Where soursystem= itab_cust_t-soursystem.
Append itab_cust_m.
EndLoop.
Recommended:-
Select * from /bi0/mcustomer appending table itab_cust_m
For all entries in itab_cust_t
Where soursystem= itab_cust_t-soursystem.
使用合理的where語句。當(dāng)一個(gè)表有多個(gè)索引時(shí),where語句應(yīng)該以索引順序書寫;
使用ABAP排序而不是Order By。收集完所有記錄,在內(nèi)表中進(jìn)行排序;
 
系統(tǒng)所提供的進(jìn)行性能分析的工具:
SE30,對(duì)ABAP程序進(jìn)行全面分析,無論是不是數(shù)據(jù)庫訪問的;
ST05,進(jìn)行SQL級(jí)別的分析。
限制
通常來說,當(dāng)加載程序以后,在運(yùn)行時(shí)會(huì)消耗額外的處理器時(shí)間和內(nèi)存。所以程序的性能也會(huì)受到硬件的限制。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
ABAP delete的用法
用BDC的方式控制屏幕跳轉(zhuǎn)
SAP ABAP RFC接口通用日志工具:abap fm logger
abap中sy-index和sy-tabix使用的時(shí)候有什么區(qū)別?
ABAP 代碼中,哪些特殊字符不能用于變量命名?
ABAP4基礎(chǔ)
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服