วันอังคารที่ 7 กันยายน พ.ศ. 2553

Program update Exchange Rate online จากแบงค์ชาติเข้า SAP

เว็บแบงค์ชาติ
โปรแกรมสำหรับ update exchange rate เข้า SAP  : T-Code OB08 แบบ online

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 นาที  เป็นอันจบครับ


ABAPer มาเริ่มดู Code กันเลยละกันครับ **** Start-Of-Selection ****



iPePPe

Credit 
Functional Design : Pakorn Choollasai P'Ja 2000











2 ความคิดเห็น:

  1. ขอบคุณมากค่ะ กำลังจะต้องทำการดึง exchange rate เข้าไปใน SAP แบบนี้เหมือนกันค่ะ แต่ไม่เคยมีประสบการณ์ SAP เลย ค่อนข้างยาก ต้องการคำแนะนะเพิ่มเติมค่ะ ไม่ทราบว่าจะเริ่มจากไหนดีคะ ขอบคุณมากค่ะ

    ตอบลบ
  2. FORM "GET_DATE" does not exist.

    มีตัวอย่างไหมครับ

    ตอบลบ