简体   繁体   English

调用 REUSE_ALV_FIELDCATALOG_MERGE 时出现 CX_SY_READ_SRC_LINE_TOO_LONG 错误

[英]CX_SY_READ_SRC_LINE_TOO_LONG error while calling REUSE_ALV_FIELDCATALOG_MERGE

I want to using 'reuse_alv_fieldcatalog_merge' fill the table and press the screen.我想使用'reuse_alv_fieldcatalog_merge'填充表格并按下屏幕。 But it gives such an error:但它给出了这样的错误:

"The ABAP program lines are wider than the internal table." “ABAP 程序行比内部表更宽。”

I checked the settings and Downwards-Comp.我检查了设置和 Downwards-Comp。 There was no sign in the line lentgh (72) section. line lentgh (72) 部分没有任何迹象。 So the problem is not caused by this.所以问题不是由这个引起的。 I leave my code down.我留下我的代码。 I would be glad if you could help.如果您能提供帮助,我会很高兴。

TYPE-POOLS slis .

TABLES : vbrk, vbrp.

DATA : BEGIN OF gt_table OCCURS 0,
  vbeln  LIKE vbrk-vbeln,
  waerk  LIKE vbrk-waerk,
  kunag  LIKE vbrk-kunag,
  fkart  LIKE vbrk-fkart,
  fktyp  LIKE vbrk-fktyp,
  vbtyp  LIKE vbrk-vbtyp,
  vkorg  LIKE vbrk-vkorg,
  vtweg  LIKE vbrk-vtweg,
  fkdat  LIKE vbrk-fkdat,
  posnr  LIKE vbrp-posnr,
  vrkme  LIKE vbrp-vrkme,
  matnr  LIKE vbrp-matnr,
  werks  LIKE vbrp-werks,
  fkimg  LIKE vbrp-fkimg,
  ntgew  LIKE vbrp-ntgew,
  brgew  LIKE vbrp-brgew,
  gewei  LIKE vbrp-gewei,
  brtwr  LIKE vbrp-brtwr,
  name1  LIKE kna1-name1,
      END OF gt_table.

SELECT-OPTIONS : so_vbeln FOR vbrk-vbeln,
                 so_fkart FOR vbrk-fkart,
                 so_fktyp FOR vbrk-fktyp,
                 so_vbtyp FOR vbrk-vbtyp,
                 so_vkorg FOR vbrk-vkorg,
                 so_vtweg FOR vbrk-vtweg,
                 so_fkdat FOR vbrk-fkdat,
                 so_vrkme FOR vbrp-vrkme,
                 so_matnr FOR vbrp-matnr,
                 so_werks FOR vbrp-werks.

DATA : i_fcat TYPE slis_t_fieldcat_alv .
DATA : wa_fcat LIKE LINE OF i_fcat .

START-OF-SELECTION .
  PERFORM get_data .
  PERFORM create_fcat_merge .

END-OF-SELECTION .
  PERFORM disp_alv .

FORM get_data .
  SELECT a~vbeln a~waerk a~kunag a~fkart a~fktyp a~vbtyp a~vkorg a~vtweg a~fkdat b~posnr b~vrkme
         b~matnr b~werks b~fkimg b~ntgew b~brgew b~gewei b~brtwr c~name1

      INTO TABLE gt_table

      FROM vbrk AS a INNER JOIN vbrp  AS b ON a~vbeln = b~vbeln
                     INNER JOIN kna1  AS c ON c~kunnr = a~kunag

      WHERE a~vbeln IN so_vbeln AND
            a~fkart IN so_fkart AND
            a~fktyp IN so_fktyp AND
            a~vbtyp IN so_vbtyp AND
            a~vkorg IN so_vkorg AND
            a~vtweg IN so_vtweg AND
            a~fkdat IN so_fkdat AND
            b~vrkme IN so_vrkme AND
            b~matnr IN so_matnr AND
            b~werks IN so_werks.
ENDFORM.

FORM disp_alv .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program = sy-repid
      it_fieldcat        = i_fcat
    TABLES
      t_outtab           = gt_table.


ENDFORM.

FORM create_fcat_merge .
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_program_name     = sy-repid
      i_internal_tabname = 'gt_table'
      i_inclname         = sy-repid
    CHANGING
      ct_fieldcat        = i_fcat.
ENDFORM.

Your SELECT line is wider than 72 characters:您的 SELECT 行超过 72 个字符:

SELECT a~vbeln a~waerk a~kunag a~fkart a~fktyp a~vbtyp a~vkorg a~vtweg a~fkdat b~posnr b~vrkme

Break it into two lines:把它分成两行:

SELECT a~vbeln a~waerk a~kunag a~fkart a~fktyp a~vbtyp a~vkorg a~vtweg 
       a~fkdat b~posnr b~vrkme

There is another issue:还有一个问题:

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_program_name     = sy-repid
      i_internal_tabname = 'gt_table'

The 'gt_table' has to be in capitals (just to prevent the next dump): 'gt_table' 必须大写(只是为了防止下一次转储):

 i_internal_tabname = 'GT_TABLE'

PS.: I guess you are just playing around, there are more up to date tools to create an ALV list. PS.:我猜你只是在玩,有更多最新的工具来创建 ALV 列表。

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

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