Текущее время: Пн, июл 21 2025, 17:24

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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