เว็บแบงค์ชาติ |
Requirement
ทำการดึงขอมูล Exchange Rate จากเว็บของแบงค์ชาติ ที่ประกาศทุกวันทำการของธนาคารเวลาประมาณ 18.00 น. เข้ามา update เข้า table : TCUR หรือทาง t-code OB08
ตอนแรกที่ได้ requirement นี้มาก็แอบหนาวเล็กๆ เนื่องจากยังเคยทำ interface ผ่านเว็บมาก่อน งานนี้ เริ่มจากเข้าเว็บแบงค์ชาติไปดูต้นทางของข้อมูลก่อนเลย โอ้..... มีหลาย format ให้เลือกสรร ทั้ง excel,csv,pdf,rss นึกว่าต้องแกะจาก html เพียวๆซะแล้ว สิ่งที่ user ต้องการคือข้อมูลในตาราง 1. Average Counter Rates Quoted by Commercial Banks โดยจะเอาขอมูลจาก column Sight Bill , Telex Transfer, Average Selling Rates งานนี้เลยต้องทำ Customize Table มา map column ในเว็บเข้ากับ Exchange Rate Type ใน SAP โดยผมเลือกใช้ BAPI_EXCHANGERATE_CREATE สำหรับ update ข้อมูลเข้า SAP
Customize Table for Mapping |
1. จะเอาข้อมูลที่มันอยู่ในเว็บมายังไง
2. ควรใช้ format ไหน
3. แกะเอา data ที่ต้องการออกมายังไงดี
ข้อ 1 เริ่มจาก เว็บมันใช้ protocol HTTP ลองใช้ function : HTTP_GET ละกัน ปรากฎว่าใช้ได้ครับดึง content เว็บออกมาได้เอา function นี้แหล่ะ ต้องแกะ Code HTML และ java script นานเหมือนกันกว่าจะได้ link ตัวอย่าง link ด้านล่างนี้นะครับ
"HTTP://WWW.BOT.OR.TH/THAI/STATISTICS/FINANCIALMARKETS/EXCHANGERATE/EXCHANGERATE_EN_XLS/ER_XLS_DDMMYYYY.XLS"
** DD = วัน,MM = เดือน,YYYY = ปี**
ข้อ 2 ดู code HTML ของเว็บแล้วท่าทางจะยากมาก ข้ามไปก่อน ต่อไปเปิด excel มาดูด้วย editplus โชคดีที่ยังพอจับ patern ของข้อมูลได้ ดีกว่า html หน่อย ต่อไป CSV โหลดปุ๊บ .ZIP มาเลย ตอนนั้นขี้เกียจหาวิธีอ่าน .ZIP และต้องแปลง content file ให้เป็น binary อีก ยากๆ ผ่านไปก่อน ต่อไป PDF ผ่านไปเลยละกัน อ่านไม่ออกแน่ๆ สุดท้าย RSS เปิดมาดูเหมือนจะดีแต่มี แค่ Average Selling Rates ไม่พอ สุดท้ายเลยเลือก Excel ละกันพอจะมี tag เป็น patternมาให้แกะได้
หน้าตา Excel |
ใส้ใน Excel file เมื่อเปิดด้วย text editor |
ข้อ 3 พอมาถึงการแกะ ก็ยุ่งยากหน่อยล่ะครับงานนี้ จับ pattern ของ excel วิธีนี้ยุ่งยากสุด เสี่ยงสุดเพราะถ้าวันใดวันหนึ่งแบงค์ชาติเกิดเปลี่ยน pattern หรือหน้าตา excel ขึ้นมาโปรแกรมนี้ก็จะเจ๊งในทันทีต้องตามแก้กันใหม่ ถ้าจะให้ชัวร์จริงๆคงต้องรอลุ้นแบงค์ชาติทำ webservice ให้ใช้เสียก่อน
หลังจากที่แกะข้อมูลอยู่นาน ได้ข้อมูลที่ต้องการมาอยู่ใน internal table ของเราแล้วขั้นต่อไป ก็ map เข้ากับ type ของ SAP แล้วจับยัดเข้า BAPI_EXCHANGERATE_CREATE สุดท้ายก็แต่งหน้าทาปากรายงาน ตั้ง schedule job t-code sm37 ทุกวันเวลาประมาณ 18:05 น. เผื่อเวลาให้ทางแบงค์ชาติทำงานซัก 5 นาที เป็นอันจบครับ
iPePPe
Credit
Functional Design : Pakorn Choollasai P'Ja 2000
ขอบคุณมากค่ะ กำลังจะต้องทำการดึง exchange rate เข้าไปใน SAP แบบนี้เหมือนกันค่ะ แต่ไม่เคยมีประสบการณ์ SAP เลย ค่อนข้างยาก ต้องการคำแนะนะเพิ่มเติมค่ะ ไม่ทราบว่าจะเริ่มจากไหนดีคะ ขอบคุณมากค่ะ
ตอบลบFORM "GET_DATE" does not exist.
ตอบลบมีตัวอย่างไหมครับ