ภาษา ABAP (อ่านว่าอาบับ) หรือชื่อเต็มๆ ของมันก็คือ Advance Business Application Programming เป็นภาษาโปรแกรมที่อยู่เบื้องหลังระบบ SAP ซึ่งก็คือแอพพลิเคชันทั้งหมดทุกโมดูลในระบบ SAP นั้น ถูกพัฒนาขึ้นมาจากภาษาโปรแกรม ABAP ซึ่งเป็นภาษาโปรแกรมของ SAP มีบางคนบอกว่าภาษา ABAP เป็นภาษาโปรแกรมที่เขียนยากมาก แต่ในความรู้สึกของผมนะครับ ถ้าคุณเข้าใจการทำงานของมันแล้ว ภาษา ABAP ก็จะเป็นเรื่องง่ายสำหรับคุณ บทความของผมต่อจากนี้ไป จะเป็นการนำเสนอการเขียนโปรแกรม ABAP ในแนวทางที่ถูกต้อง ตามขั้นตอนที่ผมคิดว่า จะช่วยให้คุณเขียนโปรแกรม ABAP ได้อย่างไม่ยากเย็น ลองติดตามดูนะครับ แล้วคุณจะรู้สึกเหมือนกับอีกหลายคนว่า ทำไม ABAP ถึงง่ายขนาดนี้
เคอร์เนลของ SAP R/3 ถึงแม้ว่าภาษา ABAP จะใช้ในการพัฒนาระบบ SAP ทั้งหมด แต่เบื้องหลังการทำงานของระบบ SAP อย่างแท้จริง ก็คือ เวิร์กโพรเซส (Work Process) หรือที่เรียกว่าเคอร์เนล (Kernel) ของระบบ SAP ซึ่งพัฒนาขึ้นมาจากภาษา C หรือ C++ และทำหน้าที่นำโปรแกรม ABAP ที่เราต้องการเอ็กซีคิวต์ (Execute) มาประมวลผลที่แอพพลิเคชันเซิร์ฟเวอร์ (Application Server)
ในระบบ SAP R/3 โดยที่เวิร์กโพรเซสในระบบ SAP R/3 จะประกอบไปด้วยองค์ประกอบ 4 ส่วนคือ TaskHandler, ABAP Processor, DYNPRO Processor และ DB Interface
TaskHandler เป็นส่วนที่คอยพิจารณาโปรแกรม ABAP ที่ต้องการเอ็กซิคิวต์ในโปรแกรมบัฟเฟอร์ (Program Buffer) บนแอพพลิเคชันเซิร์ฟเวอร์ (Application Server) ในแต่ละสเตจเมนต์ (Statement) ตามลำดับ โดยมันจะพิจารณาสเตจเมนต์ (ABAP Statement) นั้นว่าเป็นคำสั่งประเภทอะไร ถ้าเป็นคำสั่งประเภท ABAP ส่วน TaskHandler ก็จะส่งสเตจเมนต์นั้นให้กับ ABAP Processor เพื่อประมวลผลต่อไป และถ้าเป็นคำสั่งที่เกี่ยวข้องกับสกรีนโพรเซสซิง (Dialog Program) ส่วนของ TaskHandler ก็จะโอนการทำงานในส่วนนี้ให้กับ DYNPRO (Dynamic Program) Processor ประมวลผลงานในส่วนนี้ แต่ถ้า TaskHandler พบว่าคำสั่งที่ต้องการทำงาน เป็นคำสั่งประเภท Open SQL มันก็จะส่งคำสั่ง Open SQL นี้ให้กับ DB Interface เพื่อประมวลผลคำสั่ง Open SQL ต่อไป ซึ่งหมายความว่า DB Interface จะช่วยแปลง Open SQL ของ SAP ให้เป็น SQL ชนิดมาตรฐานหรือ Native SQL ของระบบดาต้าเบสเซิร์ฟเวอร์ต่อไป
สำหรับส่วน Local Memory จะเป็นพื้นที่หน่วยความจำของเวิร์กโพรเซส ซึ่งใช้เก็บข้อมูลที่ได้จากการประมวลผลคำสั่ง ABAP ต่างๆ โดยที่จะมีส่วนที่เรียกว่า Memory Space ที่จะเป็นพื้นที่เก็บข้อมูลดาต้าออบเจ็กต์ (Data Object) ต่างๆ ของโปรแกรม ABAP ที่กำลังทำงานอยู่ และพื้นที่ Local Memory นี้จะถูกเคลียร์ทิ้งเมื่อจบการทำงานของโปรแกรม ABAP
เริ่มต้นกับภาษา ABAP
รูปที่ 2 องค์ประกอบใน Memory space
หลังจากที่เราทราบการทำงานของเคอร์เนลในระบบ SAP กันแล้ว จากนี้ไปเราก็จะเริ่มลุยการเขียนโปรแกรม ABAP โดยที่ภาษา ABAP ก็เหมือนกับภาษาโปรแกรมทั่วไป ซึ่งประกอบไปด้วยคำสั่งที่ใช้ในการสร้างตัวแปร คำสั่งที่ใช้ในการคำนวณหรือเปรียบเทียบต่างๆ และคำสั่งที่ใช้ในการเข้าถึงข้อมูลในระบบฐานข้อมูล ที่เรียกว่า Open SQL ซึ่งเป็นภาษา SQL ของระบบ SAP แต่ก่อนจะเริ่มเรียนรู้การเขียนโปรแกรม ABAP เราจะต้องทราบเสียก่อนว่าดาต้าออบเจ็กต์ที่คำสั่ง ABAP จะทำงานกับมันใน Memory Space นั้นประกอบไปด้วย Variable, Structure, Table Structure และ Internal Table
คำสั่ง ABAP เกือบทั้งหมด จะทำงานกับดาต้าออบเจ็กต์เหล่านี้ใน Memory Space ของมันเท่านั้น ดังนั้นการที่เราเขียนโปรแกรม ABAP อย่างเข้าใจการทำงานของคำสั่งต่างๆ เราจะต้องเห็นภาพของดาต้าออบเจ็กต์ที่เราสร้างขึ้นมาที่ Memory Space เสียก่อน
ในภาษา ABAP จะมี Data Type หรือชนิดของข้อมูลทั้งหมด 10 ชนิด โดยที่ชนิดของข้อมูลที่ถูกใช้งานบ่อยในระบบ SAP ก็คือชนิด C, D, I, N และ P และชนิดของข้อมูลที่ควรจะทำความเข้าใจกับมันให้ดีก็คือ ชนิด N กับ D เพราะเป็นรูปแบบเฉพาะของระบบ SAP สำหรับรูปแบบโครงสร้างหรือ Syntax ของคำสั่งที่ใช้ในการสร้างตัวแปร (Variable) ของภาษา ABAP จะเป็นดังนี้
โดยที่ตัวแปร sy-datum (ฟีลด์ datum ของ Structure ที่ชื่อ sy) จะเป็นตัวแปรของระบบที่ให้ค่าวันที่ปัจจุบันออกมา โดยสมมติว่าวันนี้เป็นวันที่ 6 เดือน 8 ปี 2002 ที่ Memory Space และเมื่อเราใช้คำสั่ง WRITE today. ที่หน้าจอของเราจะได้ข้อมูลวันที่ในรูปแบบไหน? คำตอบก็คือ ข้อมูลวันที่หรือข้อมูลที่มีชนิดของข้อมูลเป็นชนิด D ที่แสดงบนจอภาพของไคลเอ็นต์ จะได้รูปแบบตาม User Default Format ซึ่ง Basis Administrator ของระบบ SAP ได้กำหนดไว้ให้ผู้ใช้ระบบ SAP แต่ละคนใน User Master Record ของระบบ SAP ดังนั้นถ้า Date Format ของผมเป็นวันเดือนปี ที่หน้าจอของผมจะได้ข้อมูล 06072002 แต่ถ้า Date Format ของผมเป็นเดือนวันปี ที่หน้าจอของผมก็จะได้ข้อมูล 08062002
เมื่อเราทราบ Internal Format ของการจัดเก็บข้อมูลชนิด D กันแล้ว ดังนั้นในการให้ค่าคงที่กับตัวแปรที่มีชนิดของข้อมูลเป็นชนิด D เราก็ควรให้ค่าคงที่ที่ถูกต้องตาม Internal Format เช่น
DATA today TYPE D. today = 19991231.
แต่ถ้าเราให้ค่าผิดๆ (Invalid Date) กับตัวแปรชนิด D แล้วมันจะรับหรือไม่? คำตอบก็คือรับครับผม โดยที่ Memory Space เราจะได้ข้อมูล cabcdefgh เรียงลงไป
1. Full Line Comment ที่คอลัมน์แรกของบรรทัดจะเป็นค่า * 2. Partial Line Comment ที่คอลัมน์ใดๆ ในบรรทัดนั้นจะมีค่า เช่น
*This is test program DATA today TYPE D. today = sy-datum. Current Date
ที่บรรทัดแรกของโปรแกรมจะเป็นคอมเมนต์ และในบรรทัดที่ 3 ที่ส่วนของข้อความ Current Date จะเป็นคอมเมนต์เช่นเดียวกัน ก็คือระบบจะไม่นำคอมเมนต์เหล่านี้ไปประมวลผลแต่อย่างใด
ขั้นตอนต่อมา Dispatcher จะพิจารณาหา Dialog Work Process (D) ที่ว่าง ถ้าพบว่ามี Dialog Work Process ตัวใดว่าง Dispatcher จะกำหนดรีเควสต์ที่รออยู่ใน Queue นี้ ให้กับ Dialog Work Process ตัวที่ว่างทำงานทันที
เมื่อ Dialog Work Process ได้รับการมอบหมายงานแล้ว ซึ่งในที่นี้คือ การเอ็กซีติวต์โปรแกรม ABAP ที่ชื่อ ztest ระบบก็จะโหลดโปรแกรม ztest ซึ่งเก็บอยู่ในตารางบนระบบฐานข้อมูลที่ Database Server ไปไว้ที่ Program Buffer (ถ้ายังไม่มีอยู่ในบัฟเฟอร์นั้น)
จากนั้น Dialog Work Process ก็จะนำคำสั่ง ABAP ไปทำงานทีละคำสั่งดังนี้
คำสั่ง Tables customers เป็นคำสั่งประเภท Application Logic ดังนั้น คำสั่งนี้จะถูกประมวลผลที่เครื่องแอพพลิเค-ชันเซิร์ฟเวอร์ (R/3 Instance) โดยระบบจะสร้าง Table Structure ชื่อ customers บนเมโมรีสเปซของ Dialog Work Process
จากนั้นระบบจะทำงานในคำสั่งถัดไป ในที่นี้คือ คำสั่ง Select single * from customers where id = 1 ซึ่งเป็นคำสั่งประเภท Data Logic ระบบจะแปลง Open SQL ให้เป็น Native SQL เพื่อส่งไปให้กับ Database Server ทำงานในส่วนของ Data Service ซึ่งก็คือการค้นหาข้อมูลในฐานข้อมูลตามที่ต้องการ จากนั้นก็จะคืนค่า (Return) ข้อมูลที่ต้องการกลับไปหาแอพพลิเคชันเซิร์ฟเวอร์
SAP R/3 ชื่อนี้ คงไม่ใช่สิ่งแปลกใหม่สำหรับคนในวงการ IT รวมทั้งผู้ที่ทำงานอยู่ในองค์กรไม่ว่าจะขนาดใดก็ตาม เพราะผมเชื่อว่าหลายๆท่านคงได้สัมผัสกับระบบ SAP R/3 กันมาบ้างแล้ว บางท่านอาจเป็นผู้ใช้ระบบหรือที่เรียกกันว่าเป็น User ของระบบ SAP หรือบางท่านอาจจะเป็นที่ปรึกษาในการวางระบบ SAP หรือที่เรียกกันติดปากว่า Consultant แต่ท่านเชื่อมั้ยครับว่า บางครั้งคำถามง่ายๆที่ว่า SAP คืออะไร หลายๆท่านที่ทำงานกับระบบ SAP มาหลายปี ยังให้คำตอบกับคำถามสั้นๆนี้ไม่ได้เลย พอดีผมเคยได้ยินบางคนพูดว่า SAP คือซอฟต์แวร์บัญชีตัวหนึ่งเท่านั้น ผมในฐานะที่ทำงานอยู่ในแวดวง SAP มาเกือบ 8 ปี ถึงแม้ว่าตอนนี้จะผันตัวเองมาเป็นอาจารย์สอนหนังสืออยู่ที่มหาวิทยาลัย แต่ก็ไม่ได้ทิ้งความรู้ความเข้าใจทางด้านระบบ SAP R/3 แต่อย่างใด เพราะที่คณะพาณิชยศาสตร์และการบัญชี จุฬาลงกรณ์มหาวิทยาลัย มีระบบ SAP R/3 ให้ผมใช้ในการสอนให้แก่นิสิตภาควิชาการบัญชี ผมก็จะขอเป็นตัวแทนที่จะมาเสนอแนวคิดที่ว่า SAP คืออะไร สำหรับผมแล้ว ถ้าจะตอบคำถามในเรื่องอะไรก็ตาม ผมมักจะกล่าวถึงทฤษฎีของเรื่องนั้นๆก่อนเสมอ เพราะมันจะทำให้เราเข้าใจในหลักการของเรื่องนั้นๆ คำตอบง่ายๆของคำถามที่ว่า SAP คืออะไรนั้นก็คือ SAP คือซอฟต์แวร์ทางด้าน Enterprise Resource Planning หรือที่เรียกสั้นๆว่า ERP ชั้นนำตัวหนึ่งในอุตสาหกรรมซอฟต์แวร์นั่นเอง คำตอบสั้นๆแต่คงไม่ได้ใจความสักเท่าไร เพราะบางท่านอาจจะมีคำถามต่อไปว่า แล้ว ERP มันคืออะไรกันล่ะ นี่ละครับหัวใจสำคัญของบทความนี้ ผมจะขออธิบายความหมายของ ERP ทางด้านทฤษฎีในฐานะที่เป็นอาจารย์สอนในหัวข้อ ERP นี้อยู่ แต่ผมขอออกตัวไว้ก่อนนะครับว่า มันเป็นมุมมองของผมในฐานะนักวิชาการคนหนึ่งเท่านั้น
ERP คืออะไร? ERP เป็นซอฟต์แวร์ที่มีการ Integrate ในส่วนของฟังก์ชันงานทั้งหมดในองค์กร หรือมีการเชื่อมโยงในส่วนของ Module ทั้งหมดเข้าด้วยกัน โดยมีการทำงานในลักษณะของ Real Time และ ERP นั้น จะถูกสร้างขึ้นมาในลักษณะของ Based on Best Practice in Industry ก็คือมีการกำหนดในส่วนของ Business Process ที่มีการทดสอบและสำรวจมาแล้วว่าเป็น Best Practice ในอุตสาหกรรมนั้นๆ ไว้ในตัวของ ERP ดังนั้นเราจะเห็นได้ว่า มีหลายธุรกิจที่มีการ Implement ในส่วนของ ERP ก็เพื่อผลในการทำ Business Reengineering เพราะต้องการปรับเปลี่ยน Business Process ขององค์กรให้เป็นไปตาม Business Process ที่เป็น Best Practice ในอุตสาหกรรม โดยที่ซอฟต์แวร์ ERP นั้น จะมีส่วนที่ใช้ในการปรับเปลี่ยนซอฟต์แวร์ ERP ให้เข้ากับลักษณะการดำเนินงานขององค์กรนั้น หรือที่เรียกกันว่าส่วนในการทำ Customizing หรือ Configuration หรืออาจกล่าวได้ ERP ก็คือซอฟต์แวร์แพคเกจ ที่ได้จัดเตรียมในส่วนของการทำ Customizing ให้แต่ละองค์กร ทำการปรับแต่งซอฟต์แวร์ ERP ให้เข้ากับลักษณะการดำเนินงานของธุรกิจนั้นๆ ซึ่งในทางทฤษฎีได้แบ่งซอฟต์แวร์สำเร็จรูปออกเป็น 2 ประเภทคือ Software Package กับ Customizing Software Package ข้อแตกต่างของซอฟต์แวร์สำเร็จรูปทั้งสองประเภทก็คือ Software Package นั้น เราไม่สามารถที่จะปรับเปลี่ยนระบบงานในซอฟต์แวร์นั้นได้ตามความต้องการของธุรกิจแต่ละธุรกิจ ถ้าต้องการปรับเปลี่ยนซอฟต์แวร์ให้เข้ากับธุรกิจนั้นๆ ก็อาจจำเป็นที่จะต้องทำการแก้ไขโปรแกรม Source Code ของซอฟต์แวร์สำเร็จรูปตัวนั้นเลยทีเดียว แต่ถ้าเป็น Customizing Software Package ระบบของซอฟต์แวร์นั้นๆ ได้เตรียมส่วนที่เรียกว่า Customizing ไว้ให้เราในการปรับเปลี่ยนการทำงานของซอฟต์แวร์ให้เข้ากับรูปแบบในการดำเนินธุรกิจขององค์กรนั้นๆ และถ้าจะกล่าวถึงเทคโนโลยีหลักๆที่ผลักดันให้เกิดซอฟต์แวร์ ERP ขึ้นมาก็คือ เทคโนโลยีทางด้าน Database System และ Client/Server นั่นเอง เพราะระบบ ERP นั้น เป็นระบบที่ Integrate ในส่วนของฟังก์ชั่นงานทั้งหมดขององค์กร ดังนั้นข้อมูลจึงจำเป็นที่จะต้องเก็บอยู่ใน Common Database ด้วย ส่วน Client/Server นั้น เนื่องจากการปรับเปลี่ยนรูปแบบการทำงานของ Data Entry จากระบบเดิมที่เคยทำงานในส่วนของ Back Office มาเป็นรูปแบบในการทำงานในส่วนของ Front Office ซึ่งต้องการหน้าจอในลักษณะ GUI ไม่ใช่รูปแบบของ Character-based เหมือนสมัยก่อน ดังนั้น Client/Server จึงสามารถสนองตอบในส่วนความต้องการในเทคโนโลยีด้านนี้ได้ ซึ่งถ้าคุณลองศึกษาถึงประวัติศาสตร์ของระบบซอฟต์แวร์สำเร็จรูปทางธุรกิจกันจริงๆแล้ว จะพบในอดีตประมาณช่วงต้นของทศวรรษ 1970 นั้น ผู้ที่อยู่ในทีมงานของการพัฒนาซอฟต์แวร์ให้กับองค์กรต่างๆ มีความต้องการที่จะพัฒนาระบบที่เป็น Integrated Software Package แต่ด้วยเทคโนโลยีทางด้าน Database System ที่ยังมาไม่ถึง รูปแบบของซอฟต์แวร์ในลักษณะนี้จึงเกิดขึ้นไม่ได้ ถึงจุดนี้ ผมก็จะขอสรุปแนวคิดคร่าวๆของระบบ ERP ดังต่อไปนี้ ERP เป็นซอฟต์แวร์ที่ Integrate ในส่วนของฟังก์ชั่นงานทั้งหมดในองค์กรในลักษณะของ Enterprise Wide ไม่ใช่ระบบ Information System ที่สนับสนุนการทำงานเฉพาะส่วนของ Business Function เหมือนในสมัยก่อน ซึ่ง ERP จะสนับสนุนรูปแบบการทำงานในส่วนของ Business Process ซึ่งเกี่ยวข้องกับการทำงานในหลายๆ Functional Areas ERP มีการเก็บข้อมูลทั้งหมดอยู่ใน Common Database ERP มีการทำงานในแบบ Real-time ถูกพัฒนาขึ้นมาตามมาตรฐานที่เป็น Best Practice ในอุตสาหกรรม ดังนั้นจึงอาจกล่าวได้ว่า ERP ไม่ใช่เป็นแค่เพียงซอฟต์แวร์แพคเกจ แต่มันเป็นแนวทางในการดำเนินธุรกิจหรือที่เรียกว่าเป็น The way of doing business ทีนี้เมื่อผมพูดถึงเรื่อง ERP แล้ว ถ้าจะไม่เล่าประวัติคร่าวๆของมัน ก็ดูจะไม่สมบูรณ์สักเท่าไรนะครับ ลองมาดูประวัติคร่าวๆของ ERP กัน
ERP ก็มีประวัติศาสตร์เหมือนกัน ก่อนที่จะมีระบบ ERP นั้น เดิมในวงการอุตสาหกรรม ประมาณช่วงทศวรรษ 1960ได้มีการนำเอาระบบคอมพิวเตอร์ เข้ามาช่วยในส่วนของการผลิตทางด้านการคำนวณความต้องการวัตถุดิบที่ใช้ในการผลิต หรือที่เรียกเป็นทางการว่าระบบ Material Requirement Planning(MRP) ก็คือเราจะใช้ระบบคอมพิวเตอร์เข้ามาช่วยในการบริหารและจัดการในส่วนของวัตถุดิบหรือ Material ที่ใช้ในการผลิตเท่านั้น ต่อมาในช่วงประมาณทศวรรษ 1970 ระบบการผลิตในอุตสาหกรรมมีความซับซ้อนเพิ่มมากขึ้น จึงมีการนำเอาระบบคอมพิวเตอร์เข้ามาช่วยในส่วนของการผลิตในด้านของเครื่องจักร(Machine)และส่วนของเรื่องการเงิน(Money) นอกเหนือไปจากส่วนของวัตถุดิบ ซึ่งเราจะเรียกระบบงานเช่นนี้ว่า Manufacturing Resource Planning(MRP II) จากจุดนี้เราพอจะมองเห็นภาพคร่าวๆของการนำเอาระบบคอมพิวเตอร์เข้ามาช่วยในการบริหารงานในอุตสาหกรรมได้ ดังที่มีผู้เชี่ยวชาญทางด้านการจัดการได้กล่าวไว้ว่า ระบบ MRP นั้นจะเข้ามาช่วยในการจัดการทางด้าน Material ส่วนระบบ MRP II นั้น จะเข้ามาช่วยในการจัดการใน M อีกสองตัวนอกเหนือจาก Material ก็คือ Machine และ Money ซึ่งในช่วงที่ผมจบการศึกษาในระดับปริญญาตรีมาใหม่ๆนั้น ผมได้มีโอกาสได้สัมผัสระบบ MRP II ตัวหนึ่งที่ชื่อ TIMS ของประเทศนิวซีแลนด์ ถ้าดูจากหน้าจอ Main Menu จะพบว่า มีเมนูหลักของ Module อยู่ 3 Modules หลักๆด้วยกันคือ Financial Accounting, Distribution และ Manufacturing และใน Module ของ Manufacturing จะมีส่วนของ MRP รวมอยู่ด้วย จะเห็นได้ว่า ในการนำเอาระบบ MRP II เข้ามาช่วยในองค์กรหนึ่งๆนั้น จะยังไม่สามารถที่จะ Support การทำงานทั้งหมดในองค์กรในลักษณะของ Enterprise ได้ พอจะนึกออกมั้ยครับว่ายังขาดส่วนของระบบงานใด คำตอบก็คือระบบการจัดการทางด้านทรัพยากรบุคคลนั่นเองครับ นี่จึงเป็นที่มาของระบบ ERP โดยที่นิยามของคำว่า ERP นี้ เกิดขึ้นในยุคต้นทศวรรษที่ 1990 โดย Gartner Group ซึ่งจะรวมเอาส่วนของ M ตัวสุดท้ายก็คือ Manpower เข้าไปไว้ในส่วนของระบบงานที่เรียกตัวเองว่า ERP นั่นเอง ดังนั้นระบบ ERP จึงเป็นระบบที่ใช้ในการบริหารงานทรัพยากรทั้งหมดในองค์กร(Enterprise Wide) หรือกล่าวอีกอย่างหนึ่งก็คือ ระบบ ERP จะเป็นระบบที่ใช้ในการจัดการ 4 M ในองค์กร ซึ่งจะประกอบไปด้วย Material, Machine, Money และ Manpower นั่นเอง ดังนั้นถ้าเราเข้าไปดูที่เมนูหลักของระบบ ERP เราจะพบว่ามีเมนูของทั้ง MRP และ MRP II รวมอยู่ด้วย เพราะ ERP มีต้นกำเนิดมาจากระบบ MRP และ MRP II นั่นเอง
SAP เป็นมากกว่าคำว่า ERP ดังนั้นท่านที่คิดว่า SAP เป็นแค่เพียงซอฟต์แวร์บัญชี คงจะเปลี่ยนแนวคิดได้แล้วนะครับ ผมรู้สึกเสียดายนะครับถ้าท่านคิดว่า SAP เป็นแค่เพียงซอฟต์แวร์บัญชีตัวหนึ่ง เพราะจริงๆแล้วมันคือ ERP ตัวหนึ่งที่ใช้ในการบริหารและจัดการทรัพยากรทั้งหมดในองค์กร หลายๆองค์กรได้ใช้ขีดความสามารถของ SAP เพียงแค่ใช้ในการทำงานในส่วนของ Transaction Processing System เท่านั้น ผมในฐานะที่ทำงานในส่วนของ Basis ในระบบ SAP R/3 รู้สึกว่า SAP มันไม่ใช่เพียงแค่ซอฟต์แวร์แพคเกจตัวหนึ่ง จากการที่ได้สัมผัสระบบ SAP R/3 มาหลายปี ผมมอง SAP ว่าเป็นเทคโนโลยี มุมมองของผมอาจจะแตกต่างจากคนทางด้าน Business Application คุณทราบมั้ยครับว่า SAP มีส่วนของระบบ Electronic Data Interchange หรือ EDI ที่สนับสนุนในการส่งของมูลของ EDI Message ตามมาตรฐานอุตสาหกรรม ไม่ว่าจะเป็นมาตรฐานของ ANSI X.12 หรือ EDIFACT มีส่วนของ Web Integration ที่สนับสนุนรูปแบบของ HTML ในการทำงานกับระบบ SAP โดยอาศัย Web Browser เป็น Client แทน SAPGUI โดยมีการทำงานผ่าน Internet Transaction Server(ITS) ของระบบ SAP มีส่วนของ Business Connector ที่สนับสนุนการส่งข้อมูลในรูปแบบของ XML มีส่วนของ SAPConnect ที่สนับสนุนการเชื่อมต่อระบบ SAP R/3 กับระบบภายนอก ไม่ว่าจะเป็น Internet ,Fax, X.400 หรือ SAPOffice R/3-R/3 Connection มีส่วนของ SAP Exchange Connector ที่ใช้ในการเชื่อมต่อระบบ R/3 Mail System กับระบบ MS Exchange Server ของ Microsoft และระบบ SAP Internet Mail Gateway ที่ใช้ในการส่งและรับ Message ผ่านระบบ Internet นอกจากนี้ยังมีระบบ SAPphone ที่สนับสนุนการเชื่อมต่อกับระบบ Computer Telephony Integration(CTI) Server ที่มีการเชื่อมต่อกับระบบ Private Branch Exchange(PBX) โดยที่เราสามารถที่จะใช้งานในส่วนของ Telephony Control Function ได้เช่น Initiating and Transferring Call, Processing Incoming Call Information และรวมถึงเรื่อง Interactive Voice Response(IVR) นอกเหนือจากที่ผมกล่าวมาทั้งหมดแล้ว SAP R/3 ยังมีเทคโนโลยีอื่นๆอีกมากมายที่มีการทำงานในลักษณะของ Open System ซึ่งผมเองยังยอมรับเลยครับว่า ถึงแม้ว่าจะทำงานมากับระบบ SAP R/3 มาเกือบ 8 ปี ผมยังไม่ได้ใช้งานระบบ SAP R/3 ในส่วนของ Basis ได้อย่างเต็มประสิทธิภาพของระบบ SAP สักเท่าไร บางทีอาจจะเป็นเพราะรูปแบบธุรกิจขององค์กรที่ผมได้มีโอกาสทำการ Implement ให้ ไม่ได้ต้องการงานในส่วนนี้ หรืออาจเป็นเพราะลูกค้าที่ผมวางระบบ SAP ให้นั้น ไม่ทราบว่ามีส่วนระบบงานพวกนี้อยู่ใน Engine ของระบบ SAP R/3 ดังนั้นผมความที่ผมเขียนในส่วน SAP R/3 นี้ ผมอยากให้เป็นสื่อกลางในการให้ความรู้ความเข้าใจกับเทคโนโลยีของระบบ SAP R/3 ซึ่งในส่วนของข้อมูลทางเทคนิคนี้ ผมคงจะเขียนลงในนิตยสาร PC Magazine นะครับ ส่วนที่ eLeader นี้ ผมคงเขียนในมุมมองทางด้านแนวคิดและเทคโนโลยีมากกว่า
Application Module หลักๆในระบบ SAP สำหรับระบบ SAP R/3 นั้นจะประกอบไปด้วย Application Module ต่างๆดังนี้ FI Financial Accounting หรือโมดูลทางด้านบัญชีการเงิน CO Controlling หรือโมดูลทางด้านบัญชีจัดการหรือบัญชีบริหาร AM Fixed Assets Management หรือโมดูลทางด้านการจัดกาสินทรัพย์ถาวร SD Sale & Distributions หรือโมดูลทางด้านขายและการกระจายสินค้า MM Material Management หรือโมดูลทางด้านการจัดการวัตถุดิบ PP Production Planning หรือโมดูลทางด้านการวางแผนการผลิต QM Quality Management หรือโมดูลทางด้านการจัดการด้านคุณภาพ PM Plant Maintenance หรือโมดูลทางด้านการซ่อมบำรุงโรงงาน HR Human Resource หรือโมดูลทางด้านการจัดการทรัพยากรบุคคล TR Treasury หรือโมดูลทางด้านการบริหารการเงิน WF Workflow หรือโมดูลทางด้าน Flow ของกระบวนการทำงาน IS Industry Solutions คือส่วนระบบงานธุรกิจเฉพาะ โดยที่ไม่ใช่โมดูลมาตร
ฐานของระบบ SAP R/3 ซึ่งจะมีทั้งระบบ Aerospace, Automotive, Banking, Chemicals, Consumer Products, Engineering and Construction, Healthcare, Higher Education and Research, High Tech, Insurance, Media, Mill Products, Oil and Gas, Pharmaceuticals, Public Sector, Retail, Service Provider, Telecommunications, Transportation และ Utilities
สำหรับส่วนงานในระบบ SAP ที่ผมดูแลอยู่นั้น เป็นส่วนงานทางด้าน Technical ของระบบ SAP ซึ่งก็คือส่วนงานที่เรียกว่า Basis ซึ่งจะถือว่าเป็นส่วนงานกลางของระบบ SAP นั่นเอง ซึ่งจะเป็นส่วนที่เรียกว่าเป็น Core ของระบบ SAP R/3 โดยเราจะเรียกคนที่ทำหน้าที่ในส่วนของ Basis นี้ว่าเป็น Basis Administrator นอกจากนี้ในส่วนของงานทางด้าน Technical ยังมีงานทางด้าน ABAP ซึ่งแบ่งออกเป็นงานย่อยๆได้ 3 ส่วนหลักๆคืองาน ABAP Report คือการเขียนโปรแกรม ABAP เพื่อออกรายงานที่เป็น Customizing Report งาน Dialog Programming ก็คือการเขียนโปรแกรม ABAP ในลักษณะของ Transaction และสุดท้ายก็คืองาน SAPScript ก็คือการเขียน ABAP เพื่อพิมพ์ Preprint Form ต่างๆเช่น Invoice เป็นต้น นอกจากนี้ยังมีส่วนของการเขียน BDC Program สำหรับการทำ Data Conversion และ Interface Program ซึ่งผมจะถือว่าเป็นส่วนหนึ่งของงาน ABAP Report
เบื้องหลังของระบบ SAP R/3 สำหรับในส่วนของ Application ทั้งหมดในระบบ SAP นั้น จะถูกพัฒนาขึ้นด้วยภาษา ABAP หรือ Advance Business Application Programming(ABAP/4 ซึ่งเป็นภาษาโปรแกรมในยุคที่ 4 หรือ 4GL เป็นคำที่เรียกใน SAP Release 3.0 ส่วนใน SAP Release 4.0 เป็นต้นไป จะเรียกว่า ABAP เนื่องจากว่ามีการพัฒนาภาษาโปรแกรม ABAP เป็นแบบ Object-Oriented มากขึ้น) และในส่วนของ Run Time หรือ Kernel ของระบบ SAP นั้น จะถูกพัฒนาขึ้นมาจากภาษา C/C++ (ใน Release ถัดไปจะมีส่วนของ Java) ในส่วนของการ Implement ระบบ SAP นั้น จะมีการทำในส่วนของ Customizing หรือ Configuration (จริงๆแล้วก็คือการกำหนดค่า Parameter ต่างๆนั่นเอง) ผ่านทาง Implementation Guide(IMG) เพื่อให้ระบบงาน SAP ทำงานได้กับองค์กรนั้นๆ จากเนื้อหาในบทความทั้งหมดที่ผมได้กล่าวถึงข้างต้นนั้น ผมก็ได้แต่หวังว่าท่านคงจะมีความเข้าใจในหลักการของ SAP รวมถึง ERP มากขึ้น อย่างน้อยก็คงจะตอบคำถามสั้นๆที่ว่า SAP คืออะไรได้บ้างไม่มากก็น้อยนะครับ แล้วพบกันใหม่ครับ
ข้อความนี้ ผม Copy เค้ามาอีกทีตอนที่ผมเริ่มศึกษา SAP ก็หามาจาก Google นะครับ ไม่ได้เขียนเอง แต่จำไม่ได้ว่าเอามาจากใคร ต้องขอโทษเจ้าของด้วยนะครับ