Текущее время: Вс, апр 28 2024, 07:17

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: ФМ для получения значения признака классификации поставщика  Тема решена
СообщениеДобавлено: Пт, янв 29 2021, 15:57 
Специалист
Специалист

Зарегистрирован:
Чт, май 16 2013, 13:37
Сообщения: 214
Откуда: Челябинск
Пол: Мужской
Добрый день.

Для начала опишу нашу задачу, может, кто-то предложит вариант попроще.

Перед нами стоит задача - вытащить в SQ-отчет поле, введенное в XK02. Поля, которое хотят, разумеется, нет в карточке контрагента, в нашей задаче это поле номера контрагента из немецкой системы.

Так вот, добавить поле я не могу, поскольку не знаю, как это сделать в стандарте XK02.
Мы добавили в классификацию новый класс и к нему признак, в котором и будут прописываться вручную нужные номера контрагентов.

Каким стандартным ФМ-ом это можно сделать? Или, может, можно код какой написать?

_________________
Свобода здесь и сейчас.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ФМ чтобы вытащить признак присвоенного к классу в SQ отчет
СообщениеДобавлено: Сб, янв 30 2021, 10:50 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4842
Откуда: Москва
Пол: Мужской
1. Использование классификации ведет к проблемам с производительностью и куче лишнего кода для её чтения.
Поэтому лучше подберите какое-нибудь стандартное поле для этой цели (можно его даже переименовать в CMOD)
Скажем LFA1-EMNFR или на худой конец заведите отдельный тип налогового номера.

2. Если уж уперлись в классификацию, то, то запустив транзакцию BAPI, вы можете найти стандартный ФМ BAPI_OBJCL_GETDETAIL_KEY.
Про его тормознутость я уже предупредил в п.1

_________________
Удача - результат нашего желания (© А. Нортон)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ чтобы вытащить признак присвоенного к классу в SQ отчет
СообщениеДобавлено: Пн, фев 01 2021, 10:22 
Специалист
Специалист

Зарегистрирован:
Чт, май 16 2013, 13:37
Сообщения: 214
Откуда: Челябинск
Пол: Мужской
Подскажите, пожалуйста, а возможно ли соединить таблицы AUSP-OBJEK и LFA1-LIFNR?

Я нашел, где хранится введенный признак, было проще всего вытащить из этой таблицы его в SQ-отчет.

_________________
Свобода здесь и сейчас.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ФМ чтобы вытащить признак присвоенного к классу в SQ отчет
СообщениеДобавлено: Пн, фев 01 2021, 10:30 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4842
Откуда: Москва
Пол: Мужской
Я уже не помню, что пишется в AUSP-OBJEK для кредиторов. Но обычно соединить таблицы конечно можно, но не через прямой join, а при помощи кодировки в query с select single к каждой строчке.

_________________
Удача - результат нашего желания (© А. Нортон)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ чтобы вытащить признак присвоенного к классу в SQ отчет
СообщениеДобавлено: Пн, фев 01 2021, 12:13 
Специалист
Специалист

Зарегистрирован:
Чт, май 16 2013, 13:37
Сообщения: 214
Откуда: Челябинск
Пол: Мужской
Если не сложно, пришлите пожалуйста примерчик любой кодировки (может под рукой светится у кого-то), где соединяют 2 таблицы?

_________________
Свобода здесь и сейчас.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ФМ чтобы вытащить признак присвоенного к классу в SQ отчет
СообщениеДобавлено: Пн, фев 01 2021, 13:49 
Специалист
Специалист

Зарегистрирован:
Чт, май 16 2013, 13:37
Сообщения: 214
Откуда: Челябинск
Пол: Мужской
Набросал вот такой код, но он почему то ругается и пишет, подскажите где ошибка?
"Здесь ожидается 'FROM'."

Code:
DATA:
OBJEK LIKE AUSP-OBJEK,
LIFNR LIKE LFA1-LIFNR.
   clear: LV_OBJEK.
SELECT SINGLE AUSP~OBJEK LFA1~LIFNR INTO TABLE LV_OBJEK
  FROM LFA1 AS LIFNR
  LEFT JOIN AUSP AS OBJEK
    ON AUSP~OBJEK = LFA1~LIFNR
WHERE LIFNR~LFA1 IN LV_OBJEK.
ENDSELECT.

_________________
Свобода здесь и сейчас.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ФМ чтобы вытащить признак присвоенного к классу в SQ отчет
СообщениеДобавлено: Пн, фев 01 2021, 14:33 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4842
Откуда: Москва
Пол: Мужской
1. Секция INTO должна идти после FROM.
2. Раз вы считываете одну строку (select single), то и целевая переменная должна быть структурой, а не таблицей и вместо into table должно быть просто into
3. Если пишите select single, то end select вообще не нужен.

_________________
Удача - результат нашего желания (© А. Нортон)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ чтобы вытащить признак присвоенного к классу в SQ отчет
СообщениеДобавлено: Пн, фев 01 2021, 15:14 
Специалист
Специалист

Зарегистрирован:
Чт, май 16 2013, 13:37
Сообщения: 214
Откуда: Челябинск
Пол: Мужской
Ну вроде поправил, LKU подскажите пожалуйста, а как прописать целевую переменную структурой?

Code:
DATA:
OBJEK LIKE AUSP-OBJEK,
LIFNR LIKE LFA1-LIFNR.
   clear: LV_OBJEK.
SELECT SINGLE AUSP~OBJEK LFA1~LIFNR
  FROM LFA1 AS LIFNR
    LEFT JOIN AUSP AS OBJEK
      ON AUSP~OBJEK = LFA1~LIFNR
  INTO LV_OBJEK
WHERE LIFNR~LFA1 IN LV_OBJEK.

_________________
Свобода здесь и сейчас.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ФМ чтобы вытащить признак присвоенного к классу в SQ отчет
СообщениеДобавлено: Пн, фев 01 2021, 15:56 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4842
Откуда: Москва
Пол: Мужской
Ну вы все-таки F1 начинайте смотреть по ключевому слову SELECT.

У вас объявлена не структура, а две отдельные переменные.
Заполнить их можно примерно так:

Code:
DATA:
OBJEK LIKE AUSP-OBJEK,
LIFNR LIKE LFA1-LIFNR.
   clear: LV_OBJEK.
SELECT SINGLE AUSP~OBJEK LFA1~LIFNR
  FROM LFA1 AS LIFNR
    LEFT JOIN AUSP AS OBJEK
      ON AUSP~OBJEK = LFA1~LIFNR
[b] INTO (LV_OBJEK, LIFNR)[/b]
WHERE LIFNR~LFA1 IN LV_OBJEK

_________________
Удача - результат нашего желания (© А. Нортон)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ для получения значения признака классификации поставщика
СообщениеДобавлено: Вт, фев 02 2021, 11:59 
Специалист
Специалист

Зарегистрирован:
Чт, май 16 2013, 13:37
Сообщения: 214
Откуда: Челябинск
Пол: Мужской
Все поправил, немного код неправильно построил изначально, получилось вот так вот

Code:
DATA:
OBJEK LIKE AUSP-OBJEK,
ATWRT LIKE AUSP-ATWRT,
LIFNR LIKE LFA1-LIFNR.
   clear: LV_OBJEK.
SELECT SINGLE AUSP~OBJEK AUSP~ATWRT LFA1~LIFNR
  INTO (LV_OBJEK, LIFNR,ATWRT)
  FROM LFA1 AS LIFNR
    LEFT JOIN AUSP AS OBJEK
      ON AUSP~OBJEK = LFA1~LIFNR
WHERE AUSP~ATWRT IN LV_OBJEK.


Теперь ошибок по коду нет, но выходит вот такое вот сообщение, с чем он связано, никто не знает?

Цитата:
Couldn't find Error Message: R SELECT 682 because the system is running with the database objects from release 750. The system has not completely upgraded to

_________________
Свобода здесь и сейчас.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ФМ для получения значения признака классификации поставщика
СообщениеДобавлено: Ср, фев 03 2021, 07:09 
Специалист
Специалист

Зарегистрирован:
Чт, май 16 2013, 13:37
Сообщения: 214
Откуда: Челябинск
Пол: Мужской
Проверил в тесте, там уже другая ошибка связанная с полем AUSP
Цитата:
"AUSP" is unknown in the current FROM clause (obscured by an alias name or unknown in this position).

Code:
DATA:
OBJEK LIKE AUSP-OBJEK,
ATWRT LIKE AUSP-ATWRT,
LIFNR LIKE LFA1-LIFNR.
   clear: LV_OBJEK.
SELECT SINGLE AUSP~OBJEK AUSP~ATWRT LFA1~LIFNR
  INTO (LV_OBJEK, LIFNR,ATWRT)
  FROM LFA1 AS LIFNR
    LEFT JOIN AUSP AS OBJEK
      ON AUSP~OBJEK = LFA1~LIFNR
WHERE AUSP~ATWRT IN LV_OBJEK.


Нашел на форуме иностранном, вот такую информацию по этому полю
Цитата:
Это никогда не сработает в запросе. причина в том, что это поле OBJEK не имеет того же формата / длины (впереди два символа), что и LIFNR. Назначение таблицы AUSP в EXTRAS, как я уже писал, - не имеет смысла, так как вы можете иметь 1-n AUSP-записей для одного OBJEK. Если вы этого хотите, у вас должно быть «настоящее соединение», а для этого требуется абзац.


Кто-то может подсказать, как решить эту проблему? Что нужно чудесное сделать в коде чтобы все таки соединить их?

_________________
Свобода здесь и сейчас.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ФМ для получения значения признака классификации поставщика
СообщениеДобавлено: Чт, фев 04 2021, 10:26 
Гуру-маршал
Гуру-маршал
Аватара пользователя

Зарегистрирован:
Пт, янв 30 2009, 09:59
Сообщения: 1580
Откуда: Москва, Минск
Пол: Мужской
Для начала - изучить синтаксис ABAP.

_________________
Лучше быть умным и иногда тупить, чем быть тупым и постоянно умничать!


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ФМ для получения значения признака классификации поставщика
СообщениеДобавлено: Пт, фев 05 2021, 13:52 
Специалист
Специалист

Зарегистрирован:
Чт, май 16 2013, 13:37
Сообщения: 214
Откуда: Челябинск
Пол: Мужской
Изучил, пришлось глубже понять, спасибо всем за помощь.

В итоге пришлось создать ФМ, код выглядит таким образом сейчас.

Code:
DATA: lt_s_lfa1 LIKE LFA1.
DATA: lt_s_AUSP LIKE AUSP.
DATA: ls_lifnr LIKE LFA1-LIFNR.
DATA: ls_objek LIKE AUSP-OBJEK.

CALL FUNCTION 'ZZMD_VENDORS'
  EXPORTING
    LIFNR                 = LFA1-LIFNR
  IMPORTING
   LS_OBJEK              = LT_s_AUSP-OBJEK.
SELECT SINGLE ATWRT
  INTO LV_ATWRT
  FROM AUSP
    WHERE objek EQ LT_s_AUSP-OBJEK.

_________________
Свобода здесь и сейчас.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ФМ для получения значения признака классификации поставщика
СообщениеДобавлено: Пт, фев 05 2021, 16:08 
Специалист
Специалист

Зарегистрирован:
Чт, май 16 2013, 13:37
Сообщения: 214
Откуда: Челябинск
Пол: Мужской
Все таки есть глюк, теперь все позиции в отчете выходят с одним признаком, который у одного поставщика, в других ничего даже нет.
Добавил в код CLEAR, но он не помогает почему-то, что еще может быть?

Code:
DATA: lt_s_lfa1 LIKE LFA1.
DATA: lt_s_AUSP LIKE AUSP.
DATA: ls_lifnr LIKE LFA1-LIFNR.
DATA: ls_objek LIKE AUSP-OBJEK.
CALL FUNCTION 'ZZMD_VENDORS'
  EXPORTING
    LIFNR                = LFA1-LIFNR
  IMPORTING
   LS_OBJEK              = LT_s_AUSP-OBJEK.
  CLEAR: LV_ATWRT.
SELECT SINGLE ATWRT
  INTO LV_ATWRT
  FROM AUSP
      WHERE objek EQ LT_s_AUSP-OBJEK.

_________________
Свобода здесь и сейчас.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ФМ для получения значения признака классификации поставщика
СообщениеДобавлено: Сб, фев 06 2021, 10:48 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3074
Откуда: Москва
Посмотрите в отладке, чему равны LFA1-LIFNR и LT_s_AUSP-OBJEK для каждой записи в цикле.

_________________
С уважением,
Удав.


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

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


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

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


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

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