以下ABAP代码有什么问题
What is wrong with the following ABAP code
REPORT zbc400_figure157.
TYPES: BEGIN OF t_conn,
cityfrom TYPE spfli-cityfrom,
cityto TYPE spfli-cityto,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
END OF t_conn.
DATA:
conn_list LIKE STANDARD TABLE OF t_conn,
startline LIKE sy-tabix,
BEGIN OF wa_travel,
dest TYPE spfli-cityto,
cofl_list LIKE conn_list,
END OF wa_travel,
travel_list LIKE SORTED TABLE OF wa_travel WITH UNIQUE KEY dest.
FIELD-SYMBOLS:
<fs_conn> TYPE t_conn,
<fs_conn_int> TYPE t_conn,
<fs_travel> TYPE wa_travel.
PARAMETERS pa_start TYPE spfli-cityfrom DEFAULT 'FRANKFURT'.
SELECT carrid cityfrom cityto
FROM spfli
INTO CORRESPONDING FIELDS OF TABLE conn_list.
SORT conn_list BY cityfrom cityto ASCENDING AS TEXT.
** build up nested table.
LOOP AT conn_list ASSIGNING <fs_conn> WHERE cityfrom = pa_start.
CLEAR wa_travel.
wa_travel-dest = <fs_conn>-cityto.
READ TABLE conn_list
WITH KEY cityfrom = wa_travel-dest
TRANSPORTING NO FIELDS
BINARY SEARCH.
startline = sy-tabix.
LOOP AT conn_list ASSIGNING <fs_conn_int>
FROM startline.
IF <fs_conn_int>-cityfrom <> wa_travel-dest.
EXIT.
ENDIF.
APPEND <fs_conn_int> TO wa_travel-cofl_list.
ENDLOOP.
SORT wa_travel-cofl_list BY cityto carrid ASCENDING AS TEXT.
INSERT wa_travel INTO TABLE travel_list.
ENDLOOP.
Error: Field "T_CONN" is unknown. It is neither in one of the specified tables nor defined by a "DATA" statement . . . . . . . . . .
我们声明了内部 table COFL_LIST 和外部 table TRAVEL_LIST 以及相应的工作区域。内部 table CONN_LIST 缓冲所有航班连接并对它们进行排序。
该程序使用 3 tables,内部 table,外部 table 和内部 table.
我按照 LPK 的建议对程序进行了更改:
conn_list TYPE STANDARD TABLE OF t_conn,
但是,现在的问题是:
FIELD-SYMBOLS:
<fs_conn> TYPE t_conn,
<fs_conn_int> TYPE t_conn,
<fs_travel> TYPE wa_travel.
错误:类型 "WA_TRAVEL" 未知。
在程序中 wa_travel 变量已经定义在它的 BEGIN OF wa_travel 和 END OF wa_travel 块中。为什么系统不能接受这个?
这一行是错误的:
conn_list LIKE STANDARD TABLE OF t_conn,
T_CONN
是一种类型,因此您必须使用 TYPE
而不是 LIKE
。
您可以找到关于差异的解释 here。
声明不正确...
字段符号:
类型 t_conn,
类型 t_conn,
类型 wa_travel.
应该是
字段符号:
类型 t_conn,
类型 t_conn,
喜欢 wa_travel.
您需要检查上一个答案中提供的 link...或者您可以使用 Help Portal 中的以下内容
REPORT zbc400_figure157.
TYPES: BEGIN OF t_conn,
cityfrom TYPE spfli-cityfrom,
cityto TYPE spfli-cityto,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
END OF t_conn.
DATA:
conn_list LIKE STANDARD TABLE OF t_conn,
startline LIKE sy-tabix,
BEGIN OF wa_travel,
dest TYPE spfli-cityto,
cofl_list LIKE conn_list,
END OF wa_travel,
travel_list LIKE SORTED TABLE OF wa_travel WITH UNIQUE KEY dest.
FIELD-SYMBOLS:
<fs_conn> TYPE t_conn,
<fs_conn_int> TYPE t_conn,
<fs_travel> TYPE wa_travel.
PARAMETERS pa_start TYPE spfli-cityfrom DEFAULT 'FRANKFURT'.
SELECT carrid cityfrom cityto
FROM spfli
INTO CORRESPONDING FIELDS OF TABLE conn_list.
SORT conn_list BY cityfrom cityto ASCENDING AS TEXT.
** build up nested table.
LOOP AT conn_list ASSIGNING <fs_conn> WHERE cityfrom = pa_start.
CLEAR wa_travel.
wa_travel-dest = <fs_conn>-cityto.
READ TABLE conn_list
WITH KEY cityfrom = wa_travel-dest
TRANSPORTING NO FIELDS
BINARY SEARCH.
startline = sy-tabix.
LOOP AT conn_list ASSIGNING <fs_conn_int>
FROM startline.
IF <fs_conn_int>-cityfrom <> wa_travel-dest.
EXIT.
ENDIF.
APPEND <fs_conn_int> TO wa_travel-cofl_list.
ENDLOOP.
SORT wa_travel-cofl_list BY cityto carrid ASCENDING AS TEXT.
INSERT wa_travel INTO TABLE travel_list.
ENDLOOP.
Error: Field "T_CONN" is unknown. It is neither in one of the specified tables nor defined by a "DATA" statement . . . . . . . . . .
我们声明了内部 table COFL_LIST 和外部 table TRAVEL_LIST 以及相应的工作区域。内部 table CONN_LIST 缓冲所有航班连接并对它们进行排序。
该程序使用 3 tables,内部 table,外部 table 和内部 table.
我按照 LPK 的建议对程序进行了更改:
conn_list TYPE STANDARD TABLE OF t_conn,
但是,现在的问题是:
FIELD-SYMBOLS:
<fs_conn> TYPE t_conn,
<fs_conn_int> TYPE t_conn,
<fs_travel> TYPE wa_travel.
错误:类型 "WA_TRAVEL" 未知。 在程序中 wa_travel 变量已经定义在它的 BEGIN OF wa_travel 和 END OF wa_travel 块中。为什么系统不能接受这个?
这一行是错误的:
conn_list LIKE STANDARD TABLE OF t_conn,
T_CONN
是一种类型,因此您必须使用 TYPE
而不是 LIKE
。
您可以找到关于差异的解释 here。
声明不正确...
字段符号: 类型 t_conn, 类型 t_conn, 类型 wa_travel.
应该是
字段符号: 类型 t_conn, 类型 t_conn, 喜欢 wa_travel.
您需要检查上一个答案中提供的 link...或者您可以使用 Help Portal 中的以下内容