如何用代碼填充S/4HANA銷售訂單行項目的數量字段
我的任務是用代碼生成S/4HANA銷售訂單(Sales Order)的行項目,并且填充對應的quantity(數量)值。
最開始我用了下面的代碼,把quantity的值寫入item字段target_qty:
ls_order_items_in-item_categ = 'TAN'. ls_order_items_in-material = 'REDUCER_A'. ls_order_items_in-target_qty = 999. ls_order_items_in-itm_number = 10. ls_order_item_x-item_categ = 'X'. ls_order_item_x-material = 'X'. ls_order_item_x-target_qty = 'X'. ls_order_item_x-itm_number = 'X'. ls_order_item_x-updateflag = 'I'. APPEND ls_order_item_x TO lt_order_item_x. APPEND ls_order_items_in TO lt_order_items_in.
執行后發現不工作。
研究了一個維護有正確quantity的行項目,發現這個quantity字段實際上是維護在item的schedule line上的:
而我們在item上看到的order quantity,從F1幫助文檔里已經看得很清楚了,是一個累加值,所有schedule line的quantity的求和。
所以正確的代碼應該是還得創建item的schedule line:
ls_schdlin-itm_number = 10. ls_schdlin-req_qty = 3. ls_schdlinx-itm_number = 'X'. ls_schdlinx-itm_number = 'X'. ls_schdlinx-updateflag = 'X'. APPEND ls_schdlin TO lt_schdlin. APPEND ls_schdlinx TO lt_schdlinx.
完整代碼下圖所示:
為什么CRM Opportunity的刪除會觸發一個通向BW系統的RFC
今天工作時我發現,我在SE38里用函數CRM_ORDER_DELETE刪除一個Opportunity,居然彈出下圖這個SAP Logon的屏幕,要連接BR1。這是什么鬼?!
查了一下,BR1是BW系統。這就更奇怪了,我在CRM系統做業務數據的刪除,關BW系統什么事呢?
還是老老實實debug吧。
CRM_ORDER_DELETE會調CRM_ORDER_DELETE_MULTI_OW, 后者又會掉CRM_ORDER_DELETE_SINGLE_OW:
刪除之前先調用enqueue_order上鎖:
上鎖的subroutine里會調一個函數CRM_OPPORT_SEM_INIT,這個有點可疑。
找到問題癥結了。通過調試,發現這里有一個RFC調用:
那個奇怪的SEM函數和transaction type里這個SEM Planning profile有關:
最后發現有一個配置表CRMC_MKTPL_BW來控制是否往BW系統發起RFC調用:
SPRO路徑:Customer Relationship management->Marketing->Marketing Planning and Campaign Management->System landscape->Active SAP Netweaver BW Update:
RFC destination的配置維護在這張表里:
謎題解開了。通過修改這張配置表的entry,可以避免這個BW RFC調用。
ABAP ERP Java
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。