生产订单修改记录的跟踪方法!
方法一:系統標準方法
如何查找到production order的修改記錄呢?因為有很多用戶 "賴皮",明明自己修改過某些資料,如qty or component,可就是不承認,并且還大罵SAP大大的有問題 ,真會氣死人,所以想記錄下來.
HEHE,這里我就摘錄一段SAP的NOTES給大家看看,如何去整這玩意.
Note 390635 - Change documents for production and process order
Summary
Symptom
You cannot activate the creation of change documents for production orders and process orders.
Customizing table T399X (parameters dependent on order type) contains field FLG_DOC but you cannot maintain it using the Customizing transactions for production or process orders.
Other terms
Production order, process order
T399X-FLG_DOC
SPRO, BADI
Reason and Prerequisites
It is not intended to use the SAP standard tool for the creation of change documents for production or process orders in the SAP standard system. The indicator in table T399X is only interpreted by maintenance orders and networks.
The reason for this is that the tool cannot determine dependencies of changes and thus would log too many changes that would have a negative effect on the runtime.
Example: A production order contains 10 operations and 1000 components
Case 1: You change the requirements quantity for a component manually.
???????????The system creates a change document for the changed component.
Case 2: You change the planned quantity in the order header manually.
???????????The change causes that the quantites are changed automatically for all operations and components. The system would create
a change document for the changed header quantity,
ten change documents for the automatically changed operation quantities (if defined) and
thousand change documents for automatically changed component quantities.
Solution
Use the SAP enhancement PPCO0007??that is processed when you save order changes. You can find the SAP enhancement in Customizing under the menu path "Shop Floor Control or Production Planning for Process Industries -> Process Order -> System Modifications -> Enhancements for Order Maintenance -> Enhancement when Saving an Order (Header Fields)".
Here you can define additional logic to decide whether or not the system creates change documents.
For this, you can access either the SAP standard tool for creating change documents or your own tool.
The call of the customer exit takes place in function module CO_ZV_ORDER_POST when you save. The current data of an order header is supplied via parameter HEADER_IMP. For collective orders the exit can be called several times - once for each order in the collective order.
Remember that a dialog box must not be accessed and a message must not be issued from the exit.
You can use the attached source code as a template for accessing the creation of change documents.
You can also see in the source code how the current and original data of the different order objects can be provided by internal tables.
The example source code uses function module ORDER_WRITE_DOCUMENT that logs - for the ORDER change document object - the changes for the tables transferred to the module.
It may be appropriate to define a separate object for change documents for orders, for example ZZORDER. If required, you can use the ORDER standard object as a template.
The following tables of the order may have to be taken into ac_countfor this type of change document object:
???????????Table???????Description????????????????????????Production Process order
AFAB????????Relationships????????????????????????????????????????X
AFFH????????Production resource/tool??????????????????X
AFFL????????Work order sequence??????????????????????X??????????X
AFFT????????Process instructions????????????????????????????????X
AFFV????????Process instruction values??????????????????????????X
AFKO????????Order header data PP??????????????????????X??????????X
AFPO????????Order item????????????????????????????????X??????????X
AFVC????????General operation????????????????????????X??????????X
AFVU????????User-specific data operation??????????????X??????????X
AFVV????????Quantities/dates/values in the operation??X??????????X
AUFK????????Order header general??????????????????????X??????????X
DRAD_PORDER Link: Document to order???????????????????X
MLST????????Trigger point????????????????????????????X
RESB????????Reservation??????????????????????????????X??????????X
RSDB????????Index reservation/direct procurement??????X??????????X
Important:
The creation of change documents using the SAP standard tool requires that the indicator for change document creation is set for the data element that defines the affected table field. For example, this indicator is not set for data element GAMNG (total order quantity) in the standard system which is the reason why changes to the planned order quantity of the order header are not logged. The reason for this is that the GAMNG field of the AFKO table is defined using data element GAMNG.
To be able to set the indicator for the creation of change documents without modifications and display change document data at a later stage, refer to Note 394887 (Enhancements for installing PH-ELR_100_46C) for Release 4.6C; as of Release 4.70 (SAP Enterprise), the Add-On is part of the R/3 standard system.
You can of course set the indicator for activating the creation of document changes manually for each data element using Transaction SE11, however, this changes the data element.
You can display the change documents using, for example, programs RSSCD100, RSSCD150, or RSSCD200. The display from the standard transactions of the order is not supported.
For Release 45B to 46B, you must also create function module CO_BR_AFFX_GET_TABLES_POST in function group COBR using Transaction SE37. Define the following TABLES parameters for the interface:
Parameter name????????Type spec.??????Reference type????Optional EXP_AFFT???????????????LIKE????????????AFFTB
EXP_AFFV???????????????LIKE????????????AFFVB
To be able to archive the generated change documents, you must implement the program modification from Note 508212 in your system.
方法二:通過增強程序記錄。
SAP生產工單更改(CO02)記錄詳細教程
In SAP system, it has not prodution order's change record. it is very pity! how to solve it? you can use below ways :
需求:SAP在更改生產工單時并沒有提供詳細的更改記錄,查看SAP的Notes,如果強行開啟FLG_DOC(控制往更改記錄CDHDR,CDPOS里寫數據)標記,在批量處理組件過多的生產工單時會導致程序運行出錯,SAP建議不開啟。User要求對保護字段進行更改記錄,無奈只有使用SAP提供的增強功能,東西經過測試初步完成,發出來共享一下,如果大家有更好的方法,發出來討論討論,步驟如下:
1.CMOD新增一項目ZCO02,增加增強PPCO0001。
2.查看、Debug SAP源代碼,了解數據流向,主要了解在變更工單組件和表頭未保存前這些數據存放在哪里?最后查到這兩數據放在調用出口函數參數表:component_table,header_table。
3.設計數據表結構:ZPCO02,記錄更改,結構如下:
MANDT MANDT CLNT 3
AUFNR AUFNR_char 12
MATNR MATNR_char 18
FILED FIELDNAME_char 30
AENAM AENAM_char 12
LAEDA LAEDA DATS 8
TCODE TCODE_char 20
CHNID CDCHNGIND_char 1
HOSTIP_char20_char 20
HOST MSHOST2_char 32
VALUE_OLD_char20_char 20
VALUE_NEW_char20_char 20
TIMES CDUZEIT TIMS 6
ALPOS????????ALPOS???????_char????????1????????0????????指示符:替代項目
LOOPID????????INT4????????INT4????????10????????0????????自然數
4.在EXIT_SAPLCOBT_001的ZXCO1U01寫入代碼,component_table中的數據跟RESB中的相應保護字段值對比,得出組件更改記錄,表頭更改記錄由header_table與視圖CAUFV對比而來。對于因工單總數更改導至組件數量更改的記錄可以寫一程序從ZPCO02里分開,開放給用戶使用,其他一些更改情況請自行研究。代碼如下:
-----------------------------------------------------------------------------------------------------------------
代碼通過了User測試更正已傳至生產系統,改善了保存時的速度,不用拿更改后的工單組件與RESB里的一個個對比了。
*&---------------------------------------------------------------------*
*& 包括 ZXCO1U01_*
*&---------------------------------------------------------------------*
TABLES:caufv,resb.
DATA: BEGIN OF old_resb OCCURS 0, "更改后未保存之RESB.
aufnr LIKE resb-aufnr,
posnr LIKE resb-posnr,
matnr LIKE resb-matnr,
rsnum LIKE resb-rsnum,
rspos LIKE resb-rspos,
xloek LIKE resb-xloek,
bdmng LIKE resb-bdmng,
objnr LIKE resb-objnr,
END OF old_resb.
DATA: BEGIN OF new_resb OCCURS 0. "數據庫中的RESB.
INCLUDE STRUCTURE old_resb.
DATA: END OF new_resb.
DATA: BEGIN OF obj_resb OCCURS 0. "插入的RESB
INCLUDE STRUCTURE old_resb.
DATA: END OF obj_resb.
DATA: i_zpco02 LIKE zpco02 OCCURS 0 WITH HEADER LINE.
DATA: i_temp LIKE zpco02 OCCURS 0 WITH HEADER LINE.
DATA: iporg LIKE msxxlist-hostadr,
ipdec(16) TYPE c,
host(18) TYPE c.
DATA:_char1(20) TYPE c,
char2(20) TYPE c.
DATA: inst_flg TYPE c VALUE 'N',
chan_had TYPE c VALUE 'N'.
* teco_flg TYPE c VALUE 'N',
* read_flg TYPE c .
*BREAK-POINT.
CHECK sy-tcode EQ 'CO02'.
** Get user IP,hostname
CALL FUNCTION 'TH_USER_INFO' " Get user IP,hostname
EXPORTING
client = sy-mandt
user = sy-uname
IMPORTING
hostaddr = iporg
terminal = host
EXCEPTIONS
OTHERS = 1.
**"Conv.IP addr to format 'xxx.xxx.xxx.xxx'
CALL FUNCTION 'GWY_IPADR2STRING' "Conv.IP addr
EXPORTING
ipadr = iporg
IMPORTING
string = ipdec.
***Common var.
MOVE: sy-mandt TO i_temp-mandt,
sy-uname TO i_temp-aenam,
sy-datum TO i_temp-laeda,
sy-uzeit TO i_temp-times,
sy-tcode TO i_temp-tcode,
ipdec TO i_temp-hostip,
host TO i_temp-host,
header_table-aufnr TO i_temp-aufnr.
***Check M/O header
**check if status eq 'TECO'.
*LOOP AT status_table WHERE objnr EQ header_table-objnr
* AND stat EQ 'I0045'.
*
* MOVE: 'Y' TO teco_flg.
*ENDLOOP.
*CHECK teco_flg NE 'Y'.
*CHECK read_flg NE 'Y'.
_selectSINGLE gamng gltrp INTO (caufv-gamng, caufv-gltrp)
FROM caufv WHERE aufnr EQ header_table-aufnr.
**qty
IF header_table-gamng NE caufv-gamng.
MOVE: caufv-gamng TO_char1, header_table-gamng TO_char2.
MOVE-CORRESPONDING i_temp TO i_zpco02.
MOVE: '更改工單總數' TO i_zpco02-filed,
'U' TO i_zpco02-chnid,
char1 TO i_zpco02-value_old,
char2 TO i_zpco02-value_new.
APPEND i_zpco02.
inst_flg = 'Y'.
chan_had = 'Y'.
ENDIF.
**date
IF header_table-gltrp NE caufv-gltrp.
MOVE-CORRESPONDING i_temp TO i_zpco02.
MOVE: '更改完成時間' TO i_zpco02-filed,
'U' TO i_zpco02-chnid,
caufv-gltrp TO i_zpco02-value_old,
header_table-gltrp TO i_zpco02-value_new.
APPEND i_zpco02.
inst_flg = 'Y'.
ENDIF.
IF inst_flg = 'Y'.
_insertzpco02 FROM TABLE i_zpco02 ACCEPTING DUPLICATE KEYS.
inst_flg = 'N'.
ENDIF.
*_deletecomponent_table WHERE vbkz EQ 'I'.
LOOP AT component_table WHERE vbkz EQ 'U'
OR vbkz EQ 'I'
OR vbkz EQ 'D'.
CASE component_table-vbkz.
WHEN 'I'.
MOVE-CORRESPONDING i_temp TO i_zpco02.
MOVE: '新增組件' TO i_zpco02-filed,
'I' TO i_zpco02-chnid,
'' TO i_zpco02-value_old, "old_resb-matnr
component_table-matnr TO i_zpco02-value_new,
'新增的組件' TO i_zpco02-matnr,
* read_flg TO i_zpco02-readf,
component_table-alpos TO i_zpco02-alpos,
sy-tabix TO i_zpco02-loopid.
APPEND i_zpco02.
inst_flg = 'Y'.
WHEN 'D'.
MOVE-CORRESPONDING i_temp TO i_zpco02.
MOVE: '刪除組件' TO i_zpco02-filed,
'D' TO i_zpco02-chnid,
resb-xloek TO i_zpco02-value_old,
component_table-xloek TO i_zpco02-value_new,
component_table-matnr TO i_zpco02-matnr,
* read_flg TO i_zpco02-readf,
component_table-alpos TO i_zpco02-alpos,
sy-tabix TO i_zpco02-loopid.
APPEND i_zpco02.
inst_flg = 'Y'.
WHEN 'U'.
_selectSINGLE matnr bdmng INTO (resb-matnr, resb-bdmng)
FROM resb WHERE aufnr EQ component_table-aufnr
AND posnr EQ component_table-posnr
AND matnr EQ component_table-matnr
AND rsnum EQ component_table-rsnum
AND rspos EQ component_table-rspos.
IF component_table-matnr NE resb-matnr.
MOVE-CORRESPONDING i_temp TO i_zpco02.
MOVE: '更改組件' TO i_zpco02-filed,
'U' TO i_zpco02-chnid,
resb-matnr TO i_zpco02-value_old,
component_table-matnr TO i_zpco02-value_new,
'更改的工單組件' TO i_zpco02-matnr,
* read_flg TO i_zpco02-readf,
component_table-alpos TO i_zpco02-alpos,
sy-tabix TO i_zpco02-loopid.
APPEND i_zpco02.
inst_flg = 'Y'.
ELSEIF component_table-bdmng NE resb-bdmng.
CHECK chan_had NE 'Y'.
MOVE: component_table-bdmng TO_char1, resb-bdmng TO_char2.
MOVE-CORRESPONDING i_temp TO i_zpco02.
MOVE: '需求數量' TO i_zpco02-filed,
'U' TO i_zpco02-chnid,
char2 TO i_zpco02-value_old,
char1 TO i_zpco02-value_new,
component_table-matnr TO i_zpco02-matnr,
* read_flg TO i_zpco02-readf,
component_table-alpos TO i_zpco02-alpos,
sy-tabix TO i_zpco02-loopid.
APPEND i_zpco02.
inst_flg = 'Y'.
ENDIF.
ENDCASE.
ENDLOOP.
IF inst_flg = 'Y'.
_insertzpco02 FROM TABLE i_zpco02 ACCEPTING DUPLICATE KEYS.
IF sy-subrc EQ 0.
inst_flg = 'N'.
chan_had = 'N'.
* MESSAGE ID 'ZX' TYPE 'W'
* NUMBER '000' WITH 'SAP系統已記錄您的更改!'.
ENDIF.
ENDIF.
--------------------------------------------------------------------------------------------------------
5.更改記錄:
集團 400
訂單 400000063
物料 5017000533A
字段名 刪除標記
更改者 SAP003
上一次修改 2005.09.12
事務代碼 CO02
修改標識符 D
字符20 (HOSTIP) 192.168.4.95
Host Name SAP-8
字符20 (VALUE OLD)
字符20 (VALUE NEW) X
方法三:Tcode-aut10
總結
以上是生活随笔為你收集整理的生产订单修改记录的跟踪方法!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何控制订单发料后不能删除组件
- 下一篇: 物料编码原则有码还是无码