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

Liên hệ QC

kyo

Nguyễn Khắc Duy
Thành viên danh dự
Tham gia
4/6/06
Bài viết
901
Được thích
2,714
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.

Uy9cKY6S0PWl1ikps7XQ989V9XRbx1AbJMgcTiqB_nt8-CuADDZKVKds56EYBPax7Ra6RX12t8cMH8ZzoM81koEpnOhSOGa1U-RdZI3m1lZeXF2m5vHsEgRmx6GvnpWX4_U1VE9Oc1v2I9dHJfxSnFy6boWrjsTSM7w4W-791Krn3_D-6RHe_7o3BasLSg1-iRVGZRSMNtviMd_yZgtpuqi7SkwXroGWqR4RdP93PRanTqBkIdB5EV1yJ5ffpGbzygRKldKELdnDP3WbVXXPShXGniaVJkpRYbI1PBXxfSURSKsVPCGkBvXAxsHm8aLYup_GWGtGVcTI0aB2I74fTKwy4DNefM7yt-ZLLwV2jT0fO-2XPRTL1NAwKRSqLotIWwodsTIX50IqyVsnzkoI2gGB-bx7xGWv5LJOVffGJ02hroAjXBdxPiZMmZabuXnkAnWTaO0XSwmnkTzDCG3heTW6BoTSN5orkEyAehTkSo77Czr8jR6sgSBWUcRciDSK9TQNLnq7iouvaCEDrSFedhTEpUxksME0VdrVeZcllyDiSQtuQ-AZLYK_g63gai_1fPPcPD9tyMXr0xzfqiaALIjuOGqoFB4ZZ3Q_pVbZ9G7pUgIMk7ne=w848-h447-no


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

r3gc1nUFM53fRg4fRAAx1Swe4oNKF8zTnz8vAppQVdtslX1ZCktyUarb5-V3bXe-fS4aSXAdXCyZsYsDHlY_tAKZ6XqMjNV4L93aVU211rl6GtAJq29BTKMe5PGKB7Agzrs-JgT9ZAw_JoHftMBHl8v2zp-LyHK2A56dSgTlg4P4nN7BBgbeDInVoUh8zHUxJvT8WDTJoxsQBZX7yHPGXp_P3DKGf6DWzE0XDuBFe9aKT1P6SLc611mR5SIdFe3dNFX31pkQTvYdrZVRWTNcjKN9R5TYeMImeWr6_d8z3KwgXqlc9pV82m2RgdTkAOdHNGkLWNuFDPV9oJZ5aG82SX1syfinp6Gy5TzerylWhFTj530PnpUptBBr4MDe17zOHfUWv626DOb7acKGdMXxImXHKorD57KBeipdDeRlqEzw3HCNgOYxjIZ--5YpCS36mWQFqOPEHwHPwpVOguJaNOjvIGXPe4sMbBOZ54ZOBQ2XKwT9vHKROOAipnOOFswIMdc3UNbTqNChghsQANlY8xR3Adq-k1gWYABpEAzOUBaji0Q3xQzLW2xWFCR0aiW8RmOXDhVIrcLUFsAGer97N_dyyytrxBjVI5SVdwg04TFp3Y1SyXNI=w283-h82-no


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).

z4fDu6nrtY9-NIIvcOrfU6qFpAe0f2Q_USs86nVAhDpEMYwGUFcIv-13IBZxREpDA7EKm1Dmg6cHH-B18FBMQV_Xj7cXhi0XLTiH0PjbzopMmzeEKy6oVc8zJnn8fn1TRDN-n0gvzpK_fCSFSruXDpgvvSI0fcK8IB8fhnKN7xuXGP1eBEIBDggISCMeA4jHk7EIr_RZAB5SUFTqKyax9JkQC8btWmPh-eJhopBGiIhP0tub7BSP_kB5G5YdCqACwedIP4CkrHbIDKSnpQDWJwHWbb8NeixktyI46-Sn_Pyoa_-WTOu2y1HWF2X4Evb7vVIW6KgYVL-1XCFBmfuF8_tsCmzz-75r8F2RDkJCCvTxdBfAk3LiGZVyrkNcx5ncW6Yz4-C7XagXgkN7Y-GHeSIRe_0jLQYqeQQPvzFMPSFHzsfO5zh0DSn0TXRtb9HY_Mnq1aAbYyDRCrBaA3cSFmdz3RoWAiLh4oAoACVdqS1L20zMfrxSinDKzmWvuMHNLa-BiThE1BIiawpGfozZ3sZsEiJoceCNpPDyeran8sUlGNnGQ3RiwBmMYJPD1UFERWvFf3y03BJjo4w6Z_1i8cjdxNRCBbp-rosDrBK9i6reFw5q4OgB=w459-h152-no


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:

9B_124BCqrCAwgfMAFe_VQN5R3aGC6ws1Ec-4rb9diRdK3CoblFf4d1D2tr6o05cUvGVlaSJvo914Z0MA4WL_bAp7ae1tO0_ekZqA1NVX1xwUce_li9k9496aJ-qMtUHIk_ireviQmLuPYD_Nhe2zvIVNicfuvqvTv6PCXgReIRlpJSuvjLSobfkk9pSd8YxvT0RKiIXCZY4nWfezK1R8bGSJTGceVHa-6xZgXHkWDJoJbl-GPv7RiWpyeJUUvz8twY2T5iD0fNVSAUX9aFSDUDmwkN007u6VtDsok64HO6MYeAcy-jvgWSb8fg58qd7yBBxDBCkF08sKrz1IJ15qbtOq3AHeCmZ-wbW_S_Sjf4kjlYMCu5h_8BI3MfQbgIyu_zJHDSVK2fboHbRPFNGwieOLyaszz4gRKG-kBIFX1A87JdTZyd9J1rZy5a8V_KaxZCzkkt2FNhWHNXnBcuLLIXmY9Ydx49x4jHwsTvfp0_AaW_wAm4bszomgE2kVHWxRp0hmMZt8whLnhmtjbfnHKuEnzVy3pPYPRbLVI5RK2W5s7IOn1LtxPaIGufjEmsAMV7yW8M7chK464TBLSkSaWfbGwXBZnFUetk1xH7qVXszEXfwsfUB=w325-h80-no


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

3ehlCYiJwnxhY5uWlgm8T2uMAn4Gihm7hH7zBSP7iADdwb_mywS_iss_SO2b0ajpzZl_Ft5KYb_SlA-VAeRJd1jiHyzoEg5B08f7W2LUKcF4XQOyUctctU1AnGDC8P48BJm3q4GkTrLl0b2QF1VkF2EpiNxj238ND0CtxoOYELrSy-9_9lMesKFVLfuQMgfNDJyKrpE9apQlJSzvkqW2N2FlcKyWQGBRoR9znLv5BlMTVuRjxrRYK9ZiaKrK3R1ldOQSTHkgcSoVOqIdTfv4VQISH7rVCfLeCsGvfqEWH26QMBA3j2piGxHOkhmu25zjE2l6-7bzQObikcRvVdpvuhNasl0aKVeuxGPa48y7BJcmubz0wJ3zHTPvem8OhlnDY9vno64mSDxCabCLAnwrAhgaXm9YzbNcNal7Q8BeSM255Nky3LXSAZ2lC2QR-3u-gPUmLGk8oHxCBe2j7p1ubpJii0-1q_JkO7qne8mI-8pbPyttDgNn8pZKFpuE0h4WfBseRNkOTZ3lF-rCRqbpVBA9USAk7DhCGsFEdcBwLJGGu9A6BSN-kDw1LJDcmByaG4EMQpxzbdrUlby5rEsFTnaRUe8o8Kf60XRpaUNoUzzKManKxUa8=w649-h651-no


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

iqV6UyYZ7JftdCgxiPQBOoo7IuhouCFHLp5CWUSPp6TVMyslpTiyD6ose2iL3gqMszmUWurm9WDAfomUkanJO73Dt1DsRbao5SzieAf-dPWlDqNfQlYU2v5kDPo2myiYYGbg0mNeN70evmYHWOw1pww8vvPyfObCagh8YlhAXaDODpTF-rK09FoeqNm35IAQh5UtSFekI0offBTS6sF_5HBxB27IjMvwfHrazaiszxt46lWG5FaZyFvJjSLXvlzk3q0vOzV_WcpZJoYYw8DP3oAs59Qw4PvryrqRCN_IDtWcCOB1GhfcVOEQIdJQ2ql5d2fC3LzUQ_J8RXwhcGoetQTIV2yCjv9cblskp8ChJCIl8EqvocBFz0kqI9QoFqmd1ruXx9JLMkU8W46HjB7zgCK3vUwswSsDD61EpHsZWytPS052wQeOVyv-_dYPrO47szH4I_F8vf_mTIov8ZSQQ2TvL4_k0F79GTDgtBHz7D4MBrGXSQr3wC-yiffCX613tdA8PK_mKLZiVs-1ENKEFUqKYvS3CFksoG2bXSyBvmjYoHTb5TsI9Hvos3Trp2wA7z9GdnG9tZdXhcYnF3AD5bBhUgADbK0GZBGQFo5YS5bM_gVKZQfw=w516-h217-no


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

kVSuRPxND3OsPAqil_ON664hX5mIoHBMf5ZZDRcnEDc7Azsm1gsNK1_024gHbjpY39jJQP4VLHcVKoiw5JHseBKTFJ6rJVUH8Y9dO91xG66Lanp5MatlfgPuHxvY1XHUrBQObuxQmwvq5gNxd-KOUkH58a14F35gLH0VAidQ75Zot-xWx3FrDOky52Ro3CJIr5f5vnjeQw6EAtXAE9VppP_vh07WrtDDDua7yEWIKMUpm4tbAhJAdP2nb122sXjQ9d5NSdIHCsCialUrbJFNMDpbKZeB-f5ZmSgncUo-XojdJ-egVLjciUzE7KJ93bSjf_BOtZ82pKdrcBB1eCxnhchAJUqnrPZz2kVcO7euTmXZKT2HfYwWxXOH5nniuTOqpNAwHriUl8ZSMZMfca7oPgA4cr_gsN51EtyrXhrNS_ELtjijRFkOqVsa-Amg37QhriMv_qa6cN8IcGlraA0BZLJiH7G-T6id6uk4Ey36ft-RyFn6boerue6nzbxQPTwVK8sf1rQWlfkZG8arks0VgCt-68ezqC5U0onBcE0tsoLCrx9jGeW4kyOi2mPSzLK8RiCFXwyEhhwO9JXVhvtv_45o6evMxfvVu3mjm9ABiJSYPE0bAyoA=w640-h569-no


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

5O0EQNqXCl7xf_ruAaxMrmQgEtrxto_Z0uga-0UG7z9t7ORD2Ori8rqBWC7cd8wWsSePhzEnWvUOM2Q6xBYZBjNCJmKfnpLBAIbi8bl9_-AA922ozRZh0RWpIilkkM4s2-YkE9wv-ZLuNxUixNCW4AjgXKiOA13Ndavda2mK2gGHA06mrRpnez5HzTPW1hKlph13gzhVb0_ts2JsN9JGucaLevj6-PnsIxMM3Y-GIj9dZLBSPTU5VAJrSuiSUFjXGBimYvGdHsJ1xFmeLmdiDFlxbeDb7-2NawznaKdqX-_M7a7jUquxML5wdNtNi0pcvJMxFFV0RSdCRVopWjt92pe1bgTtikleeJKFaF-L3xIIAp9g2Zu4d9O2CAMV2FudLQ3vT2yRPqcwWPZ8UlzOTUDsAR5yc-XVzpe6PX59Bo72cYOIlD2nk5NJJckRuQnYujgYeR-NkhbviId-Fu7CP6yoPhHI1P5rlkd5F-O9MjYzGPzSGSr0tmzRgWB2p2hc9aAGcPI5-vfTe4ov-Lw7uzZIowet8OKhSt6rQ_B-klWYK-3kSvIQ4RLGkkukCm-7lAkBFlm5Gejqd4C_foZfNrKMbPNSZfbClmW6CFsF6e5vhqI4sDm3=w292-h111-no


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

  • giaiphapexcel.com_Script mau.zip
    727 bytes · Đọc: 114
Lần chỉnh sửa cuối:
Upvote 0
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.
 
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 ?
 
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 ,
 
vẩn chưa có p2 hả admin. hóng quá
 
bài này hình ảnh bị dấu ( - ) không xem được nhỉ :(
 
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.
 
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")
 
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ú.
 
Cty e tắt tính năng Scripting rồi phải không ạ ? 225157
 
cho em hỏi chút ạ, mấy ảnh này có còn không ạ? em thấy ảnh bị lỗi hết rồi :(
 
Cám ơn anh chia sẻ
 
Lần chỉnh sửa cuối:
Mọi người cho hỏi tính năng Scirpt and recording trên SAP của mình không click được, vậy làm thế nào để mở tính năng ra nhỉ, ngoài ra mình thấy có tính năng synactive GuiXT , tính năng này là gì nhỉ?
1680587722956.png
 
Ồ, tiếc quá, threat này không còn hoạt động nữa, code phía trên mình có dùng và chỉnh lại như sau:
Mã:
    Dim a As Long
    Dim i As Long
    Dim session As Object
    
    Set session = CreateObject("SAPGUI").GetScriptingEngine.Children(0).Children(0)
    a = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
    
    For i = 2 To a
        session.FindById("wnd[0]").Maximize
        session.FindById("wnd[0]/tbar[0]/okcd").Text = "/N MM02"
        session.FindById("wnd[0]").SendVKey 0
        session.FindById("wnd[0]/usr/ctxtRMMG1-MATNR").Text = Sheet1.Cells(i, 1).Value
        session.FindById("wnd[0]/usr/ctxtRMMG1-MATNR").CaretPosition = 10
        session.FindById("wnd[0]").SendVKey 0
        session.FindById("wnd[1]").SendVKey 0
        session.FindById("wnd[1]/tbar[0]/btn[13]").Press
        session.FindById("wnd[1]").SendVKey 0
        session.FindById("wnd[0]/usr/tabsTABSPR1/tabpSP01/ssubTABFRA1:SAPLMGMM:2004/subSUB1:SAPLMGD1:1002/txtMAKT-MAKTX").Text = Sheet1.Cells(i, 2).Value
        session.FindById("wnd[0]").SendVKey 0
        session.FindById("wnd[0]/tbar[0]/btn[11]").Press
    Next i

Nhưng hiện tại mình gặp vấn đề là code trên chạy được trên laptop khác mà không hoạt động trên laptop mình, bị lỗi Application-defined or object-defined error. Máy mình sử dụng windows 11. Hiện chưa biết cách xử lý thế nào.
 
Web KT
Back
Top Bottom