如何使用3个内部表的数据?

2020-08-18 07:49发布

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

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


我在3个内部表中获得了所需的数据。 如何获得将打印的报告:

1。 物料编号

2。 材料说明

3。 植物

4。 工厂描述作为给定材料编号的输出。

当没有字段与MARC和MAKT内部表匹配时,我对从it_too1w中检索数据感到困惑。

这是代码:

*&--------------------------------------------- ------------------------ *
*&报告Z_ABAP_ASSIGNMENT2_ADDITION_1
*&
*&-------- -------------------------------------------------- ----------- *
*&
*&
*&----------------------- ---------------------------------------------- *

报告Z_ABAP_ASSIGNMENT2_ADDITION_1。

类型:ty_marc的开始,
matnr类型MATNR,
werks类型WERKS_D,
ty_marc的结尾。

类型:ty_makt的开始 ,
matnr型MATNR,
spras型SPRAS,
maktx型MAKTX,
maktg型MAKTG,
ty_makt的结尾。

TYPES:ty_t001w的开头,
> werks TYPE WERKS_D,
name1 TYPE NAME1,
ty_t001w的结尾。

DATA:it_marc TYPE ty_marc OCCURS 0,
wa_marc TYPE ty_marc,
it_makt TYPE ty_makt OCCURS 0 br> wa_makt类型ty_makt,
it_t001w类型ty_t001w OCCURS 0,
wa_t001w类型ty_t001w。


选择选项s_matnr用于wa_makt-matnr无扩展名<间隔>。 > SELECT matnr
spras
maktx
makt g
从makt
插入表it_makt
s_matnr中的matnr。

如果sy-subrc是INITIAL。
SELECT matnr
派克
FROM marc
将表it_marc
放入表it_markt
中的所有项,在其中将EQ的it_makt-matnr均衡。
ENDIF。

如果sy-subrc是INITIAL。
选择操作符
name1
>从T001W
到表it_t001w
对于it_marc中的所有条目
在哪里EQ it_marc-werks。
ENDIF。

WRITE:/'材料号',
20 '材料描述',
45'植物',
55'植物描述'左对齐。
跳过。

*我无法理解如何使用3 IT进行输出。

将it_makt放入wa_makt。
*使用表键将it_t001w放入wa_t001w。
写入wa_makt-matnr。
写入20 wa_makt-maktx。
写入45 wa_t001w-wer 。
写55 wa_t001w-name1左对齐。

ENDLOOP。

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

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


我在3个内部表中获得了所需的数据。 如何获得将打印的报告:

1。 物料编号

2。 材料说明

3。 植物

4。 工厂描述作为给定材料编号的输出。

当没有字段与MARC和MAKT内部表匹配时,我对从it_too1w中检索数据感到困惑。

这是代码:

*&--------------------------------------------- ------------------------ *
*&报告Z_ABAP_ASSIGNMENT2_ADDITION_1
*&
*&-------- -------------------------------------------------- ----------- *
*&
*&
*&----------------------- ---------------------------------------------- *

报告Z_ABAP_ASSIGNMENT2_ADDITION_1。

类型:ty_marc的开始,
matnr类型MATNR,
werks类型WERKS_D,
ty_marc的结尾。

类型:ty_makt的开始 ,
matnr型MATNR,
spras型SPRAS,
maktx型MAKTX,
maktg型MAKTG,
ty_makt的结尾。

TYPES:ty_t001w的开头,
> werks TYPE WERKS_D,
name1 TYPE NAME1,
ty_t001w的结尾。

DATA:it_marc TYPE ty_marc OCCURS 0,
wa_marc TYPE ty_marc,
it_makt TYPE ty_makt OCCURS 0 br> wa_makt类型ty_makt,
it_t001w类型ty_t001w OCCURS 0,
wa_t001w类型ty_t001w。


选择选项s_matnr用于wa_makt-matnr无扩展名<间隔>。 > SELECT matnr
spras
maktx
makt g
从makt
插入表it_makt
s_matnr中的matnr。

如果sy-subrc是INITIAL。
SELECT matnr
派克
FROM marc
将表it_marc
放入表it_markt
中的所有项,在其中将EQ的it_makt-matnr均衡。
ENDIF。

如果sy-subrc是INITIAL。
选择操作符
name1
>从T001W
到表it_t001w
对于it_marc中的所有条目
在哪里EQ it_marc-werks。
ENDIF。

WRITE:/'材料号',
20 '材料描述',
45'植物',
55'植物描述'左对齐。
跳过。

*我无法理解如何使用3 IT进行输出。

将it_makt放入wa_makt。
*使用表键将it_t001w放入wa_t001w。
写入wa_makt-matnr。
写入20 wa_makt-maktx。
写入45 wa_t001w-wer 。
写55 wa_t001w-name1左对齐。

ENDLOOP。

付费偷看设置
发送
7条回答
天桥码农
1楼-- · 2020-08-18 08:30

Hi
首先,应将SPRAS条件添加到MAKT SELECT中。

然后,当涉及到读取内部表时。

在it_makt INTO wa_makt中循环。  
在it_marc上循环到wa_marc,其中matnr = wa_makt-matnr。 "之所以如此,是因为每一种材料可以有很多记录 将表it_t001w读入wa_t001w并输入密钥周= wa_marc-werks。 "读表,因为每个植物只有一个记录 如果sy-subrc = 0。 写:/... 万一。 结局。
ENDLOOP。

您应该创建IT_MARC和IT_T001W内部表,并按MATNR和WERKS上的键进行排序,以获得更好的性能。



Mateusz

歪着头看世界
2楼-- · 2020-08-18 08:24

请使用CODE按钮设置代码格式,以便以更加用户友好的格式(彩色)显示代码。

bbpeas
3楼-- · 2020-08-18 08:27

您好

您可以通过单个查询本身来实现。

 SELECT matnr,maktx,werks,name1 FROM
 MARC作为
 内部联接营销为b在a〜MATNR eq b〜MATNR上
 内部联接T001W as c ON〜WERKS eq c〜WERKS
 表的对应字段your_output_internaltable
 s_matnr中的a〜matnr和b〜SPARS EQ SY-LANGU
 

 
当学会了学习
4楼-- · 2020-08-18 08:24

您使用的是非常旧/过时的ABAP。 从6.10开始,OCCURS已过时。 自7.40起存在表表达式(而不是READ TABLE)。

(+更喜欢使用ABAP对象)

能不能别闹
5楼-- · 2020-08-18 08:23

HS

在向论坛发布查询之前,几乎没有指南可言,

1)使用code选项粘贴任何代码。

2)在发布之前,请确保您已针对要求进行了足够的研究。 您的要求是基本要求,如果您花了一些时间查看少量示例代码,您将自己解决该问题。

3)始终首先尝试理解编码功能,例如Sandra Rossi建议不要使用过时的编码。

致谢!

Cikesha
6楼-- · 2020-08-18 08:17

使用" /",而不是" 跳过"。

问候,

Mateusz

一周热门 更多>