对于自定义 table,通过转换出口转换 MATNR 失败
Converting MATNR via conversion exit fails for custom table
我正在尝试 select 来自 MSEG 的 material 运动的最新日期,但是 material 需要有库存并且来自定制 table 使用未转换的 Material 名称。
我试过使用 CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
(和 INPUT
),但我不确定如何在 select 语句中正确使用它。
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 中提取数据。
除非您已将代码添加到该函数的用户出口中,否则它不会执行您想要的操作。该函数的标准用途是格式化 material 数字以显示在屏幕上。
完成您想要的操作的最快方法是从您的自定义 table select 进行查找。
也就是说,该函数中有一个用户出口,您可以在其中编写 select 代码来执行查找。这样做的额外好处是您的用户将能够输入旧的 material 号码,系统会将其切换为新号码。
您不应在此处使用转换出口。 Material SAP tables 中的数字采用内部 (INPUT) 格式,您正在将其转换为可读格式 (OUTPUT) 以便查询 table。很明显你不会找到任何东西。
样本:
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 更改
最有可能的是,您定制的 table 包含错误的 material 号码,因此退出不会 return 任何东西。或者 material 格式的数字,exit 不期望,例如19 个字符而不是 18 个等等。
P.S.
仅供参考,您可以使用模板进行转换。和调用转换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 不会 return 任何东西,但是如果您注释掉模板行,它就会。
我正在尝试 select 来自 MSEG 的 material 运动的最新日期,但是 material 需要有库存并且来自定制 table 使用未转换的 Material 名称。
我试过使用 CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
(和 INPUT
),但我不确定如何在 select 语句中正确使用它。
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 中提取数据。
除非您已将代码添加到该函数的用户出口中,否则它不会执行您想要的操作。该函数的标准用途是格式化 material 数字以显示在屏幕上。
完成您想要的操作的最快方法是从您的自定义 table select 进行查找。
也就是说,该函数中有一个用户出口,您可以在其中编写 select 代码来执行查找。这样做的额外好处是您的用户将能够输入旧的 material 号码,系统会将其切换为新号码。
您不应在此处使用转换出口。 Material SAP tables 中的数字采用内部 (INPUT) 格式,您正在将其转换为可读格式 (OUTPUT) 以便查询 table。很明显你不会找到任何东西。
样本:
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 更改
最有可能的是,您定制的 table 包含错误的 material 号码,因此退出不会 return 任何东西。或者 material 格式的数字,exit 不期望,例如19 个字符而不是 18 个等等。
P.S.
仅供参考,您可以使用模板进行转换。和调用转换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 不会 return 任何东西,但是如果您注释掉模板行,它就会。