简体   繁体   English

显示带有 cl_salv_table 的表:“itab 的类型与形式参数 t_table 不兼容”

[英]Displaying a table with cl_salv_table: "itab is not type compatible with formal parameter t_table"

I need to display an internal table with cl_salv_table .我需要用cl_salv_table显示一个内部表。 Currently I take the bkpf table, cut out three columns and insert them into the internal table.目前我拿bkpf表,切出三列并将它们插入到内部表中。 But now it's saying that the parameter and lt_bkpf are type-incompatible.但是现在它说参数和lt_bkpf是类型不兼容的。

Here is my Code:这是我的代码:

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 5(15) p_name1 FOR FIELD p_blart.
PARAMETERS: p_blart TYPE blart.

SELECTION-SCREEN END OF LINE.

AT SELECTION-SCREEN OUTPUT.
  p_name1 = 'Belegart'.

INITIALIZATION.
  p_blart = 'DD'. "Set default value
END-OF-SELECTION.

Data:
BEGIN OF gt_bkpf OCCURS 0,
  bukrs LIKE bkpf-bukrs,
  blart LIKE bkpf-blart,
  gjahr LIKE bkpf-gjahr,
END OF gt_bkpf.

SELECT bukrs, blart, gjahr
  FROM bkpf
  WHERE blart LIKE @p_blart
  INTO CORRESPONDING FIELDS OF @gt_bkpf.
ENDSELECT.

cl_salv_table=>factory( IMPORTING r_salv_table = go_table
                        CHANGING t_table = gt_bkpf ).

  go_table->display( ).

The internal table is declared with header line (because of OCCURS), this is obsolete and not supported in OO environment.内部表用 header 行声明(因为 OCCURS),这是过时的并且在 OO 环境中不受支持。 You have to declare the table like this:您必须像这样声明表:

TYPES: BEGIN OF ty_bkpf,
  bukrs TYPE bkpf-bukrs,
  blart TYPE bkpf-blart,
  gjahr TYPE bkpf-gjahr,
END OF ty_bkpf.

DATA: lt_bkpf TYPE STANDARD TABLE OF ty_bkpf.

Please note the LIKE is also replaced by TYPE.请注意 LIKE 也被 TYPE 取代。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM