SAP Bar Code 開發(03) – 後臺作業任務實現條碼編號歸零
SAP Bar Code 開發(03) – 後臺作業任務實現條碼編號歸零
在開發中,條碼標籤內容都可以透過客戶自定義編制;
通常情況下,流水號的編碼都可以透過的編碼範圍()生成;
只是通常流水號都需要透過日期來生成,後面帶出從數字1開始的流水,而對於的number range來說,只能不斷累加,不能倒退;
因此,要實現每天歸零操作,可以透過錄制 BDC 實現歸零操作,再將實現 BDC 的程式扔向後臺任務,固定每天 00:00 執行任務。
1.編碼範圍()
編碼範圍的定義,透過事務碼 SNRO可以直接定義,這裡不細說;
生成編碼範圍的程式如下:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
*&---------------------------------------------------------------------* *& Form frm_get_ref_nr *&---------------------------------------------------------------------* * 獲取 Number Range *----------------------------------------------------------------------* * -->pv_object text * -->pv_number text * -->pv_out_nr text *----------------------------------------------------------------------* FORM frm_get_ref_nr USING pv_object pv_number pv_out_nr.
DATA: lv_object TYPE tnro-object, Lv_nr_range_nr TYPE inri-nrrangenr.
lv_object = pv_object. " 物件 lv_nr_range_nr = pv_number. "
"鎖定 Number Range 物件 CALL FUNCTION 'NUMBER_RANGE_ENQUEUE' EXPORTING object = lv_object EXCEPTIONS foreign_lock = 1 object_not_found = 2 system_failure = 3 OTHERS = 4.
" 產生Number Range CALL FUNCTION 'NUMBER_GET_NEXT' EXPORTING nr_range_nr = lv_nr_range_nr object = lv_object IMPORTING number = pv_out_nr EXCEPTIONS interval_not_found = 1 number_range_not_intern = 2 object_not_found = 3 quantity_is_0 = 4 quantity_is_not_1 = 5 interval_overflow = 6 buffer_overflow = 7 OTHERS = 8.
" 解鎖 Number Range 物件 CALL FUNCTION 'NUMBER_RANGE_DEQUEUE' EXPORTING object = lv_object.
IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.
ENDFORM. "FRM_GET_NR |
2.錄製BDC
事務碼 SHDB 錄製將相應編碼範圍狀態值清零:
錄製後的BDC程式ZBC_NUMBER_RANGE_ZEROING:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
REPORT zbc_number_range_zeroing. ************************************************************************ * I N C L U D E * ************************************************************************ INCLUDE zbdcrecx1.
************************************************************************ * S E L E C T I O N S C R E E N * ************************************************************************ SELECTION-SCREEN BEGIN OF BLOCK block1.
PARAMETERS: cb_auto TYPE c AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK block1. ************************************************************************ * I N I T I A L I Z A T I O N * ************************************************************************ INITIALIZATION.
************************************************************************ * T O P O F P A G E * ************************************************************************
************************************************************************ * S T A R T O F S E L E C T I O N * ************************************************************************ START-OF-SELECTION.
* 條碼歸零 PERFORM frm_data_process using 'ZBC_CODE'.
*&---------------------------------------------------------------------* *& Form frm_data_process *&---------------------------------------------------------------------* * Data Process *----------------------------------------------------------------------* FORM frm_data_process USING pv_object.
PERFORM bdc_dynpro USING 'SAPMSNRO' '0150'. PERFORM bdc_field USING 'BDC_CURSOR' 'NRIV-OBJECT'. PERFORM bdc_field USING 'BDC_OKCODE' '=IUPD'. PERFORM bdc_field USING 'NRIV-OBJECT' pv_object. "'ZBC_CODE'. "物件名稱 PERFORM bdc_dynpro USING 'SAPMSNUM' '0100'. PERFORM bdc_field USING 'BDC_OKCODE' '=LUPD'. PERFORM bdc_dynpro USING 'SAPLSNR0' '0503'. PERFORM bdc_field USING 'BDC_CURSOR' 'INRDP-NRLEVEL(01)'. PERFORM bdc_field USING 'BDC_OKCODE' '=SAVE'. PERFORM bdc_field USING 'INRDP-NRLEVEL(01)' '0'. PERFORM bdc_dynpro USING 'SAPMSSY0' '0120'. PERFORM bdc_field USING 'BDC_OKCODE' '=DBAC'. PERFORM bdc_dynpro USING 'SAPLSNR0' '0503'. PERFORM bdc_field USING 'BDC_CURSOR' 'INRDP-FROMNUMBER(01)'. PERFORM bdc_field USING 'BDC_OKCODE' '=ENDA'. PERFORM bdc_dynpro USING 'SAPMSNRO' '0150'. PERFORM bdc_field USING 'BDC_CURSOR' 'NRIV-OBJECT'. PERFORM bdc_field USING 'BDC_OKCODE' '=ENDA'. PERFORM bdc_field USING 'NRIV-OBJECT' pv_object. "'ZBC_CODE'. "物件名稱 PERFORM bdc_transaction USING 'SNRO' 'N'. * ENDIF.
ENDFORM. "frm_data_process |
其中,Include檔案自定義了 BDC 用到的相關 Subroutine:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
*&---------------------------------------------------------------------* *& Include ZBDCRECX1 *&---------------------------------------------------------------------*
*----------------------------------------------------------------------* * data definition *----------------------------------------------------------------------* * Batchinputdata of single transaction DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE. * messages of call transaction DATA: messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE. * error session opened (' ' or 'X') DATA: e_group_opened. * message texts TABLES: t100.
*----------------------------------------------------------------------* * Start new transaction according to parameters * *----------------------------------------------------------------------* FORM bdc_transaction USING tcode ctumode. DATA: l_mstring(480). DATA: l_subrc LIKE sy-subrc.
REFRESH messtab. CALL TRANSACTION tcode USING bdcdata MODE ctumode " 跟蹤顯示 N不顯示 E僅顯示錯誤 UPDATE 'A' " A非同步 B同步 L本地更新 MESSAGES INTO messtab. l_subrc = sy-subrc. WRITE: / 'CALL_TRANSACTION', tcode, 'returncode:'(i05), l_subrc, 'RECORD:', sy-index. LOOP AT messtab. SELECT SINGLE * FROM t100 WHERE sprsl = messtab-msgspra AND arbgb = messtab-msgid AND msgnr = messtab-msgnr. IF sy-subrc = 0. l_mstring = t100-text. IF l_mstring CS '&1'. REPLACE '&1' WITH messtab-msgv1 INTO l_mstring. REPLACE '&2' WITH messtab-msgv2 INTO l_mstring. REPLACE '&3' WITH messtab-msgv3 INTO l_mstring. REPLACE '&4' WITH messtab-msgv4 INTO l_mstring. ELSE. REPLACE '&' WITH messtab-msgv1 INTO l_mstring. REPLACE '&' WITH messtab-msgv2 INTO l_mstring. REPLACE '&' WITH messtab-msgv3 INTO l_mstring. REPLACE '&' WITH messtab-msgv4 INTO l_mstring. ENDIF. CONDENSE l_mstring. WRITE: / messtab-msgtyp, l_mstring(250). ELSE. WRITE: / messtab. ENDIF. ENDLOOP. REFRESH bdcdata. ENDFORM. "BDC_TRANSACTION
*----------------------------------------------------------------------* * Start new screen * *----------------------------------------------------------------------* FORM bdc_dynpro USING program dynpro. CLEAR bdcdata. bdcdata-program = program. bdcdata-dynpro = dynpro. bdcdata-dynbegin = 'X'. APPEND bdcdata. ENDFORM. "BDC_DYNPRO
*----------------------------------------------------------------------* * Insert field * *----------------------------------------------------------------------* FORM bdc_field USING fnam fval. CLEAR bdcdata. bdcdata-fnam = fnam. bdcdata-fval = fval. APPEND bdcdata. ENDFORM. "BDC_FIELD |
3. 後臺作業任務
後臺作業任務,透過事務碼SM36定義,SM37管理。
1) 任務啟動條件
包括以下幾項:
立即執行(Immediate)
日期/時間(Date、Time) – 可以定義執行任務的日期、時間
作業之後(After ) – 某個作業任務執行之後執行
事件之後(After event) – SAP事件處理之後執行
這裡需要每天都執行,因此,選擇Date/Time,輸入日期和時間;
然後在期間值(Period Values)內選擇每天執行:
2) 作業步驟
作業步驟可以透過三種方式執行:
透過程式執行;
透過外部作業系統命令執行,透過SM69定義好命令後,輸入命令名稱;
透過外部程式執行;
通常情況下,都是透過程式執行作業,在 Program中輸入相應的程式名稱:
3) 作業選擇
其中,在SM37中,包括以下幾個管理狀態:
已計劃(Sched): 後臺作業的步驟(Step)已經定義,但是作業的開始條件(Start condition)沒有定義。
已釋放(Released): 後臺作業的步驟(Step)和開始條件(Start condition)都已經定義好了,並且相關的作業也經過有相關作業許可權的人Release。
已取消(Canceled): 作業非正常結束,包括兩種情況:
1)、管理員透過SM37去主動Cancel相關作業;
2)、後臺作業對應的程式有錯誤。
就緒(Ready): 一個Released 的開始條件(Start condition)已經滿足,但是需要等待後臺作業機制給這個作業分配工作程式。
啟用的(Active): 執行中的作業。執行中的作業不能被修改或者刪除。
已完成(Finished): 後臺作業中預設的每個步驟(Step)都全部成功完成。
儲存成功後,點選執行,即可。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-1843813/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SAP Bar Code 開發(01) – SAP條碼解決方案
- SAP Bar Code 開發(02) – 條碼生成與輸出列印
- Asynq 實現 Go 後臺作業非同步定時任務處理Go非同步
- 用Linux作業系統的後臺任務(轉)Linux作業系統
- 活用Linux作業系統的後臺任務(轉)Linux作業系統
- SAPBarCode開發(01)–SAP條碼解決方案
- HarmonyOS 後臺任務管理開發指南上線!
- 【轉載】 SAP 列印二維碼 QR Code or 2D Bar Code in SAP
- 微信後臺開發作業講解
- 後臺任務
- Android開發 - Runnable 類任務介面定義與後臺任務待辦解析Android
- 基於圖遍歷的Flink任務畫布模式下零程式碼開發實現方案模式
- 大資料開發-linux後臺執行,關閉,檢視後臺任務大資料Linux
- 開源任務懸賞接單平臺前後端開發搭建後端
- ST03N工作負載的後臺作業定義負載
- 建立後臺任務的兩種程式碼模式模式
- HarmonyOS Next後臺任務開發入門:背景與基本任務型別型別
- SpringCloud微服務實戰——搭建企業級開發框架(四十二):整合分散式任務排程平臺XXL-JOB,實現定時任務功能SpringGCCloud微服務框架分散式
- 零程式碼企業管理系統開發平臺好開發嗎?
- quartz學習-quartz編碼方式實現定時任務簡例quartz
- 使用 go-zero 優雅地實現併發編排任務Go
- 如何在Spring中使用JobRunr實現後臺作業? - BaeldungSpring
- 可以實現零程式碼開發的OPPO智慧體平臺,到底強在哪?智慧體
- 企業如何選擇開源的零程式碼開發平臺
- iOS App 後臺任務的坑iOSAPP
- 使用screen後臺執行任務
- [Abp 原始碼分析]十六、後臺作業與後臺工作者原始碼
- CompleteFuture實現簡單的任務編排實踐
- sap歸檔事務碼SARA介紹
- PHP基礎教程-13 課後作業03PHP
- SAP交易事務碼(TCODE)
- Java後端開發中的任務排程:使用Spring Batch實現批處理Java後端SpringBAT
- 從零開始實現放置遊戲(三):後臺管理系統搭建遊戲
- 直播軟體開發,漸變色任務進度條
- 零程式碼開發平臺工作原理
- 智慧提醒助手——基於HarmonyOS Next的多場景後臺任務實現
- Java定時任務實現優惠碼Java
- php後臺定時執行任務PHP