bossjohn написал(а):
polkon, если хотите помощи, приведите итоговый код, где ошибка.
Я вижу тут минимум 3 разных варианта, то комментируете, то раскомментируете...
Вот итоговый код, убрал все лишние закомментированные чтобы не путать вас:
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. " Внутренняя таблица
CONCATENATE seller into gt_table-seller.
APPEND seller TO gt_table.
DATA:
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.
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.
SELECT * FROM ekpo INTO temp_ekpo WHERE ebeln = 4500000034.
CALL METHOD z_test_class1=>number_TRANSFORM
EXPORTING
input = temp_ekpo-ebelp
flag = ' '
IMPORTING
output = tb_line-place_number.
tb_line-product_code = temp_ekpo-matnr.
SELECT maktx FROM makt INTO tb_line-product_name WHERE matnr = temp_ekpo-matnr
AND spras = 'R'.
ENDSELECT.
tb_line-quantity = temp_ekpo-menge.
tb_line-unit = temp_EKPO-MEINS.
tb_line-price = temp_ekpo-netpr.
tb_line-total = temp_ekpo-netwr.
total_price = total_price + tb_line-total.
NDS = NDS + TEMP_EKPO-NETWR.
IF temp_ekko-waers = 'RUB'.
tb_line-currency = 'РУБ'.
ELSE.
tb_line-currency = temp_ekko-waers.
ENDIF.
SELECT eindt FROM eket INTO tb_line-date WHERE ebeln = temp_ekko-ebeln.
ENDSELECT.
INSERT tb_line INTO TABLE main_table.
ENDSELECT.
CURR = tb_line-currency.