最近想起上個project有個透過interface從MES轉入生產訂單異常,在SAP用BAPI開出QN時,要把訂單號碼及作業號碼寫入的問題。
1 以下是在IDES建立的QN,訂單號碼及作業號碼是直接填入的
2 在BAPI_QUALNOT_CREATE傳入的NOTIFHEADER只找到PROD_ORDER是生產訂單,卻找不到作業號碼對應的field
3 進table AFVC找到field AUFPL及APLZL,剛好可以對應到NOTIFHEADER,改填入這二個field
4 BAPI_TRANSACTION_COMMIT前要記得先處理BAPI_QUALNOT_SAVE
2010年9月25日
2010年9月24日
TBB1過帳替換special GL indicator科目
友人提問:TR的TBB1可以替換vendor的special GL indicator科目嗎?
1 進入IDES測試,建立一筆TR交易後執行TBB1測試
2 執行後結果,借方科目是總帳科目,過帳碼是40
3 Implement BADI TPM_ACCIF_TRAC,在Method ACCIT_EXIT修改借方的內容
過帳對象是vendor 1000
科目是160000
過帳碼 21
科目類型 K
CH_ACCIT_D-LIFNR = '0000001000'.
CH_ACCIT_D-HKONT = '0000160000'.
CH_ACCIT_D-BSCHL = '21'.
CH_ACCIT_D-KOART = 'K'.
4 再執行一次TBB1測試,會計科目及過帳碼已經修改成功
5 再修改一次Method ACCIT_EXIT,過帳碼改為29,特殊總帳指示碼改為A,再加入稅碼V0(IDES設定替換後的科目要帶稅碼,在此不特別處理)
CH_ACCIT_D-LIFNR = '0000001000'.
CH_ACCIT_D-HKONT = '0000160000'.
CH_ACCIT_D-BSCHL = '29'.
CH_ACCIT_D-UMSKZ = 'A'.
CH_ACCIT_D-KOART = 'K'.
CH_ACCIT_D-MWSKZ = 'V0'.
6 再執行一次TBB1測試,過帳碼29已經修改成功,會計科目還是160000
7 正式過帳看看傳票結果,TBB1的科目160000已替換成A類的科目159000
1 進入IDES測試,建立一筆TR交易後執行TBB1測試
2 執行後結果,借方科目是總帳科目,過帳碼是40
3 Implement BADI TPM_ACCIF_TRAC,在Method ACCIT_EXIT修改借方的內容
過帳對象是vendor 1000
科目是160000
過帳碼 21
科目類型 K
CH_ACCIT_D-LIFNR = '0000001000'.
CH_ACCIT_D-HKONT = '0000160000'.
CH_ACCIT_D-BSCHL = '21'.
CH_ACCIT_D-KOART = 'K'.
4 再執行一次TBB1測試,會計科目及過帳碼已經修改成功
5 再修改一次Method ACCIT_EXIT,過帳碼改為29,特殊總帳指示碼改為A,再加入稅碼V0(IDES設定替換後的科目要帶稅碼,在此不特別處理)
CH_ACCIT_D-LIFNR = '0000001000'.
CH_ACCIT_D-HKONT = '0000160000'.
CH_ACCIT_D-BSCHL = '29'.
CH_ACCIT_D-UMSKZ = 'A'.
CH_ACCIT_D-KOART = 'K'.
CH_ACCIT_D-MWSKZ = 'V0'.
6 再執行一次TBB1測試,過帳碼29已經修改成功,會計科目還是160000
7 正式過帳看看傳票結果,TBB1的科目160000已替換成A類的科目159000
2010年9月21日
設備(IE01/IE02/IE03)客製欄位及BAPI處理
友人提問:設備(IE01/IE02/IE03)的客製欄位如何用BAPI處理?
新增客製欄位就用IDES練習
1 找到設備的table EQUI SAP有預留一個customer include CI_EQUI,直接在這個structure做append structure,命名ZAEQUI
新增一個field ZZMATNR
2 在CMOD新增一個Project,Assignment Enhancement ITOB0001,使用第一個screen exit
3 新增一個function group ZEQUI並建立screen 0100,將新增field 放入screen layout,記得要選Subscreen。(PBO/PAi處理略)
4 在Function exit EXIT_SAPLITO0_001及EXIT_SAPLITO0_002寫入適當code(略)
5 進IE01/IE02/IE03看看結果
6 以上是新增screen exit顯示customer include field,接下來是重點使用bapi,進入BAPI browser找到BAPI_EQUI_CREATE,怎麼找也找不到有CI_EQUI的interface
7 只好改為copy bapi的方式,先找到BAPI_EQUI_CREATE的function group ITOB_BAPI_EQ,直接copy整個function group及BAPI_EQUI_CREATE,名字前面加個Z
8 發現code DATA: L_ITOB_REC LIKE ITOB,ITOB當中就有CI_EQUI,二話不說馬上修改,在import新增I_CI_EQUI LIKE CI_EQUI,並在CALL FUNCTION 'EQUIPMENT_SAVE' 之前將I_CI_EQUI寫入L_ITOB_REC
L_ITOB_REC-ZZMATNR = I_CI_EQUI-ZZMATNR.
9 經過測試,以上的方法是可行的
新增客製欄位就用IDES練習
1 找到設備的table EQUI SAP有預留一個customer include CI_EQUI,直接在這個structure做append structure,命名ZAEQUI
新增一個field ZZMATNR
2 在CMOD新增一個Project,Assignment Enhancement ITOB0001,使用第一個screen exit
3 新增一個function group ZEQUI並建立screen 0100,將新增field 放入screen layout,記得要選Subscreen。(PBO/PAi處理略)
4 在Function exit EXIT_SAPLITO0_001及EXIT_SAPLITO0_002寫入適當code(略)
5 進IE01/IE02/IE03看看結果
6 以上是新增screen exit顯示customer include field,接下來是重點使用bapi,進入BAPI browser找到BAPI_EQUI_CREATE,怎麼找也找不到有CI_EQUI的interface
7 只好改為copy bapi的方式,先找到BAPI_EQUI_CREATE的function group ITOB_BAPI_EQ,直接copy整個function group及BAPI_EQUI_CREATE,名字前面加個Z
8 發現code DATA: L_ITOB_REC LIKE ITOB,ITOB當中就有CI_EQUI,二話不說馬上修改,在import新增I_CI_EQUI LIKE CI_EQUI,並在CALL FUNCTION 'EQUIPMENT_SAVE' 之前將I_CI_EQUI寫入L_ITOB_REC
L_ITOB_REC-ZZMATNR = I_CI_EQUI-ZZMATNR.
9 經過測試,以上的方法是可行的
訂閱:
文章 (Atom)