Если нужно выбрать все поля одной таблицы и только несколько полей другой (объединенной) таблицы, или имена полей совпадают необходимо указать все обязательные поля вручную. Невозможно написать SELECT TAB_1 ~ * TAB_2 ~ FIELD_1 TAB_2 ~ FIELD_2… . Можно сделать это проще :
types: tt_fields type table of char300. FORM ADD_TABFIELDS_FOR_SELECTION using iv_tabname changing ct_fields type tt_fields. data:lt_dfies type dfies_tab, str type string, lv_tabname type ddobjname. field-symbols: <fs_dfies> like line of lt_dfies. lv_tabname = iv_tabname. call function 'DDIF_FIELDINFO_GET' exporting tabname = lv_tabname tables dfies_tab = lt_dfies. * append each field as line of tabname~fieldname of the itab loop at lt_dfies assigning <fs_dfies>. concatenate <fs_dfies>-tabname '~' <fs_dfies>-fieldname into str. append str to ct_fields. endloop. ENDFORM. data: lt_fields TYPE tt_fields. * Получаем поля таблицы vbak Получаем поля для vbak для select perform add_tabfields_for_selection using 'VBAK' changing lt_fields. select (lt_fields) from kna1 inner join vbak on vbak~kunnr = kna1~kunnr into corresponding fields of table gt_vbak where ( vbtyp = 'G' or vbtyp = 'C' or vbtyp = 'H' or vbtyp = 'I' or vbtyp = 'K' or vbtyp = 'L' ) and bstdk in sbstdk and vbeln in svbeln and vbak~kunnr in skunnr and vkbur in svkbur and vkgrp in svkgrp and auart in sauart and bstnk in sbstnk and vkorg in svkorg and land1 in land1.
1