SAP BPS : Exit Function 實現版本鎖定
雖然老大們表示,以後不會再讓我們玩這個了,不過本著要玩就徹底的態度,把能看到的功能多試驗一下。
這裡先講一個知識點:
BPS變數:
從型別上來說,有:特徵變數,層級變數,數值變數,屬性變數。
除了屬性變數外,其它幾個變數應該都是很容易懂得,而屬性變數是通過屬性值的約束,獲取特徵值的範圍,比如省份是地區的屬性,那麼如果限定屬性值等於廣東,那麼可以選擇的地區即都是廣東地區,不過遺憾的是,我一直嘗試在Web實現這個變數,一直沒有成功,變數值始終顯示“全部”。
另外值的來源方法,又分為以下幾種:
1. 固定值 2. 依據使用者而定義的值 3. 使用者出口(就是ABAP啦)4. 許可權
方法1是將這個變數能夠用到的值,都羅列出來;方法2是按照使用者的不同,羅列不同的值;方法3是通過Function的方式動態去取值,比較靈活,方法4同BW的許可權控制是統一的,即BW的許可權控制直接拿過來用而已。
言歸正傳。
鎖定過程一般會有三個動作,查詢鎖定,鎖定執行,以及解鎖,所以在設定使用者出口的時候,需要加入兩個變數,即“什麼東西”,“什麼動作”。
我就直接放程式碼了,過程解釋都在裡面呢。
FUNCTION z_bps_exit_exec_lock.
*"------------------------------------------------------*"*"Local Interface:
*" IMPORTING
*" VALUE(I_AREA) TYPE UPC_Y_AREA
*" VALUE(I_PLEVEL) TYPE UPC_Y_PLEVEL
*" VALUE(I_PACKAGE) TYPE UPC_Y_PACKAGE
*" VALUE(I_METHOD) TYPE UPC_Y_METHOD
*" VALUE(I_PARAM) TYPE UPC_Y_PARAM
*" VALUE(IT_EXITP) TYPE UPF_YT_EXITP
*" VALUE(ITO_CHASEL) TYPE UPC_YTO_CHASEL
*" VALUE(ITO_CHA) TYPE UPC_YTO_CHA
*" VALUE(ITO_KYF) TYPE UPC_YTO_KYF
*" EXPORTING
*" REFERENCE(ET_MESG) TYPE UPC_YT_MESG
*" CHANGING
*" REFERENCE(XTH_DATA) TYPE HASHED TABLE
*"-----------------------------------------------------
TABLES:upc_dataslicet,
*"------------------------------------------------------*"*"Local Interface:
*" IMPORTING
*" VALUE(I_AREA) TYPE UPC_Y_AREA
*" VALUE(I_PLEVEL) TYPE UPC_Y_PLEVEL
*" VALUE(I_PACKAGE) TYPE UPC_Y_PACKAGE
*" VALUE(I_METHOD) TYPE UPC_Y_METHOD
*" VALUE(I_PARAM) TYPE UPC_Y_PARAM
*" VALUE(IT_EXITP) TYPE UPF_YT_EXITP
*" VALUE(ITO_CHASEL) TYPE UPC_YTO_CHASEL
*" VALUE(ITO_CHA) TYPE UPC_YTO_CHA
*" VALUE(ITO_KYF) TYPE UPC_YTO_KYF
*" EXPORTING
*" REFERENCE(ET_MESG) TYPE UPC_YT_MESG
*" CHANGING
*" REFERENCE(XTH_DATA) TYPE HASHED TABLE
*"-----------------------------------------------------
TABLES:upc_dataslicet,
upc_dataslice,upc_optios,zv_dataslice.
DATA:wa_upc_dataslicet TYPE upc_dataslicet ,
wa_upc_dataslice TYPE upc_dataslice,
wa_upc_optios TYPE upc_optios.
DATA: itab LIKE TABLE OF zsave,
wa LIKE LINE OF itab.
DATA: lt_bapiret TYPE STANDARD TABLE OF bapiret2,
lt_data_cust TYPE STANDARD TABLE OF upc_ys_api_data,
lt_row TYPE STANDARD TABLE OF upc_ys_api_row,
lt_subrc TYPE sy-subrc,
l_select TYPE string.
DATA: lto_chas TYPE yto_chas.
DATA: l_date LIKE sy-datum.
DATA: wa_chasel TYPE LINE OF upc_yto_chasel,
ls_chasel TYPE upc_ys_chasel,
ls_chas TYPE ys_chas,
ls_charng TYPE upc_ys_charng.
DATA:ls_para TYPE upf_ys_exitp,
ls_val(60) .
FIELD-SYMBOLS: TYPE ANY.
DATA: l_str TYPE string.
DATA:l_area LIKE i_area ,
l_sort(6) , "儲存
l_act(1),"執行操作 N-NEW,D-DELETE
l_flag VALUE 'N'. "是否存在
DATA:l_ds_year LIKE zbps_ds_year,
l_ds_year_old LIKE zbps_ds_year .
DATA:BEGIN OF ls_ds_year,
sort(2),
include TYPE zbps_ds_year,
END OF ls_ds_year.
DATA: lt_ds_year LIKE TABLE OF ls_ds_year.
DATA:wa_mesg TYPE LINE OF upc_yt_mesg.
DATA:l_do(6), "引數一執行的動作
l_con(3). "鎖定內容
*"----------------------------------------------------------------
*" L_VER
*" S:銷售預測鎖定ZVERSION -> Y1:Y6
*" SR: 銷售回款編輯鎖定 ZVERSION -> Y9
*" PS:生產預測銷售版鎖定 ZVERSION -> Y7
*" PP:生產預測生產版鎖定 ZVERSION -> Y8
*"
*" L_CON
*" CHECK:檢查版本鎖定狀態
*" LOCK: 版本鎖定 (直接新增)
*" UNLOCK:版本解鎖(直接刪除)
*"--------------------------------------------------------------------
DATA:BEGIN OF ls_old_ds,
sort LIKE zv_dataslice-sort,
area LIKE zv_dataslice-area,
fieldname LIKE zv_dataslice-fieldname,
low LIKE zv_dataslice-low,
END OF ls_old_ds.
DATA:lt_old_ds LIKE TABLE OF ls_old_ds.
****獲取鎖定條件
LOOP AT ito_chasel INTO ls_chasel.
READ TABLE ls_chasel-t_charng INTO ls_charng INDEX 1.
IF sy-subrc = 0.
ASSIGN COMPONENT ls_chasel-chanm OF STRUCTURE l_ds_year TO.
IF sy-subrc EQ 0.
= ls_charng-low.
IF ls_chasel-chanm NE '0CURRENCY'.
CONCATENATE l_str '' ls_charng-low INTO l_str.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
* READ TABLE it_exitp INTO ls_para INDEX 1."
***讀取引數值 讀取操作動作
READ TABLE it_exitp INTO ls_para WITH KEY parnm = 'STATUS'.
l_do = ls_para-chavl.
**** 讀取操作內容引數
READ TABLE it_exitp INTO ls_para WITH KEY parnm = 'CONTENT'.
l_con = ls_para-chavl.
* LOCK - 進行鎖定
* UNLOCK - 進行解鎖
* CHECK - 判斷鎖狀態
***先判斷area是否存在 dataslice
SELECT sort area fieldname low
INTO TABLE lt_old_ds
FROM zv_dataslice
WHERE area = i_area.
IF sy-subrc NE 0. "目前不存在任何此area的dataslice
CASE l_do.
WHEN 'UNLOCK' OR 'CHECK'.
wa_mesg-msgty = 'I'.
wa_mesg-msgno = '0001'.
wa_mesg-msgv1 = '當前系統不存在任何版本的鎖定!'.
APPEND wa_mesg TO et_mesg.
WHEN 'LOCK'.
l_act = 'N'. "新增鎖定
WHEN OTHERS.
wa_mesg-msgty = 'E'.
wa_mesg-msgno = '0001'.
wa_mesg-msgv1 = '未知命令,請聯絡開發人員!'.
APPEND wa_mesg TO et_mesg.
ENDCASE.
ELSE. "已存在,需要再次判斷
SORT lt_old_ds BY sort.
LOOP AT lt_old_ds INTO ls_old_ds.
ASSIGN COMPONENT ls_old_ds-fieldname OF STRUCTURE l_ds_year_old TO.
IF sy-subrc EQ 0.
* concatenate '2:'
* ls_old_ds-fieldname into wa-zstr1 .
* wa-zstr2 = ls_old_ds-low.
* MODIFY zsave FROM wa.
= ls_old_ds-low.
ENDIF.
****
AT END OF sort.
IF l_ds_year_old EQ l_ds_year.
l_sort = ls_old_ds-sort.
l_flag = 'Y'.
EXIT.
ENDIF.
ENDAT.
ENDLOOP.
IF l_flag EQ 'Y'.
CASE l_do.
WHEN 'LOCK' OR 'CHECK'.
wa_mesg-msgty = 'I'.
wa_mesg-msgno = '0001'.
wa_mesg-msgv1 = '當前系統此版本已鎖定!'.
wa_mesg-msgv2 = l_str.
APPEND wa_mesg TO et_mesg.
WHEN 'UNLOCK'.
l_act = 'D'.
WHEN OTHERS.
wa_mesg-msgty = 'E'.
wa_mesg-msgno = '0001'.
wa_mesg-msgv1 = '未知命令,請聯絡開發人員!'.
APPEND wa_mesg TO et_mesg.
ENDCASE.
ELSE.
CASE l_do.
WHEN 'UNLOCK' OR 'CHECK'.
wa_mesg-msgty = 'I'.
wa_mesg-msgno = '0001'.
wa_mesg-msgv1 = '當前系統此版本未鎖定!'.
wa_mesg-msgv2 = l_str.
APPEND wa_mesg TO et_mesg.
WHEN 'LOCK'.
l_act = 'N'.
WHEN OTHERS.
wa_mesg-msgty = 'E'.
wa_mesg-msgno = '0001'.
wa_mesg-msgv1 = '未知命令,請聯絡開發人員!'.
APPEND wa_mesg TO et_mesg.
ENDCASE.
ENDIF.
*
ENDIF.
DATA:l_uid LIKE rssgtpdir-uni_idc25.
IF l_act EQ 'N'.
CALL FUNCTION 'RSS_SYSTEM_GET_UNIQUE_ID'
IMPORTING
e_uni_idc25 = l_uid.
SELECT sort INTO l_sort
FROM zv_dataslice
UP TO 1 ROWS
WHERE area = i_area
ORDER BY sort DESCENDING.
ENDSELECT.
IF sy-subrc EQ 0.
l_sort = l_sort + 1.
ELSE.
l_sort = 1.
ENDIF.
***UPC_DATASLICE
wa_upc_dataslice-area = i_area.
wa_upc_dataslice-sort = l_sort.
wa_upc_dataslice-guid = l_uid.
wa_upc_dataslice-inactive = ''.
INSERT upc_dataslice FROM wa_upc_dataslice.
***UPC_DATASLICET
wa_upc_dataslicet-area = i_area.
wa_upc_dataslicet-sort = l_sort.
wa_upc_dataslicet-langu = '1'.
wa_upc_dataslicet-text = l_str.
INSERT upc_dataslicet FROM wa_upc_dataslicet.
***UPC_OPTIOS
wa_upc_optios-guid = l_uid.
wa_upc_optios-seqno = '1'.
wa_upc_optios-optio = 'EQ'.
wa_upc_optios-sign = 'I'.
LOOP AT ito_chasel INTO ls_chasel.
READ TABLE ls_chasel-t_charng INTO ls_charng INDEX 1.
IF sy-subrc = 0.
wa_upc_optios-fieldname = ls_chasel-chanm.
wa_upc_optios-low = ls_charng-low.
INSERT upc_optios FROM wa_upc_optios.
ENDIF.
ENDLOOP.
wa_upc_optios-fieldname = 'ZVERSION'.
CASE l_con.
WHEN 'S'.
wa_upc_optios-guid = l_uid.
wa_upc_optios-seqno = '1'.
wa_upc_optios-optio = 'BT'.
wa_upc_optios-sign = 'I'.
wa_upc_optios-low = 'Y1'.
wa_upc_optios-high = 'Y6'.
WHEN 'SR'.
wa_upc_optios-guid = l_uid.
wa_upc_optios-seqno = '1'.
wa_upc_optios-optio = 'EQ'.
wa_upc_optios-sign = 'I'.
wa_upc_optios-low = 'Y9'.
WHEN 'PS'.
wa_upc_optios-guid = l_uid.
wa_upc_optios-seqno = '1'.
wa_upc_optios-optio = 'EQ'.
wa_upc_optios-sign = 'I'.
wa_upc_optios-low = 'Y7'.
WHEN 'PP'.
wa_upc_optios-guid = l_uid.
wa_upc_optios-seqno = '1'.
wa_upc_optios-optio = 'EQ'.
wa_upc_optios-sign = 'I'.
wa_upc_optios-low = 'Y8'.
ENDCASE.
INSERT upc_optios FROM wa_upc_optios.
wa_mesg-msgty = 'I'.
wa_mesg-msgno = '0001'.
wa_mesg-msgv1 = '當前版本鎖定已新增成功!'.
wa_mesg-msgv2 = l_str.
APPEND wa_mesg TO et_mesg.
ELSEIF l_act EQ 'D'.
SELECT SINGLE guid INTO l_uid
FROM upc_dataslice
WHERE area = i_area AND
sort = l_sort.
IF sy-subrc EQ 0.
DELETE FROM upc_dataslice
WHERE area = i_area AND
sort = l_sort.
DELETE FROM upc_dataslicet
WHERE area = i_area AND
sort = l_sort.
DELETE FROM upc_optios
WHERE guid = l_uid.
ENDIF.
wa_mesg-msgty = 'I'.
wa_mesg-msgno = '0001'.
wa_mesg-msgv1 = '當前版本鎖定已刪除成功!'.
wa_mesg-msgv2 = l_str.
APPEND wa_mesg TO et_mesg.
ENDIF.
* DATA:ES_AREA_SLICE TYPE YS_AREA_SLICE.
IF l_act EQ 'N' OR l_act EQ 'D'.
* PERFORM buffer_dataslice_get
* IN PROGRAM saplupc_dataslice
* USING I_AREA "insert your data slice area name here
* 'E'
* CHANGING ES_AREA_SLICE .
*
* PERFORM buffer_dataslice_update
* IN PROGRAM saplupc_dataslice .
CALL FUNCTION 'UPC_DATASLICE_COMMIT'.
CALL FUNCTION 'UPC_DATASLICE_SAVE'.
ENDIF.
CLEAR:l_act.
ENDFUNCTION.
DATA:wa_upc_dataslicet TYPE upc_dataslicet ,
wa_upc_dataslice TYPE upc_dataslice,
wa_upc_optios TYPE upc_optios.
DATA: itab LIKE TABLE OF zsave,
wa LIKE LINE OF itab.
DATA: lt_bapiret TYPE STANDARD TABLE OF bapiret2,
lt_data_cust TYPE STANDARD TABLE OF upc_ys_api_data,
lt_row TYPE STANDARD TABLE OF upc_ys_api_row,
lt_subrc TYPE sy-subrc,
l_select TYPE string.
DATA: lto_chas TYPE yto_chas.
DATA: l_date LIKE sy-datum.
DATA: wa_chasel TYPE LINE OF upc_yto_chasel,
ls_chasel TYPE upc_ys_chasel,
ls_chas TYPE ys_chas,
ls_charng TYPE upc_ys_charng.
DATA:ls_para TYPE upf_ys_exitp,
ls_val(60) .
FIELD-SYMBOLS:
DATA: l_str TYPE string.
DATA:l_area LIKE i_area ,
l_sort(6) , "儲存
l_act(1),"執行操作 N-NEW,D-DELETE
l_flag VALUE 'N'. "是否存在
DATA:l_ds_year LIKE zbps_ds_year,
l_ds_year_old LIKE zbps_ds_year .
DATA:BEGIN OF ls_ds_year,
sort(2),
include TYPE zbps_ds_year,
END OF ls_ds_year.
DATA: lt_ds_year LIKE TABLE OF ls_ds_year.
DATA:wa_mesg TYPE LINE OF upc_yt_mesg.
DATA:l_do(6), "引數一執行的動作
l_con(3). "鎖定內容
*"----------------------------------------------------------------
*" L_VER
*" S:銷售預測鎖定ZVERSION -> Y1:Y6
*" SR: 銷售回款編輯鎖定 ZVERSION -> Y9
*" PS:生產預測銷售版鎖定 ZVERSION -> Y7
*" PP:生產預測生產版鎖定 ZVERSION -> Y8
*"
*" L_CON
*" CHECK:檢查版本鎖定狀態
*" LOCK: 版本鎖定 (直接新增)
*" UNLOCK:版本解鎖(直接刪除)
*"--------------------------------------------------------------------
DATA:BEGIN OF ls_old_ds,
sort LIKE zv_dataslice-sort,
area LIKE zv_dataslice-area,
fieldname LIKE zv_dataslice-fieldname,
low LIKE zv_dataslice-low,
END OF ls_old_ds.
DATA:lt_old_ds LIKE TABLE OF ls_old_ds.
****獲取鎖定條件
LOOP AT ito_chasel INTO ls_chasel.
READ TABLE ls_chasel-t_charng INTO ls_charng INDEX 1.
IF sy-subrc = 0.
ASSIGN COMPONENT ls_chasel-chanm OF STRUCTURE l_ds_year TO
IF sy-subrc EQ 0.
IF ls_chasel-chanm NE '0CURRENCY'.
CONCATENATE l_str '' ls_charng-low INTO l_str.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
* READ TABLE it_exitp INTO ls_para INDEX 1."
***讀取引數值 讀取操作動作
READ TABLE it_exitp INTO ls_para WITH KEY parnm = 'STATUS'.
l_do = ls_para-chavl.
**** 讀取操作內容引數
READ TABLE it_exitp INTO ls_para WITH KEY parnm = 'CONTENT'.
l_con = ls_para-chavl.
* LOCK - 進行鎖定
* UNLOCK - 進行解鎖
* CHECK - 判斷鎖狀態
***先判斷area是否存在 dataslice
SELECT sort area fieldname low
INTO TABLE lt_old_ds
FROM zv_dataslice
WHERE area = i_area.
IF sy-subrc NE 0. "目前不存在任何此area的dataslice
CASE l_do.
WHEN 'UNLOCK' OR 'CHECK'.
wa_mesg-msgty = 'I'.
wa_mesg-msgno = '0001'.
wa_mesg-msgv1 = '當前系統不存在任何版本的鎖定!'.
APPEND wa_mesg TO et_mesg.
WHEN 'LOCK'.
l_act = 'N'. "新增鎖定
WHEN OTHERS.
wa_mesg-msgty = 'E'.
wa_mesg-msgno = '0001'.
wa_mesg-msgv1 = '未知命令,請聯絡開發人員!'.
APPEND wa_mesg TO et_mesg.
ENDCASE.
ELSE. "已存在,需要再次判斷
SORT lt_old_ds BY sort.
LOOP AT lt_old_ds INTO ls_old_ds.
ASSIGN COMPONENT ls_old_ds-fieldname OF STRUCTURE l_ds_year_old TO
IF sy-subrc EQ 0.
* concatenate '2:'
* ls_old_ds-fieldname into wa-zstr1 .
* wa-zstr2 = ls_old_ds-low.
* MODIFY zsave FROM wa.
ENDIF.
****
AT END OF sort.
IF l_ds_year_old EQ l_ds_year.
l_sort = ls_old_ds-sort.
l_flag = 'Y'.
EXIT.
ENDIF.
ENDAT.
ENDLOOP.
IF l_flag EQ 'Y'.
CASE l_do.
WHEN 'LOCK' OR 'CHECK'.
wa_mesg-msgty = 'I'.
wa_mesg-msgno = '0001'.
wa_mesg-msgv1 = '當前系統此版本已鎖定!'.
wa_mesg-msgv2 = l_str.
APPEND wa_mesg TO et_mesg.
WHEN 'UNLOCK'.
l_act = 'D'.
WHEN OTHERS.
wa_mesg-msgty = 'E'.
wa_mesg-msgno = '0001'.
wa_mesg-msgv1 = '未知命令,請聯絡開發人員!'.
APPEND wa_mesg TO et_mesg.
ENDCASE.
ELSE.
CASE l_do.
WHEN 'UNLOCK' OR 'CHECK'.
wa_mesg-msgty = 'I'.
wa_mesg-msgno = '0001'.
wa_mesg-msgv1 = '當前系統此版本未鎖定!'.
wa_mesg-msgv2 = l_str.
APPEND wa_mesg TO et_mesg.
WHEN 'LOCK'.
l_act = 'N'.
WHEN OTHERS.
wa_mesg-msgty = 'E'.
wa_mesg-msgno = '0001'.
wa_mesg-msgv1 = '未知命令,請聯絡開發人員!'.
APPEND wa_mesg TO et_mesg.
ENDCASE.
ENDIF.
*
ENDIF.
DATA:l_uid LIKE rssgtpdir-uni_idc25.
IF l_act EQ 'N'.
CALL FUNCTION 'RSS_SYSTEM_GET_UNIQUE_ID'
IMPORTING
e_uni_idc25 = l_uid.
SELECT sort INTO l_sort
FROM zv_dataslice
UP TO 1 ROWS
WHERE area = i_area
ORDER BY sort DESCENDING.
ENDSELECT.
IF sy-subrc EQ 0.
l_sort = l_sort + 1.
ELSE.
l_sort = 1.
ENDIF.
***UPC_DATASLICE
wa_upc_dataslice-area = i_area.
wa_upc_dataslice-sort = l_sort.
wa_upc_dataslice-guid = l_uid.
wa_upc_dataslice-inactive = ''.
INSERT upc_dataslice FROM wa_upc_dataslice.
***UPC_DATASLICET
wa_upc_dataslicet-area = i_area.
wa_upc_dataslicet-sort = l_sort.
wa_upc_dataslicet-langu = '1'.
wa_upc_dataslicet-text = l_str.
INSERT upc_dataslicet FROM wa_upc_dataslicet.
***UPC_OPTIOS
wa_upc_optios-guid = l_uid.
wa_upc_optios-seqno = '1'.
wa_upc_optios-optio = 'EQ'.
wa_upc_optios-sign = 'I'.
LOOP AT ito_chasel INTO ls_chasel.
READ TABLE ls_chasel-t_charng INTO ls_charng INDEX 1.
IF sy-subrc = 0.
wa_upc_optios-fieldname = ls_chasel-chanm.
wa_upc_optios-low = ls_charng-low.
INSERT upc_optios FROM wa_upc_optios.
ENDIF.
ENDLOOP.
wa_upc_optios-fieldname = 'ZVERSION'.
CASE l_con.
WHEN 'S'.
wa_upc_optios-guid = l_uid.
wa_upc_optios-seqno = '1'.
wa_upc_optios-optio = 'BT'.
wa_upc_optios-sign = 'I'.
wa_upc_optios-low = 'Y1'.
wa_upc_optios-high = 'Y6'.
WHEN 'SR'.
wa_upc_optios-guid = l_uid.
wa_upc_optios-seqno = '1'.
wa_upc_optios-optio = 'EQ'.
wa_upc_optios-sign = 'I'.
wa_upc_optios-low = 'Y9'.
WHEN 'PS'.
wa_upc_optios-guid = l_uid.
wa_upc_optios-seqno = '1'.
wa_upc_optios-optio = 'EQ'.
wa_upc_optios-sign = 'I'.
wa_upc_optios-low = 'Y7'.
WHEN 'PP'.
wa_upc_optios-guid = l_uid.
wa_upc_optios-seqno = '1'.
wa_upc_optios-optio = 'EQ'.
wa_upc_optios-sign = 'I'.
wa_upc_optios-low = 'Y8'.
ENDCASE.
INSERT upc_optios FROM wa_upc_optios.
wa_mesg-msgty = 'I'.
wa_mesg-msgno = '0001'.
wa_mesg-msgv1 = '當前版本鎖定已新增成功!'.
wa_mesg-msgv2 = l_str.
APPEND wa_mesg TO et_mesg.
ELSEIF l_act EQ 'D'.
SELECT SINGLE guid INTO l_uid
FROM upc_dataslice
WHERE area = i_area AND
sort = l_sort.
IF sy-subrc EQ 0.
DELETE FROM upc_dataslice
WHERE area = i_area AND
sort = l_sort.
DELETE FROM upc_dataslicet
WHERE area = i_area AND
sort = l_sort.
DELETE FROM upc_optios
WHERE guid = l_uid.
ENDIF.
wa_mesg-msgty = 'I'.
wa_mesg-msgno = '0001'.
wa_mesg-msgv1 = '當前版本鎖定已刪除成功!'.
wa_mesg-msgv2 = l_str.
APPEND wa_mesg TO et_mesg.
ENDIF.
* DATA:ES_AREA_SLICE TYPE YS_AREA_SLICE.
IF l_act EQ 'N' OR l_act EQ 'D'.
* PERFORM buffer_dataslice_get
* IN PROGRAM saplupc_dataslice
* USING I_AREA "insert your data slice area name here
* 'E'
* CHANGING ES_AREA_SLICE .
*
* PERFORM buffer_dataslice_update
* IN PROGRAM saplupc_dataslice .
CALL FUNCTION 'UPC_DATASLICE_COMMIT'.
CALL FUNCTION 'UPC_DATASLICE_SAVE'.
ENDIF.
CLEAR:l_act.
ENDFUNCTION.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/554557/viewspace-700872/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 鎖定專案的 node 版本
- Important SAP APO Function Modules!ImportFunction
- 什麼是 SAP ABAP 的 SYSTEM_EXIT
- 什麼是 SAP Business FunctionFunction
- SAP UI5 Mock 伺服器如何實現自定義 Function Import試讀版UIMock伺服器FunctionImport
- 【Azure Function App】Azure Function 從.Net6 升級到 .Net8 後 Function出現執行時版本錯誤FunctionAPP
- 使用原生javascript實現jquery的$(function(){ })JavaScriptjQueryFunction
- 鎖定專案 Node 版本和包管理器
- JavaScript專案中鎖定npm依賴包版本JavaScriptNPM
- SAP SEGW 事物碼裡的 Function ImportFunctionImport
- 關於 SAP UI5 getSAPLogonLanguage is not a function 的錯誤訊息以及 API 版本的討論UIGoFunctionAPI
- SAP UI5 XML 檢視在例項化時就已經確定了 BindingSyntax 的實現版本了UIXML
- Azure Function 時區設定Function
- 如何建立最簡單的 SAP Kyma FunctionFunction
- SAP PM 入門系列7 - 常用Function ModulesFunction
- 如何實現LLM的通用function-calling能力?Function
- 分散式鎖實現分散式
- 實現分散式鎖分散式
- etcd實現分散式鎖分散式
- 分散式鎖----Redis實現分散式Redis
- 分散式鎖及其實現分散式
- Redis 實現分佈鎖Redis
- Redis實現分散式鎖Redis分散式
- exit hookHook
- 「Jupyter」UserWarning: To exit: use 'exit', 'quit', or Ctrl-D.UI
- exit(0)與exit(1)、return的區別
- python中 os._exit() 和 sys.exit(), exit(0)的用法和區別Python
- 從ABAP Netweaver的SICF到SAP Kyma的Lambda FunctionFunction
- SAP MM 預製發票相關的Function ModulesFunction
- Android開屏、鎖屏、解鎖監聽實現Android
- 分散式鎖的實現原理分散式
- Java中鎖的實現方式Java
- redis分散式鎖的實現Redis分散式
- Golang可重入鎖的實現Golang
- 分散式鎖的實現方案分散式
- 6 zookeeper實現分散式鎖分散式
- redis分散式鎖-java實現Redis分散式Java
- Android實現拼圖解鎖Android圖解
- Redis之分散式鎖實現Redis分散式