點擊藍字 關注我們
一
前言
前文介紹了發出接口程序的執行原理及怎么自動生成發出接口程序.
詳見鏈接無峰,公眾號:ABAP 技巧與實戰SAP工具箱 自動生成發出接口程序(一)
本文主要介紹生成發出接口程序時使用的基本配置表ZTIF002中的字段及用法
二
接口表定義表
接口定義表ZTIF002. 用來記錄所有的接口信息,并通過特定的字段控制接口的行為.
01
JIEKNO
JIEKNO 接口編號
02
JIEKNM
JIEKNM 接口描述
03
01
請輸入標題
EXSYS
EXSYS 外部系統
接口對應的外部系統.這里的接口不包含外部系統之間的接口. 只包含ECC/S4 和外部系統之間的接口.所以通過外部系統編碼標識接口對應的外部系統(外部系統登記在表ZTIF001中)
04
JIEKNO_COMM
JIEKNO_COMM 通用接口編號
底層使用的接口編號. 比如外部系統傳到ECC創建商品憑證接口,底層接口編號BC010, 該接口中也有個接口編號字段.用于區分不同業務:比如盤點接口使用MM120 報損業務 MM121 收貨MM122 等.
這樣可以通過接口編號區分不通的業務, 同時這些不同的業務實際上又使用了同一個底層接口傳遞商品憑證.
配置通用接口編號,以便ZIFLOG中能解析并查看消息內容
05
IFDIR
IFDIR 接口方向:I/O
I 入站 O 出站 該字段會影響通用編碼轉換邏輯:出站會使用字段域定義中的轉換函數轉出(比如去掉前置0),入站會使用字段域定義中的轉換函數轉入(比如添加前置0),接口方向一定不能定義錯誤.如果出現了不必要的轉換, 可以使用一個不帶域轉換函數的域來定義數據,避免自動轉換邏輯生效
自動轉換邏輯調用了類方法
ZCL_DATA_HELPER=>AUTO_CONVERSION_EXIT_INPUT 和AUTO_CONVERSION_EXIT_OUTPUT
一般情況下,RFC函數創建的接口都是入站接口. 但是也可以把外部系統接口調用封裝到一個RFC函數中給ECC系統調用, 此時該RFC函數是出站接口
06
IFTYP
IFTYP 接口類型(M 主數據 D 單據)
僅標記一下是主數據還是單據接口, 無實際控制作用. 主數據接口可能通過一個接口編號群發給多個系統. 單據接口不能群發,只會通過特定的接口編號發送或分發到一個系統
07
IFASY
IFASY 異步接口標記 標記接口是異步接口, 無標記則是同步接口. 一般同步接口無需通過PO. 異步接口必須通過PO.
08
MABIAO
MABIAO 是否碼表接口(停用)
09
CHTAB
CHTAB 變化點記錄的表(如果沒有維護下傳控制表,則按所有數據比較是否改變, 如果改變傳輸所有數據)
下傳控制表的命名規則ZTIF<主表> .
比如商品主表 MARA 下傳控制表 ZTIFMARA
采購訂單主表EKKO? 下傳控制表 ZTIFEKKO
10
KEYFT
KEYFT 關鍵字過濾標記(停用)
11
MAXLN
MAXLN 每個消息最大傳輸的條目數
用于控制傳出程序每個消息中的最大條目數,如果配置了該值并且選擇屏幕中的最大條目數>該值,則替換成配置的最大條目數,如果沒有配置,按程序選擇屏幕中的設置
12
CONVERT_UNIT
CONVERT_UNIT 數量轉換為基本單位數量(維護接口的商品/數量/單位的字段名, 用/分割).
在通用轉換類方法
ZCL_DATA_HELPER=>AUTO_CONVERSION_EXIT_OUTPUT中會使用這個邏輯,用來把數量轉換成基本單位數量. 這里維護接口中商品/數量/單位的字段名
比如: MATNR/MENGE/MEINS
這個轉換邏輯用處不太大,一般的單據都有單據數量和基本數量. 比如交貨單 LIPS-LFIMG 是單據數量? LIPS-LGMNG 是基本數量. 接口中可以直接傳輸LIPS-LGMNG.表示傳輸的基本單位數量.如果單據沒有基本單位數量. 則可以通過這個配置執行數量轉換.
13
ACTIV
ACTIV 接口活動標記
用于標記接口活動,沒有設置該標記的接口無法執行(傳出接口會報錯并中斷執行,傳入接口會在SXI_MONITOR中報錯),可以通過設置該字段為空停止傳出或傳入接口的執行.
14
ZQKTZ
ZQKTZ 賬期可調整標記
影響小票/商品憑證相關接口
特定接口中實現該邏輯:如果發現單據中賬期已經關閉,則調整為當前月的第一天.這樣避免賬期關閉而報錯(該邏輯個別項目使用)
15
NODUP
NODUP 不檢查單據重復
上傳接口默認都會檢查單據是否重復.允許通過配置取消重復性檢查.
上傳接口在PROXY中調用對應函數產生IDOC ,比如商品憑證調用函數Z_CREATE_IDOC_OF_MB產生商品憑證的IDOC
產生IDOC時通過函數Z_CHECK_IDOC_DUPLICATE檢查IDOC是否重復產生.如果重復,調整IDOC的消息類型(EDIDC-MESTYP)為ERROR_DUP 這樣后續執行IDOC時報錯.
通過如下字段檢查重復性
EDIDC-REFINT? 接口編號
EDIDC-RCVPRN? 合作伙伴(客戶或邏輯系統)
EDIDC-SNDLAD? 外部單號
EDIDC-SNDSAD? 地點
EDIDC-REFMES? 外部單號對應多個IDOC時,添加識別序號
16
WDATA
WDATA 接口內容記錄在表 ZTIF_LOG_DATA中
標記后的RFC函數的傳入參數和傳出參數內容會寫入表ZTIF_LOG_DATA中. 后續可以通過ZIFLOG查詢內容.對于使用PO的接口,該字段無意義.
17
WIFLOG
WIFLOG 寫入接口控制日志表ZTIF_LOG標記.
通過程序ZIFLOG可以監控接口的執行情況及接口傳輸的數據內容
18
JKTYP
JKTYP 地點庫位檢查(單據類接口的地點庫位檢查邏輯)
單據類的接口有時需要按地點/庫位識別該單據是否需要通過特定接口傳輸.
空 地點/庫位檢查維護的服務器對應的系統ID與接口的系統ID一致. 如果地點/庫位.在字段在單據記錄下傳控制表的保存函數中使用.
A 地點/庫位檢查T001L-ZWHSY 非空(WMS接口)
B 地點/庫位檢查t001l-ZZXS = 'A'(線上系統接口)
C 地點/庫位檢查T001L-ZZSX = 'Z'(中臺系統接口)
D 不執行地點/庫位檢查
19
TZMSG
TZMSG 消息通知類接口標記
因為使用了接口體系在單據保存時記錄了需要自動發送的郵件信息,所以需要標記一下該接口是消息通知類,這樣在單據保存時,會寫入表 ZTMSG_H/ZTMSG_I 后續通過程序ZREP_SEND_MAIL_1? ? ? ? ? ? ? ? 郵件發送程序 統一發送郵件
比如交貨單過賬后,郵件通知相應的人員給交貨單已經過賬(物流已經發出貨物)
20
SYSCT
SYSCT 群發系統數(涉及外圍系統的服務器個數)
當主數據群發的時候, 每個接收系統都需要有一個成功的反饋,為了確保所有系統都成功的收到.需要用成功反饋的個數和系統個數比較,如果成功反饋的個數>=系統個數,才會認為所有的系統都接收到了. 才能夠標記數據發送成功(體現在下傳控制表RSTATUS字段 比如ZTIFMARA-RSTATUS . 同時ZIFLOG在界面也會顯示(消息成功響應標記 FLAG_ACK = 'X' )
如果未設置,視同為1處理
關于系統消息的反饋詳見鏈接無峰,公眾號:ABAP 技巧與實戰PO系列之 消息的確認反饋
21
SAVE_PROC_LOG
SAVE_PROC_LOG 寫入下傳控制表過程記錄日志(單據)
對于單據類的接口, 單據在保存時根據過濾條件寫入下傳控制表. 這個標記用來控制是否把過濾的過程寫入標準日志. 如果標記了. 可以使用TCODE SLG1 查詢對象ZIF 獲取日志信息,查看單據沒有寫入下傳控制表的原因
22
FUNCNAME
FUNCNAME 函數名
如果是RFC函數定義的同步接口,可以在此維護一個函數名, 如果函數名為空, 默認會按照命名規則Z_IF_<接口編號> 生成一個函數名. 在監控程序ZIFLOG中使用. 通過函數名讀取函數的參數信息,以便讀取保存的參數值呈現出來
23
DPATH
DPATH 下載路徑/發布的webservice
特殊情況下使用.
對于傳出接口,用于記錄對方的服務調用路徑.
比如外圍系統發布了一個服務 http://testwb.xx.cn/<動態部分> .PO調用對方服務的時候,需要通過接口傳輸的動態路徑拼出最終調用的服務路徑
對于傳入接口, 則用于記錄PO產生的webservice的wsdl定義地址或http調用地址
24
PREFIX
PREFIX 文件名前綴
對于文件類接口(不通過PO),記錄該文件名的前綴.
25
MAILADD
MAILADD 郵箱地址(停用)
26
LIFNR_FLAG
LIFNR_FLAG 供應商轉換標記
把對方傳輸的外部供應商編碼轉換成SAP供應商,外部供應商編號記錄在but000-bpext中
轉換邏輯寫在底層轉換方法
ZCL_DATA_HELPER=>AUTO_CONVERSION_EXIT_INPUT中
27
WERKS_FLAG
WERKS_FLAG 地點轉換標記
把對方傳輸的外部地點編碼轉換成SAP地點編碼,外部地點編碼記錄在T001W-ZJMDH中
轉換邏輯寫在底層轉換方法
ZCL_DATA_HELPER=>AUTO_CONVERSION_EXIT_INPUT中
28
DISP_METHOD
DISP_METHOD接口發送特性(停用)
29
CAN_COMPARE
CAN_COMPARE 接口可比較標記(單據類的可以通過ZIF_COMPARE比較單據的發出,收到情況)
單據類的接口在發出或者接收時會根據配置寫入表 ZTIF_COMPARE中. 然后外部系統通過接口BC000傳回單據的接收或發送信息. 這樣表ZTIF_COMPARE中對于ECC發出的單據或者ECC接收的單據就會記錄完整的發出,接收信息.
通過報表ZIF_COMPARE可以監控單據的發出接口情況. 對于只有發出,沒有接收的單據需要檢查是否因為PO的原因或者其它原因沒有傳輸到目標系統. 有利于快速發現傳輸失敗的單據.
三
總結
自動生成發出接口程序和傳入接口模板要求接口編號必須登記在接口定義表中. 這樣就可以通過該表查看系統中的所有接口信息.
接口定義表對傳出接口和傳入接口都有控制作用.
接口定義表中整合了許多和接口相關的控制信息,這些控制方式在不同的項目中提出并整合到這個表中. 有些控制有通用價值,得以保留,有些沒有通用價值,逐漸廢棄.
THE
END
約定