各種類型的ABAP表鍵table key測試
- 2020 年 1 月 21 日
- 筆記
REPORT ztest_key. TYPES: BEGIN OF ty_data, index TYPE int4, name TYPE char10, score TYPE int4, text TYPE string, END OF ty_data. TYPES: tt_data1 TYPE STANDARD TABLE OF ty_data, "tt_data2 type STANDARD TABLE OF ty_data with UNIQUE key dsf. SYNTAX ERROR tt_data2 TYPE SORTED TABLE OF ty_data WITH UNIQUE KEY score, tt_data3 TYPE SORTED TABLE OF ty_data WITH UNIQUE KEY primary_key COMPONENTS name score WITH NON-UNIQUE SORTED KEY k1 COMPONENTS text. DATA: lt_table1 TYPE tt_data1, lt_table2 TYPE tt_data2, lt_table3 TYPE tt_data3. READ TABLE lt_table1 TRANSPORTING NO FIELDS WITH KEY index = 1. READ TABLE lt_table1 TRANSPORTING NO FIELDS WITH KEY name = 'Jerry'. READ TABLE lt_table1 TRANSPORTING NO FIELDS WITH KEY score = 20. READ TABLE lt_table1 TRANSPORTING NO FIELDS WITH KEY text = 'Jerry'. "READ TABLE lt_table1 TRANSPORTING NO FIELDS WITH TABLE KEY index = 1. " Specification for component "NAME" of key "PRIMARY_KEY" of table "LT_TABLE1" is missing or incomplete. " Key must be completely provided. READ TABLE lt_table1 TRANSPORTING NO FIELDS WITH TABLE KEY name = 'Jerry' text = 'Text'. READ TABLE lt_table2 TRANSPORTING NO FIELDS WITH KEY index = 1. READ TABLE lt_table2 TRANSPORTING NO FIELDS WITH KEY name = 'Jerry'. READ TABLE lt_table2 TRANSPORTING NO FIELDS WITH KEY score = 20. READ TABLE lt_table2 TRANSPORTING NO FIELDS WITH KEY text = 'Jerry'. "Syntax error " Jerry 2016-12-4 11:44PM - it seems *READ XXXX WITH TABLE KEY* can only work if explicit table key is defined " using keyword WITH UNIQUE KEY or WITH NON-UNIQUE KEY "READ TABLE lt_table2 TRANSPORTING NO FIELDS WITH TABLE KEY index = 1. "syntax error "READ TABLE lt_table2 TRANSPORTING NO FIELDS WITH TABLE KEY name = 'Jerry'. READ TABLE lt_table2 TRANSPORTING NO FIELDS WITH TABLE KEY score = 20. "Syntax error "syntax error "READ TABLE lt_table3 TRANSPORTING NO FIELDS WITH TABLE KEY text = 'Jerry'. "syntax error "READ TABLE lt_table3 TRANSPORTING NO FIELDS WITH TABLE KEY name = 'Jerry'. "syntax error "READ TABLE lt_table3 TRANSPORTING NO FIELDS WITH TABLE KEY score = 20. READ TABLE lt_table3 TRANSPORTING NO FIELDS WITH TABLE KEY name = 'Jerry' score = 20. READ TABLE lt_table3 TRANSPORTING NO FIELDS WITH TABLE KEY k1 COMPONENTS text = 'this is text'. DATA(type1) = CAST cl_abap_tabledescr( cl_abap_typedescr=>describe_by_data( lt_table1 ) ). DATA(lt_keys1) = type1->get_keys( ). WRITE:/ 'Key information for lt_key1...' COLOR COL_KEY. PERFORM print USING lt_keys1. DATA(type2) = CAST cl_abap_tabledescr( cl_abap_typedescr=>describe_by_data( lt_table2 ) ). DATA(lt_keys2) = type2->get_keys( ). WRITE:/ 'Key information for lt_key2...' COLOR COL_KEY. PERFORM print USING lt_keys2. DATA(type3) = CAST cl_abap_tabledescr( cl_abap_typedescr=>describe_by_data( lt_table3 ) ). DATA(lt_keys3) = type3->get_keys( ). WRITE:/ 'Key information for lt_key3...' COLOR COL_KEY. PERFORM print USING lt_keys3. FORM print USING it_table TYPE abap_table_keydescr_tab. LOOP AT it_table ASSIGNING FIELD-SYMBOL(<item>) WHERE is_primary = abap_true. WRITE: / 'The following fields are primary key:' COLOR COL_GROUP. LOOP AT <item>-components ASSIGNING FIELD-SYMBOL(<data>). WRITE: / <data> COLOR COL_NEGATIVE. ENDLOOP. ENDLOOP. LOOP AT it_table ASSIGNING FIELD-SYMBOL(<item2>) WHERE is_primary = abap_false. WRITE: / 'The following fields are secondary key:' COLOR COL_POSITIVE. LOOP AT <item2>-components ASSIGNING FIELD-SYMBOL(<data2>). WRITE: / <data2> COLOR COL_TOTAL. ENDLOOP. ENDLOOP. ENDFORM.
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":