CS_BI_BOM_CREATE_BATCH_INPUT1 - ooxxvv/MySAPnotes GitHub Wiki
CS_BI_BOM_CREATE_BATCH_INPUT1
- Create BOM Via Batch Input (Corrected Session Handling)
Code
{{{#!abap DATA: sub_flag. DATA: l_psinc(4) TYPE n VALUE '10', l_posnr(4) TYPE n.
DATA:l_xline LIKE bicsp-xline, l_matnr LIKE mara-matnr.
*--header w_bom_h-stype='1'. =>> header的stype='1' w_bom_h-tcode=tcode. w_bom_h-aennr=t_zelgh-aennr. w_bom_h-matnr=t_zelgh-matnr. w_bom_h-stlan=t_zelgh-stlan.
*--item ADD: l_psinc TO l_posnr, 1 TO l_xline.
MOVE-CORRESPONDING t_zelgl TO t_item. *--xline always set to 0001, because of BATCH-INPUT *------固定給0001 t_item-xline='0001'. *------item的stype='2' t_item-stype='2'. *------posnr要給,不然bom產生後,item number會空白 t_item-posnr=l_posnr. t_item-rvrel=''. t_item-sanfe=''.
*------當欄位是空白時,BDC會認為該欄位未異動,所以如果要將該欄位清空,需以“!”代替空白 IF t_item-schgt=''. t_item-schgt='!'. ENDIF. *------當欄位是空白時,BDC會認為該欄位未異動,所以如果要將該欄位清空,需以“!”代替空白 IF t_item-sanka=''. t_item-sanka='!'. ENDIF. *------此2欄位的關連性,當bulk material indicator(t_item-schgt)打勾時, *------costing relevancy(t_item-sanka)必須清空,不然在做bdc時,會有error IF t_item-schgt='X'. t_item-sanka='!'. ENDIF. *------單位要從主檔抓 SELECT SINGLE meins FROM mara INTO p_meins WHERE matnr=p_idnrk. IF sy-subrc <> 0. CLEAR p_meins. ENDIF. *------當有sub item存在時,t_item-upskz='X', *------如果是做change bom的話(CS02),且sub-item不等於空白時,component數量要填空白, *------讓系統自動依sub item數量 update companent數量 *------但在create BOM時,component數量為必輸欄位,因此不能給空白, *------所以要依Tcode來決定component數量欄位的不同給值邏輯 IF sub_flag='X'. *------表示有sub-item存在 t_item-upskz='X'. IF tcode='CS02'. t_item-menge=''. ENDIF. ENDIF. *--其他欄位 *--sub item *------sub item 的 stype='3' t_sub-stype='3'. *------用xline與component做link *------ex: 若第一個component的posnr=10, 其sub item 的xline要等於 1 t_sub-xline=p_tabix.
APPEND t_sub. sub_flag='X'.
CALL FUNCTION 'CS_BI_BOM_CREATE_BATCH_INPUT1' EXPORTING
- BDC_FLAG =' ' bom_header =w_bom_h
- CLOSE_GROUP =' ' commit_work ='X' group_data =l_group_data
- NEW_GROUP =' '
- tcode_mode ='A' tcode_update ='A' IMPORTING msgid =l_message-msgid msgno =l_message-msgno msgty =l_message-msgty msgv1 =l_message-msgv1 msgv2 =l_message-msgv2 msgv3 =l_message-msgv3 msgv4 =l_message-msgv4 TABLES bom_item =t_item bom_sub_item =t_sub .
IF l_message-msgty <> 'S'. MESSAGE ID l_message-msgid TYPE l_message-msgty NUMBER l_message-msgno WITH l_message-msgv1 l_message-msgv2 l_message-msgv3 l_message-msgv4 INTO t_zelgh-msg.
p_flag='X'. t_zelgh-ertyp='3'. t_zelgh-stat='E'. ENDIF.
}}}