简体   繁体   中英

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 . . . . . . . . . .

We declare an inner table COFL_LIST and an outer table TRAVEL_LIST with corrosponding work areas. An internal table CONN_LIST buffers all of the flight connections and sorts them.

The program uses 3 tables, inner table, outer table and an internal table.

I made the changes in the program as suggested by LPK:

conn_list TYPE STANDARD TABLE OF t_conn,

However, now the problem is in line:

FIELD-SYMBOLS:
               <fs_conn> TYPE t_conn,
               <fs_conn_int> TYPE t_conn,
               <fs_travel> TYPE wa_travel.

Error: The type "WA_TRAVEL" is unknown. In the program wa_travel variable is already defined in it's BEGIN OF wa_travel and END OF wa_travel block. Why can't the system pick this up?

This line is wrong:

conn_list LIKE STANDARD TABLE OF t_conn,

T_CONN is a type and therefore you have to use TYPE instead of LIKE .

You can find an explanation about the difference here .

The declaration is not correct...

FIELD-SYMBOLS: TYPE t_conn, TYPE t_conn, TYPE wa_travel.

Should be

FIELD-SYMBOLS: TYPE t_conn, TYPE t_conn, LIKE wa_travel.

You need to check with the link provided in the previous answer... or you can use the following from the Help Portal on TYPE & LIKE

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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