สมาร์ทฟอร์มใน SAP ABAP
⚡ สรุปอย่างชาญฉลาด
สมาร์ทฟอร์มใน SAP ABAP ใช้ในการสร้างและบำรุงรักษาแบบฟอร์มสำหรับการพิมพ์จำนวนมาก โดยสามารถส่งออกไปยังเครื่องพิมพ์ เครื่องแฟกซ์ อีเมล หรืออินเทอร์เน็ตได้ หน้านี้อธิบายถึงสถาปัตยกรรม โหนด Form Builder หน้าต่าง ตาราง เทมเพลต สไตล์ และโมดูลฟังก์ชันที่สร้างขึ้น

Smart Forms คืออะไรใน SAP เอบัพ?
SAP Smart Forms ใช้เพื่อสร้างและรักษาแบบฟอร์มสำหรับการพิมพ์จำนวนมาก SAP ระบบเป็นสื่อส่งออก SAP แบบฟอร์มอัจฉริยะรองรับเครื่องพิมพ์ แฟกซ์ อีเมล หรืออินเทอร์เน็ต (โดยใช้เอาท์พุต XML ที่สร้างขึ้น)
SAP เปิดตัว SmartForms ในปี 1998 เพื่อเอาชนะข้อจำกัดต่างๆ SAP สคริปต์ SmartForms พัฒนา บำรุงรักษา และขนส่งได้ง่ายกว่า SAP ต้นฉบับ
การเปรียบเทียบ Smart Forms และ SapScripts
- เป็นไปได้หลายรูปแบบหน้าใน SmartForms ซึ่งไม่เป็นเช่นนั้น SAP สคริปต์
- เป็นไปได้ที่จะมี SmartForm โดยไม่มีหน้าต่างหลัก
- สามารถเขียนกิจวัตรในเครื่องมือ SmartForms ได้
- SmartForms จะสร้างโมดูลฟังก์ชันเมื่อเปิดใช้งาน
- ไม่สามารถสร้างป้ายกำกับใน SmartForms
| หลักเกณฑ์ | สมาร์ทฟอร์ม | SAPต้นฉบับ |
|---|---|---|
| รูปแบบหน้า | รูปแบบหน้าหลายแบบในแบบฟอร์มเดียว | แบบฟอร์มหนึ่งหน้าต่อหนึ่งแบบฟอร์ม |
| หน้าต่างหลัก | ไม่บังคับ | จำเป็นต้องมีหน้าต่างหลักเพียงบานเดียวเท่านั้น |
| การปฏิบัติ | เขียนไว้ในแบบฟอร์มนั้นเอง | เขียนในโปรแกรมพิมพ์แยกต่างหาก |
| การกระตุ้น | สร้างโมดูลฟังก์ชัน | ไม่มีการสร้างโมดูลฟังก์ชัน |
| ป้ายกำกับ | ไม่สามารถสร้างได้ | สามารถสร้างได้ |
ข้อดีของแบบฟอร์มอัจฉริยะ
- ช่วยให้ปรับเปลี่ยนแบบฟอร์มได้โดยไม่ต้องมีความรู้ด้านการเขียนโปรแกรม เนื่องจากมีส่วนติดต่อผู้ใช้แบบกราฟิกทั้งหมด
- เมื่อเปิดใช้งานแบบฟอร์มอัจฉริยะ ระบบจะสร้างโมดูลฟังก์ชันและขณะรันไทม์โดยอัตโนมัติ
- หากต้องการเปลี่ยนแปลงใดๆ เราต้องใช้การลากและวาง ตัดและวาง การดำเนินการเหล่านี้ไม่รวมถึงการเขียนบรรทัดโค้ดหรือการใช้ภาษาสคริปต์
- เราสามารถแทรกตารางแบบคงที่และไดนามิกได้ ซึ่งรวมถึงการป้อนบรรทัดในแต่ละเซลล์ของตาราง การทริกเกอร์เหตุการณ์สำหรับส่วนหัวของตารางและผลรวมย่อย และการเรียงลำดับข้อมูลก่อนเอาต์พุต
- แบบฟอร์มอัจฉริยะช่วยให้ผู้ใช้สามารถใส่กราฟิก ซึ่งสามารถแสดงเป็นส่วนหนึ่งของแบบฟอร์มหรือเป็นกราฟิกพื้นหลังได้ ในระหว่างการพิมพ์ ผู้ใช้สามารถซ่อนกราฟิกพื้นหลังได้ตามต้องการ
- การเผยแพร่เว็บสามารถทำได้โดยใช้ที่สร้างขึ้น XML เอาท์พุต
Archiการสอนของ SAP สมาร์ทฟอร์ม
แผนภาพสถาปัตยกรรมแสดงให้เห็นถึงสามชั้นที่เกี่ยวข้อง แบบฟอร์มถูกออกแบบใน Form Builder การเปิดใช้งานจะสร้างโมดูลฟังก์ชัน และโปรแกรมการพิมพ์จะเรียกใช้โมดูลนั้นพร้อมกับข้อมูลแอปพลิเคชัน ขั้นตอนการออกแบบของชั้นแรกจะกล่าวถึงต่อไป
คู่มือสมาร์ทฟอร์ม
ให้เราผ่านมันไปใน SAP ระบบ-
- เข้าสู่การทำธุรกรรม สมาร์ทฟอร์ม ในช่องรหัสธุรกรรม
- ในหน้าจอถัดไป ให้ป้อนชื่อแบบฟอร์มแล้วคลิกสร้าง
หน้าจอถัดไปจะแบ่งออกเป็นสามส่วน-
หน้าต่างนำทาง ประกอบด้วยโหนดและโหนดย่อย ประกอบด้วยองค์ประกอบทั้งหมด (ข้อความ หน้าต่าง ฯลฯ) ที่เป็นของแบบฟอร์ม SAP
- หน้าต่างการบำรุงรักษา แสดงคุณสมบัติขององค์ประกอบ
- เครื่องพิมพ์แบบฟอร์ม หน้าต่างแสดงโครงร่างของเพจ
เมื่อใดก็ตามที่เราสร้างแบบฟอร์มอัจฉริยะ SAP สร้าง/สร้างโมดูลฟังก์ชันไม่เหมือน SAPสคริปต์ SAP แบบฟอร์มช่วยให้คุณสามารถเปลี่ยนภาษาได้
ในหน้าต่างนำทาง คุณจะพบ
การประกาศข้อมูลทั่วโลก : ข้อมูลที่กำหนดที่นี่สามารถใช้ได้ทั่วทั้งสมาร์ทฟอร์มเพื่อวัตถุประสงค์ในการเขียนโค้ด
ส่วนต่อประสานแบบฟอร์ม : ข้อมูลทั้งหมดที่จะถูกส่งผ่านไปยังสมาร์ทฟอร์มจากโปรแกรม Print จะถูกกำหนดไว้ที่นี่
การคลิกขวาบนเพจจะทำให้สามารถสร้างเพจ หน้าต่าง กราฟิก หรือที่อยู่ใหม่ได้
การพิมพ์จะเกิดขึ้นตามฟิลด์ 'หน้าถัดไป'
แต่การประมวลผลจะเกิดขึ้นตามลำดับในหน้าต่างการนำทาง!
สำหรับภาพพื้นหลังและกราฟิก คุณสามารถเลือกภาพบิตแมปขาวดำหรือสี และจัดเก็บไว้ในรูปแบบข้อความมาตรฐาน คุณสามารถเลี่ยงจากหน้าจอสมาร์ทฟอร์มและเปิดหน้าจอฟอร์มกราฟิกได้ รหัสธุรกรรม: Se78
การตั้งค่ากราฟิกในหน้าต่าง Smart Form -
Windows ในรูปแบบสมาร์ท
มีสองประเภทเป็น Windows
- หลัก
- รอง
จุดสำคัญที่ควรทราบ
- คุณไม่สามารถมีหน้าต่างหลักมากกว่า 1 หน้าต่างในหนึ่งหน้าได้ คุณสามารถมีหน้าต่างรองได้หลายหน้าต่าง
- ไม่ว่าคุณจะพิมพ์อะไรในหน้าต่างรอง มันก็ต้องเป็นแบบคงที่ (ถ้าคุณมี 20 บรรทัดใน PO และมีข้อจำกัดของหน้า บรรทัดนั้นจะถูกส่งต่อไปยังหน้าถัดไปในหน้าต่างหลัก กล่าวคือ ในเนื้อหาประเภทก่อนหน้าและประเภทถัดไป บรรทัดเหล่านั้นจะถูกพิมพ์ตามลำดับในหน้าต่างหลัก ซึ่งไม่อนุญาตให้ทำในหน้าต่างรอง)
ภายในหน้าต่างหลัก เราสามารถเพิ่มข้อความเป็นข้อมูลเบื้องต้นเพื่อปรับแต่งผลลัพธ์ของแบบฟอร์มได้
ตัวเลือกผลลัพธ์ในแต่ละหน้าต่างจะกำหนดขนาดเส้น ความกว้าง สี และพื้นหลังที่จะใส่
Smartforms มีตัวเลือกในการให้หมายเลขที่อยู่ซึ่งคงอยู่ในการจัดการที่อยู่ส่วนกลาง ที่อยู่จะถูกนำมาจากตาราง ADRC โดยตรง และจะถูกเติมลงในแบบฟอร์ม
มีตัวแก้ไขสองแบบที่แตกต่างกันใน Smartforms ได้แก่ ตัวแก้ไขปกติ
และตัวแก้ไขกราฟิก
การตั้งค่านี้สามารถเปลี่ยนแปลงได้โดยใช้ Configure editor ใน Utilities
ตารางในหน้าต่าง
ใน Table Painter คุณสามารถวาดรูปแบบตามความต้องการของลูกค้า (เช่น หัวเรื่อง หัวเรื่องย่อย รายการ ยอดรวมย่อย ยอดรวม ฯลฯ)
คุณสามารถใช้เค้าโครงตารางเพื่อกำหนด:
- จำนวนบรรทัดและเซลล์
- ความสูงของแต่ละบรรทัด
- ความกว้างของแต่ละเซลล์
- การจัดตำแหน่งของตารางในหน้าต่าง
ตารางจะแสดงประเภทเส้นต่างๆ ที่จะใช้ในตาราง ประเภทของเส้นจะกำหนดขนาดของแต่ละเซลล์และจำนวนเซลล์ในแต่ละบรรทัด
ขั้นตอนการเขียนโปรแกรม Smart Forms
เมื่อ SAP สร้างเทมเพลต Smart Form ผู้ใช้สร้างโครงร่างแบบฟอร์ม กำหนดฟิลด์ เงื่อนไข และคำแนะนำการเขียนโปรแกรมพิเศษในเทมเพลต Smart Form โดยใช้ Smart Form Builder
หลังจากการออกแบบแบบฟอร์มเสร็จสมบูรณ์ จะต้องเปิดใช้งานแบบฟอร์มก่อนจึงจะสามารถทดสอบหรือเข้าถึงได้โดยโปรแกรมพิมพ์ การเปิดใช้งานแบบฟอร์มจะเริ่มต้นการสร้างโมดูลฟังก์ชันที่จัดการการประมวลผลของแบบฟอร์มทั้งหมด
โมดูลฟังก์ชันนี้จะโต้ตอบกับแอปพลิเคชันโปรแกรม/โปรแกรมการพิมพ์เพื่อสร้างเอาต์พุตในสื่อเอาต์พุตที่ผู้ใช้กำหนดสำหรับอุปกรณ์ที่ระบุ
ในกรณีของแบบฟอร์มอัจฉริยะ เราใช้ 2 โมดูลฟังก์ชันสำหรับการประมวลผลแบบฟอร์มอัจฉริยะ ไปที่โมดูลฟังก์ชันแรก เราส่งชื่อของแบบฟอร์มอัจฉริยะเป็นพารามิเตอร์การนำเข้า จากนั้นส่งคืนชื่อของโมดูลฟังก์ชันที่สร้างขึ้นแบบไดนามิกซึ่งจะเรียกสมาร์ทฟอร์มจริงๆ
ชื่อสมาร์ทฟอร์มสามารถส่งผ่านไปยังโมดูลฟังก์ชัน – 'SSF_FUNCTION_MODULE_NAME'
สิ่งนี้จะส่งคืนชื่อโมดูลฟังก์ชันของสมาร์ทฟอร์มที่ถูกอ้างอิง
รายการพิมพ์จะเรียกเอฟเอ็ม 'SSF_FUNCTION_MODULE_NAME' เพื่อรับชื่อโมดูลฟังก์ชันที่รันไทม์ หลังจากนั้นจะเรียกโมดูลฟังก์ชันที่ได้รับมาเพื่อดำเนินการสมาร์ทฟอร์ม
วิธีเรียกใช้แบบฟอร์มอัจฉริยะจากโปรแกรมการพิมพ์
การเรียกใช้งานแบบสองขั้นตอนที่อธิบายไว้ข้างต้นนั้นเขียนในรูปแบบเดียวกันเสมอ โปรแกรมจะทำการแปลงชื่อที่สร้างขึ้นก่อน จากนั้นจึงเรียกใช้งานด้วยข้อมูลของแอปพลิเคชัน
- แก้ไขชื่อโมดูลฟังก์ชัน: ส่งชื่อฟอร์มไปยัง SSF_FUNCTION_MODULE_NAME ชื่อที่สร้างขึ้นจะเปลี่ยนแปลงไปตามแต่ละระบบ ดังนั้นจึงไม่ควรเขียนชื่อแบบตายตัวลงไป
- เรียกใช้โมดูลที่สร้างขึ้นแบบไดนามิก: ใช้คำสั่ง CALL FUNCTION โดยส่งค่าชื่อที่แก้ไขแล้วไปยังตัวแปร และส่งข้อมูลผ่านพารามิเตอร์ที่กำหนดไว้ในอินเทอร์เฟซของฟอร์ม
- ควบคุมผลลัพธ์: กรอกข้อมูลในโครงสร้างควบคุม SSFCTRLOP เพื่อระงับกล่องโต้ตอบการพิมพ์หรือเพื่อขอดูตัวอย่าง และกรอกข้อมูลใน SSFCOMPOP ด้วยอุปกรณ์เอาต์พุต
- จัดการกับข้อยกเว้น: โมดูลที่สร้างขึ้นจะทำให้เกิดข้อผิดพลาด FORMATTING_ERROR, INTERNAL_ERROR, SEND_ERROR และ USER_CANCELED ดังนั้นจึงต้องตรวจสอบ SY-SUBRC หลังจากการเรียกใช้ฟังก์ชัน
DATA: lv_fm_name TYPE rs38l_fnam, ls_control TYPE ssfctrlop, ls_output TYPE ssfcompop. * 1. Get the name of the generated function module CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING formname = 'Z_SMART_INVOICE' IMPORTING fm_name = lv_fm_name EXCEPTIONS no_form = 1 no_function_module = 2 OTHERS = 3. IF sy-subrc <> 0. MESSAGE e001(zsf). " Form not found ENDIF. * 2. Call the generated module with the form data ls_control-no_dialog = 'X'. ls_control-preview = 'X'. CALL FUNCTION lv_fm_name EXPORTING control_parameters = ls_control output_options = ls_output is_header = ls_header TABLES it_items = lt_items EXCEPTIONS formatting_error = 1 internal_error = 2 send_error = 3 user_canceled = 4 OTHERS = 5.
⚠️คำเตือน: ชื่อโมดูลฟังก์ชันที่สร้างขึ้น เช่น /1BCDWB/SF00000123 จะแตกต่างกันไปในแต่ละระบบ จึงต้องระบุชื่อด้วย SSF_FUNCTION_MODULE_NAME เสมอ มิเช่นนั้นโปรแกรมจะล้มเหลวหลังจากการส่งผ่านข้อมูล
แม่แบบ
สามารถใช้เทมเพลตได้เมื่อคุณทราบขนาดที่แน่นอนของผลลัพธ์ หรือผลลัพธ์อยู่ในรูปแบบที่กำหนดไว้แล้ว
เช่น แบบฟอร์มภาษี/เช็ค/แบบฟอร์มสายการบิน/ตั๋วรถไฟ: เทมเพลตการใช้งานทั้งหมดนี้
ความแตกต่างที่สำคัญระหว่างตารางและเทมเพลตคือ ในตาราง ความสูงจะเปลี่ยนแปลงได้แบบไดนามิก ในขณะที่ในเทมเพลต เราเรียกแถวว่า 'บรรทัด'
สไตล์สมาร์ท
สไตล์อัจฉริยะประกอบด้วย:
- ข้อมูลส่วนหัวที่มีค่าเริ่มต้นของสไตล์อัจฉริยะ
- รูปแบบย่อหน้ารวมถึงการเยื้องและระยะห่าง คุณลักษณะแบบอักษร แท็บ และโครงร่างและลำดับเลข
- รูปแบบอักขระรวมถึงเอฟเฟกต์ (ตัวยก ตัวห้อย) บาร์โค้ด และคุณลักษณะแบบอักษร
- สีและขีดเส้นใต้สำหรับย่อหน้าหรือรูปแบบอักขระ
คุณสามารถใช้ธุรกรรม 'smartforms' / 'smartstyles' เพื่อสร้างสไตล์อัจฉริยะได้
💡 เคล็ดลับ: กำหนด Smart Style ในแอตทริบิวต์ของฟอร์มแทนที่จะกำหนดที่แต่ละโหนดข้อความ การเปลี่ยนแปลงสไตล์เพียงครั้งเดียวจะส่งผลต่อทุกย่อหน้าในฟอร์ม
นั่นคือทั้งหมดสำหรับบทช่วยสอนนี้






















