Bài viết: SAP Scripting – Excel và SAP (P1)

kyo

Nguyễn Khắc Duy
Thành viên BQT
Administrator
Tham gia ngày
4 Tháng sáu 2006
Bài viết
901
Thích
2,610
Điểm
910
#1
SAP Scripting - Excel và SAP (P1)


Phần 1: Ghi một SAP Script



SAP đang là một trong những phần mềm hệ thống nổi tiếng nhất và được sử dụng nhiều nhất tại tất cả các công ty, đặc biệt là những công ty lớn và tập đoàn đa quốc gia. Nó là một giải pháp tích hợp rất nhiều phòng ban từ Tài chính, Kế toán, Nhân sự, Sản xuất, Tiếp thị,… rất nhiều phòng ban đều sử dụng cùng một phần mềm, cùng một cơ sở dữ liệu và cùng tương tác trực tiếp lên chúng.

Bên cạnh đó, một phần mềm khác cũng không thể thiếu với những người đi làm đó chính là Excel. Nói về Excel thì nó đặc biệt thông dụng đến nỗi không ai là không biết đến Excel và không công ty nào là không xài Excel (rất hiếm).

Tuy nhiên, giữa một nhu cầu là tính toán các số liệu, gửi đi và nhận lại các báo cáo Excel và nhập trực tiếp lên SAP là hai câu chuyện hoàn toàn khác nhau và không ít những công ty gặp khó khăn trong việc nhập từng dữ liệu một lên SAP, một công việc lặp đi lặp lại nhàm chán, mất thời gian và dễ sai sót. Bạn có thể tưởng tượng công việc này giống như bạn nhập từng dữ liệu một lên phần mềm kế toán vậy.

Tuy nhiên, thật may mắn rằng SAP đã sở hữu một chức năng ghi Script (giống hệt ghi Macro của Excel vậy). Nó giúp mọi công việc lặp đi lặp lại của bạn trở nên dễ dàng và nhanh chóng hơn rất nhiều.

Cách tạo 1 Script
Đầu tiên, bạn sẽ cần đăng nhập vào SAP, và sau đó bạn có thể chọn nút bấm ở rìa bên phải và chọn Script Recording and Playback.



Ngay lập tức, cửa sổ Record and Playback sẽ hiện ra với 4 nút bấm như sau:



Bạn có thể bấm nút More để SAP hiện ra địa chỉ lưu file script để bạn có thể thay đổi (nếu không sẽ lưu vào thư mục mặc định).



Bạn có thể thấy:
- Nút tam giác đầu tiên (Playback Script): để phát lại.
- Nút tròn đỏ (Record Script): để bắt đầu ghi script.
- Nút vuông (Stop Recording): để ngưng ghi script và file script sẽ được tạo ra.

Sau khi bạn thay đổi địa chỉ lưu file xong, bạn hãy bấm nút tròn đỏ ở giữa (nút Record Script), và ngay từ thời điểm này, mọi thao tác bạn làm trên SAP sẽ được SAP ghi lại.

Bây giờ tôi sẽ tiến hành ghi một đoạn script đơn giản, đó là thay đổi 1 thông số của 1 loại vật tư bằng t-code mm02. Tôi sẽ bấm vào nút đỏ trước, và sau đó lần lượt tôi sẽ thực hiện các thao tác: Gõ t-code mm02 vào và nhấn Enter:



Kế đó, nhập mã vật tư, Enter và chọn Warehouse Management 2 -> Enter



Sau đó nhập vài thông số -> Enter



Tiếp theo, chỉnh lại thông số từ 5000 còn 4000, nhấn Save.



Cuối cùng là nhấn Stop Recording.



Vậy là bạn đã có một Script rồi đấy. Như bạn thấy, thật sự rất khó khăn nếu giả sử tôi có 100 mã vật tư cần chỉnh sửa chỉ bằng việc điều chỉnh bằng tay như vậy (đây là vấn đề thường gặp tại các công ty).

Để lấy script vừa ghi, bạn vào thư mục lưu Script mà bạn chọn ban đầu, và bạn sẽ có code như sau:

Mã:
If Not IsObject(application) Then
   Set SapGuiAuto  = GetObject("SAPGUI")
   Set application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(connection) Then
   Set connection = application.Children(0)
End If
If Not IsObject(session) Then
   Set session    = connection.Children(0)
End If
If IsObject(WScript) Then
   WScript.ConnectObject session,     "on"
   WScript.ConnectObject application, "on"
End If
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").text = "mm02"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtRMMG1-MATNR").text = "P11220169"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[1]/usr/tblSAPLMGMMTC_VIEW").getAbsoluteRow(14).selected = true
session.findById("wnd[1]/usr/tblSAPLMGMMTC_VIEW/txtMSICHTAUSW-DYTXT[0,14]").setFocus
session.findById("wnd[1]/usr/tblSAPLMGMMTC_VIEW/txtMSICHTAUSW-DYTXT[0,14]").caretPosition = 0
session.findById("wnd[1]").sendVKey 0
session.findById("wnd[1]/usr/ctxtRMMG1-WERKS").text = "VN11"
session.findById("wnd[1]/usr/ctxtRMMG1-LGNUM").text = "VMR"
session.findById("wnd[1]/usr/ctxtRMMG1-LGTYP").text = "TWB"
session.findById("wnd[1]/usr/ctxtRMMG1-LGTYP").setFocus
session.findById("wnd[1]/usr/ctxtRMMG1-LGTYP").caretPosition = 3
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP22/ssubTABFRA1:SAPLMGMM:2000/subSUB2:SAPLMGD1:2732/txtMLGN-LHMG1").text = "4000"
session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP22/ssubTABFRA1:SAPLMGMM:2000/subSUB2:SAPLMGD1:2732/txtMLGN-LHMG1").setFocus
session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP22/ssubTABFRA1:SAPLMGMM:2000/subSUB2:SAPLMGD1:2732/txtMLGN-LHMG1").caretPosition = 17
session.findById("wnd[0]/tbar[0]/btn[11]").press
Trong phần tiếp theo, tôi sẽ hướng dẫn bạn làm cách nào để đưa đoạn code này vào Excel và biến file Excel của bạn trở nên tiện dụng hơn và tương tác nhiều hơn đến SAP.

Một số bài viết có liên quan:
1/ Sử dụng các công cụ tạo mô hình kinh doanh của Excel (phần 2)
2/ Sử dụng các công cụ tạo mô hình kinh doanh của Excel (phần 1)

3/ Lựa chọn danh mục đầu tư (Portfolio) - phần 2
4/ Lựa chọn danh mục đầu tư (Portfolio) - phần 1
5/ Hướng dẫn sử dụng Crystal Ball (phần 7)
6/ Hướng dẫn sử dụng Crystal Ball (phần 6)
7/ Hướng dẫn sử dụng Crystal Ball (phần 5)
8/ Hướng dẫn sử dụng Crystal Ball (phần 4)
9/ Hướng dẫn sử dụng Crystal Ball (phần 3)
10/ Hướng dẫn sử dụng Crystal Ball (phần 2)
 

File đính kèm

Lần chỉnh sửa cuối:

hoamattroicoi

一人で
Thành viên BQT
Moderator
Tham gia ngày
19 Tháng mười hai 2010
Bài viết
2,495
Thích
5,480
Điểm
610
#2
Chào Kyo,

Cảm ơn em rất nhiều về bài viết này, 1 chủ đề rất thú vị hy vọng em sẽ chia sẻ nhiều kiến thức giữa SA P và Excel. Đặc biệt là những kiến thức về sự tương tác giữa Module FICO và Excel nhé.

Tiếp tục chờ đợi những bài viết tiếp theo của em về chủ đề này.
 

tuandx

Thành viên mới
Tham gia ngày
1 Tháng ba 2009
Bài viết
14
Thích
0
Điểm
363
#3
Mới đọc qua tiêu đề Em tưởng là pm Sap(tính kết cấu xây dựng)
. . . Vậy SAP này là 1 pm riêng hay là nó tích hợp sẵn trong bộ office luôn Admin ?
 

hungpecc1

Thành viên gắn bó
Tham gia ngày
24 Tháng tám 2012
Bài viết
1,605
Thích
2,200
Điểm
560
Tuổi
32
#4
Mới đọc qua tiêu đề Em tưởng là pm Sap(tính kết cấu xây dựng)
. . . Vậy SAP này là 1 pm riêng hay là nó tích hợp sẵn trong bộ office luôn Admin ?
theo mình biết :

SAP không phải là tên của 1 phần mềm mà là tên của 1 công ty chuyên cung cấp các giải pháp cho doanh nghiệp theo dạng từ nhỏ tới lớn, nó tập hợp các thông tin và chia sẽ của doanh nghiệp tiến xa hơn là 1 tập đoàn quản lý trên toàn cầu. Các công ty lớn thường sử dụng sản phẩm của SAP vì nó luôn luôn đáp ứng được yêu cầu khắc khe nhất của người dùng nó có đầy đủ các module từ Quản lý kho, Kế toán, Nhân sự, Đặt biệt rất mạnh về phân tích quản trị v.v....

còn SAP2000 để tính toán kết cấu là một sản phẩm của hãng CSI ,
 

Cá ngừ F1

Thành viên gắn bó
Thành viên BQT
Moderator
Tham gia ngày
1 Tháng một 2008
Bài viết
1,966
Thích
2,965
Điểm
910
Tuổi
36
#7
Tiếp tục chủ đề này đi @kyo
Đối tác bên anh hầu như dùng SAP, mà có vẻ như việc kết nối giữa SAP và các ứng dụng khác hơi khó khăn.
 

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia ngày
13 Tháng sáu 2006
Bài viết
3,982
Thích
9,325
Điểm
860
#8
Bài viết hướng dẫn đã khá lâu và nó phù hợp với Windows XP. Từ Windows Vista trở lên lệnh
Mã:
Set SapGuiAuto  = GetObject("SAPGUI") '==> ERROR phần lớn trên các Windows Vista trở lên
Không còn chạy được bình thường vì cơ chế giới hạn UAC của Windows. Thay các hàm GetObject thành CreateObject nhé.
Code chạy OK là:
Mã:
Set SapGuiAuto  = CreateObject("SAPGUI")
 

kyo

Nguyễn Khắc Duy
Thành viên BQT
Administrator
Tham gia ngày
4 Tháng sáu 2006
Bài viết
901
Thích
2,610
Điểm
910
#9
Hi mọi người,

Bài này bị lỗi do dùng hình upload từ photobucket mà chính sách của trang này đã thay đổi. Kyo sẽ nghiên cứu lại và upload lại nhé.

Hi anh Cá Ngừ F1,

Em có viết phần 2-3 đó anh, anh search lại nhé anh.

Hi chú Tuân,

Máy kyo xài Win7 cũng như Win10 vẫn sử dụng như bình thường nha chú.
 
Top