การใช้งาน Sending Function as Variable ในภาษา ABAP แบบง่ายๆ
สวัสดีครับทุกท่าน! วันนี้เราจะมาพูดถึงเรื่องที่น่าสนใจในโลกของการเขียนโปรแกรมด้วยภาษา ABAP หรือ Advanced Business Application Programming ที่ใช้ในระบบ SAP ซึ่งเป็นระบบที่ช่วยในการจัดการทางธุรกิจต่างๆ และ ABAP เป็นหัวใจสำคัญที่ทำให้ระบบ SAP สามารถปรับแต่งและขยายฟังก์ชันได้ตามความต้องการขององค์กร
ในใจความสำคัญของการเขียนโปรแกรมคือความสามารถในการเข้าถึงและการจัดการกับฟังก์ชันต่างๆ ได้อย่างอิสระและยืดหยุ่น ซึ่ง ABAP ก็เป็นอีกหนึ่งภาษาที่ให้ความสำคัญกับเรื่องนี้ โดยเฉพาะการใช้งาน Sending Function as Variable หรือการส่งฟังก์ชันในรูปแบบของตัวแปรซึ่งเปิดโอกาสให้โค้ดของเรามีความยืดหยุ่นและสามารถทำงานร่วมกับโค้ดอื่นได้ดีขึ้น จะช่วยยกระดับการเขียนโปรแกรมให้ก้าวหน้ายิ่งขึ้น
ต่อไปนี้ ผมจะให้ตัวอย่าง CODE 3 ตัวอย่าง พร้อมอธิบายการทำงาน และให้บางส่วนของ usecase เพื่อช่วยเหลือในการเข้าใจ
ตัวอย่างที่ 1: การใช้งาน Function Module
DATA: lv_result TYPE i.
" ฟังก์ชันสำหรับการคำนวณ
FORM calculate USING p_num1 TYPE i
p_num2 TYPE i
p_func TYPE c LENGTH 1
CHANGING p_result TYPE i.
CASE p_func.
WHEN '+'.
p_result = p_num1 + p_num2.
WHEN '-'.
p_result = p_num1 - p_num2.
ENDCASE.
ENDFORM.
" ส่งฟังก์ชัน calculate เป็นตัวแปรไปยังฟังก์ชันอื่น
PERFORM calculate USING 5 3 '+' CHANGING lv_result.
WRITE: / 'ผลลัพธ์การบวก:', lv_result.
PERFORM calculate USING 5 3 '-' CHANGING lv_result.
WRITE: / 'ผลลัพธ์การลบ:', lv_result.
ในตัวอย่างนี้ เรามีฟังก์ชัน `calculate` ที่ทำการคำนวณพื้นฐาน ซึ่งมันสามารถรับพารามิเตอร์ฟังก์ชันการคำนวณที่ต้องการเป็นตัวแปร `p_func` อย่างตัวอักษร '+' เพื่อบวก และ '-' เพื่อลบ นี่เป็นการแสดงให้เห็นว่าเราสามารถส่งลอจิกการคำนวณเป็นตัวแปรไปยังฟังก์ชันได้
ตัวอย่างที่ 2: การใช้งานใน SAP GUI Screen
DATA: lv_value TYPE i.
" ฟังก์ชันสำหรับอัพเดตค่าบนหน้าจอ
FORM update_screen USING p_value TYPE i.
lv_value = p_value.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = lv_value
text = |กำลังอัพเดต { lv_value }%|.
ENDFORM.
" อัพเดตหน้าจอโดยใช้ฟังก์ชัน update_screen
DO 10 TIMES.
PERFORM update_screen USING sy-index * 10.
ENDDO.
ในที่นี้ `update_screen` เป็นฟังก์ชันที่สามารถอัพเดตตัวชี้วัดความคืบหน้าบน SAP GUI โดยเราส่งค่า (%) เป็นตัวแปร สามารถถูกนำไปใช้ในกรณีที่ต้องการอัพเดตสถานะต่างๆบนหน้าจอผู้ใช้
ตัวอย่างที่ 3: เรียกใช้ API หรือ Service ภายนอกระบบ SAP
DATA: lv_url TYPE string,
lv_response TYPE string.
" ฟังก์ชันสำหรับการส่งข้อมูลไปยัง API
FORM call_external_api USING p_url TYPE string
p_payload TYPE string
CHANGING p_response TYPE string.
TRY.
CALL METHOD cl_http_client=>create_by_url
EXPORTING
url = p_url
RECEIVING
client = DATA(client).
client->send( ).
client->receive(
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
).
p_response = client->response->get_cdata( ).
CATCH cx_root.
" Handle Exception
ENDTRY.
ENDFORM.
" ส่งข้อมูลไปยัง API โดยใช้ฟังก์ชัน call_external_api
lv_url = 'https://api.example.com/data'.
PERFORM call_external_api USING lv_url '{ "data": "ABAP" }' CHANGING lv_response.
WRITE: / 'Response from API:', lv_response.
บางครั้งภายในองค์กรอาจมีการเชื่อมต่อกับ API ภายนอกหรือบริการในรูปแบบ Cloud หรือ SaaS ซึ่งจึงต้องการที่จะส่งหรือรับข้อมูลภายนอก สามารถใช้โค้ดเช่นนี้ในการสั่งงานหรือรับข้อมูลจากบริการเหล่านั้น
เมื่อพิจารณาถึง usecase ในโลกจริง การส่งฟังก์ชันเป็นตัวแปรสามารถช่วยในหลายสถานการณ์ เช่น การคำนวณค่าทางธุรกิจที่มีความเปลี่ยนแปลงสูง การปรับเปลี่ยนขั้นตอนการทำงานของระบบโดยไม่ต้องแก้ไขโค้ดที่กำหนดไว้อย่างยืดหยุ่น
และหากท่านใดสนใจในศาสตร์การเขียนโปรแกรมด้วยภาษา ABAP หรือภาษาโปรแกรมมิ่งอื่นๆ ขอเชิญมาเรียนรู้และพัฒนาทักษะที่ EPT หรือ Expert-Programming-Tutor ที่นี่ เรามีหลักสูตรหลากหลายที่จะช่วยให้ท่านก้าวไปอีกขั้นในเส้นทางสายโปรแกรมมิ่ง กับครูผู้เชี่ยวชาญที่พร้อมจะแบ่งปันความรู้และประสบการณ์อันล้ำค่า พบกันนะครับ!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
Tag ที่น่าสนใจ: abap programming_language function_as_variable sap function_module sap_gui api service cloud_service saas coding_flexibility business_logic usecase real-world_example
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM