如何将两个内部表传递到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条回答
悻福寶寶
2020-09-02 05:52

将字段目录的TABNAME设置为初始值。 不要传输" it_op"。 仅当使用" ALV层次顺序列表"(REUSE_ALV_HIERSEQ_LIST_DISPLAY或cl_salv_hierseq_table => factory)时,才填写字段目录的TABNAME。

另一个好习惯是,所有技术名称(例如字段名称)都以大写形式输入,因为SAP经常不会将它们更改为大写,并且技术名称几乎总是存储在内存和数据库中 大写。

一周热门 更多>