บทที่ 3 / 8

ส่วนจัดการโปรแกรม (Program Flow)

before.program, group, choice, field

3 / 8
1

before.program — การเตรียมข้อมูลเริ่มต้น

ส่วนนี้ทำงานก่อนโปรแกรมเริ่ม ใช้เตรียมค่า parameter ที่รับมาจากเมนูหรือโปรแกรมอื่น

before.program section
before.program:
    if sel.parent.num.selected() > 0 then
        import("sccoa003.ofbp", bpid.f)
        import("sccoa003.ofbp", bpid.t)
        import("sccoa003.coan", coan.f)
        import("sccoa003.coan", coan.t)
    else
        bpid.t = "ZZZZZZZZZ"
    endif
    
    if isspace(bpid.t) then
        bpid.t = "ZZZZZZZZZ"
    endif
คำอธิบาย

ขั้นตอนการทำงาน:

  1. sel.parent.num.selected() — ตรวจว่าผู้ใช้เลือกข้อมูลจากหน้าจอก่อนหน้ามากี่รายการ
  2. import("sccoa003.ofbp", bpid.f) — นำเข้าค่า Business Partner ID จากหน้าจอก่อนหน้ามาเก็บไว้เป็นช่วง (from-to)
  3. ถ้าไม่ได้เลือกอะไร กำหนดค่า "ZZZZZZZZZ" เป็นค่าสูงสุด เพื่อให้แสดงข้อมูลทั้งหมด
  4. isspace() — เช็คว่าค่าเป็นค่าว่างหรือไม่
2

choice section — การเลือกทำงาน

ส่วนนี้กำหนดปุ่มคำสั่งที่ผู้ใช้กดได้บนหน้าจอ

ส่วน choice — ปุ่มคำสั่ง
choice.cont.process:
on.choice:
   execute(print.data)

choice.print.data:
on.choice:
   if rprt_open() then
       read.main.table()
       rprt_close()
   else
       choice.again()
   endif
คำอธิบาย

ใน LN 4GL มี 2 ปุ่มหลักที่ใช้:

  • choice.cont.process — ปุ่ม "Continue" (ดำเนินการต่อ) — จะเรียก print.data
  • choice.print.data — ปุ่ม "Print" — เปิดรายงานด้วย rprt_open() แล้วอ่านข้อมูลด้วย read.main.table()
กระบวนการพิมพ์รายงาน

rprt_open()read.main.table()rprt_close()

นี่คือรูปแบบมาตรฐานของ LN สำหรับการสร้างรายงาน

3

field section — เมื่อค่าเปลี่ยน

ส่วนนี้กำหนดว่าเมื่อผู้ใช้เปลี่ยนค่าในช่องกรอกข้อมูล ให้ทำอะไร

ส่วน field — Event ตอนเปลี่ยนค่า
field.coan.f:
when.field.changes:
   coan.t = coan.f

field.bpid.f:
when.field.changes:
   bpid.t = bpid.f
คำอธิบาย

เมื่อผู้ใช้กรอกค่า:

  • ถ้ากรอก COA Number (From) → ค่า COA Number (To) จะถูกตั้งเป็นค่าเดียวกันอัตโนมัติ
  • ถ้ากรอก Business Partner (From) → ค่า Business Partner (To) จะถูกตั้งเป็นค่าเดียวกันอัตโนมัติ

นี่เป็น UX ที่ดี — ช่วยให้ผู้ใช้ที่ต้องการพิมพ์ COA ฉบับเดียว ไม่ต้องกรอกค่า To