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

尝试此代码

表格:玛拉,

         马特

 TYPE-POOLS slis。

 SELECT_OPTIONS s_matnr用于mara-matnr。

 类型:st_op的开始,

          lv_matnr TYPE mara-matnr,

          lv_ernam TYPE mara-ernam,

          lv_ersda TYPE mara-ersda,

          lv_maktx TYPE makt-maktx,

 ENDOF st_op。

 数据:st_op的it_op类型表,

       wa_op TYPE st_op。
 ******************************************************  *********************
 *************现场目录***************************************  ********
 ******************************************************  ********************

 数据:it_fcat类型slis_t_fieldcat_alv,

       wa_fcat类型slis_fieldcat_alv。
 ******************************************************  **********************
 ************选择语句************************************  ******
 ******************************************************  **********************

 选择开始。

 执行get_data。

 执行create_fcat。

 选择结束。

 执行display_alv。
 *&------------------------------------------------  --------------------- *
 *&表格GET_DATA
 *&------------------------------------------------  --------------------- *
 *文字
 * -------------------------------------------------  --------------------- *
 *-> p1文字
 * <-p2文字
 * -------------------------------------------------  --------------------- *

 FORM get_data。

 选择m〜matnr,m〜ernam,m〜ersda,mt〜maktx

   来自mara as m

 内部连接市场作为mt on m〜matnr = mt〜matnr

   m〜matnr在@s_matnr中

   进入表@it_op。

 ENDFORM。
 *&------------------------------------------------  --------------------- *
 *&表格CREATE_FCAT
 *&------------------------------------------------  --------------------- *
 *文字
 * -------------------------------------------------  --------------------- *
 *-> p1文字
 * <-p2文字
 * -------------------------------------------------  --------------------- *

 表格create_fcat。

   wa_fcat-col_pos ='1'。

   wa_fcat-fieldname ='lv_matnr'。

   wa_fcat-seltext_m ='材料编号'。

   wa_fcat-tabname ='it_op'。

   wa_fcat-key ='X'。

 将wa_fcat附加到it_fcat。

 清除wa_fcat。

   wa_fcat-col_pos ='2'。

   wa_fcat-fieldname ='lv_ernam'。

   wa_fcat-seltext_m ='材料由NAME创建。

   wa_fcat-tabname ='it_op'。

   wa_fcat-key ='X'。

 将wa_fcat附加到it_fcat。
   wa_fcat-fieldname ='lv_ersda'。

   wa_fcat-seltext_m ='创建于:'。

   wa_fcat-tabname ='it_op'。

   wa_fcat-key ='X'。

 将wa_fcat附加到it_fcat。

 清除wa_fcat。
   wa_fcat-fieldname ='lv_maktx'。

   wa_fcat-seltext_m ='材料说明:'。

   wa_fcat-tabname ='it_op'。

   wa_fcat-key ='X'。

 将wa_fcat附加到it_fcat。
 *清除wa_fcat。

 ENDFORM。
 *&------------------------------------------------  --------------------- *
 *&表格DISPLAY_ALV
 *&------------------------------------------------  --------------------- *
 *文字
 * -------------------------------------------------  --------------------- *
 *-> p1文字
 * <-p2文字
 * -------------------------------------------------  --------------------- *

 FORM display_alv。

 CALLFUNCTION'REUSE_ALV_GRID_DISPLAY'

 出口

       i_callback_program = sy-repid

       it_fieldcat = it_fcat

     桌子

       t_outtab = it_op。

 如果sy-subrc <> 0。
 *在这里实施适当的错误处理

 万一。

 ENDFORM。

1-过滤时使用选择选项时,请使用IN no =。

2-进行简单查询时,请在同一条语句中执行查询,然后将数据插入alv(it_op)的输出表中。

3-定义列的名称时,必须放置查询时未引用该名称的表的名称。

祝你好运!

一周热门 更多>