Текущее время: Пт, мар 29 2024, 01:28

Часовой пояс: 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
Сообщения: 1578
Откуда: Москва, Минск
Пол: Мужской
Для начала - изучить синтаксис 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 часа


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

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


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

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