ลิขิตฟ้า หรือ จะสู้มานะคน

chon_pro
Location :
สมุทรปราการ Thailand

[Profile ทั้งหมด]

ฝากข้อความหลังไมค์
Rss Feed
Smember
ผู้ติดตามบล็อก : 12 คน [?]




ผมแค่อยากเขียน บันทึกเกี่ยวกับข้อมูลการทำงานของผมต่างๆ เพื่อเก็บเอาไว้ใช้ดูเวลาที่ผมหลงลืม และเพื่อเป็นประโยชน์ กับน้องๆๆๆ ทั้งหลาย
loaocat

Stat Counter :
Group Blog
 
All Blogs
 
Friends' blogs
[Add chon_pro's blog to your web]
Links
 

 

ประวัติของ SAP

ประวัติของ SAP
SAP ก่อตั้งที่ประเทศเยอรมันนี เมื่อปี 1972 (พ.ศ. 2515) สํานักงานใหญอยูที่ Walldorf, Germany
โดยการรวมตัวกันของอดีตพนักงานบริษัท IBM และเจริญเติบโตจนกลายเป็นบริษัท software ที่ใหญ่เป็นอันดับ5ของโลก มีบริษัทที่มีการใช้ SAP มากกว่า 6,000 บริษัท ใช้มากกว่า 50 ประเทศ ใช้มากกว่า 9,000 site มีส่วนแบ่งในตลาด client/server software กว่า 31% มีผู้ใช้เพิ่ม 50% ต่อปี มียอดขาย SAP R/3 เพิ่มขึ้น 70% ต่อปี เปาหมายธุรกิจในเริ่มแรก เนนลูกคาที่เปนธุรกิจขนาดใหญ (Enterprise-scale) แตในปจจุบันไดขยายธุรกิจไปที่ลูกคาขนาดเล็กและขนาดกลาง
• • * SAP มีการสร้างระบบงานทางด้าน Financial Accounting ที่เป็นลักษณะ Real-time และ Integrate Software
• • *ในปีต่อๆมา SAP ได้มีการพัฒนาระบบงานเพิ่มทางด้าน Material Management, Purchasing, Inventory Management และ Inventory Management และ Invoice Verification
• • *ในปี 1997 ได้เปลี่ยนมาใช้ชื่อบริษัทเป็น System, Anwendungen, Produkte in der Datenverarbeitung(System Applications, Products in data Processing)และได้ย้ายสำนักงานใหญ่ไปที่เมือง Walldorf
• • *จากนั้น SAPก็ได้พัฒนาระบบงานเพิ่มขึ้น เช่น Assets Accounting เป็นต้น
• • * ในปี 1978 SAP ได้เสนอระบบงานที่เป็น Enterprisewide Solution ที่ชื่อว่า SAP/R2 ซึ่งทำงานอยู่บนระบบ Mainframe พร้อมกับเพิ่มระบบงานทางด้าน Cost Accounting
• • *ในปี 1992 SAP ได้เสนอระบบงานที่ทำงานภายใต้ Environment ที่เป็น 3 Tier Clien/Server บนระบบ UNIX ที่ชื่อว่า SAP R/3
ในป พ.ศ. 2532 SAPไดตั้งสํานักงานใหญประจําภูมิภาคเอเชียและแปซิฟิกที่ประเทศสิงคโปรเพื่อ
เปนการรองรับการขยายตัวทางธุรกิจในเอเซียใตและประเทศยานแปซิฟก ตอมาไดขยายสาขาในภูมิภาคนี้ใน ออสเตรเลีย อินเดีย อินโดนิเซีย มาเลเซีย นิวซีแลนด ฟลิปปนส และประเทศไทย
กรกฎาคม พ.ศ. 2546 องคการโทรศัพทแหงประเทศไทยไดเลือกใช mySAP Supplier Relationship
Management (SRM) เพื่อมาชวยในการจัดซื้อจัดจาง และกอใหเกิด Supplier network ขึ้นมา โดยหวังวาในที่สุดจะทําใหมีการจัดซื้อจัดจางที่รวดเร็วขึ้นและลดตนทุนในการดําเนินธุรกิจได ซึ่งมีผลตอ 10 บริษัทที่เปนคูคาขององคการโทรศัพท
ลูกคาที่สําคัญของ SAP ในภูมิภาคเอเชียและแปซิฟิก คือ Singtel, Tata Group of Companies, Telom Asia, PT Astra, San Miguel, Uniliver, FAW-Volkswagen, Sony Computer Entertainment, 7-Eleven Stores, General Motors, Novartis ,Honda Motor ,Isusu, Mitsubishi, Toyota , SCG Group(กลุ่มปูนซีเมนต์ทไทยทั้งหมด), Thai Sumit , Holsim, Bank, Shin Group, CP, Nestle, Philip, Thaibeverage(กลุ่มเบียร์ช้าง), PTT, Shell, Thai Oil, Exxon Mobile, TPI, การไฟฟ้าฝ่ายผลิต, การไฟฟ้านครหลวง , Mitrpol (กลุ่มน้ำตาลมิตรผล) ,กลุ่มอุตสาหกรรมกระดาษ, กลุ่มธนาคาร ฯลฯ

ผลิตภัณฑ์ของ SAP
ระบบ SAP ประกอบด้วย หลาย module ของแต่ละส่วนของการจัดการที่เอามารวมกันและทำงานร่วมกัน เนื่องด้วยตลาดและความต้องการของลูกค้าเป็นตัวกระตุ้นการเปลี่ยนแปลงของระบบ มีบริษัท software ที่พยายามสร้างโปรแกรมที่สนับสนุนแต่ละส่วนของธุรกิจ ในขณะที่ SAP พยายามสร้าง software ที่เหมาะสม กับทุกธุรกิจ SAP โดยให้โอกาสเลือกใช้แค่ระบบเดียวแต่สามารถทำงานได้กับทุกส่านของธุรกิจ ทั้งยังสามารถติดตั้ง R/3 application มากกว่า 1 ตัวเป็นการเพิ่มความเร็วในการทำงาน SAPมีหลาย Module มีหน้าที่ที่ต่างกัน แต่ทำงานร่วมกัน เป็นหนึ่งเดียว (แต่ละ Module คือแต่ละส่วนของธุรกิจ) ผลิตภัณฑ์SAPมี 2 กลุ่ม คือ SAP R/2 ใช้สำหรับเมนเฟรม และ SAP R/3 ใช้กับระบบ client/server SAP เป็นบริษัทของ German แต่แยกการทำงานเป็น บริษัทย่อย, หุ้นส่วน, และ พันธมิตรทางธุรกิจทั่วโลก




 

Create Date : 20 พฤศจิกายน 2552    
Last Update : 20 พฤศจิกายน 2552 20:56:05 น.
Counter : 2296 Pageviews.  

รู้จักภาษา ABAP เปิดเบื้องหลังของ SAP R/3 ตอน 2

รู้จักภาษา ABAP เปิดเบื้องหลังของ SAP R/3 ตอน 2

โดย ประพจน์ สุขมานนท์


ภาษา 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 จะเป็นดังนี้

DATA var(length) TYPE VALUE .

โดย Statement ของภาษา ABAP นั้น จะต้องจบด้วยเครื่องหมาย . เสมอ เช่น

DATA temp1(10) TYPE C.
DATA temp2 TYPE I.
DATA temp3(8) TYPE P DECIMALS 2 VALUE ‘123.45’.

หรือเราเขียนโปรแกรมในรูปแบบ Colon Notation ก็คือ ยุบหลายๆ สเตจเมนต์ที่เหมือนกันให้เหลือแค่สเตจเมนต์เดียว เช่น

DATA: temp1(10) TYPE C,
temp2 TYPE I,
temp3(8) TYPE P DECIMALS 2 VALUE ‘123.45’.

โดยหลักการของการเขียนโปรแกรมแบบ Colon Notation ก็คือ คำสั่ง ABAP ที่เหมือนกันที่อยู่ติดกัน ให้รวมกันเหลือแค่คำสั่งเดียวแล้วตามด้วยเครื่องหมาย : จากนั้นส่วนที่แตกต่างจะคั่นด้วยเครื่องหมาย, สุดท้ายจะจบด้วยจุด (.) แต่เวลาระบบนำโปรแกรม ABAP ไปทำงาน ถ้า TaskHandler พบว่ามีคำสั่งไหนที่มี Colon Notation อยู่ มันจะแตกให้เป็นหลายสเตจเมนต์ตามรูปแบบปกติ ก่อนเริ่มต้นทำงานในคำสั่งสเตจเมนต์เหล่านั้น

ข้อดีของการทำ Colon Notation ก็คือ เราจะเขียนโปรแกรมสั้นลง และประหยัดเนื้อที่ในการจัดเก็บซอร์สโค้ด (Source Code) ของโปรแกรมที่ดาต้าเบสเซิร์ฟเวอร์นั่นเอง

จากโปรแกรมตัวอย่าง เมื่อเราเอ็กซิคิวต์โปรแกรม เราจะได้ดาต้าออบเจ็กต์ที่ส่วนของ Memory Space ดังรูปที่3

หมายความว่า ABAP Processor จะสร้างตัวแปรที่ Memory Space พร้อมกับ Initial ค่าของตัวแปรตามชนิดข้อมูลของมัน โดยที่ถ้าเป็นข้อมูลประเภทตัวเลข ข้อมูลนั้นจะอยู่ชิดซ้าย ส่วนข้อมูลที่เป็น Character นั้น จะอยู่ชิดขวา แต่ถ้าเรามีการใช้ออปชัน VALUE ก็จะเป็นการกำหนดค่าดีฟอลต์ (Default) ให้กับตัวแปรเมื่อมีการสร้างตัวแปรนั่นเอง ถ้าลองสังเกตดีๆ จะพบว่าที่ตัวแปร temp3 จะมีการกำหนดค่าดีฟอลต์เป็นค่า ‘123.45’ การที่เราต้องใส่เครื่องหมาย ‘ ‘ ครอบตัวเลขก็เพราะว่า ค่า 123.45 นั้น มีเครื่องหมายจุดอยู่ด้วย ดังนั้นถ้าเราไม่ครอบค่าตัวเลข 123.45 ด้วยเครื่องหมาย ‘ ‘ ก็จะเกิด Syntax Error เพราะระบบจะมองตัวเลข 45 เป็นคำสั่งใหม่นั่นเอง ...

สำหรับค่าในวงเล็บสำหรับการสร้างตัวแปรนั้นก็คือค่า Length ของข้อมูลที่สามารถจัดเก็บได้ใน Memory Space ของตัวแปรแต่ละตัวนั่นเอง โดยที่ถ้าเราไม่ระบุ Length ของสร้างตัวแปรที่มีชนิดของข้อมูลเป็นชนิด C หรือ N ระบบจะให้ค่าดีฟอลต์ของ Length เป็น 1 เสมอ (สูงสุดได้ไม่เกิน 65,535) และถ้าเราไม่ระบุชนิดของข้อมูลในคำสั่งสร้างตัวแปร ระบบจะถือว่าเป็นชนิดข้อมูลประเภท C เสมอ และชนิดของข้อมูลชนิด I นั้น ในการสร้างตัวแปร ห้ามกำหนด Length โดยเด็ดขาด โดยที่ตัวแปรชนิด I จะเก็บค่าของข้อมูลสูงสุดได้ไม่เกิน -2,147,483,647 (-231 - 1) ถึง +2,147,483,648 (+231) สำหรับข้อมูลชนิด P นั้น ถ้าไม่ระบุ Length จะมีค่าดีฟอลต์เป็น 8 ซึ่งเราสามารถที่จะระบุค่า Length ของข้อมูลชนิด P นี้ได้อยู่ระหว่าง 1 - 16 และค่าจำนวนจุดทศนิยม (Decimals) ไม่เกิน 31 หลัก (ค่าดีฟอลต์ของจำนวนหลักจุดทศนิยมนั้นจะเป็น 0) และคำถามที่ว่า ข้อมูลที่มีชนิดของข้อมูลเป็นชนิด P นั้น สามารถจัดเก็บอยู่ใน Memory Space ได้ไม่เกินเท่าไร

ซึ่งจากตัวอย่างตัวแปร temp3 นั้น เราระบุค่า Length เป็น 8 แต่ความยาวของพื้นที่จัดเก็บข้อมูลใน Memory Space ของตัวแปร temp3 นั้น ไม่ใช่ 8 ไบต์แต่อย่างใด แต่จะเป็น 15 ไบต์ (ไม่รวมเครื่องหมายกับจุดทศนิยม) ซึ่งได้มาจากสูตร 2n - 1((2 * 8) - 1 = 15) นั่นเอง ดังนั้นตัวแปร temp3 จะเก็บข้อมูลได้ไม่เกิน 15 หลัก (ตัวเลขก่อนจุดทศนิยมรวมกับตัวเลขหลังจุดทศนิยมไม่เกิน 15 หลัก โดยที่ไม่รวมเครื่องหมาย . แต่อย่างใด)

ที่นี้เรามาดูตัวแปรที่มีชนิดของข้อมูลเป็นชนิด N ซึ่งเป็นชนิดของข้อมูลที่สร้างความสับสนให้กับหลายๆ คนที่ไม่คุ้นเคยกับภาษา ABAP กันพอสมควร โดยที่ตัวแปรที่มีชนิดของข้อมูลเป็นชนิด N นั้น จะเป็นตัวแปรที่เก็บข้อมูลเท็กซ์ (Text) ที่เป็นตัวเลขเท่านั้น ถ้ามีข้อมูลที่เป็น Space มันจะแทนค่าด้วย 0 แทน และมันจะไม่รับข้อมูลที่เป็น Character อื่นๆ ที่ไม่ใช่ตัวเลข ลองมาดูตัวอย่างต่อไปนี้

DATA temp(5) TYPE N.
temp = ‘aX5B12z’.

จากตัวอย่างข้างต้น เรามีการให้ค่า ‘aX5B12z’ กับตัวแปร temp ซึ่งมันจะรับเฉพาะตัวเลขเท่านั้น (Syntax ไม่ Error นะครับ) ส่วน Character อื่นนั้นมันไม่สนใจเลย และถ้ามีค่า Space มันจะแทนค่าด้วย 0 ทันทีที่ Memory Space โดยที่ตัวเลขที่มันจะเก็บค่า จะอยู่ชิดขวานะครับ ดังนั้นที่ Memory Space
ถ้าเราต้องการแสดงข้อมูลที่หน้าจอ ก็ให้ใช้คำสั่ง WRITE temp. เราก็จะได้ข้อมูลของตัวแปร temp ที่หน้าจอ ซึ่งจะเห็นได้ว่า ในการให้ค่า ‘aX5B12z’ กับตัวแปร temp นั้น มันจะรับเฉพาะตัวเลขเท่านั้น ซึ่งในระบบ SAP จะใช้ชนิดข้อมูลชนิด N นี้ ในการจัดเก็บข้อมูลค่ารหัสต่างๆ เช่น รหัสลูกค้า หรือรหัสวัตถุดิบเป็นต้น ซึ่งข้อมูลชนิด N นี้ เราสามารถนำไปคำนวณได้ตามปกติ แต่ถ้าเราต้องการเก็บข้อมูลเพื่อใช้ในการคำนวณ ก็ขอแนะนำว่าให้ใช้ตัวแปรที่มีชนิดของข้อมูลเป็นชนิด I หรือ P จะเหมาะสมกว่า เพราะว่าถ้ามีการใช้ชนิดของข้อมูลชนิด N ในการคำนวณ ระบบจะทำการแปลงข้อมูลให้เป็นชนิดตัวเลขก่อนการคำนวณเสมอ

ต่อไปเรามาดูชนิดของข้อมูลชนิด D ซึ่งเป็นชนิดของข้อมูลที่เก็บข้อมูลวันที่กัน โดยที่ Internal Format ในการจัดเก็บข้อมูลชนิด D จะเป็นดังนี้

YYYYMMDD

คือมันจะเก็บปี 4 หลักตามด้วยเดือน 2 หลักและวันที่ 2 หลักตามลำดับ ลองมาดูตัวอย่างดังต่อไปนี้

DATA today TYPE D.
today = sy-datum.
WRITE today.

โดยที่ตัวแปร 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’ เรียงลงไป

DATA today TYPE D.
today = ‘abcdefgh’.

แล้วถ้าผมใช้คำสั่ง WRITE today. ที่หน้าจอผมจะได้ข้อมูลอะไร? คำตอบคือได้ค่า ghefabcd ทำไมจึงเป็นเช่นนี้ ที่เป็นเช่นนี้ก็เพราะมันมองข้อมูล 4 หลักแรกเป็นปี 2 หลักต่อมาเป็นเดือน และ 2 หลักต่อมาเป็นวันนั่นเอง ดังนั้นที่หน้าจอผมจึงได้ค่า ghefabcd (User Default Format ของผมเป็นวันเดือนปี)

สำหรับวิธีตรวจสอบข้อมูลชนิด D นี้ ใช้หลักการง่ายๆ ดังตัวอย่างต่อไปนี้

DATA today TYPE D.
today = ‘abcdefgh’.
today = today + 0.
IF today IS INITIAL.
WRITE: / ‘Invalid Date’.
ELSE.
WRITE: / today.
ENDIF.

โดยที่ถ้าข้อมูลของตัวแปร today เป็น Invalid Date (วันที่ที่ไม่มีอยู่จริง) เมื่อนำไปบวกด้วยค่า 0 ก่อนที่ระบบจะบวกค่าตัวเลข ก็จะแปลงรูปแบบวันที่ของตัวแปร today ให้เป็นตัวเลขของจำนวนวันที่นับตั้งแต่วันที่ 01 เดือน 01 ปี 0001 จากนั้นจึงนำไปบวกด้วยค่า 0 ต่อไป หลังจากนั้นระบบจะแปลงตัวเลขจำนวนวันให้กลับไปเป็นวันที่ ตามรูปแบบของ Gregorian Calendar เพื่อจัดเก็บใน Memory Space ต่อไป แต่ถ้าเป็น Invalid Date ก่อนที่จะมีการบวกกับค่า 0 ระบบจะเซ็ตค่าของตัวแปรนั้นๆ ให้เป็นค่า Initial ก่อนซึ่งก็คือค่า 00000000 เมื่อบวกกับ 0 ก็จะได้ 00000000 ซึ่งเป็นค่า Initial นั่นเอง สำหรับข้อมูลชนิด D นั้น เราสามารถบวกลบจำนวนวันได้ตามปกติ เช่น ถ้าเราต้องการทราบว่าอีก 10 วันถัดไป จะเป็นวันอะไร เราสามารถเขียนคำสั่งได้ดังนี้ (โดยที่ตัวแปรระบบ sy-datum มีชนิดของข้อมูลเป็นชนิด D นั่นเอง)

DATA today TYPE D.
today = sy-datum + 10.

คอมเมนต์ในภาษา ABAP
ในภาษา ABAP การเขียนคอมเมนต์ (Comment) ในโปรแกรมสามารถทำได้ 2 แบบดังนี้

1. Full Line Comment ที่คอลัมน์แรกของบรรทัดจะเป็นค่า *
2. Partial Line Comment ที่คอลัมน์ใดๆ ในบรรทัดนั้นจะมีค่า “ เช่น

*This is test program
DATA today TYPE D.
today = sy-datum. “Current Date

ที่บรรทัดแรกของโปรแกรมจะเป็นคอมเมนต์ และในบรรทัดที่ 3 ที่ส่วนของข้อความ Current Date จะเป็นคอมเมนต์เช่นเดียวกัน ก็คือระบบจะไม่นำคอมเมนต์เหล่านี้ไปประมวลผลแต่อย่างใด

คำสั่ง CLEAR
คำสั่ง CLEAR เป็นคำสั่งที่ใช้ในการเซ็ตค่าของข้อมูลที่ Memory Space ให้เป็นค่า Initial ตามชนิดของข้อมูล เช่นในตัวอย่างต่อไปนี้ สุดท้ายค่าของตัวแปร temp จะมีค่าเป็น 0 (Initial Value) ไม่ใช่ 9 (Default Value)

DATA temp TYPE I VALUE 9.
temp = 10.
CLEAR temp.

สำหรับบทเรียนแรก เรื่องของตัวแปรคงจะทำให้คุณเห็นภาพโครงสร้างของภาษา ABAP ไม่มากก็น้อยนะครับ ในการเขียนโปรแกรม ABAP ถ้าคุณเห็นภาพการทำงานในคำสั่งต่างๆ ที่ Memory Space จะทำให้คุณเข้าใจการเขียนโปรแกรม ABAP ได้ดียิ่งขึ้น ผมจะพยายามสอนคุณให้ทำหน้าที่เป็น ABAP Processor ที่จะนำคำสั่ง ABAP ต่างๆ ไปทำงาน โดยที่ผมจะไม่เน้นที่ Syntax ของภาษา ABAP แต่อย่างใด เพราะคุณสามารถเปิดดู Help ของระบบ SAP ได้ หรือถ้าใครไม่มีระบบ SAP ถ้าอยากดู Help ของระบบ SAP ก็สามารถเข้าไปดูได้ที่ help.sap.com ก็ได้ จะมีข้อมูลมากมายให้คุณศึกษาระบบ SAP





 

Create Date : 02 สิงหาคม 2550    
Last Update : 2 สิงหาคม 2550 8:56:42 น.
Counter : 4350 Pageviews.  

แหล่งรวม เครื่องมือ SAP

ลองดูนะครับ ในนี้ มีให้ Download E-Book เกี่ยวกับ SAP
//www.4soi.de/online-pdfs.php




 

Create Date : 12 กรกฎาคม 2550    
Last Update : 12 กรกฎาคม 2550 11:17:57 น.
Counter : 1006 Pageviews.  

รู้จักภาษา ABAP : เปิดเบื้องหลังของ SAP R/3 ตอนที่ 1

รู้จักภาษา ABAP : เปิดเบื้องหลังของ SAP R/3 ตอนที่ 1

โดย ประพจน์ สุขมานนท์


บทความที่ผมจะนำเสนอต่อจากนี้ คือเรื่องราวของภาษา ABAP (อ่านว่าอาบัพ) ที่อยู่เบื้องหลังระบบ SAP R/3 โดยเราจะเริ่มต้นกันที่สถาปัตยกรรมของระบบ SAP R/3 และฉบับต่อไป ผมจะลงลึกไปถึงการทำโปรแกรมบน SAP R/3 แล้วคุณจะรู้สึกเหมือนกับผมว่าภาษา ABAP ง่ายกว่าที่คาดไว้จริงๆ

รู้จักกับระบบ SAP R/3
SAP R/3 เป็นแอพพลิเคชันซอฟต์แวร์ชนิดไคลเอ็นต์/เซิร์ฟเวอร์ ที่ทำงานในลักษณะของทรีเทียร์ (3 Tier Architecture) ซึ่งแบ่งลำดับชั้นของเซอร์วิสในแอพพลิเคชันเป็น 3 ระดับคือ Presentation Server, Application Server และ Database Server (อ้างอิงจากโมเดลมาตรฐานของแอพพลิเคชันแบบทรีเทียร์ ซึ่งประกอบไปด้วย Presen tation Logic, Application Logic, Data Logic และ Data Service)

Presentation Server (หมายถึงโปรแกรม SAPGUI ในระบบ SAP R/3) เป็นส่วนให้บริการด้านการแสดงผลบนจอภาพ ซึ่งรันอยู่บนไคลเอ็นต์ที่มีการโต้ตอบกับยูสเซอร์ ส่วน Application Server (ในระบบ SAP R/3 ส่วนนี้คือ R/3 Instance) จะให้บริการทางด้านแอพพลิเคชันลอจิก (Application Logic) และดาต้าลอจิก (Data Logic) สุดท้ายคือ Database Server จะทำงานร่วมกับ RDBMS ชั้นนำได้ ไม่ว่าจะเป็น ORACLE, Informix, DB2, Microsoft SQL Server หรือ ADABUS (ปัจจุบันเป็น SAP DB)

โมเดลมาตรฐานของแอพพลิเคชันแบบทรีเทียร์

Presentation Logic หมายถึง งานที่เกี่ยวข้องกับการแสดงข้อมูลบนจอภาพ ส่วน Application Logic เป็นคำสั่งที่ใช้ควบคุมการทำงานของโปรแกรม หรือคำนวณค่าต่างๆ เช่น คำสั่ง IF, CASE, DO, WHILE หรือคำนวณบวกลบคูณหาร Data Logic ก็คือ กลุ่มของโค้ดที่ใช้เข้าถึงข้อมูลในฐานข้อมูล อย่างคำสั่ง SQL เป็นต้น สุดท้ายคือ Data Service จะทำหน้าที่ดูแลและจัดการข้อมูลในระบบฐานข้อมูล (RDBMS)




แนวคิดของระบบไคลเอ็นต์/เซิร์ฟเวอร์
ระบบไคลเอ็นต์/เซิร์ฟเวอร์นั้นมีรากฐานมาจากวิธีคิดแบบกระจายงานกันทำ ซึ่งหมายถึงการแยกองค์ประกอบทั้ง 4 ของแอพพลิเคชัน ให้ไปทำงานบนคอมพิวเตอร์แต่ละเครื่อง ซึ่งจะไม่เหมือนกับระบบโฮสต์เดี่ยวบนเมนเฟรมอย่างในสมัยก่อน ถ้าเราย้อนไปในอดีตที่ผ่านมา คุณจะพบว่าไคลเอ็นต์/เซิร์ฟเวอร์เกิดขึ้นมาพร้อมๆ กับคำว่า Down Sizing คือ เมื่อมีการแยกส่วนของแอพพลิเคชันออกจากกันแล้ว (ทำงานที่คนละเครื่อง) เซิร์ฟเวอร์ก็ไม่จำเป็นต้องมีพลังประมวลผลสูงนัก เนื่องจากตัวมันจะถูกใช้งานเฉพาะในส่วนของ Data Service เท่านั้น ขณะที่ Presentation Logic, Application Logic และ Data Logic ถูกย้ายไปทำงานที่เครื่องไคลเอ็นต์แทน ซึ่งเป็นรูปแบบที่เรียกว่า 2 Tier Client/Server
แต่ปัญหาของ 2 Tier Client/Server ก็คือ ถ้าเรามีการแก้ไขเพิ่มเติมในส่วนของกฏเกณฑ์ทางธุรกิจ (Business Rule) ซึ่งหมายถึง Application Logic กับ Data Logic บนเครื่องไคลเอ็นต์ ก็จะประสบปัญหาในการดูแลระบบทันที ยกตัวอย่างเช่น ถ้าเราต้องการเพิ่มเงื่อนไข ว่านักศึกษาคนใดที่ต้องการลงทะเบียนเรียนวิชา X จะต้องผ่านการเรียนวิชา A มาก่อน สมมุติเรามีไคลเอ็นต์สำหรับลงทะเบียนอยู่ 10 เครื่อง ก็ต้องไปอัพเดตซอฟต์แวร์ใหม่ทั้ง 10 เครื่อง และถ้ามีการเปลี่ยน กฏเกณฑ์ในการลงทะเบียนเรียนวิชา X นี้อีก ก็ต้องตามไปแก้ไขโปรแกรมที่ไคลเอ็นต์ทั้ง 10 เครื่องใหม่ ดังนั้นในยุคต่อมาจึงมีการย้าย Application Logic และ Data Logic บางส่วน ไปทำงานที่เซิร์ฟเวอร์ โดยเราจะเรียกส่วนงานที่เซิร์ฟเวอร์นี้ ว่า Store Procedure ในรูปแบบของ Message-based Client/Server ก็คือ ไคลเอ็นต์จะไม่ได้สื่อสารกับเซิร์ฟเวอร์ ด้วยคำสั่ง SQL เท่านั้น แต่จะมีการเรียก Store Procedure ที่ฝั่งเซิร์ฟเวอร์ด้วย ข้อดีของระบบ Message-based Client/Server ก็คือ การดูแล Business Rule จะทำที่ฝั่งเซิร์ฟเวอร์เพียงแห่งเดียวเท่านั้น

แต่ปัญหาของระบบ Message-based Client/Server คือ เมื่อเราย้าย Application Logic และ Data Logic บางส่วนไปที่เซิร์ฟเวอร์ ก็ย่อมเป็นการเพิ่มภาระงานให้โดยปริยาย ปัญหาที่ตามมา ก็คือเรื่องของประสิทธิภาพ โดยเฉพาะถ้ามียูสเซอร์เข้ามาใช้งานมากขึ้นเท่าไร ก็จะยิ่งรับภาระมากขึ้นเท่านั้น แถมยังมีส่วนที่ทำงานซ้ำซ้อนกันอีกด้วย ดังนั้น จึงมีหลักการของ 3 Tier Client/Server เกิดขึ้นมา ข้อดีของการทำงานในแบบทรี-เทียร์ อยู่ตรงที่เราสามารถเพิ่มประสิทธิภาพ ให้กับแอพพลิเคชันเซิร์ฟเวอร์ได้ง่าย เป็นการแก้ปัญหาที่ตรงจุด แถมคอมพิวเตอร์ในแต่ละเลเยอร์ก็ไม่ต้องรับภาระหนักเกินตัว

สถาปัตยกรรมของ SAP R/3 หลังจากที่เรียนรู้แนวคิดของไคลเอ็นต์/เซิร์ฟเวอร์ในแบบทรีเทียร์กันพอสมควรแล้ว คราวนี้เรามาลองดูในภาคปฏิบัติกันบ้าง ผมจะแสดงให้เห็นถึงรูปแบบการทำงานของระบบ SAP R/3 ในส่วนของ 3 Tier Client/Server ว่าทำงานอย่างไร

สมมติว่าผมต้องการเรียกโปรแกรมที่เขียนด้วยภาษา ABAP ดังต่อไปนี้มาทำงาน

Report ztest.
Tables customers.
Select single * from customers where id = 1
Write customers-name

ขั้นตอนแรกเราจะต้องล็อกออนเข้าไปใช้งานระบบ SAP R/3 ก่อน โดยเรียกโปรแกรม SAPGUI ที่ฝั่งไคลเอ็นต์ขึ้นมาทำงาน จากนั้นก็เรียกโปรแกรม ztest มา ทำงาน เพื่อนำข้อมูลของลูกค้าที่มีรหัส ID เป็น 1 ออกมาแสดงผลที่หน้าจอ ขั้นตอนของ การเอ็กซีคิวต์โปรแกรม ztest จะเป็นดังนี้

 รีเควสต์ถูกส่งจากโปรแกรม SAPGUI ไปที่ R/3 Instance โดยส่วนของ Dispatcher จะทำหน้าที่รับรีเควสต์ (ก็คือ ต้องการเอ็กซีคิวต์โปรแกรม ztest) พร้อมกับนำรีเควสต์จากไคลเอ็นต์เครื่องนี้ เข้าไปรออยู่ใน Queue ซึ่งเป็นหน่วยความจำบัฟเฟอร์บนแอพพลิเคชันเซิร์ฟเวอร์

 ขั้นตอนต่อมา 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) ข้อมูลที่ต้องการกลับไปหาแอพพลิเคชันเซิร์ฟเวอร์

 คำสั่งสุดท้ายคือ Write customers-name เป็นคำสั่งประเภท Presentation Logic ซึ่งใช้สำหรับการแสดงผลข้อมูล (ในที่นี้คือ customers-name) ด้วยการส่งต่อไปให้โปรแกรม SAPGUI
จากตัวอย่างที่ผมกล่าวมานั้น จะเห็นได้ว่าการทำงานของโปรแกรม ztest แต่ละคำสั่ง จะถูกกระจายออกไปยังส่วนต่างๆ ตามประเภทของคำสั่งในโปรแกรม ztest ผมหวังว่าทุกท่านคงพอจะมองเห็นภาพการทำงานในแบบ 3 Tier Client/Server ของระบบ SAP R/3 บ้างไม่มากก็น้อย





 

Create Date : 12 กรกฎาคม 2550    
Last Update : 12 กรกฎาคม 2550 11:04:21 น.
Counter : 1832 Pageviews.  

ทำความรู้จักกับ SAP R/3 ในมุมมองของ Basis

ทำความรู้จักกับ SAP R/3 ในมุมมองของ Basis

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 นะครับ ไม่ได้เขียนเอง แต่จำไม่ได้ว่าเอามาจากใคร ต้องขอโทษเจ้าของด้วยนะครับ




 

Create Date : 10 กรกฎาคม 2550    
Last Update : 10 กรกฎาคม 2550 13:01:47 น.
Counter : 6064 Pageviews.  

1  2  
 Pantip.com | PantipMarket.com | Pantown.com | © 2004 BlogGang.com allrights reserved.