SAP ABAP BDC: การสื่อสารข้อมูลแบบกลุ่ม (Batch Data Communication) คืออะไร?
⚡ สรุปอย่างชาญฉลาด
SAP ABAP BDC (Batch Data Communication) ถ่ายโอนข้อมูลจากระบบเดิมไปยัง R/3 โดยการขับเคลื่อนธุรกรรมมาตรฐานโดยอัตโนมัติ หน้านี้จะอธิบายเกี่ยวกับเซสชันการป้อนข้อมูลแบบกลุ่ม วิธีธุรกรรมแบบคลาสสิกและแบบเรียกใช้ โครงสร้าง BDCDATA เวิร์กโฟลว์ BDC_OPEN_GROUP และตัวบันทึกการป้อนข้อมูลแบบกลุ่ม
ข้อมูลเบื้องต้นเกี่ยวกับการป้อนข้อมูลแบบแบตช์
โดยทั่วไปอินพุตแบบแบตช์จะใช้เพื่อถ่ายโอนข้อมูลจากระบบที่ไม่ใช่ R/3 ไปยังระบบ R/3 หรือเพื่อถ่ายโอนข้อมูลระหว่างระบบ R/3
เป็นเทคนิคการถ่ายโอนข้อมูลที่ช่วยให้คุณสามารถถ่ายโอนชุดข้อมูลไปยังหน้าจอที่เป็นของธุรกรรมโดยอัตโนมัติและไปยัง SAP ระบบ. อินพุตแบบแบตช์ถูกควบคุมโดยเซสชันอินพุตแบบแบตช์
เซสชั่นการป้อนข้อมูลเป็นกลุ่ม
จัดกลุ่มชุดของการเรียกธุรกรรมพร้อมกับข้อมูลที่ป้อนและการกระทำของผู้ใช้ เซสชันอินพุตแบบแบตช์สามารถใช้เพื่อดำเนินการธุรกรรมแบบโต้ตอบในการอินพุตแบบแบตช์ โดยที่เซสชันจะประมวลผลหน้าจอบางส่วนหรือทั้งหมด เซสชันอินพุตแบบแบตช์จะถูกจัดเก็บไว้ในฐานข้อมูลเป็นตารางฐานข้อมูล และสามารถใช้ภายในโปรแกรมเป็นตารางภายในเมื่อเข้าถึงธุรกรรม
จุดที่ควรทราบ
- BDI ทำงานโดยดำเนินการตามปกติ SAP ธุรกรรมเช่นเดียวกับที่ผู้ใช้ทำ แต่จะดำเนินการธุรกรรมโดยอัตโนมัติการตรวจสอบความถูกต้องของหน้าจอและการตรวจสอบตรรกะทางธุรกิจทั้งหมดจะดำเนินการในขณะที่ใช้การป้อนข้อมูลแบบแบตช์
- เหมาะสำหรับการป้อนข้อมูลจำนวนมาก
- ไม่จำเป็นต้องมีการโต้ตอบด้วยตนเอง
วิธีการป้อนข้อมูลแบบแบตช์
SAP จัดเตรียมวิธีการพื้นฐานสองวิธีสำหรับการถ่ายโอนข้อมูลเดิมไปยังระบบ R/3
- วิธีการป้อนข้อมูลแบบคลาสสิก
- วิธีการทำธุรกรรมทางโทรศัพท์
วิธีการป้อนข้อมูลแบบคลาสสิก
ในวิธีนี้โปรแกรม ABAP/4 จะอ่านข้อมูลภายนอกไปยัง SAP ระบบและการจัดเก็บในเซสชั่นการป้อนข้อมูลแบบแบตช์
หลังจากสร้างเซสชันแล้ว คุณสามารถเรียกใช้เซสชันเพื่อดำเนินการได้ SAP การทำธุรกรรมในนั้น
วิธีการนี้ใช้โมดูลฟังก์ชัน BDC_ OPEN, BDC_INSERT และ BDC_CLOSE
Batch Input Session สามารถดำเนินการได้ 3 วิธี
- อยู่เบื้องหน้า
- ในพื้นหลัง
- ระหว่างการประมวลผลพร้อมแสดงข้อผิดพลาด
คุณควรประมวลผลเซสชันอินพุตแบบแบตช์ในเบื้องหน้าหรือใช้การแสดงข้อผิดพลาดหากคุณต้องการทดสอบการถ่ายโอนข้อมูล
หากคุณต้องการดำเนินการถ่ายโอนข้อมูลหรือทดสอบประสิทธิภาพ คุณควรประมวลผลเซสชันในเบื้องหลัง
ข้อควรทราบเกี่ยวกับวิธีการป้อนข้อมูลแบบคลาสสิก
- Syncการประมวลผลที่เที่ยงตรง
- ถ่ายโอนข้อมูลสำหรับการทำธุรกรรมหลายรายการ
- Syncการอัพเดตฐานข้อมูลแบบ Hronous
- บันทึกกระบวนการอินพุตแบบแบตช์จะถูกสร้างขึ้นสำหรับแต่ละเซสชัน
- ไม่สามารถสร้างเซสชันพร้อมกันได้
วิธีการทำธุรกรรมทางโทรศัพท์
ในวิธีนี้ ABAP/4 โปรแกรมใช้คำสั่ง CALL TRANSACTION USING เพื่อรันไฟล์ SAP การซื้อขาย
กระบวนการป้อนข้อมูลแบบกลุ่มทั้งหมดเกิดขึ้นทางออนไลน์ในโปรแกรม
จุดที่ควรทราบ:
- ประมวลผลข้อมูลได้เร็วขึ้น
- การประมวลผลแบบอะซิงโครนัส
- ถ่ายโอนข้อมูลสำหรับธุรกรรมเดียว
- ไม่มีการสร้างบันทึกการประมวลผลอินพุตแบบแบตช์
เทียบกับการป้อนข้อมูลแบบกลุ่มคลาสสิกกับการเรียกใช้ธุรกรรม
ทั้งสองวิธีนี้เข้าถึงธุรกรรมเดียวกัน แต่แตกต่างกันในด้านความเร็ว การบันทึกข้อมูล และการจัดการข้อผิดพลาด ตารางด้านล่างแสดงให้เห็นว่าแต่ละวิธีเหมาะสมกับการใช้งานในสถานการณ์ใดบ้าง
| หลักเกณฑ์ | การป้อนข้อมูลแบบกลุ่มคลาสสิก | การโทรทำรายการ |
|---|---|---|
| เทคนิค | BDC_OPEN_GROUP, BDC_INSERT, BDC_CLOSE_GROUP | การทำธุรกรรมการโทรโดยใช้ |
| กระบวนการผลิต | Synchronous รันในภายหลังจาก SM35 | ใช้งานผ่านระบบออนไลน์ในโปรแกรม |
| การทำธุรกรรม | มีการทำธุรกรรมจำนวนมากในเซสชั่นเดียว | ธุรกรรมเดียวต่อการโทรหนึ่งครั้ง |
| เข้าสู่ระบบ | ระบบจะสร้างบันทึกกระบวนการต่อเซสชันโดยอัตโนมัติ | ไม่มีการบันทึกข้อมูล โปรแกรมจะรวบรวมข้อความต่างๆ เอง |
| ความเร็ว | ช้ากว่า แต่ทนทานและสามารถเริ่มต้นใหม่ได้ | ได้เร็วขึ้น |
| เหมาะสำหรับ | ภาระงานเดิมขนาดใหญ่ที่เกิดขึ้นเพียงครั้งเดียวและต้องสามารถตรวจสอบได้ | การถ่ายโอนเอกสารแบบโต้ตอบหรือความเร็วสูง |
หลังจากเปรียบเทียบวิธีการแล้ว ในส่วนถัดไปจะอธิบายขั้นตอนโดยรวมของโครงการ
ขั้นตอนการป้อนข้อมูลแบบกลุ่ม
โดยทั่วไป คุณจะสังเกตลำดับขั้นตอนต่อไปนี้เพื่อพัฒนา Batch Input สำหรับองค์กรของคุณ
- การวิเคราะห์ข้อมูลเดิม กำหนดวิธีการแมปข้อมูลที่จะถ่ายโอนไปยัง SAP โครงสร้าง. จดบันทึกประเภทข้อมูลที่จำเป็นหรือการแปลงความยาวข้อมูลด้วย
- ผลิต SAP โครงสร้างข้อมูลเพื่อใช้ในโปรแกรมส่งออก
- ส่งออกข้อมูลเป็นไฟล์ต่อเนื่อง โปรดทราบว่าจำเป็นต้องมีรูปแบบอักขระตามที่กำหนดไว้ล่วงหน้า SAP โปรแกรมอินพุตแบบแบตช์
- ถ้า SAP ไม่ได้ใช้โปรแกรม BDC ที่ให้มา ให้เขียนโค้ดโปรแกรมอินพุตแบบแบตช์ของคุณเอง เลือกวิธีการป้อนข้อมูลแบบกลุ่มที่เหมาะสมตามสถานการณ์
- ประมวลผลข้อมูลและเพิ่มลงใน SAP System.
- วิเคราะห์บันทึกกระบวนการ สำหรับวิธี CALL TRANSACTION ที่ไม่มีการสร้างบันทึกที่เหมาะสม ให้ใช้ข้อความที่รวบรวมโดยโปรแกรมของคุณ
- จากผลการวิเคราะห์กระบวนการ แก้ไขและประมวลผลข้อมูลที่ผิดพลาดใหม่
การเขียนโปรแกรม BDC
คุณสามารถปฏิบัติตามขั้นตอนต่อไปนี้เพื่อเขียนโปรแกรม BDC ของคุณ
- วิเคราะห์ธุรกรรมเพื่อประมวลผลข้อมูลอินพุตแบบแบตช์
- ตัดสินใจเลือกวิธีการป้อนข้อมูลแบบกลุ่มที่จะใช้
- อ่านข้อมูลจากไฟล์ตามลำดับ
- ทำการแปลงข้อมูลหรือตรวจสอบข้อผิดพลาด
- การจัดเก็บข้อมูลในโครงสร้างอินพุตแบบแบตช์ BDCDATA
- สร้างเซสชันอินพุตแบบแบตช์สำหรับการอินพุตแบบแบตช์แบบคลาสสิก หรือประมวลผลข้อมูลโดยตรงด้วยคำสั่ง CALL TRANSACTION USING
โครงสร้างข้อมูลอินพุตแบบแบตช์
การประกาศโครงสร้างข้อมูลอินพุตแบบแบตช์
DATA : BEGIN OF < bdc table> OCCURS <occurs parameters>. INCLUDE STRUCTURE BDCDATA. DATA:END OF <bdc table>.
| ชื่อฟิลด์ | ประเภท | ความยาว | Descriptไอออน |
|---|---|---|---|
| โปรแกรม | ชาร์ | 8 | พูลโมดูล |
| ไดน์โปร | NUMC | 4 | เบอร์ไดนโปร |
| ไดนเบกิ้น | ชาร์ | 1 | การเริ่มต้น dynpro |
| เอฟนัม | ชาร์ | 35 | ชื่อฟิลด์ |
| ฟวาล | ชาร์ | 80 | ค่าฟิลด์ |
ลำดับของฟิลด์ภายในข้อมูลสำหรับหน้าจอใดหน้าจอหนึ่งไม่มีนัยสำคัญใดๆ
คะแนนหมายเหตุ
- ขณะกรอกข้อมูล BDC โปรดคำนึงถึงการตั้งค่าของผู้ใช้ด้วย โดยเฉพาะอย่างยิ่งในช่องข้อมูลที่มีตัวเลข (เช่น จำนวน มูลค่า) การตั้งค่าของผู้ใช้จะเป็นตัวกำหนดว่ากลุ่มข้อมูลนั้นเป็นอย่างไรping อักขระสำหรับตัวเลข เช่น ตัวเลขห้าหมื่น สามารถเขียนได้เป็น 50,000.00 หรือ 50.000,00 ขึ้นอยู่กับการตั้งค่าของผู้ใช้
- ย่อฟิลด์ FVAL สำหรับฟิลด์จำนวนเงินและปริมาณเพื่อให้ชิดกัน
- โปรดทราบว่าเขตข้อมูลทั้งหมดที่คุณเติมข้อมูลผ่าน BDC ควรถือเป็นเขตข้อมูลประเภทอักขระในขณะที่เติมข้อมูลในตารางข้อมูล BDC
- ในบางหน้าจอ เมื่อคุณเติมค่าในตัวควบคุมตารางโดยใช้ BDC คุณจะต้องบันทึกจำนวนแถวที่ปรากฏบนขนาดเริ่มต้นของหน้าจอและโค้ดสำหรับแถวต่างๆ ถ้าคุณต้องเติมข้อมูลในแถวเพิ่มเติม คุณจะต้องเขียนโค้ดสำหรับฟังก์ชัน "เลื่อนหน้าลง" เหมือนกับที่คุณทำเมื่อคุณเติมข้อมูลในตัวควบคุมตารางด้วยตนเอง
- จำนวนบรรทัดที่จะปรากฏในสถานการณ์ข้างต้นจะแตกต่างกันไปตามขนาดหน้าจอที่ผู้ใช้ใช้ ดังนั้นควรเขียนโค้ดสำหรับขนาดหน้าจอมาตรฐานเสมอ และทำให้ BDC ของคุณทำงานในขนาดหน้าจอมาตรฐานเสมอ ไม่ว่าผู้ใช้จะคงขนาดหน้าจอไว้เป็นเท่าใด
การสร้างเซสชันอินพุตแบบแบตช์
- เปิดเซสชันเซสชันอินพุตแบบแบตช์โดยใช้โมดูลฟังก์ชัน BDC_OPEN_GROUP
- สำหรับแต่ละธุรกรรมในเซสชั่น:
- กรอก BDCDATA ด้วยค่าสำหรับหน้าจอและฟิลด์ทั้งหมดที่ประมวลผลในธุรกรรม
- โอนธุรกรรมไปยังเซสชันด้วย BDC_INSERT
- ปิดเซสชันการป้อนข้อมูลแบบแบตช์ด้วย BDC_CLOSE_GROUP
ตัวอย่าง: BDC ใช้ Call Transaction
โปรแกรมด้านล่างแสดงวิธีการทำธุรกรรมการเรียกใช้ตั้งแต่ต้นจนจบ โดยจะสร้างตาราง BDCDATA สำหรับสองหน้าจอของการทำธุรกรรม และเรียกใช้ในโหมด N (ไม่แสดงผล) พร้อมตารางข้อผิดพลาดเพื่อให้สามารถรายงานความล้มเหลวได้
REPORT z_bdc_call_transaction. DATA: lt_bdcdata TYPE STANDARD TABLE OF bdcdata, ls_bdcdata TYPE bdcdata, lt_messages TYPE STANDARD TABLE OF bdcmsgcoll. * Helper that appends one BDCDATA line FORM bdc_field USING p_fnam p_fval. CLEAR ls_bdcdata. ls_bdcdata-fnam = p_fnam. ls_bdcdata-fval = p_fval. APPEND ls_bdcdata TO lt_bdcdata. ENDFORM. * Screen 1: start the dynpro, then fill the fields CLEAR ls_bdcdata. ls_bdcdata-program = 'SAPMV45A'. ls_bdcdata-dynpro = '0101'. ls_bdcdata-dynbegin = 'X'. APPEND ls_bdcdata TO lt_bdcdata. PERFORM bdc_field USING 'VBAK-AUART' 'OR'. PERFORM bdc_field USING 'BDC_OKCODE' '/00'. * Run the transaction: mode N = no display, update S = synchronous CALL TRANSACTION 'VA01' USING lt_bdcdata MODE 'N' UPDATE 'S' MESSAGES INTO lt_messages. IF sy-subrc <> 0. * Read lt_messages to report the errors that occurred ENDIF.
💡 เคล็ดลับ: พารามิเตอร์ MODE ควบคุมการแสดงผล: A แสดงทุกหน้าจอ, E หยุดเฉพาะเมื่อเกิดข้อผิดพลาด และ N ทำงานโดยเงียบๆ ควรใช้ E ในระหว่างการทดสอบ และ N สำหรับการใช้งานจริง
เครื่องบันทึกอินพุตแบบแบตช์
เครื่องบันทึกอินพุตแบบแบตช์ (ระบบ > บริการ > อินพุตแบบแบตช์ > เครื่องบันทึก) จะบันทึกธุรกรรมที่ป้อนด้วยตนเอง และสร้างเซสชันอินพุตแบบแบตช์ที่สามารถดำเนินการในภายหลังได้โดยใช้ SM35
- เริ่มต้นเครื่องบันทึกอินพุตแบบแบตช์โดยเลือกปุ่มกดการบันทึกจากหน้าจอเริ่มต้นอินพุตแบบแบตช์
- ชื่อการบันทึกเป็นชื่อที่ผู้ใช้กำหนดและสามารถจับคู่ชื่อเซสชันอินพุตแบบแบตช์ซึ่งสามารถสร้างได้จากการบันทึก
- ป้อน SAP ธุรกรรมและเริ่มโพสต์ธุรกรรม
- หลังจากที่คุณโพสต์เสร็จแล้ว SAP ธุรกรรมที่คุณเลือกรับธุรกรรมและบันทึกเพื่อสิ้นสุดการบันทึกหรือธุรกรรมถัดไปและโพสต์ธุรกรรมอื่น
- เมื่อคุณบันทึกการบันทึกแล้ว คุณสามารถสร้างเซสชันอินพุตแบบแบตช์จากการบันทึกและ/หรือสร้างโปรแกรมอินพุตแบบแบตช์จากการบันทึกได้
- ขณะนี้สามารถวิเคราะห์เซสชันอินพุตแบบแบตช์ที่คุณสร้างได้เช่นเดียวกับเซสชันอินพุตแบบแบตช์อื่นๆ
- โปรแกรมที่สร้างขึ้นโดยฟังก์ชันของเครื่องบันทึกอินพุตแบบแบตช์เป็นเครื่องมืออันทรงพลังสำหรับโปรแกรมเมอร์อินเทอร์เฟซข้อมูล เป็นฐานที่มั่นคงซึ่งสามารถเปลี่ยนแปลงได้ตามความต้องการของลูกค้า
⚠️คำเตือน: การบันทึกจะจับภาพลำดับหน้าจออย่างแม่นยำตามที่เกิดขึ้น ดังนั้นหน้าจอที่ปรากฏเฉพาะเมื่อป้อนข้อมูลบางอย่าง เช่น ป๊อปอัพแจ้งเตือนการกรอกข้อมูลไม่สมบูรณ์ จะไม่ถูกบันทึก ควรทดสอบโปรแกรมที่สร้างขึ้นด้วยข้อมูลที่ทำให้หน้าจอเสริมทุกหน้าจอปรากฏขึ้นเสมอ




