Posted: Fri Dec 14, 2012 9:40 am Post subject: Вопрос по работе с внутренними таблицами бд
Помогите начинающему abapеру зашел в тупик не могу понять как быть дальше: хочу поместить данные во внутреннюю таблицу
Code:
[b]"эти данные удалось поместить в внутр. табл[/b]
TYPES: BEGIN OF specification,
place_number TYPE ekpo-ebelp,
product_code TYPE ekpo-matnr,
supplier_code TYPE ekko-llief,
product_name TYPE makt-maktx,
quantity TYPE ekpo-menge,
unit TYPE ekpo-meins,
price TYPE ekpo-netpr,
total TYPE ekpo-netwr,
currency TYPE ekko-waers,
date TYPE eket-eindt,
END OF specification.
TYPES specification_table TYPE TABLE OF specification.
[b]" Хочу эти данные так же поместить во внутр. табл.[/b]
DATA:
seller type char100,
buyer type char100,
delivery_place type char100,
main_table type specification_table,
preorder_number type ekko-angnr,
confirmation_number type ekko-ihrez,
order_data type ekko-aedat,
curr type ekko-waers,
total_price type ekpo-netwr,
nds type ekpo-netwr.
[b]"Далее код выглядит так:[/b]
DATA:
temp_ekko TYPE ekko,
temp_ekpo TYPE ekpo,
temp_lfa1_adrnr TYPE lfa1-adrnr,
temp_addr1_sel TYPE addr1_sel,
temp_addr1_val TYPE addr1_val,
temp_t001_adrnr TYPE t001-adrnr,
temp_t001w_adrnr TYPE t001w-adrnr.
SELECT * FROM ekko INTO temp_ekko WHERE ebeln = 4500000034.
ENDSELECT.
SELECT adrnr FROM lfa1 INTO temp_lfa1_adrnr WHERE lifnr = temp_ekko-lifnr.
ENDSELECT.
temp_addr1_sel-addrnumber = temp_lfa1_adrnr.
CALL FUNCTION 'ADDR_GET'
EXPORTING
address_selection = temp_addr1_sel
IMPORTING
address_value = temp_addr1_val.
CONCATENATE temp_ekko-lifnr temp_addr1_val-name1 temp_addr1_val-name2
temp_addr1_val-name3 temp_addr1_val-name4 INTO seller SEPARATED BY space.
SELECT adrnr FROM t001 INTO temp_t001_adrnr WHERE bukrs = temp_ekko-bukrs.
ENDSELECT.
temp_addr1_sel-addrnumber = temp_t001_adrnr.
CALL FUNCTION 'ADDR_GET'
EXPORTING
address_selection = temp_addr1_sel
IMPORTING
address_value = temp_addr1_val.
CONCATENATE temp_addr1_val-name1 temp_addr1_val-name2
temp_addr1_val-name3 temp_addr1_val-name4 INTO buyer SEPARATED BY space.
preorder_number = temp_ekko-angnr.
confirmation_number = temp_ekko-ihrez.
order_data = temp_ekko-aedat.
SELECT adrnr FROM t001w INTO temp_t001w_adrnr WHERE werks = temp_ekko-eq_werks.
ENDSELECT.
IF temp_t001w_adrnr = ''.
SELECT * FROM ekpo INTO temp_ekpo WHERE ebeln = 4500000034.
SELECT adrnr FROM t001w INTO temp_t001w_adrnr WHERE werks = temp_ekpo-werks
AND adrnr NE ''.
ENDSELECT.
ENDSELECT.
ENDIF.
temp_addr1_sel-addrnumber = temp_t001w_adrnr.
CALL FUNCTION 'ADDR_GET'
EXPORTING
address_selection = temp_addr1_sel
IMPORTING
address_value = temp_addr1_val.
CONCATENATE temp_addr1_val-name1 temp_addr1_val-name2
temp_addr1_val-name3 temp_addr1_val-name4 INTO delivery_place SEPARATED BY space.
DATA tb_line TYPE specification.
Last edited by polkon on Fri Dec 14, 2012 12:51 pm; edited 1 time in total
TYPES: BEGIN OF specification, " Тип
place_number TYPE ekpo-ebelp,
product_code TYPE ekpo-matnr,
supplier_code TYPE ekko-llief,
product_name TYPE makt-maktx,
quantity TYPE ekpo-menge,
unit TYPE ekpo-meins,
price TYPE ekpo-netpr,
total TYPE ekpo-netwr,
currency TYPE ekko-waers,
date TYPE eket-eindt,
END OF specification.
DATA: specification_table TYPE TABLE OF specification WITH HEADER LINE. " Внутренняя таблица
TYPES: BEGIN OF t_table, " Тип
seller TYPE char100,
buyer TYPE char100,
delivery_place TYPE char100,
main_table TYPE specification,
END OF t_table.
DATA: gt_table TYPE TABLE OF t_table WITH HEADER LINE. " Внутренняя таблица
А вообще курс BC400 в руки и в бой.
С селектами у вас тоже беда.
Например:
Code:
SELECT * FROM ekko INTO temp_ekko WHERE ebeln = 4500000034.
ENDSELECT.
Я предполагаю, что вам нужно все данные в таблицу выбрать, а тогда:
Code:
DATA: temp_ekko TYPE TABLE OF ekko.
SELECT * FROM ekko INTO TABLE temp_ekko WHERE ebeln = '4500000034'.
Пробовал все это делать, при присвоении TYPE стабильно выдает синтаксическую ошибку:
Field 'SELLER' is unknown. It is neither in one of specified tables not defined by "DATA"
statement....
и так же для buyer,delivery_place, main_table и всего что убрано из DATA.
Пробовал все это делать, при присвоении TYPE стабильно выдает синтаксическую ошибку:
Field 'SELLER' is unknown. It is neither in one of specified tables not defined by "DATA"
statement....
и так же для buyer,delivery_place, main_table и всего что убрано из DATA.
Ну скорее всего у вас наименование полей расходится с таблицей БД связывайте их через alias ну и за типизацией надо следить, а так правильно написали BC400 ну и другие курсы прочтите
Ну скорее всего у вас наименование полей расходится с таблицей БД связывайте их через alias ну и за типизацией надо следить, а так правильно написали BC400 ну и другие курсы прочтите
Спасибо за совет, курсы я читаю, просто не могу понять что я делаю не так...
TYPES: BEGIN OF specification, " Тип
place_number TYPE ekpo-ebelp,
product_code TYPE ekpo-matnr,
supplier_code TYPE ekko-llief,
product_name TYPE makt-maktx,
quantity TYPE ekpo-menge,
unit TYPE ekpo-meins,
price TYPE ekpo-netpr,
total TYPE ekpo-netwr,
currency TYPE ekko-waers,
date TYPE eket-eindt,
END OF specification.
DATA: specification_table TYPE TABLE OF specification WITH HEADER LINE. " Внутренняя таблица
TYPES: BEGIN OF t_table, " Тип
seller TYPE char100,
buyer TYPE char100,
delivery_place TYPE char100,
main_table TYPE specification,
END OF t_table.
DATA: gt_table TYPE TABLE OF t_table WITH HEADER LINE. " Внутренняя таблица
DATA: specification_table TYPE TABLE OF specification WITH HEADER
К чему здесь specification_table если ниже вы его удалили?
Пробовал все это делать, при присвоении TYPE стабильно выдает синтаксическую ошибку:
Field 'SELLER' is unknown. It is neither in one of specified tables not defined by "DATA"
statement....
и так же для buyer,delivery_place, main_table и всего что убрано из DATA.
Код должен быть примерно таким
Code:
TYPES: BEGIN OF specification,
place_number TYPE ekpo-ebelp,
product_code TYPE ekpo-matnr,
supplier_code TYPE ekko-llief,
product_name TYPE makt-maktx,
quantity TYPE ekpo-menge,
unit TYPE ekpo-meins,
price TYPE ekpo-netpr,
total TYPE ekpo-netwr,
currency TYPE ekko-waers,
date TYPE eket-eindt,
seller type char100,
buyer type char100,
delivery_place type char100,
preorder_number type ekko-angnr,
confirmation_number type ekko-ihrez,
order_data type ekko-aedat,
curr type ekko-waers,
total_price type ekpo-netwr,
nds type ekpo-netwr,
END OF specification.
* Это тоже непонятно для чего вроде заполнения таблицы в коде нет
TYPES specification_table TYPE TABLE OF specification.
DATA: gs_specification_table TYPE specification.
DATA: gv_werks TYPE werks_d.
DATA:
gs_temp_ekko TYPE ekko,
temp_ekpo TYPE ekpo,
temp_lfa1_adrnr TYPE lfa1-adrnr,
temp_addr1_sel TYPE addr1_sel,
temp_addr1_val TYPE addr1_val,
temp_t001_adrnr TYPE t001-adrnr,
temp_t001w_adrnr TYPE t001w-adrnr.
* Здесь правильно выбирать одно поле, уже просто лень такое причесывать
SELECT SINGLE *
FROM ekko
INTO gs_temp_ekko
WHERE ebeln = '4500000034'.
SELECT SINGLE adrnr
FROM lfa1
INTO temp_addr1_sel-addrnumber
WHERE lifnr = gs_temp_ekko-lifnr.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.