Endroutine-查找以导出多个值

2020-09-20 14:00发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我无法使用以下代码派生多个值。 我的要求是派生查找材料主数据表,并派生前7个字符与输入文件材料匹配的所有材料。


 *声明材料表
 数据:/BI0/PMATERIAL的Z_MATERIAL类型标准表。
 字段符号:类似于Z_MATERIAL的线。
 *从物料表中选择数据
 选择*从/BI0/PMATERIAL进入表的相应字段
  Z_MATERIAL WHERE OBJVERS ='A'。

 类型:ty_data类型_ty_s_TG_1。
 数据:t_data类型STANDARD TABLE OF ty_data,
       w_data类型ty_data,
       l_tabix类型sy-tabix,
       l_line类型I。

 清除:l_tabix,w_data。
 BREAK-POINT。
 t_data [] = RESULT_PACKAGE []。
 在t_data循环到w_data。
        l_tabix = sy-tabix。
        l_line = l_line + 1。
  环Z_MATERIAL分配
   材料+0(7)= w_data-材料
        清除w_data。
         W_DATA-MATERIAL = -材料
         W_DATA-TYPE =  -TYPE。

         W_DATA-RECORD = l_line。
         将附加到T_DATA。
 结局。
 结束循环。  " Result_package

 RESULT_PACKAGE [] = t_data []。
 

(34.2 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我无法使用以下代码派生多个值。 我的要求是派生查找材料主数据表,并派生前7个字符与输入文件材料匹配的所有材料。


 *声明材料表
 数据:/BI0/PMATERIAL的Z_MATERIAL类型标准表。
 字段符号:类似于Z_MATERIAL的线。
 *从物料表中选择数据
 选择*从/BI0/PMATERIAL进入表的相应字段
  Z_MATERIAL WHERE OBJVERS ='A'。

 类型:ty_data类型_ty_s_TG_1。
 数据:t_data类型STANDARD TABLE OF ty_data,
       w_data类型ty_data,
       l_tabix类型sy-tabix,
       l_line类型I。

 清除:l_tabix,w_data。
 BREAK-POINT。
 t_data [] = RESULT_PACKAGE []。
 在t_data循环到w_data。
        l_tabix = sy-tabix。
        l_line = l_line + 1。
  环Z_MATERIAL分配
   材料+0(7)= w_data-材料
        清除w_data。
         W_DATA-MATERIAL = -材料
         W_DATA-TYPE =  -TYPE。

         W_DATA-RECORD = l_line。
         将附加到T_DATA。
 结局。
 结束循环。  " Result_package

 RESULT_PACKAGE [] = t_data []。
 

(34.2 kB)
付费偷看设置
发送
4条回答
大道至简
1楼-- · 2020-09-20 15:01

代码的最终目标是什么? 您不能将找到的所有材料都添加到同一结果包记录中。 因此,请详细说明要求。

Nan4612
2楼-- · 2020-09-20 14:48

嗨,

我的要求是遍历Material表并导出所有前7个字符与输入文件中的材料相匹配的材料,如下图所示。 最终结果是我应该获得更多的材料。

下面是我选择材料的开始例程代码。

 类型:开始于MAT_STRUCT,

       材料类型/BI0/OIMATERIAL,

       MAT_NEW(7)输入c,

   MAT_STRUCT结束。



   数据:带有唯一键材料的MAT_STRUCT的I_MAT类型排序表。

         字段符号:类似于I_MAT的行。



 选择*从/BI0/PMATERIAL进入表的相应字段
  GT_MATERIAL WHERE OBJVERS ='A'。
从/BI0/PMATERIAL到表的相应字段中选择材料 I_MAT WHERE OBJVERS ='A'。
在I_MAT ASSIGNING 上循环。 * CALL FUNCTION'CONVERSION_EXIT_ALPHA_OUTPUT' *出口 *输入= -材料 *输入 *输出= -材料。
-MAT_NEW = -MATERIAL(7)。

ENDLOOP。

END ROUTINE逻辑遍历结果包

数据:E_S_RESULT类型_Ty_s_TG_1。
数据:E_T_RESULT类型_Ty_t_TG_1。
数据:l_tabix类型sy-tabix,
l_line类型I.

* E_T_RESULT [] = RESULT_PACKAGE [] 。
*
BREAK-POINT。
在结果包分配上循环
*
*在GT_MATERIAL分配上循环
* WHERE MATERIAL + 0(7)= -材料。
在I_MAT分配处循环 MAT_NEW所在的位置=
-MATERIAL。
清除:E_S_RESULT。
l_tabix = sy-tabix。
* l_line = l_line + 1.
l_line = 1.
BREAK-要点。

-材料= -材料。
-FISCYEAR = E_S_RESULT-FISCYEAR。< br> -FISCVARNT = E_S_RESULT-FISCVARNT。
-CURRENCY = E_S_RESULT-CURRENCY。
-VTYPE = E_S_RESULT-VTYPE。
* -LINE
APPEND 到E_T_RESULT。
l_line = l_line +1。

ENDLOOP。
ENDLOOP。
刷新RESULT_PACKAGE。
RESULT_PACKAGE [] = E_T_RESULT []。< br> * MOVE E_T_RESULT [] T O RESULT_PACKAGE []。
CJones
3楼-- · 2020-09-20 14:39

嗨,

"我无法使用以下代码导出多个值

在编写线程时,您应该始终提到所面临的问题。

看完您的代码后,我发现您正在循环并附加相同的内部表T_DATA,如下所示。

将t_data循环到w_data中。
  环Z_MATERIAL分配附加到T_DATA。
 结局。
 结束循环。  " Result_package 

在append语句中,使用T_RESULT之类的其他表代替T_DATA。

致谢

Rajkumar Narasimman

Violet凡
4楼-- · 2020-09-20 14:35

HI,

在循环语句中使用If条件:

 t_data [] = RESULT_PACKAGE []。将t_data循环到w_data中。
        l_tabix = sy-tabix。
        l_line = l_line +1。

 循环Z_MATERIAL分配 -MATERIAL = W_DATA-MATERIAL。
          -TYPE = W_DATA-TYPE。
         W_DATA-RECORD = l_line。

 APPEND 到T_DATA。

 万一
 清除w_data。
 ENDLOOP。

一周热门 更多>