对于自定义表,通过转换出口转换MATNR失败

时间:2019-07-03 08:45:01

标签: function select sap infoset

我正在尝试从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中提取数据。

2 个答案:

答案 0 :(得分:0)

除非您已在该函数的用户出口中添加了代码,否则它不会做您想要的事情。该功能的标准用途是格式化物料编号,以便在屏幕上显示。

执行所需操作的最快方法是从自定义表中进行选择。

也就是说,该函数中有一个用户出口,您可以在其中编码选择以进行查找。这样做的额外好处是您的用户将能够输入旧物料编号,并且系统将使用新的旧物料编号进行切换。

答案 1 :(得分:0)

您不应在此处使用转换出口。 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❌变化

您的定制表很可能包含错误的物料编号,因此退出不会返回任何内容。或不希望退出的格式的物料编号,例如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不会返回任何内容,但是如果您注释掉模板行,它将返回。