如何将两个内部表传递到ALV报告功能模块

2020-09-02 05:01发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)在创建ALV报告时,我试图从两个...

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

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


在创建ALV报告时,我试图从两个不同的表中获取数据,即:mara,makt。 但是在输出屏幕上没有显示数据。 下面是任何人都可以向我提出的解决方案以及如何将内部表结构都传递给Function模块的代码。

报告ZSPM_GUI_DOWNLOAD。

表格:mara,
副本。

TYPE-POOLS slis。

选择选项s_matnr用于mara-matnr。

类型:st_op的开始,
v_matnr TYPE mara-matnr,
v_ernam TYPE mara-ernam,
v_ersda TYPE mara-ersda,
v_maktx TYPE makt-maktx,

st_op结束

数据:st_op类型表,
wa_op类型st_op。

类型:st_mara的开始,
lv_matnr类型mara-matnr,
lv_ernam类型mara-ernam,
lv_ersda TYPE mara-ersda,
st_mara的结尾,

st_makt的开始,
lv_matnr TYPE makt-matnr,
lv_maktx TYPE makt-maktx,

END OF st_makt。

数据:st_mara的it_mara类型表,
st_mara的wa_mara类型表,

st_makt的it_maktx类型表,
wa_maktx类型st_makt的表。 ****************************************************** *******************
*************现场目录************* ******************************
***************** ****************************************************** ***
数据:it_fcat类型slis_t_fieldcat_alv,
wa_fcat类型slis_fieldcat_alv。

************************* ***************************************************
************选择语句************************************ ******
***************************************** ****************************** *
选择开始。
PERFORM获取数据。
PERFORM创建_fcat。

选择结束。

执行display_alv。

< br>
*&------------------------------------------- -------------------------- *
*&表格GET_DATA
*&----------- -------------------------------------------------- -------- *
*文字
* -------------------------------- -------------------------------------- *
*-> p1文字
* <-p2文字
* --------------------------------------- ------------------------------- *
FORM get_data。
从mara中选择matnr ernam ersda
进入表it_mara
,其中matnr = s_matnr。

从matk中选择matnr maktx
到表it_maktx
,其中it_mara
中的所有条目,其中matnr = it_mara-lv_matnr。
ENDFORM 。
*&-------------------------------------------- ------------------------- *
*&表格CREATE_FCAT
*&------------ -------------------------------------------------- ------- *
*文字
* --------------------------------- -- ------------------------------------ *
*-> p1文字
* <-p2文字
* ----------------------------------------- ----------------------------- **
FORM create_fcat。
WA_FCAT-COL_POS ='1'。
WA_FCAT-FIELDNAME ='matnr'。
wa_fcat-seltext_m ='材料数'。
wa_fcat-tabname ='it_mara'。
WA_FCAT-KEY ='X'。
将wa_fcat附加到it_fcat。
清除wa_fcat。

WA_FCAT-COL_POS ='2'。
wa_fcat-fieldname ='ernam'。
wa_fcat-seltext_m ='材料创建者:NAME'。
wa_fcat -tabname ='it_mara'。
WA_FCAT-KEY ='X'。
将wa_fcat附加到it_fcat。

wa_fcat-fieldname ='ersda'。
wa_fcat-seltext_m ='创建于 :'。
wa_fcat-tabname ='it_mara'。
WA_FCAT-KEY ='X'。
将wa_fcat附加到it_fcat。
清除wa_fcat。

wa_fcat字段名称=' Maktx'。
wa_fcat-seltext_m ='材料说明:'。
wa_fcat-tabname ='it_maktx'。
WA_FCAT-KEY ='X'。


将wa_fcat附加到it_fcat。
*清除wa_fcat。
ENDFORM。
*&- -------------------------------------------------- ----------------- *
*&表格DISPLAY_ALV
*&-------------------- ------------------------------------------------- *
*文字
* ----------------------------------------- ----------------------------- **
*-> p1文本
* <-p2文本
* ------------------------------------------------ ---------------------- *
FORM display_alv。

调用功能'REUSE_ALV_GRID_DISPLAY'
导出
I_CALLBACK_PROGRAM = SY -REPID
IT_FIELDCAT = it_fcat

t_outtab = it_op

IF sy-subrc <> 0.
*在此处实施适当的错误处理
ENDIF。
ENDFORM。

5条回答
SKY徐
2020-09-02 05:32

您好,

请遵循以下准则:

1)尝试使用Join编写单个选择查询。

2)您必须将输出结构字段传递到字段目录中。 并非数据所在的实际结构。 例如,您应该从结构st_op而不是mara table结构传递字段。 基本上,您的字段目录应该具有从st_op而不是多个结构

3的一个结构填充的结构字段。3)填充字段目录时,必须以大写形式输入字段名称,例如V_MATNR而不是v_matnr。

4)我也看不到您要填充it_op表的任何地方。 我建议您如下进行联接选择查询。

选择a〜matnr

a〜ernam

a〜ersda

b〜maktx

从mara 作为a

内部联接,作为b

在a〜matnr = b〜matnr

上,其中s_matnr中的a〜matnr

进入 lt_ op。

如果您有更高的ECC版本,则上面的代码适用于较低的版本。

选择a〜matnr,

a〜ernam,

a〜ersda,

b〜maktx

从mara作为a

内部联接作为b

〜matnr = b〜matnr

其中,@ s_matnr中的a〜matnr

进入@ lt_ op。

希望它会有所帮助!

注意事项

一周热门 更多>