第1步:基本屬性維護Maintain Object Attributes
第2步:創建數據源結構Maintain Source Structures
第3步:維護數據源結構字段Maintain Source Fields
第4步:數據源結構與目標結構關聯Maintain Structure Relations
第5步:源與目標結構字段映射及轉換規則配置Maintain Field Mapping and Conversion Rules
第6步:固定值、翻譯規則、自定義Form維護Maintain Fixed Values, Translations, User-Defined Routines
第12步:查看轉換后的數據Display Converted Data
第13步:創建批量輸入(BDC)會話Create Batch Input Session
第14步:執行批量輸入(BDC)會話Run Batch Input Session
LSMW應用
全稱為Legacy System Migration Workbench(舊系統遷移工作台),該工具設計的初衷是為了SAP初期的數據導入,例如在ERP切換時將舊系統中的商品主數據導入SAP,但在運維階段,該工具也可以實現數據的批量維護操作。
本節同樣以 AS02 為例來講解如何通過LSMW平台來實現對AS02數據的批量修改。
創建項目
輸入項目名稱及描述:
繼續輸入子項目名稱與Object名稱,名稱沒有特殊要求:
點擊執行,進入LSMW維護工作台:
點擊按鈕,前面將顯示執行步驟順序號,共需要維護14步:
雙擊某行,可以進行到每個步驟的維護界面
注:上面的14步是以錄屏方式來更新業務數據,如果是采用其他方式如IDOC或BAPI程序方式來更新時,則列出的步驟會不同,具體不同的步驟可以點擊按鈕來查看:
但是后面兩個紅框中是否有,要依賴於你在第1步所選擇的數據更新方式,這兩個紅框中的步驟應該不會同時出現,即使你全部鈎上了
步驟詳解
通過上面看到,LSMW維護數據操作可以分十幾個步驟,每個步驟表示不同的操作,在數據導入時必須按步驟的順序來操作
第1步:基本屬性維護Maintain Object Attributes
此步主要是選擇批量維護方式(圖中四選一),這里我們選擇像前面BDC、CATT那樣,過錄屏幕代碼進行批量維護(此種方式需借助於SM35、SHDB)。從下圖看出,還可以通過程序、BAPI、Idoc的方式來批量數據的維護,總之,就是數據最終是采取什么方式來進行修改
點擊按鈕:
維護好事務代碼確定后,將進入到AS02事務錄屏中,本例也只能描述及主資產號文本進行修改,修改后保存,返回到Create Recording界面。在該界面可以看到所錄制的屏幕字段信息:
並按以下表修改資產編號、公司代碼、描述及資產文本號碼四個字段:
如在第一個NAME字段維護名稱“ANLN1”,該字段名即為后面第5步中ZAS02目標結構中的成員字段
上面除了手工定義每個字段外,還可以采用快速默認方式,點擊按鈕,則會使用錄屏中的屏幕字段的字段名作為目標結構ZAS02的成員字段名:
注:不需要的字段,請一定要清空或不填,否則會成為目標結構ZAS02的成員字段
最后將上面錄制的名為ZAS02記錄輸入到屬性界面的批量錄制方式中:
第2步:創建數據源結構Maintain Source Structures
要實現數據的導入必須有數據源,該步就是定義此結構的
第3步:維護數據源結構字段Maintain Source Fields
此步是能上一步(第2)所定義的結構具體的分配字段,並在該維護界面中顯示出了上一步創建的結構名:
第4步:數據源結構與目標結構關聯Maintain Structure Relations
上面第2、3步配置的是存放數據源結構的一些維護,所配置的名為ZAS02_STRUCT(用來存儲服務器上的ZAS02_SUBPROJECT_OBJECT.lsmw.read中的數據)的數據源結構最終要賦值給名為ZAS02目標結構中。ZAS02里存儲的就是業務所使用的最終數據(實質上存儲的是服務服務器上的ZAS02_SUBPROJECT_OBJECT.lsmw.conv文件中的數據),數據源ZAS02_STRUCT里的數據賦值給ZAS02目標時,可能會存在一些轉換規則而不是直接賦值,這些都是在下一步所配置的,這里只是指定一下需要將哪個結構(這里為上面第2步所配置的數據源ZAS02_STRUCT)與目標結構進行關聯
因為上面第2步只創建一個數據源結構ZAS02_STRUCT,所以就默認配置好關系,此步可以直接跳過。如果配置了多個數據源結構,則這里需要手工進行指定:
第5步:源與目標結構字段映射及轉換規則配置Maintain Field Mapping and Conversion Rules
上面第4步中只是指定將數據源結構ZAS02_STRUCT映射到目標結構ZAS02,但具體怎么映射(哪個字段到哪個字段、賦值時是直接賦值還是要經過轉換等)是沒有的,這里就是對這兩個結構中的字段時行映射及轉換
打開維護界面時,顯示出了目標結構ZAS02的具體內部字段結構(發現有4個字段,這4個字段就是在第1步中所配置的那4個字段),現將目標結構中的字段與數據源結構中的字段進行映射:
映射完后,界面如下:
上面只是指定每個字段的映射關系,但映射時之間的轉換規則沒有特意去指定,都是默認的,默認就是直接進行普通的賦值操作(MOVE)。這里還提供了其他很多的轉換規則,點擊按鈕,可以看到提供的轉換規則:
下面具體來看每個規則的使用:
:目標字段不會做映射,直接采用ABAP內存中變量初使值:
:常量
:固定值,其實與上面常量差不多,只不是該固定值有個名:
:應該是翻譯??有待驗證
將數據源結構ZAS02_STRUCT-ANLN1字段的值按照'AxbXCydYEzfZ'對照表進行翻譯,並將翻譯結構存儲到目標結構ZAS02-ANLN1字段中。傳入的'AxbXCydYEzfZ'為翻譯對照表串,包含成對字母,其中每對的第一個字母用第二個字母替換,lsmw_translate Form應該是調用TRANSLATE <c> USING <r>語句來進行翻譯的(具體的翻譯規則還可以在下一步第6步進行配置)。
:加上前綴后賦值給目標字段
:加上后綴
將多個源字段串連起來賦給目標字段。注:需要至少分配兩個源字段都可以操作
刪除左邊前面所有空格,實現就是調用 SHIFT 語句來實現
:如果系統提供的轉換規則不適用,則還可以自己來寫一些ABAP轉換代碼
:調用定義的Form,這里只是定義Form接口,具體的定義在下一步第6步完成
還沒弄明白!
:對C類型的字段在不足長時,在前面補全前導0
第6步:固定值、翻譯規則、自定義Form維護Maintain Fixed Values, Translations, User-Defined Routines
在這一步主要是對上一步第5步規則中使用到的固定值、翻譯規則、自定義Form的維護,而固定值在第5步就可以直接維護了,且翻譯規則基本上不用具體配置,使用TRANSLATE語句的默認規則?
在這時主要是對第5步用到的自定義Form進行定義
ur_ANLN1為第5步ANLN1字段所配的轉換規則Form:
第7步:指定數據源文件Specify Files
可以選擇本地文件,也可以將本地文件上傳到服務器后作為數據源
這里只是定義數據源文件,具體將文件內容讀取后存儲到哪個數據源結構內表,是在下面第8步中分配的,這里只作文件的定義
上面ZAS02_SUBPROJECT_OBJECT.lsmw.read與ZAS02_SUBPROJECT_OBJECT.lsmw.conv兩個文件是自動生成的,其中 *.read文件是用來直接存儲從用戶指定的數據源中的文件內容,是沒有經過任何轉換的原始數據,在后面第9步會使用到此文件;而 *.conv文件則是存儲最后的轉換的最終數據,即最終業務所需的數據,此文件會在第11步用到
經后面的測試,這里雖然是 ASCII 編碼,但如果使用中文登錄后上傳,是不會出現亂碼的
第8步:為數據源結構分配文件Assign Files
此步的作用是將上面第7步定義的文件,分配到第2步定義的數據源結構中,即文件與結構內表的映射
上面的ZAAA結構是為了測試亂定義的,在此演示中沒有用
第9步:將文件內容讀取到服務器上Read Data
可以指定數據的讀取的范圍,不指定時,會默認從數據行的第一行讀取到數據行的最后一行
執行后,文件中的內容已經將被讀入到ZAS02_SUBPROJECT_OBJECT.lsmw.read文件中了:
第10步:查看讀取到數據Display Read Data
此步就是顯示上一步第9所讀取的內容
注:如果文件中有中文字符,則要使用中文語言登錄,否則會出現亂碼
第11步:數據轉換Convert Data
此步會按鈕第5步指定的規則,對每個字段進行轉換,數據會從ZAS02_SUBPROJECT_OBJECT.lsmw.read文件中,經轉換后存儲到ZAS02_SUBPROJECT_OBJECT.lsmw.conv文件中。
由於本演示中各字段沒有經過特殊的轉換,只是簡單的賦值操作,所以實質上也只是簡單賦值過程
第12步:查看轉換后的數據Display Converted Data
此步就是顯示上面第10轉換后的數據
第13步:創建批量輸入(BDC)會話Create Batch Input Session
創建后我們可以使用SM35來查看到剛被創建的會話:
同時,通過SM35可以監測在服務器上產生的*read與*.conV兩個文件,操作如下:
在SM35界面上,點擊會輸入SHDB,在SHDB操作界面,打開文件監視器:
第14步:執行批量輸入(BDC)會話Run Batch Input Session
此步實質上就是進入到SM35操作界面:
由於本例是通過錄屏的方式來修改業務數據,所以運行時實質上是按 SM35方式來執行的。
當執行完后,數據就會更新到SAP系統中,整個LSMW就完成了。會話執行完后,會被刪除掉
,如果是修改了文件,需要重新執行第9、11、13步,及第14步即可
總體來說,LSMW功能可以將數據讀取到后台來進行處理,適合於那些耗時大的批量數據,但LSMW操作麻煩,不適合用戶直接操作