顯示具有 SD 標籤的文章。 顯示所有文章
顯示具有 SD 標籤的文章。 顯示所有文章

2011年10月31日

MV45AFZZ修改SO ITEM問題

有個需求是希望在SO的ITEM在修改VBKD時,能夠update VBAP某些欄位,進到MV45AFZZ去找到FORM USEREXIT_SAVE_DOCUMENT_PREPARE.直接新增修改邏輯。改完實際去測試會發現,若VBAP相關的欄位沒有修改時,save之後VBAP還是一樣的。

想要在FORM USEREXIT_SAVE_DOCUMENT_PREPARE修改VBAP的值有二個方式:
1 在VA02時就已經有VBAP的修改(解法不佳)
2 在FORM當中指定VBAP要強制修改(可行),做法如下:
在XVBAP[]當中找到要修改的VBAP並指定UPDKZ = 'U',要特別注意UPDKZ若已是'D'時表示這個item save之後會被刪除,千萬不要去修改UPDKZ。另外也要考慮這一筆VBAP若是新增時,不需要指定UPDKZ 。


2011年10月27日

SO 狀態說明讀取

下圖的狀態欄位經過讀取TABLE VBUK只能得到狀態碼,無法得到顯示的內文。若直接Call Function DOMAIN_VALUE_GET去讀到Domain的value也不是正確的。實際上SO的狀態說明是維護在TABLE TVBST當中,不是在Domain。



2010年9月7日

修正Billing Doc匯率

最近有個案子碰到在Create Billing Doc時,很彈性的給定匯率
找了一下,有一支程式RV60AFZC裡面的EXIT可以自行加入程式碼直接將匯率寫入
以下是範例:


FORM USEREXIT_FILL_VBRK_VBRP.
DATA: L_UKURS LIKE TCURR-UKURS.
IF VBRK-WAERK NE 'TWD'.
  CALL FUNCTION 'READ_EXCHANGE_RATE'
    EXPORTING
      CLIENT                  = SY-MANDT
      DATE                    = SY-DATUM
      FOREIGN_CURRENCY        = VBRK-WAERK
      LOCAL_CURRENCY          = VBRK-STWAE
      TYPE_OF_RATE            = VBRK-KURST
    IMPORTING
      EXCHANGE_RATE           = L_UKURS   .  
  IF SY-SUBRC = 0.
    VBRK-KURRF = L_UKURS.
  ENDIF.
ENDIF.
ENDFORM.

2010年8月31日

Outbound Delivery修改畫面屬性

今天友人提問,Outbound Delivery畫面上的欄位是否可以做到input disabled
從img到program exit再到ehancement都找不到可以修改的地方,只直接問有經驗的人
原來只要用一個BADI就解決了:LE_SHP_DELIVERY_PROC

立刻到IDES試一下:

1 implement BADI(步驟略)


2 直接加入程式碼
DATA: LS_ATTRIBUTES TYPE SHP_SCREEN_ATTRIBUTES.
LS_ATTRIBUTES-NAME = 'LIPS-MFRGR'.
LS_ATTRIBUTES-INPUT = 0.
APPEND LS_ATTRIBUTES TO CT_FIELD_ATTRIBUTES.

3 Active 前先執行VL02N看看,此時欄位可修改


4 將BADI Active後重新執行,欄位已不可輸入