[英]Converting MATNR via conversion exit fails for custom table
我正在嘗試從 MSEG 中選擇材料移動的最新日期,但材料需要有庫存,並且來自使用未轉換材料名稱的定制表。
我試過使用CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
(和INPUT
),但我不確定如何在選擇語句中正確使用它。
IF MSEG-BWART = '101'.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
EXPORTING
INPUT = ZBJSTOCK-ZMAT10
IMPORTING
OUTPUT = WA2-MATNR.
SELECT MAX( BUDAT_MKPF )
FROM MSEG
INTO GRDT
WHERE MATNR = WA2-MATNR.
ENDIF.
目前, WA2-MATNR
似乎是空白的,因此沒有從 MSEG 中提取數據。
你不應該在這里使用轉換出口。 SAP 表中的物料編號采用內部 (INPUT) 格式,您將其轉換為可讀格式 (OUTPUT) 以查詢表。 很明顯你不會找到任何東西。
樣本:
MATNR 內部格式(用於 OUT 出口)
000000000000025567
MATNR 外部格式(用於 IN 出口)
25567
轉換案例:
000000000000025567 -> CONVERSION_EXIT_MATN1_OUTPUT
-> 25567 ✔️
25567 -> CONVERSION_EXIT_MATN1_OUTPUT
-> 25567 ❌ 沒有任何變化
25567 -> CONVERSION_EXIT_MATN1_INPUT
-> 000000000000025567 ✔️
000000000000025567 -> CONVERSION_EXIT_MATN1_INPUT
-> 000000000000025567 ❌ nng 變化
最有可能的是,您的定制表包含錯誤的材料編號,因此退出不會返回任何內容。 或退出不期望格式的材料編號,例如 19 個字符而不是 18 個等等。
聚苯乙烯
僅供您參考,您可以使用模板進行轉換。 與調用轉換FM相同
SELECT SINGLE matnr FROM mara INTO @DATA(l_matnr) WHERE EXISTS ( SELECT * FROM mseg WHERE matnr = mara~matnr ).
l_matnr = | { l_matnr ALPHA = OUT } |. <<-- templating
SELECT SINGLE matnr, budat_mkpf
FROM mseg
INTO @DATA(l_mkpf)
WHERE matnr = @l_matnr.
在上面的示例中 SELECT 不會返回任何內容,但是如果您注釋掉模板行,它會返回。
除非您在該函數的用戶出口中添加了代碼,否則它不會執行您想要的操作。 該函數的標准用途是格式化材料編號以顯示在屏幕上。
執行所需操作的最快方法是從自定義表中進行選擇以進行查找。
也就是說,該函數中有一個用戶出口,您可以在其中編寫選擇代碼以進行查找。 這樣做的額外好處是您的用戶將能夠輸入舊物料編號,系統會將其切換為新編號。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.