SAP工具箱 配置導入模板

點擊藍字 關注我們

前言

前文介紹了通用導入程序

詳見鏈接無峰,公眾號:ABAP 技巧與實戰(zhàn)SAP工具箱 通用導入程序

本文主要介紹怎么給特定表的導入配置模板及數(shù)據(jù)檢查

為了講解的更清楚,更有條理,本文以數(shù)據(jù)導入臨時表ZTUP_MB(商品憑證導入)為例.

導入表定義

ZTUP_MB表是用來臨時存儲需要產(chǎn)生商品憑證的數(shù)據(jù).為了讓商品憑證產(chǎn)生的過程可記錄,可重試. 所以創(chuàng)建一個特定結(jié)構(gòu)的表來記錄導入的數(shù)據(jù)

  • UPLID: 生成的序號,用來記錄上傳的文件ID

  • LINEID: 行號,記錄數(shù)據(jù)在原文件中的序號

  • MBLNR_CR/MJAHR_CR: 用來記錄后續(xù)成功創(chuàng)建的商品憑證號

  • ZSUP_MB: 商品憑證需要的業(yè)務數(shù)據(jù),字段不再贅述. 詳見圖二.

  • ZSMATNR_IDENTIFY: 額外的商品識別方式

  • ZSSIZE: 尺碼作為列的導入(允許一般商品+多尺碼信息在一行中同時導入單據(jù),形成單據(jù)中的一般商品及下層的變式商品. 該邏輯后續(xù)專門撰文說明.

  • ZSBC008: 后續(xù)處理產(chǎn)生商品憑證的程序?qū)嵱?記錄相關日期,時間,操作者等內(nèi)容,詳見圖三

圖一

圖二

圖三

輔助表定義

ZTUP_HEADER 是一個輔助表, 主要用來記錄上傳文件ID的一些特殊屬性.

這是一個通用輔助表, 所有臨時保存數(shù)據(jù)的表ZTUP_*都會把文件ID寫入ZTUP_HEADER 中. 主要用于記錄文件ID對應的文件名(FILENAME),導入日期,導入人員等信息.

當然,如果導入的表是數(shù)據(jù)最終要進入的表, 則無需這個輔助表.

創(chuàng)建TCODE

為通用導入程序ZUPLOAD_TABLE_CONTENT 創(chuàng)建一個TCODE: ZUP_MB . 具體產(chǎn)生模板或?qū)霑r,會通過TCODE讀取配置信息.

配置表ZTBC001

ZTBC001中主要配置TCODE 與表的對應及一些通常的控制信息

大部分字段的描述已經(jīng)足以說明字段含義了. 個別字段會在后面重點介紹一下.

  • TCODE? 事務代碼

  • TABNAME 表名

  • FUNCNAME 函數(shù)名:配置調(diào)用的數(shù)據(jù)校驗函數(shù)

  • PROGNAMEABAP 程序名 :配置數(shù)據(jù)導入后跳轉(zhuǎn)的處理程序

  • TYPENAME 字典類型的名稱 (廢棄)

  • SEPARATOR 分隔符 :如果是文本文件導入, 指定分割符號.如果沒有指定, 實用制表符分割

  • BAPI_NO_AUTHCHECK 跳過BAPI執(zhí)行中的授權(quán)檢查(需要BAPI函數(shù)支持)

  • CMFLG 尺碼橫向顯示功能標記

  • SELSC 跳轉(zhuǎn)到處理程序時,留在選擇屏幕上

  • ERRSAVE 帶錯誤保存標記: 勾選: 文件存在錯誤的情況下,允許保存處理正確的部分. 未勾選,文件存在錯誤就不允許保存.

  • DISPT 顯示特定字段的文本(字段必須有碼表檢查標記才能顯示),數(shù)據(jù)導入顯示時,補充編碼的描述

  • ERR_IN_DATA 檢查出錯的數(shù)據(jù)也保存在上傳表中(標記為A).

  • WITH_DATA 允許附加數(shù)據(jù)產(chǎn)生模板: 勾選后,允許產(chǎn)生帶有數(shù)據(jù)的模板.

  • UPD_NUM? 更新表時分包處理的每個包的條目數(shù)(個別表發(fā)現(xiàn)無法一次性更新,需要按指定條目數(shù)多次寫入數(shù)據(jù)庫)

  • FILENAME 模板文件名(如果為空,使用表名)

  • KEEP_LINEID 保留文件中的行號(如果存在報錯并允許保存:勾選,保留文件中的行號,不勾選,正確內(nèi)容重寫行號)

01

FUNCNAME

函數(shù)名:配置調(diào)用的數(shù)據(jù)校驗函數(shù)

通過定義并配置一個固定結(jié)構(gòu)的函數(shù),在函數(shù)中執(zhí)行商品憑證導入的特殊邏輯(校驗或數(shù)據(jù)補償). 可以配置通用檢查函數(shù)Z_BC_UP_COMM_CHECK. 也可以用這個函數(shù)復制一個函數(shù)

Z_BC_UP_MB_CHECK,在基本檢查的基礎上,再補充商品憑證導入的特殊檢查邏輯

下面是兩個基本檢查邏輯

  • Z_BC_UP_FIELD_EMPTY_CHECK? 基于配置的檢查

  • Z_BC_UP_COMMON_DATUM_CHECK 日期檢查

02

PROGNAME

ABAP 程序名 :配置數(shù)據(jù)導入后跳轉(zhuǎn)的處理程序

  • 如果導入數(shù)據(jù)記錄的表是最終目標表, 則無需配置處理程序.

  • 如果記錄的表是臨時表, 還需要通過特定的程序執(zhí)行寫入正式表(或者調(diào)用BAPI產(chǎn)生主數(shù)據(jù)或單據(jù)). 則需要配置一個處理程序.

處理程序大致需要一個相對固定的選擇屏幕

03

ERR_IN_DATA

檢查出錯的數(shù)據(jù)也保存在上傳表中(標記為VPROC=A).

  • 勾選后:錯誤部分的數(shù)據(jù)與正確的數(shù)據(jù)一起顯示并寫入目標表(附加錯誤標記).此時視同ERRSAVE='X'.

  • 未勾選:錯誤數(shù)據(jù)單獨顯示. 此時如果允許出錯保存(ERRSAVE='X'). 保存后,會丟棄錯誤部分的數(shù)據(jù). .如果ERRSAVE=''. 如果有錯誤的數(shù)據(jù),則不允許保存

配置ZTBC001后的效果

執(zhí)行TCODE: ZUP_MB . 會讀取配置表ZTBC001中的表寫入表名字段(不允許修改). 同時文件名依據(jù)配置字段FILENAME的內(nèi)容+<_時間戳>

點擊下載模板后,不再彈出字段字段選擇屏幕,會直接下載產(chǎn)生模板文件(模板文件內(nèi)容依賴于配置表ZTBC001A,如果未配置, 則使用表中所有字段).

需要注意的是:選擇屏幕中的 檢查數(shù)據(jù)復選框是一個總控開關,可以通過取消勾選,取消數(shù)據(jù)導入模板中配置的所有檢查邏輯.(可信賴的大數(shù)據(jù)量導入時,去掉檢查數(shù)據(jù)可以極大的提高導入性能)

配置表ZTBC001A

該配置表用于配置特定的事務代碼或表的模板內(nèi)容及導入檢查等.

  • TABNAME 表名或者TCODE名稱,或者接口編號

  • FIELDNAME 字段名

  • FIELDTEXT 表字段描述

  • SORTK 字段順序

  • EXCMB 模版中排除該字段(標記了的字段從模版中排除,并且字段檢查失效)

  • NOZERO 字段非空檢查

  • DUP_CHECK 上傳文件內(nèi)容重復性檢查(所有設置了該標記的字段參與重復性檢查)

  • MBCHK 碼表檢查

  • MBNOEXCEL 碼表限制在EXCEL模版的表現(xiàn)方式

  • DISPT 顯示特定字段的文本(字段必須有碼表檢查標記才能顯示)

  • AUTHCHK 授權(quán)檢查標記

  • AUTHOBJ 權(quán)限對象

  • AUTHCHK_S 簡單授權(quán)檢查

  • NROBJ 編號范圍對象名稱

  • NRNR 序號區(qū)間編號

  • DEFAULT_VALUE 字段的默認值

  • WITH_DATAE_TEXT如果FIELD_LONG_TEXT 為空且添加了標記, 則獲取數(shù)據(jù)元素長文本作為批注

  • FIELD_LONG_TEXT 字段詳細描述,體現(xiàn)在EXCEL的批注中

  • ZZBDS_CHECK 正則表達式檢查(輸入字段內(nèi)容檢查的正則表達式)

01

TABNAME

表名或者TCODE名稱,或者接口編號

如果一個表的導入配置了多個事務代碼入口. 可以為這些事務代碼分別配置模板(TABNAME中填寫事務代碼). 也可以讓這些事務代碼共用一個模板,(TABNAME填寫表名).

02

NOZERO

字段非空檢查

勾選后:模板中的該字段將紅色顯示,同時描述中添加* 提醒用戶該字段必須輸入內(nèi)容. 數(shù)據(jù)上傳后,如果該字段內(nèi)容為空, 會報錯

03

EXCMB

模版中排除該字段(標記了的字段從模版中排除,并且字段檢查失效)

04

DUP_CHECK

上傳文件內(nèi)容重復性檢查(所有設置了該標記的字段參與重復性檢查)

比如期初庫存導入時, 可以為商品,地點,庫位字段勾選該標記. 這樣默認檢查邏輯會根據(jù)這三個字段檢查文件中是否有重復的數(shù)據(jù), 如果有重復數(shù)據(jù),報錯.

05

MBCHK

碼表檢查

勾選后, 輸入進入系統(tǒng)中會執(zhí)行數(shù)據(jù)有效性檢查.有效性檢查依賴于碼表配置,

詳見鏈接無峰,公眾號:ABAP開發(fā)技巧SAP開發(fā)框架系列之 碼表框架

06

MBNOEXCEL

碼表限制在EXCEL模版的表現(xiàn)方式

  • N? 碼表不輸出EXCEL

  • E? 碼表輸出EXCEL,字段檢查報錯顯示

  • W? 碼表輸出EXCEL,字段檢查警告顯示

  • I? ? 碼表輸出EXCEL,字段檢查消息顯示

  • 空? 碼表輸出EXCEL,字段檢查報錯顯示

07

AUTHCHK/AUTHOBJ

授權(quán)檢查標記/權(quán)限對象

通過勾選AUTHCHK 并且維護權(quán)限對象,啟用標準的授權(quán)檢查.檢查的活動ACTVT默認 01,檢查的字段名就是當前字段名

該配置模式非常靈活, 只需要找到該字段的標準授權(quán)對象,就可以通過配置啟用導入的該字段內(nèi)容的授權(quán)檢查.

08

AUTHCHK_S

簡單授權(quán)檢查

有別于標準授權(quán)體系的一套自定義授權(quán)檢查體系. 該體系與標準授權(quán)檢查并存,可以作為標準授權(quán)檢查體系的一個補充.

用來減少標準授權(quán)體系的維護量. 或者取代標準授權(quán)體系,實現(xiàn)授權(quán)檢查.

09

NROBJ/ NRNR

編號范圍對象名稱/序號區(qū)間編號

對于特定的字段,可以通過配置號碼對象,區(qū)間編號在導入時通過函數(shù)NUBER_GET_NEXT獲取一個編號賦值到字段中.

這個配置可以為一些簡單的表賦予關鍵字號碼.

10

DEFAULT_VALUE

字段的默認值

允許在模板中給一些字段定義默認值.

通過字段默認值,可以進一步的簡化導入模板.

比如:

  • 為特定的移動類型, 比如期初庫存導入設定單獨的模板, 該模板中,可以設置移動類型默認值561. 設置BUDAT=當前日期.

  • 為特定的工廠設置特殊的模板,在該模板中,可以把為WERKS字段設置默認值.

11

FIELD_LONG_TEXT

字段詳細描述,體現(xiàn)在EXCEL的批注中

產(chǎn)生模板時,可以為字段設置詳細的描述, 該描述會放到字段的批注中.

勾選WITH_DATAE_TEXT

且未維護FIELD_LONG_TEXT,則會把字段數(shù)據(jù)元素的描述作為字段的批注(數(shù)據(jù)元素未必能詳細解釋該字段,還是建議手工添加描述).

12

ZZBDS_CHECK

正則表達式檢查(輸入字段內(nèi)容檢查的正則表達式)

為特定的字段維護正則表達式可以進一步校驗數(shù)據(jù)的合法性. 幫助文檔中給出了一些常用的正則表達式的寫法.

配置示例

下圖是一個商品憑證導入的模板配置示例. 這個配置使用了表名ZTUP_MB.意味著如果沒有特定的事務代碼的配置, 所有ZTUP_MB表相關的TCODE都會使用下圖模板.

數(shù)據(jù)檢查

所有配置中的檢查,如未特別說明的, 都是在數(shù)據(jù)導入的時候執(zhí)行.

也可以在函數(shù)Z_BC_UP_MB_CHECK補充檢查邏輯. 比如下圖,是在PO導入時補充檢查調(diào)撥單的發(fā)貨庫位必須輸入.

注意: 導入程序選擇屏幕上的 數(shù)據(jù)檢查 復選框是一個總控開關

數(shù)據(jù)檢查的表現(xiàn)

根據(jù)配置項ZTBC001-ERR_IN_DATA的內(nèi)容不同.數(shù)據(jù)檢查的表現(xiàn)形式也不一樣.

01

ERR_IN_DATA=''

配置ZTBC001- ERR_IN_DATA= ''.報錯數(shù)據(jù),分開顯示.

序號 是記錄在原文件中的行號.

如果有錯誤數(shù)據(jù),會提示報錯,并且顯示會有錯誤按鈕,點擊該按鈕可以看到所有報錯信息

一行中的多個錯誤都會顯示在錯誤信息字段中,

此時根據(jù)ZTBC001- ERRSAVE判斷是否能夠保存正確的數(shù)據(jù)

' ' 不允許保存

'X' 允許保存

02

ERR_IN_DATA = 'X'

如果配置了ZTBC001-ERR_IN_DATA = 'X'.則報錯數(shù)據(jù)和正常數(shù)據(jù)一起顯示,通過處理狀態(tài)VPROC=A標記行存在錯誤.

此時允許保存所有數(shù)據(jù).

十一

保存數(shù)據(jù)模板功能

ZTBC001- WITH_DATA = 'X' 表示允許把導入數(shù)據(jù)保存在模板中.

在數(shù)據(jù)導入后會出現(xiàn)按鈕 保存數(shù)據(jù)模板.

點擊后. 下次產(chǎn)生的模板會包含本次導入的數(shù)據(jù). 如果要清空模板中的數(shù)據(jù),只需要導入一次空數(shù)據(jù),點擊保存數(shù)據(jù)模板即可.

數(shù)據(jù)模板中附加的數(shù)據(jù)如未刪除,也會作為正式數(shù)據(jù)寫入表中

數(shù)據(jù)模板功能適用場景: 固定數(shù)據(jù)行,讓用戶填寫特定字段的內(nèi)容.

十二

保存跳轉(zhuǎn)功能

點擊保存按鈕后,數(shù)據(jù)會寫入ZTUP_MB表. 同時會調(diào)用ZTBC001- PROGNAME中配置的數(shù)據(jù)處理程序 ZUP_MB_PROC. 并且根據(jù)配置ZTBC001-SELSC 來判斷

X 停留在程序的選擇屏幕

空 跳過選擇屏幕

數(shù)據(jù)導入程序與數(shù)據(jù)處理程序是通過文件ID傳遞導入的數(shù)據(jù)內(nèi)容:在數(shù)據(jù)保存時,會分配一個文件ID給這些導入的數(shù)據(jù),在處理程序中,讀取文件ID相關的數(shù)據(jù).

十三

數(shù)據(jù)單獨處理

單獨執(zhí)行ZUP_MB_PROC也能通過搜索幫助找到該文件ID并選擇處理

十四

總結(jié)

導入模板的配置功能是歷經(jīng)多個項目,不斷總結(jié)用戶需求,不斷的改進,整合出來的框架功能.依據(jù)這個框架,開發(fā)了很多主數(shù)據(jù)或單據(jù)導入功能.

在項目實踐中:

  • 可以用在上線前期初數(shù)據(jù)導入(處理程序中整合了多進程處理功能).

  • 可以為特定用戶配置特殊模板,作為快速單據(jù)創(chuàng)建的一種方式.

  • 可以把接口傳遞的數(shù)據(jù)寫入處理表,作為接口數(shù)據(jù)后續(xù)處理的方式.

處理程序整合多進程處理詳見 文章(該文章無法鏈接,請自行在公眾號中搜索)?

SAP工具箱之 快速調(diào)度并發(fā)后臺作業(yè)

靈活運用導入模板,可以帶來如下好處:

  • 簡化數(shù)據(jù)導入操作

  • 提升數(shù)據(jù)導入質(zhì)量

  • 記錄數(shù)據(jù)導入痕跡

另外對于大數(shù)據(jù)導入的處理建議使用.TXT文件. 如果啟用了數(shù)據(jù)檢查,程序會把檢查失敗的數(shù)據(jù)內(nèi)容在導入文件的目錄中生成一個報錯文件

命名規(guī)則:? 原文件名+_ERR.TXT


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,702評論 6 534
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,615評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,606評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,044評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,826評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,227評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,307評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,447評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,992評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,807評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,001評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,550評論 5 361
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,243評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,667評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,930評論 1 287
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,709評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,996評論 2 374

推薦閱讀更多精彩內(nèi)容