สมาร์ทฟอร์มใน SAP ABAP

⚡ สรุปอย่างชาญฉลาด

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

  • 🖨️ วัตถุประสงค์หลัก: Smart Forms ผลิตเอกสารสิ่งพิมพ์จำนวนมากและรองรับการส่งออกไปยังเครื่องพิมพ์ โทรสาร อีเมล และอินเทอร์เน็ตผ่านไฟล์ XML ที่สร้างขึ้น
  • 🕰️ ต้นทาง: SAP ได้มีการนำ Smart Forms มาใช้ในปี 1998 เพื่อเอาชนะข้อจำกัดต่างๆ SAPสคริปต์เหล่านี้พัฒนา บำรุงรักษา และขนส่งได้ง่ายกว่า
  • 🧱 การออกแบบกราฟิก: ในโปรแกรมสร้างแบบฟอร์ม สามารถจัดเรียงโหนดได้ด้วยการลากและวาง ทำให้สามารถปรับแต่งแบบฟอร์มได้โดยไม่ต้องเขียนโค้ดแม้แต่บรรทัดเดียว
  • ⚙️ โมดูลที่สร้างขึ้น: การเปิดใช้งานฟอร์มจะสร้างโมดูลฟังก์ชันขึ้น และโปรแกรมการพิมพ์จะได้รับชื่อของโมดูลนั้นในระหว่างการทำงานโดยใช้ SSF_FUNCTION_MODULE_NAME
  • 🪟 กฎของหน้าต่าง: หน้าเว็บหนึ่งหน้าจะมีหน้าต่างหลักได้มากที่สุดหนึ่งหน้าต่าง ซึ่งจะเลื่อนไปตามหน้าอื่นๆ ในขณะที่หน้าต่างรองแต่ละหน้าต่างจะแสดงเฉพาะเนื้อหาคงที่เท่านั้น
  • 📐 ตารางหรือแม่แบบ: ตารางจะขยายขนาดตามข้อมูลที่มีอยู่ ในขณะที่เทมเพลตจะใช้เมื่อผลลัพธ์มีขนาดคงที่ เช่น เช็คหรือตั๋ว
  • 🎨 สไตล์เก๋ไก๋: รูปแบบย่อหน้า รูปแบบตัวอักษร สี และบาร์โค้ดจะถูกจัดเก็บไว้ใน Smart Style และนำกลับมาใช้ซ้ำในแบบฟอร์มต่างๆ

SAP ABAP Smart Forms

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 สมาร์ทฟอร์ม

Archiการสอนของ SAP สมาร์ทฟอร์ม

แผนภาพสถาปัตยกรรมแสดงให้เห็นถึงสามชั้นที่เกี่ยวข้อง แบบฟอร์มถูกออกแบบใน Form Builder การเปิดใช้งานจะสร้างโมดูลฟังก์ชัน และโปรแกรมการพิมพ์จะเรียกใช้โมดูลนั้นพร้อมกับข้อมูลแอปพลิเคชัน ขั้นตอนการออกแบบของชั้นแรกจะกล่าวถึงต่อไป

คู่มือสมาร์ทฟอร์ม

ให้เราผ่านมันไปใน SAP ระบบ-

  1. เข้าสู่การทำธุรกรรม สมาร์ทฟอร์ม ในช่องรหัสธุรกรรม
  2. ในหน้าจอถัดไป ให้ป้อนชื่อแบบฟอร์มแล้วคลิกสร้าง

คู่มือสมาร์ทฟอร์ม

หน้าจอถัดไปจะแบ่งออกเป็นสามส่วน-

คู่มือสมาร์ทฟอร์ม

หน้าต่างนำทาง ประกอบด้วยโหนดและโหนดย่อย ประกอบด้วยองค์ประกอบทั้งหมด (ข้อความ หน้าต่าง ฯลฯ) ที่เป็นของแบบฟอร์ม SAP

  • หน้าต่างการบำรุงรักษา แสดงคุณสมบัติขององค์ประกอบ
  • เครื่องพิมพ์แบบฟอร์ม หน้าต่างแสดงโครงร่างของเพจ

เมื่อใดก็ตามที่เราสร้างแบบฟอร์มอัจฉริยะ SAP สร้าง/สร้างโมดูลฟังก์ชันไม่เหมือน SAPสคริปต์ SAP แบบฟอร์มช่วยให้คุณสามารถเปลี่ยนภาษาได้

ในหน้าต่างนำทาง คุณจะพบ

การประกาศข้อมูลทั่วโลก : ข้อมูลที่กำหนดที่นี่สามารถใช้ได้ทั่วทั้งสมาร์ทฟอร์มเพื่อวัตถุประสงค์ในการเขียนโค้ด

ส่วนต่อประสานแบบฟอร์ม : ข้อมูลทั้งหมดที่จะถูกส่งผ่านไปยังสมาร์ทฟอร์มจากโปรแกรม Print จะถูกกำหนดไว้ที่นี่

คู่มือสมาร์ทฟอร์ม

การคลิกขวาบนเพจจะทำให้สามารถสร้างเพจ หน้าต่าง กราฟิก หรือที่อยู่ใหม่ได้

คู่มือสมาร์ทฟอร์ม

การพิมพ์จะเกิดขึ้นตามฟิลด์ 'หน้าถัดไป'

แต่การประมวลผลจะเกิดขึ้นตามลำดับในหน้าต่างการนำทาง!

คู่มือสมาร์ทฟอร์ม

สำหรับภาพพื้นหลังและกราฟิก คุณสามารถเลือกภาพบิตแมปขาวดำหรือสี และจัดเก็บไว้ในรูปแบบข้อความมาตรฐาน คุณสามารถเลี่ยงจากหน้าจอสมาร์ทฟอร์มและเปิดหน้าจอฟอร์มกราฟิกได้ รหัสธุรกรรม: Se78

คู่มือสมาร์ทฟอร์ม

การตั้งค่ากราฟิกในหน้าต่าง Smart Form -

คู่มือสมาร์ทฟอร์ม

Windows ในรูปแบบสมาร์ท

Windows ในรูปแบบสมาร์ท

มีสองประเภทเป็น Windows

  1. หลัก
  2. รอง

จุดสำคัญที่ควรทราบ

  • คุณไม่สามารถมีหน้าต่างหลักมากกว่า 1 หน้าต่างในหนึ่งหน้าได้ คุณสามารถมีหน้าต่างรองได้หลายหน้าต่าง
  • ไม่ว่าคุณจะพิมพ์อะไรในหน้าต่างรอง มันก็ต้องเป็นแบบคงที่ (ถ้าคุณมี 20 บรรทัดใน PO และมีข้อจำกัดของหน้า บรรทัดนั้นจะถูกส่งต่อไปยังหน้าถัดไปในหน้าต่างหลัก กล่าวคือ ในเนื้อหาประเภทก่อนหน้าและประเภทถัดไป บรรทัดเหล่านั้นจะถูกพิมพ์ตามลำดับในหน้าต่างหลัก ซึ่งไม่อนุญาตให้ทำในหน้าต่างรอง)

Windows ในรูปแบบสมาร์ท

ภายในหน้าต่างหลัก เราสามารถเพิ่มข้อความเป็นข้อมูลเบื้องต้นเพื่อปรับแต่งผลลัพธ์ของแบบฟอร์มได้

Windows ในรูปแบบสมาร์ท

ตัวเลือกผลลัพธ์ในแต่ละหน้าต่างจะกำหนดขนาดเส้น ความกว้าง สี และพื้นหลังที่จะใส่

Windows ในรูปแบบสมาร์ท

Smartforms มีตัวเลือกในการให้หมายเลขที่อยู่ซึ่งคงอยู่ในการจัดการที่อยู่ส่วนกลาง ที่อยู่จะถูกนำมาจากตาราง ADRC โดยตรง และจะถูกเติมลงในแบบฟอร์ม

Windows ในรูปแบบสมาร์ท

มีตัวแก้ไขสองแบบที่แตกต่างกันใน Smartforms ได้แก่ ตัวแก้ไขปกติ

Windows ในรูปแบบสมาร์ท

และตัวแก้ไขกราฟิก

Windows ในรูปแบบสมาร์ท

การตั้งค่านี้สามารถเปลี่ยนแปลงได้โดยใช้ Configure editor ใน Utilities

ตารางในหน้าต่าง

ใน Table Painter คุณสามารถวาดรูปแบบตามความต้องการของลูกค้า (เช่น หัวเรื่อง หัวเรื่องย่อย รายการ ยอดรวมย่อย ยอดรวม ฯลฯ)

คุณสามารถใช้เค้าโครงตารางเพื่อกำหนด:

  • จำนวนบรรทัดและเซลล์
  • ความสูงของแต่ละบรรทัด
  • ความกว้างของแต่ละเซลล์
  • การจัดตำแหน่งของตารางในหน้าต่าง

Windows ในรูปแบบสมาร์ท

ตารางจะแสดงประเภทเส้นต่างๆ ที่จะใช้ในตาราง ประเภทของเส้นจะกำหนดขนาดของแต่ละเซลล์และจำนวนเซลล์ในแต่ละบรรทัด

Windows ในรูปแบบสมาร์ท

ขั้นตอนการเขียนโปรแกรม Smart Forms

เมื่อ SAP สร้างเทมเพลต Smart Form ผู้ใช้สร้างโครงร่างแบบฟอร์ม กำหนดฟิลด์ เงื่อนไข และคำแนะนำการเขียนโปรแกรมพิเศษในเทมเพลต Smart Form โดยใช้ Smart Form Builder

หลังจากการออกแบบแบบฟอร์มเสร็จสมบูรณ์ จะต้องเปิดใช้งานแบบฟอร์มก่อนจึงจะสามารถทดสอบหรือเข้าถึงได้โดยโปรแกรมพิมพ์ การเปิดใช้งานแบบฟอร์มจะเริ่มต้นการสร้างโมดูลฟังก์ชันที่จัดการการประมวลผลของแบบฟอร์มทั้งหมด

โมดูลฟังก์ชันนี้จะโต้ตอบกับแอปพลิเคชันโปรแกรม/โปรแกรมการพิมพ์เพื่อสร้างเอาต์พุตในสื่อเอาต์พุตที่ผู้ใช้กำหนดสำหรับอุปกรณ์ที่ระบุ

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

ชื่อสมาร์ทฟอร์มสามารถส่งผ่านไปยังโมดูลฟังก์ชัน – 'SSF_FUNCTION_MODULE_NAME'

ขั้นตอนการเขียนโปรแกรม Smart Forms

สิ่งนี้จะส่งคืนชื่อโมดูลฟังก์ชันของสมาร์ทฟอร์มที่ถูกอ้างอิง

ขั้นตอนการเขียนโปรแกรม Smart Forms

รายการพิมพ์จะเรียกเอฟเอ็ม 'SSF_FUNCTION_MODULE_NAME' เพื่อรับชื่อโมดูลฟังก์ชันที่รันไทม์ หลังจากนั้นจะเรียกโมดูลฟังก์ชันที่ได้รับมาเพื่อดำเนินการสมาร์ทฟอร์ม

ขั้นตอนการเขียนโปรแกรม Smart Forms

วิธีเรียกใช้แบบฟอร์มอัจฉริยะจากโปรแกรมการพิมพ์

การเรียกใช้งานแบบสองขั้นตอนที่อธิบายไว้ข้างต้นนั้นเขียนในรูปแบบเดียวกันเสมอ โปรแกรมจะทำการแปลงชื่อที่สร้างขึ้นก่อน จากนั้นจึงเรียกใช้งานด้วยข้อมูลของแอปพลิเคชัน

  1. แก้ไขชื่อโมดูลฟังก์ชัน: ส่งชื่อฟอร์มไปยัง SSF_FUNCTION_MODULE_NAME ชื่อที่สร้างขึ้นจะเปลี่ยนแปลงไปตามแต่ละระบบ ดังนั้นจึงไม่ควรเขียนชื่อแบบตายตัวลงไป
  2. เรียกใช้โมดูลที่สร้างขึ้นแบบไดนามิก: ใช้คำสั่ง CALL FUNCTION โดยส่งค่าชื่อที่แก้ไขแล้วไปยังตัวแปร และส่งข้อมูลผ่านพารามิเตอร์ที่กำหนดไว้ในอินเทอร์เฟซของฟอร์ม
  3. ควบคุมผลลัพธ์: กรอกข้อมูลในโครงสร้างควบคุม SSFCTRLOP เพื่อระงับกล่องโต้ตอบการพิมพ์หรือเพื่อขอดูตัวอย่าง และกรอกข้อมูลใน SSFCOMPOP ด้วยอุปกรณ์เอาต์พุต
  4. จัดการกับข้อยกเว้น: โมดูลที่สร้างขึ้นจะทำให้เกิดข้อผิดพลาด 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 เสมอ มิเช่นนั้นโปรแกรมจะล้มเหลวหลังจากการส่งผ่านข้อมูล

แม่แบบ

สามารถใช้เทมเพลตได้เมื่อคุณทราบขนาดที่แน่นอนของผลลัพธ์ หรือผลลัพธ์อยู่ในรูปแบบที่กำหนดไว้แล้ว

เช่น แบบฟอร์มภาษี/เช็ค/แบบฟอร์มสายการบิน/ตั๋วรถไฟ: เทมเพลตการใช้งานทั้งหมดนี้

ความแตกต่างที่สำคัญระหว่างตารางและเทมเพลตคือ ในตาราง ความสูงจะเปลี่ยนแปลงได้แบบไดนามิก ในขณะที่ในเทมเพลต เราเรียกแถวว่า 'บรรทัด'

เทมเพลตใน SAP ABAP

สไตล์สมาร์ท

สไตล์อัจฉริยะประกอบด้วย:

  • ข้อมูลส่วนหัวที่มีค่าเริ่มต้นของสไตล์อัจฉริยะ
  • รูปแบบย่อหน้ารวมถึงการเยื้องและระยะห่าง คุณลักษณะแบบอักษร แท็บ และโครงร่างและลำดับเลข
  • รูปแบบอักขระรวมถึงเอฟเฟกต์ (ตัวยก ตัวห้อย) บาร์โค้ด และคุณลักษณะแบบอักษร
  • สีและขีดเส้นใต้สำหรับย่อหน้าหรือรูปแบบอักขระ

คุณสามารถใช้ธุรกรรม 'smartforms' / 'smartstyles' เพื่อสร้างสไตล์อัจฉริยะได้

เทมเพลตใน SAP ABAP

💡 เคล็ดลับ: กำหนด Smart Style ในแอตทริบิวต์ของฟอร์มแทนที่จะกำหนดที่แต่ละโหนดข้อความ การเปลี่ยนแปลงสไตล์เพียงครั้งเดียวจะส่งผลต่อทุกย่อหน้าในฟอร์ม

นั่นคือทั้งหมดสำหรับบทช่วยสอนนี้

คำถามที่พบบ่อย

ตารางจะขยายขนาดตามจำนวนแถวในตารางภายใน ดังนั้นความสูงของตารางจึงเปลี่ยนแปลงไปในระหว่างการทำงาน ส่วนเทมเพลตจะมีจำนวนแถวและเซลล์คงที่ ซึ่งเหมาะสำหรับเช็ค ตั๋ว หรือแบบฟอร์มภาษี

ตั้งค่า GETOTF ในโครงสร้างควบคุม อ่านข้อมูล OTF ที่ส่งคืนโดยโมดูลที่สร้างขึ้น และส่งต่อไปยังฟังก์ชันโมดูล CONVERT_OTF ผลลัพธ์ที่ได้คือตารางไบนารีที่สามารถส่งทางอีเมลหรือดาวน์โหลดได้

ไม่ แบบฟอร์มอัจฉริยะไม่ขึ้นอยู่กับไคลเอ็นต์ ดังนั้นจึงสามารถใช้งานได้ในทุกไคลเอ็นต์ของระบบหลังจากเปิดใช้งานแล้ว SAPรูปแบบสคริปต์ขึ้นอยู่กับไคลเอ็นต์และต้องคัดลอกด้วย SCC1

ผู้ช่วย AI จะร่างโปรแกรมการพิมพ์ รวมถึงการเรียกใช้ SSF_FUNCTION_MODULE_NAME และการจัดการข้อผิดพลาด ส่วนเค้าโครงนั้นยังคงจัดเรียงทีละโหนดใน Form Builder เนื่องจากเป็นวัตถุกราฟิก

ใช่แล้ว Smart Forms ยังคงเป็นตัวเลือกเริ่มต้นสำหรับการพิมพ์จำนวนมากในหลายๆ กรณี SAP ในขณะที่ Adobe Forms ครอบคลุมเอกสารแบบโต้ตอบ เครื่องมือ AI ส่วนใหญ่จะช่วยเร่งความเร็วงานที่เกี่ยวข้อง เช่น การอ่านแบบฟอร์มและการร่างเอกสาร

สรุปโพสต์นี้ด้วย: