一般AP里要分析行项目数据,交易数据,历史付款信息。
还有一些供应商主数据。
基础的抽取数据源就是下面几个:
这个是从表BSIK(未清项)和BSAK(已清项)来的。
提取器:BWFID_GET_FIAP_ITEM
提取结构:DTFIAP_3 (从原先那个0FI_AP_3改来的)
在数据源里有个CI_BSIK结构用来添加附加字段。
这个CI_BSIK结构自动包括在主结构DTFIAP_3里。
这里有个0FI_AP_30数据源,也是一样的提取结构DTFIAP_3。
但是它不支持delta init:
提取结构一样,提取器不一样。
0FI_AP_4用的是时间戳方法。而不是delta queue。
字段 |
描述 |
原始表 |
原始表字段 |
BUKRS |
Company code |
BSIK, BSAK |
BSIK-BUKRS |
FISCPER |
Fiscal year/period |
BSIK, BSAK |
BSIK-GJAHR BSIK-MONAT |
BELNR |
Accounting document number |
BSIK, BSAK |
BSIK-BELNR |
BUZEI |
Account document posting line |
BSIK, BSAK |
BSIK-BUZEI |
UPOSZ |
Subitem number |
= 0001 |
|
STATUSPS |
Status of the FI item (O = open, C = cleared) |
BSIK, BSAK |
BSIK-BSTAT, BSIK-AUGDT |
LIFNR |
Account number of the vendor or creditor |
BSIK, BSAK |
BSIK-LIFNR |
KKBER |
Credit control area |
BSIK, BSAK, T001 |
BSIK-KKBER or T001-KKBER |
MABER |
Dunning area |
BSIK, BSAK |
BSIK-MABER |
KOART |
Account type |
= K |
|
UMSKZ |
Special G/L indicator |
BSIK, BSAK |
BSIK-UMSKZ |
BLART |
Document type |
BSIK, BSAK |
BSIK-BLART |
BSCHL |
Posting key |
BSIK, BSAK |
BSIK-BSCHL |
FISCVAR |
Fiscal year variant |
T001 |
T001-PERIV |
BLDAT |
Document date in document |
BSIK, BSAK |
BSIK-BLDAT |
BUDAT |
Posting date in the document |
BSIK, BSAK |
BSIK-BUDAT |
CPUDT |
Day on which accounting document was created |
BSIK, BSAK |
BSIK-CPUDT |
AUGDT |
Clearing date |
BSIK, BSAK |
BSIK-AUGDT |
MADAT |
Last dunning date |
BSIK, BSAK |
BSIK-MADAT |
NETDT |
Due date for net payment |
BSIK, BSAK |
通过FM DETERMINE_DUE_DATE 计算 |
SK1DT |
Due date according to cash discount terms 1 |
BSIK, BSAK |
通过FM DETERMINE_DUE_DATE 计算 |
SK2DT |
Due date according to cash discount terms 2 |
BSIK, BSAK |
通过FM DETERMINE_DUE_DATE 计算 |
ZFBDT |
Baseline date for due date calculation |
BSIK, BSAK |
BSIK-ZFBDT |
ZBD1T |
Cash discount days 1 |
BSIK, BSAK |
BSIK-ZBD1T |
ZBD2T |
Cash discount days 2 |
BSIK, BSAK |
BSIK-ZBD2T |
ZBD3T |
Net payment terms period |
BSIK, BSAK |
BSIK-ZBD3T |
ZBD1P |
Cash discount percentage 1 |
BSIK, BSAK |
BSIK-ZBD1P |
ZBD2P |
Cash discount percentage 2 |
BSIK, BSAK |
BSIK-ZBD2P |
LAND1 |
Country key |
T001 |
T001-LAND1 |
ZLSCH |
Payment method |
BSIK, BSAK |
BSIK-ZLSCH |
ZTERM |
Terms of payment key |
BSIK, BSAK |
BSIK-ZTERM |
ZLSPR |
Payment block key |
BSIK, BSAK |
BSIK-ZLSPR |
RSTGR |
Reason code for payments |
BSIK, BSAK |
BSIK-RSTGR |
MANSP |
Dunning block |
BSIK, BSAK |
BSIK-MANSP |
MSCHL |
Dunning key |
BSIK, BSAK |
BSIK-MSCHL |
MANST |
Dunning level |
BSIK, BSAK |
BSIK-MANST |
LCURR |
Currency key of the local currency |
T001 |
T001-WAERS |
DMSOL |
Debit amount in local currency |
BSIK, BSAK |
BSIK-SHKZG, BSIK-DMBTR |
DMHAB |
Credit amount in local currency |
BSIK, BSAK |
BSIK-SHKZG, BSIK-DMBTR |
DMSHB |
Local currency amount (+/-) |
BSIK, BSAK |
BSIK-SHKZG, BSIK-DMBTR |
SKNTO |
Cash discount amount in local currency |
BSIK, BSAK |
BSIK- SKNTO |
WAERS |
Currency key |
BSIK, BSAK |
BSIK-WAERS |
WRSOL |
Debit amount in foreign currency |
BSIK, BSAK |
BSIK-SHKZG, BSIK-WRBTR |
WRHAB |
Credit amount in foreign currency |
BSIK, BSAK |
BSIK-SHKZG, BSIK-WRBTR |
WRSHB |
Foreign currency amount (+/-) |
BSIK, BSAK |
BSIK-SHKZG, BSIK-WRBTR |
SKFBT |
Amount eligible for cash discount in document currency |
BSIK, BSAK |
BSIK-SKFBT |
WSKTO |
Cash discount amount in document currency |
BSIK, BSAK |
BSIK-WSKTO |
KTOPL |
Chart of accounts |
T001 |
T001-KTOPL |
HKONT |
General ledger account in G/L accounting. |
BSIK, BSAK |
BSIK-HKONT |
SAKNR |
G/L account number |
BSIK, BSAK |
BSIK-SAKNR |
FILKD |
Branch account number |
BSIK, BSAK |
BSIK-FILKD |
AUGBL |
Clearing document number |
BSIK, BSAK |
BSIK-AUGBL |
XBLNR |
Reference document number |
BSIK, BSAK |
BSIK-XBLNR |
REBZG |
Invoice document number |
BSIK, BSAK |
BSIK-REBZG |
REBZJ |
Fiscal year of the relevant invoice |
BSIK, BSAK |
BSIK-REBZJ |
REBZZ |
Posting item in the relevant invoice |
BSIK, BSAK |
BSIK-REBZZ |
VBELN |
Sales document number |
||
XREF1 |
Reference key of the business partner |
BSIK, BSAK |
BSIK-XREF1 |
XREF2 |
Reference key of the business partner |
BSIK, BSAK |
BSIK-XREF2 |
XREF3 |
Reference key for the document items |
BSIK, BSAK |
BSIK-XREF3 |
SGTXT |
Item text |
BSIK, BSAK |
BSIK-SGTXT |
XNEGP |
Flag: Negative Posting |
BSIK, BSAK |
BSIK-XNEGP |
XARCH |
Indicator: amount already in archive |
BSIK, BSAK |
BSIK-XARCH |
UMSKS |
Transaction class Special Ledger |
BSIK, BSAK |
BSIK-UMSKS |
UPDMOD |
BW delta process: Update mode |
||
ZUONR |
Assignment number |
||
.INCLUDE DTFIAP-WF |
|||
.INCLUDE CI_BSIK |
Customer exits for extract structureDTFIAP_3 |
增强 |
这个数据源从表LFC1 (供应商主数据交易数据)来的。
提取器:BWFI2D_GET_FIAP_TRFI
提取结构:DTFIAP_1 (从原先那个0FI_AP_1改来的)
字段 |
描述 |
原始表 |
原始表字段 |
LIFNR |
Account number of the vendor |
LFC1 |
|
BUKRS |
Company Code |
LFC1 |
|
FISCPER |
Fiscal Year/Period |
LFC1 |
|
FISCVAR |
Fiscal Year Variant |
LFC1 |
|
CURTYPE |
Currency Type |
LFC1 |
|
CURRENCY |
Currency key |
LFC1 |
|
UM01S |
Total Debit Postings |
LFC1 |
|
UM01H |
Total Credit Postings |
LFC1 |
|
UM01K |
Accumulated Balance |
LFC1 |
|
UM01U |
Sales of the Period |
LFC1 |
|
UPDMOD |
BW delta process: update mode |
LFC1 |
这个从LFC3(供应商主数据 特殊总账交易数据)来的。
提取器:BWFI2D_GET_FIAP_TRFI_SPGL
提取结构:DTFIAR_7
字段 |
描述 |
原始表 |
原始表字段 |
LIFNR |
Account number of the vendor |
LFC3 |
|
BUKRS |
Company Code |
LFC3 |
|
FISCPER |
Fiscal Year/Period |
T001 |
|
FISCVAR |
Fiscal Year Variant |
LFC3 |
|
CURTYPE |
Currency Type |
LFC3 |
|
CURRENCY |
Currency key |
LFC3 |
|
UM01S |
Total Debit Postings |
LFC3 |
|
UM01H |
Total Credit Postings |
LFC3 |
|
UM01K |
Accumulated Balance |
LFC3 |
|
UM01U |
Sales of the Period |
LFC3 |
采用时间戳增量。也就是说会有一个时间戳字段在行项目里,然后会有个时间戳的表,记录哪些时间段已经被读取过了。下次抽取增量数据集从时间戳开始直接发送到BW里。不用再放到ERP的Delta queue里。
行项目数据源基本都用AIE(after-image delta)后像增量。这个就不好直接到BW的Cube类型的ADSO里。因为Cube里是直接累加,没有前像的抵消,累加会重复。
所以这种得先到标准ADSO里,用它的change log表来找到更改的记录,再往后传到上层ADSO。
那么时间戳在哪里?实际上在GL的抬头表BKPF里,在字段BKPF-CPUDT里。
当上一次的delta DTP抽取完了,ECC里面就会记录两个时间戳字段在BWOM2_TIMEST里面。
AEDAT是你的DTP抽取的时间。TS_LOW和TS_HIGH是从1900.01.01开始的秒数。抽完了就会在这两个字段对应的区间范围打个X。表示上次抽过这里的数据了,下次抽得从HIGH的往后。
转换一下来看:
每次抽取都会在最新的一次区间内打钩。
所有的行项目都是这么个抽取方式:
对于行项目来讲,一天只能抽上一天的所有增量集。因为在字段BKPF-CPUDT里,只有date没有time。大概就这么设计的,安全区间就是1天,用AIE过来,只取一天内最后一次更改的后像。
那么如果月末进行的更改,持续到了下月初一,这数据岂不是要到初二才能拿过来。这明显不行啊。
这种情况下,SAP说可以去设置一个表BWOM_SETTINGS里面的参数。
BWFIOVERLA
这个参数默认是空的。设置成X就允许时间区间的重叠。注意这个是有限制的,在BWFITIMEBOR这个里面是020000,也就是说如果提取时间是在02:00:00之前开始,就是打了X,也还是会提取前一天的数据。但是这个设置我们没有做,所以暂时行项目里我们只能拿到前一天的数据。
*解释SETTING表参数
BWFILOWLIM 这个就是你初始化增量的DTP的起始时间。默认值设置为19910101。
BWFISAFETY 计算提取日期上限,初始化的就是从当前日期到提取日期当天。增量的话就是从上次增量到当前日期-BWFISAFETY。这个是天数,最小1天。就是你最少能抽一天的增量,最大就是上次抽取的时间到前一天。
DELTIMEST 这个就是日志保留时间 默认60天。(是针对三个log表BWFI_AEDAT, BWFI_AEDA2 , BWFI_AEDA3)时间戳表BWOM2_TIMEST里会保留60天的抽取记录。60天前的会被删掉。那么对应的,日志表中的BWFI_AEDAT/2/3的更改记录也会被删掉。
BWFITIMBOR 默认为2点,格式为HHMMSS。意思是如果delta抽取时间在2点之后,那数据就是前一天的。如果是2点之前,那就是会取昨天之前一天的,又倒退一天。这也是个安全区间吧。比如你9月10号两点前跑DTP,那会去拿9月8号那天的。而两点后去跑,会去拿9月9号的。
BWFIOVERLA 这个是针对于年结或者月结的大批量数据处理,假设12月31号晚上处理的数据到1号的提取时间还没确认。还没存到数据库里。
默认是空,就是抽取的是上次的抽取时间戳到本次抽取时间-1天内的所有增量。
那么,填X 意思是忽略BWFISAFETY里面的值,delta的时间会是从上一次抽取的时间戳到这次抽取的时间。
BWFINEXT: 打了X好像是流抽取。默认是空。这个没整过。如果这里打了X,那这几个参数就被忽略了BWFIOVERLA , BWFISAFETY , BWFITIMBOR。具体在Note 991429里有。
*解释结束
如果GL没有进行增量抽取,那么AR和AP也就没有增量数据。所以处理链里先搞GL。
对于在上次增量抽取过后做更改的行项目数据,没有办法记录更改的时间。所以所有行项目只要做了更改都会被记录到系统里,更改了的行项目和凭证的key,和时间都会放到表BWFI_AEDAT里。
就相当于是个change日志表:
根据这个log表,提取器能找到增量数据集。
只要是你手动更改了行项目凭证的,或者是清行项目,或者是更改行项目的催款数据的。都会被记到这个表里。
这些都是由一些系统自带的更新程序搞起来的。细节的咱就不去追了。
只要知道在表TPS31里面有FM BWFIP_WRITE_AEDAT_POINTER就行了。SM30可以添加这条。它这FM是说写BKPF的change pointer。
在BW的增量初始化的时候就会自动在表TPS31里加这条。加了之后就是告诉系统接下来要记录增量了。我以后要弄增量DTP了。AEDAT这里写的是BSEG和BKPF的增量,其他的可以自己去看。
基本上搞完增量初始化,根据setting表里的增量区间,比如是1就是1天,那一天后可以开始增量抽取。
当然对于增量初始化的,也还是应该先搞GL的,再弄AR和AP的。要不然数据不一致了。有些时候增量初始化需要对财年和公司代码做限制的。那么应收和应付也都是跟着总账来,总账先搞哪些过滤参数,应收应付也是跟着用哪些过滤参数。
对行项目的增强可以在customer include里进行:
那么有两种情况,如果你在CI里面加的字段,就在它本身提取结构的表里,那就不用写增强逻辑了,因为提取器里就写了从那些表来的move corresponding 就能直接取出来。
如果是从其他表来的,就得用BW的BADI了,现在就是那个RSU5啥的。搞完了去RSA6把隐藏的字段给放出来。
过程一样。就是增量日志表不一样:BWFI_AEDA2
时间戳表是一样的:BWOM2_TIMEST.
Delta init的DTP执行时候会生成这条在TPS31的记录: