ABAP Code:สั่งรันโปรแกรม แบบ background โดยใช้ function JOB_OPEN

ABAP สั่งรันโปรแกรม แบบ background โดยใช้ function JOB_OPEN

ABAP สั่งรันโปรแกรม แบบ background โดยใช้ function JOB_OPEN

ถ้ามีปัญหากับการใช้เวลาในการรันโปรแกรมนาน ซึ่งเราคิดว่า 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