點擊藍字 關注我們
一
前言
前文介紹了一個通用導入程序及怎么配置通用導入程序的導入模板
通用導入程序無峰,公眾號:ABAP 技巧與實戰SAP工具箱 通用導入程序
公眾號交流群有人回復通用導入程序只能導入單表,用處不大.因為大部分單據,主數據的都是多表結構.
這里說明一下:
大部分配置表都是單表結構(文本表可以單獨導入),可以直接導入數據.
之前介紹的通用導入程序只能導入到一個表中. 如果目標數據不是單表結構, 則需要創建一個臨時存儲表,先把數據導入到臨時存儲表中, 再調用處理程序寫入正式表.這個更符合多表處理的實際情況.
本文主要介紹通用導入程序的升級版: ZUPLOAD_TABLE_CONTENT_MUL.可以同時處理多表的導入
二
場景描述
本文的示例場景中有三個表
ZTBCD_H? ? ? ? ? ? ? ? ? ? ? 補差單-抬頭
ZTBCD_I? ? ? ? ? ? ? ? ? ? ? ? 補差單-明細(補差規則)
ZTBCD_I2? ? ? ? ? ? ? ? ? ? ? 補差單-補差結果明細
需要通過程序同時把數據導入到這三個表中.
這個場景需要忽略掉三個表的相關性數據校驗. 因為這個相關校驗邏輯個性化太強,很難通過配置實現.
三
配置過程
多個相關表同時導入需要先配置,才能執行
01
創建事務代碼
創建事務代碼ZUP_BCD_MUL 調用多表導入程序:ZUPLOAD_TABLE_CONTENT_MUL
創建事務代碼ZUP_BCD_H 調用單表導入程序: ZUPLOAD_TABLE_CONTENT
創建事務代碼ZUP_BCD_I? 調用單表導入程序: ZUPLOAD_TABLE_CONTENT
02
配置多表關系
在配置表ZTBC001D - EXCEL導入導出模板支持多表單(最多允許20個) 中配置事務代碼和多表的關系.
每個TCODE 最多只能配置20個相關表.
多表關系可以直接配置表名,也可以配置TCODE ,通過配置ZTBC001獲取表名.
下圖的配置中:
ZUP_BCD_H? 通過TCODE關聯ZTBC001中的表
ZUP_BCD_I? 通過TCODE關聯ZTBC001中的表
ZTBCD_I2? 直接使用表.
順序字段內容控制了表在EXCEL中的標簽順序及導入后的屏幕界面呈現時的標簽順序
03
配置ZTBC001
在ZTBC001中維護TCODE 及相關的檢查函數,出錯保存等信息.
ZUP_BCD_MUL 表示總體處理的TCODE
ZUP_BCD_H? 表示抬頭表處理的TCODE
ZUP_BCD_I? ? 表示行項目表出差的TCODE
因為ZTBCD_I2在ZTBC001D中直接配置的表名. 所以無需在ZTBC001中配置
04
配置每個表的模板
在配置表ZTBC001A為每個單獨的表配置模板, 如果沒有配置,則使用該表的全部字段.
具體配置方式詳見鏈接無峰,公眾號:ABAP 技巧與實戰SAP工具箱 配置導入模板
需要注意的是:
如果ZTBC001D中配置的是表名,則單表的模板, 字段ZTBC001A-TABNAME 中只能填寫表名.
如果ZTBC001D中配置的是TCODE, 單表模板配置里可以填寫事務代碼或表名.
如下圖,只為兩個表配置了模板字段,個別字段加了非空檢查,關鍵字段設置了重復性檢查
四
執行多表導入
執行的過程與單表導入的過程差不多. 界面樣式稍有差異.
01
調用TCODE
調用之前創建的TCODE? ZUP_BCD_MUL 表名位置會填ZTBC001- FILENAME(模板文件名).
02
產生模板
勾選產生模板,然后執行產生EXCEL模板,產生的模板中包含了三個表的字段模板(其中,前兩個是根據配置表獲取, 第三個表沒有配置,獲取所有表中字段)
03
導入數據
在模板中輸入需要導入的數據,保存后, 在程序選擇屏幕去掉產生模板復選框.執行導入數據
04
顯示導入的數據
導入的數據會呈現在屏幕上,通過標簽頁區分不同的表
根據選擇屏幕上的復選框 'X' 錯誤數據和正確數據一起顯示 '' 錯誤數據單獨顯示
控制報錯數據的顯示方式
圖一 報錯數據單獨顯示
圖二 報錯數據和正常數據一起顯示
圖一
圖二
05
保存數據
點擊保存后 ,數據會分別寫入相應的表ZTBCD_H/ZTBCD_I/ZTBCD_I2
五
總結
程序ZUPLOAD_TABLE_CONTENT_MUL 是在程序ZUPLOAD_TABLE_CONTENT的基礎上,增加了同時處理多表的功能. 兩個程序同時支持模板配置中的所有顯示規則,檢查規則. 具體的配置邏輯可以理解為先為每個單表完成配置
詳見鏈接無峰,公眾號:ABAP 技巧與實戰SAP工具箱 配置導入模板
然后在多個單表配置的基礎上, 再通過ZTBC001D配置表把所有單表配置的TCODE整合到一個多表TCODE中.
需要注意的是:
單表TCODE,調用ZUPLOAD_TABLE_CONTENT
多表TCODE,調用
ZUPLOAD_TABLE_CONTENT_MUL
目前尚未在項目中實際使用過這個多表導入.
究其原因是實際很少有多表同時導入的場景.因為表間關系比較復雜,往往需要先把多表數據導入一個臨時表(主從表),再通過程序處理寫入多表.
THE
END
約定
如果你對這篇文章感興趣,請幫忙點贊,在看,分享.? ? ?
? ? (如果你真的喜歡這篇文章,請記得回來打個賞,作為支持我繼續下去的動力,這是一個正反饋過程. 越多的人打賞,作者越有動力分享,讀者就能享受更多的福利.畢竟打賞的金額富不了我,窮不了你,卻能支持這個公眾號長