Текущее время: Ср, июл 23 2025, 01:25

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Вопрос по работе с внутренними таблицами бд
СообщениеДобавлено: Пт, дек 14 2012, 10:31 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, ноя 28 2012, 16:26
Сообщения: 52
alex_sh80 написал:

Вы хотите текст записать просто в переменную seller, а она нигде объявлена. Если нужно записать в таблицу, то надо писать CONCATENATE ... into gt_table-seller, и чтобы запись появилась во внутренней таблице, нужно сделать APPEND.



Можно поподробней не совсем уловил вашу мысль...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по работе с внутренними таблицами бд
СообщениеДобавлено: Пт, дек 14 2012, 10:34 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, апр 17 2006, 21:49
Сообщения: 299
Откуда: Москва
polkon, если хотите помощи, приведите итоговый код, где ошибка.
Я вижу тут минимум 3 разных варианта, то комментируете, то раскомментируете...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по работе с внутренними таблицами бд
СообщениеДобавлено: Пт, дек 14 2012, 10:38 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, апр 17 2006, 21:49
Сообщения: 299
Откуда: Москва
polkon написал(а):
alex_sh80 написал:

Вы хотите текст записать просто в переменную seller, а она нигде объявлена. Если нужно записать в таблицу, то надо писать CONCATENATE ... into gt_table-seller, и чтобы запись появилась во внутренней таблице, нужно сделать APPEND.



Можно поподробней не совсем уловил вашу мысль...


что тут улавливать, когда было объявлено:
Code:
DATA:
seller type char100,
buyer type char100,
delivery_place type char100,
main_table type specification_table.

ошибки не было - у вас было поле seller,

когда закомментили, нет больше такого поля, оно есть только в таблице.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по работе с внутренними таблицами бд
СообщениеДобавлено: Пт, дек 14 2012, 10:43 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, ноя 28 2012, 16:26
Сообщения: 52
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.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по работе с внутренними таблицами бд
СообщениеДобавлено: Пт, дек 14 2012, 10:47 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, апр 17 2006, 21:49
Сообщения: 299
Откуда: Москва
Чего вы хотели этим добиться:

DATA: gt_table TYPE TABLE OF t_table WITH HEADER LINE. " Внутренняя таблица

CONCATENATE seller into gt_table-seller.
APPEND seller TO gt_table.


DATA:
...

поля seller у вас нет. ДА и выражение ошибочно по своей сути

Имелось в виду это место
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.


надо соединять в gt_table-seller. и потом
append gt_table


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по работе с внутренними таблицами бд
СообщениеДобавлено: Пт, дек 14 2012, 11:04 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, ноя 28 2012, 16:26
Сообщения: 52
bossjohn написал(а):
Чего вы хотели этим добиться:

DATA: gt_table TYPE TABLE OF t_table WITH HEADER LINE. " Внутренняя таблица

CONCATENATE seller into gt_table-seller.
APPEND seller TO gt_table.


надо соединять в gt_table-seller. и потом
append gt_table


DATA: gt_table TYPE TABLE OF t_table WITH HEADER LINE. " этим я хочу добиться создания внутр. таблицы

CONCATENATE seller into gt_table-seller.
APPEND seller TO gt_table.

На эти строчки программа ругается, а конкретно на точку


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по работе с внутренними таблицами бд
СообщениеДобавлено: Пт, дек 14 2012, 11:11 
Ассистент
Ассистент

Зарегистрирован:
Чт, июл 08 2010, 07:35
Сообщения: 42
Пол: Мужской
http://www.sapnet.ru/viewtopic.php?t=18
Почитайте книжки для новичков или спросите у старших товарищей на работе про синтаксис языка.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по работе с внутренними таблицами бд
СообщениеДобавлено: Пт, дек 14 2012, 13:59 
Ассистент
Ассистент

Зарегистрирован:
Пн, июн 27 2011, 15:21
Сообщения: 31
polkon написал(а):
CONCATENATE seller into gt_table-seller.
APPEND seller TO gt_table.

На эти строчки программа ругается, а конкретно на точку


Читайте справку по F1 на операторе CONCATENATE. Реально непонятно что вы хотели этим добиться.

Code:
CONCATENATE temp_ekko-lifnr temp_addr1_val-name1 temp_addr1_val-name2
temp_addr1_val-name3 temp_addr1_val-name4 INTO gt_table-seller SEPARATED BY space.

* Дальше что-то ещё присваиваете в таблицу gt_table

APPEND gt_table.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вопрос по работе с внутренними таблицами бд
СообщениеДобавлено: Пт, дек 14 2012, 15:06 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, апр 17 2006, 21:49
Сообщения: 299
Откуда: Москва
Автор неверно интерпретировал замечание
alex_sh80 написал:
Вы хотите текст записать просто в переменную seller, а она нигде объявлена. Если нужно записать в таблицу, то надо писать CONCATENATE ... into gt_table-seller, и чтобы запись появилась во внутренней таблице, нужно сделать APPEND.


Просто взял и вставил не в том месте и не в неправильном синтаксисе.

bossjohn написал(а):

Имелось в виду это место
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.


надо соединять в gt_table-seller. и потом
append gt_table


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB