批次要求年(后兩位)月日+四位流水甫恩,例:1807110001镇眷,用自建表寫的
CO41 計(jì)劃訂單批量轉(zhuǎn)生產(chǎn)訂單波桩,根據(jù)訂單物料帶入批次
增強(qiáng)點(diǎn):LCOZVF2M
內(nèi)表:afpod_tmp
添加位置:342(點(diǎn)擊顯示增強(qiáng)第二個(gè)可以增強(qiáng)的點(diǎn))
CO01 創(chuàng)建生產(chǎn)訂單谱俭,點(diǎn)擊收貨帶出來批次
增強(qiáng)點(diǎn):LCOKO1F3I
內(nèi)表:AFPOD
添加位置:42(點(diǎn)擊顯示增強(qiáng)第一個(gè)可要增強(qiáng)的點(diǎn))
if sy-tcode = 'CO41' .
data: it_ztmm type table of ZTMM001.
data: is_ztmm type ZTMM001.
DATA: lv_varkey TYPE VIM_ENQKEY,
ls_mess(30),
lv_id(20).
DATA:LV_MATERIAL LIKE BAPIBATCHKEY-MATERIAL_LONG,
LV_BATCH LIKE BAPIBATCHKEY-BATCH,
LV_PLANT LIKE BAPIBATCHKEY-PLANT.
lv_varkey = sy-mandt && sy-datum+0(4) && '10'.
CALL FUNCTION 'ENQUEUE_E_TABLE'
EXPORTING
mode_rstable = 'E'
tabname = 'ZTMM001' "鎖表
varkey = lv_varkey
x_tabname = ' '
x_varkey = ' '
_scope = '2'
_wait = ' '
_collect = ' '
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
IF sy-subrc <> 0.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = sy-msgid
msgnr = sy-msgno
msgv1 = sy-msgv1
msgv2 = sy-msgv1
msgv3 = sy-msgv1
msgv4 = sy-msgv1
IMPORTING
message_text_output = ls_mess.
MESSAGE ls_mess type 'E'.
ENDIF.
SELECT SINGLE *
FROM ZTMM001
into is_ztmm
WHERE BUDAT = sy-datum.
if sy-subrc = 0 .
is_ztmm-GJAHR = is_ztmm-GJAHR + 1.
UPDATE ZTMM001 set GJAHR = is_ztmm-GJAHR WHERE BUDAT = sy-datum.
ELSE.
is_ztmm-BUDAT = sy-datum.
is_ztmm-GJAHR = '0000'.
MODIFY ZTMM001 FROM is_ztmm.
endif .
CALL FUNCTION 'DEQUEUE_E_TABLE'
EXPORTING
mode_rstable = 'E'
tabname = 'ZTMM001'
varkey = lv_varkey
x_tabname = ' '
x_varkey = ' '
_scope = '3'
_synchron = ' '
_collect = ' '.
IF sy-subrc <> 0.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = sy-msgid
msgnr = sy-msgno
msgv1 = sy-msgv1
msgv2 = sy-msgv1
msgv3 = sy-msgv1
msgv4 = sy-msgv1
IMPORTING
message_text_output = ls_mess.
MESSAGE ls_mess type 'E'.
ENDIF.
CONCATENATE is_ztmm-BUDAT+2(6) is_ztmm-GJAHR into afpod_tmp-CHARG.
CONCATENATE SY-UNAME '123' INTO LV_ID."為了在磁盤中能找到
EXPORT
LV_MATERIAL from afpod_tmp-MATNR
LV_PLANT FROM afpod_tmp-pwerk
LV_BATCH FROM afpod_tmp-CHARG
TO MEMORY ID LV_ID.
endif.
在這個(gè)地方更改afpod_tmp-CHARG(AFPOD-CHARG )字段就可以直接更新到表
這個(gè)時(shí)候批次產(chǎn)生了但沒有創(chuàng)建帮匾,需要調(diào)BAPI:BAPI_BATCH_CREATE
增強(qiáng)點(diǎn):CO_ZV_ORDER_POST(函數(shù))
添加位置:ENDFUNCTION 的前一個(gè)增強(qiáng)點(diǎn)
這個(gè)增強(qiáng)點(diǎn)適用于CO01和CO41啄骇,且CO41在批量創(chuàng)建時(shí)每一條都會(huì)進(jìn),但由于在兩個(gè)不同的地方需要內(nèi)存?zhèn)髦?/p>
if sy-tcode = 'CO41'or sy-tcode = 'CO01'.
" BREAK-POINT.
data lv_id(20).
DATA:
LV_MATERIAL LIKE BAPIBATCHKEY-MATERIAL_LONG,
LV_BATCH LIKE BAPIBATCHKEY-BATCH,
LV_PLANT LIKE BAPIBATCHKEY-PLANT.
DATA: LS_BATCHCONTROLFIELDS LIKE BAPIBATCHCTRL,
LS_BATCHATTRIBUTES LIKE BAPIBATCHATT.
DATA:IT_RETURN TYPE TABLE OF BAPIRET2 WITH HEADER LINE.
CONCATENATE sy-uname '123' INTO lv_id.
IMPORT
LV_MATERIAL
LV_BATCH
LV_PLANT
FROM MEMORY ID lv_id.
LS_BATCHCONTROLFIELDS-BATCHLEVEL = '0'.
LS_BATCHCONTROLFIELDS-CLASS_NUM = 'Z_BATCH'.
CALL FUNCTION 'BAPI_BATCH_CREATE'
EXPORTING
MATERIAL_LONG = LV_MATERIAL
BATCH = LV_BATCH
PLANT = LV_PLANT
" BATCHATTRIBUTES = LS_BATCHATTRIBUTES
" BATCHCONTROLFIELDS = LS_BATCHCONTROLFIELDS
IMPORTING
BATCH = LV_BATCH
TABLES
RETURN = IT_RETURN.
IF IT_RETURN-TYPE = 'S'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
ELSE.
ROLLBACK WORK.
ENDIF.
FREE MEMORY id LV_ID.
ENDIF.