簡體   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

我想使用'reuse_alv_fieldcatalog_merge'填充表格並按下屏幕。 但它給出了這樣的錯誤:

“ABAP 程序行比內部表更寬。”

我檢查了設置和 Downwards-Comp。 line lentgh (72) 部分沒有任何跡象。 所以問題不是由這個引起的。 我留下我的代碼。 如果您能提供幫助,我會很高興。

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.

您的 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

把它分成兩行:

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

還有一個問題:

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

'gt_table' 必須大寫(只是為了防止下一次轉儲):

 i_internal_tabname = 'GT_TABLE'

PS.:我猜你只是在玩,有更多最新的工具來創建 ALV 列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM