ถ้ามีปัญหากับการใช้เวลาในการรันโปรแกรมนาน ซึ่งเราคิดว่า Logi เราเทพแล้วแต่ที่มันช้าเพราะข้อมูลมันเยอะ ขยะมันเยอะ ไม่สามารถที่จะแก้ Logi ได้ ก็เลยคิดให้ โปรแกรมมัน Run background เสร็จแล้วจะกลับไปดู ทำไงให้โปรแกรมมัน Run backgroud ก็ต้องเรียกใช้ function ‘JOB_OPEN’ มามาดูกัน ว่า Work ไหม?
Concept โปรแกรม
– ให้โปรแกรมรับค่าจากหน้าจอ คำนวณค่าจากหน้าจอ ส่งค่าที่คำนวณได้ ไปให้อีกโปรแกรมหนึ่ง ซึ่งเป็นไปในรูปแบบ Run Background
วิธีทำ
ปล. ต้องมีโปรแกรม 2 ตัว ตัวหนึ่งส่งค่า(Program ZA) อีกตัวรับค่า(Program ZB)
– สร้างหน้าจอ SELECTION-SCREEN (ที่ Program ZA)
parameters: p_number type i obligatory. // SELECTION-SCREEN
– นำค่าที่ได้ไปคำนวณ
p_number = p_number * 360.
-กำหนดตัวแปรที่ใช้งานในโปรแกรม
data: number type tbtcjob-jobcount, name type tbtcjob-jobname value 'ZRUNBACKGROUND', print_parameters type pri_params. data: text type c length 10, rspar_tab type table of rsparams, rspar_line like line of rspar_tab, range_tab like range of text, range_line like line of range_tab.
– ส่งค่าผลลัพธ์ที่คำนวณได้ ไปให้ โปรแกรมอีกตัวทำต่อในรูปแบบ Run Background
call function 'JOB_OPEN' exporting jobname = name importing jobcount = number exceptions cant_create_job = 1 invalid_job_data = 2 jobname_missing = 3 others = 4. if sy-subrc = 0. submit ZB to sap-spool //(ส่งค่า Program ZB) spool parameters print_parameters without spool dynpro with p2_number eq p_number user sy-uname via job name number number and return. if sy-subrc NE 0. write: / 'Bad job.'. else. write: / 'Good Job. Please, Check T_CODE SM37.'. endif. if sy-subrc = 0. call function 'JOB_CLOSE' exporting jobcount = number jobname = name strtimmed = 'X' exceptions cant_start_immediate = 1 invalid_startdate = 2 jobname_missing = 3 job_close_failed = 4 job_nosteps = 5 job_notex = 6 lock_failed = 7 others = 8. if sy-subrc NE 0. endif. endif. endif.
สามารถตรวจสอบผลลัพธ์จากการสั่งรันโปรแกรมได้ที่ T-CODE SM37