Текущее время: Чт, июл 31 2025, 17:42

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: OpenFI 1421 как проставить номер дебитора в кредиторе
СообщениеДобавлено: Чт, июн 11 2009, 14:05 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, ноя 13 2008, 13:40
Сообщения: 152
Добрый день!
При создании основной карточки кредитора XK01 во время сохранения активировано событие OPEN-FI 1421 ОСНОВНЫЕ ДАННЫЕ КРЕДИТОРА: сохр. с переносом данн. В этом событии прописываем создание дебитора с аналогичными параметрами кредитора.
Вопрос: как после завершения процесса создания дебитора, вернутся в карточку кредитора и заполнить поле Дебитор, номером созданного дебитора?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenFI 1421 как проставить номер дебитора в кредиторе
СообщениеДобавлено: Пт, июн 12 2009, 11:07 
Директор
Директор

Зарегистрирован:
Пт, окт 07 2005, 09:10
Сообщения: 752
Откуда: 4.6C
Пол: Мужской
Проблема в том, что из OpenFI это сделать не получится, т.к данные по данному кредитору блокированы. Но можно сделать, например, вот так:
Code:
REPORT ZTTTTT .

DATA: bdc_tab LIKE BDCDATA OCCURS 20 WITH HEADER LINE,
      messtab TYPE TABLE OF BDCMSGCOLL WITH HEADER LINE,
      kred like lfa1-lifnr,
      deb  like kna1-kunnr.

call transaction 'XK01' using bdc_tab update 'S' messages into messtab.

read table messtab WITH KEY msgnr = '175'.
kred = messtab-msgv1.
import deb from memory id 'deb'.

perform bdc_dynpro      using 'SAPMF02K' '0101'.
perform bdc_field       using 'BDC_CURSOR'
                              'RF02K-EKORG'.
perform bdc_field       using 'BDC_OKCODE'
                              '=MALL'.
perform bdc_field       using 'RF02K-LIFNR'
                              kred.
perform bdc_field       using 'RF02K-BUKRS'
                              '1000'.
perform bdc_field       using 'RF02K-EKORG'
                              '1000'.
perform bdc_dynpro      using 'SAPMF02K' '0101'.
perform bdc_field       using 'BDC_CURSOR'
                              'RF02K-LIFNR'.
perform bdc_field       using 'BDC_OKCODE'
                              '/00'.
perform bdc_field       using 'RF02K-LIFNR'
                              kred.
perform bdc_field       using 'RF02K-BUKRS'
                              '1000'.
perform bdc_field       using 'RF02K-EKORG'
                              '1000'.
perform bdc_field       using 'RF02K-D0110'
                              'X'.
perform bdc_field       using 'RF02K-D0120'
                              'X'.
perform bdc_field       using 'RF02K-D0130'
                              'X'.
perform bdc_field       using 'RF02K-D0210'
                              'X'.
perform bdc_field       using 'RF02K-D0215'
                              'X'.
perform bdc_field       using 'RF02K-D0220'
                              'X'.
perform bdc_field       using 'RF02K-D0310'
                              'X'.
perform bdc_field       using 'WRF02K-D0320'
                              'X'.
perform bdc_dynpro      using 'SAPMF02K' '0110'.
perform bdc_field       using 'BDC_CURSOR'
                              'LFA1-ANRED'.
perform bdc_field       using 'BDC_OKCODE'
                              '=VW'.
perform bdc_field       using 'LFA1-NAME1'
                              'gsfhdfshdj'.
perform bdc_field       using 'LFA1-LAND1'
                              'RU'.
perform bdc_dynpro      using 'SAPMF02K' '0120'.
perform bdc_field       using 'BDC_CURSOR'
                              'LFA1-KUNNR'.
perform bdc_field       using 'BDC_OKCODE'
                              '=UPDA'.
perform bdc_field       using 'LFA1-KUNNR'
                              deb.

call transaction 'XK02' using bdc_tab update 'S' mode 'E'
                        messages into messtab.

Номер дебитора из OpenFI экспортировать в память.
Если подходить строго, то конечно присутствует риск неконсистенции
P.S. Сорри, за корявость стиля. Лепил быстро копи-пастом из разных мест.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenFI 1421 как проставить номер дебитора в кредиторе
СообщениеДобавлено: Пт, июн 12 2009, 13:17 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, ноя 13 2008, 13:40
Сообщения: 152
спасибки за совет и за код.
Но куда вклинить это присвоение дебитора в кредиторе, дабы все выглядело автоматически? :shock:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenFI 1421 как проставить номер дебитора в кредиторе
СообщениеДобавлено: Сб, июн 13 2009, 04:42 
Директор
Директор

Зарегистрирован:
Пт, окт 07 2005, 09:10
Сообщения: 752
Откуда: 4.6C
Пол: Мужской
Вклинивать никуда не надо. Это программа-обвертка вызова двух транзакций. В тр. SE93 создайте свою транзакцию для ее вызова.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenFI 1421 как проставить номер дебитора в кредиторе
СообщениеДобавлено: Пн, июн 15 2009, 08:27 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, ноя 13 2008, 13:40
Сообщения: 152
Дело в том, что ввод контрагентов осуществляет оператор по заявке пользователей с помощью транзакции XK01. Дебитор создается автоматически. Поэтому хотелось бы чтобы и номер проставлялся без запуска опредленой транзакции, программно и незаметно для оператора, выполняющего ввод.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenFI 1421 как проставить номер дебитора в кредиторе
СообщениеДобавлено: Пн, июн 15 2009, 11:27 
Директор
Директор

Зарегистрирован:
Пт, окт 07 2005, 09:10
Сообщения: 752
Откуда: 4.6C
Пол: Мужской
Создайте транзакцию, к примеру ZXK01, на основе выше приведенного кода. Запустите ее и попробуйте создать кредитора. Вы увидите, что ничего не изменилось за исключением того что по нажатию Сохранить внизу, в строке статуса, будет появлять сообщение - Изменения сохранены(это результат пакетной отработки XK02). Конечно надо будет с кодом поработать, например, не запускать XK02 если кредитор не создан. Повторюсь - я набросал Вам общий принцип реализации.


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

Зарегистрирован:
Чт, ноя 13 2008, 13:40
Сообщения: 152
спасибо за помощь. попробую как вы рекомендуете.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenFI 1421 как проставить номер дебитора в кредиторе
СообщениеДобавлено: Ср, июн 24 2009, 15:36 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, ноя 13 2008, 13:40
Сообщения: 152
Все получилось просто замечательно! Спасибо.
Одно, но как быть, чтобы при

CALL TRANSACTION 'XK01' USING bdc_tab update 'S' MESSAGES INTO messtab.

кнопки менюшки(назад, выход, Отменить) оставались активны, ну дабы пользователь мог выйти из транзакции, если передумал выполнять ввод.

кнопки активны при такой формулировке CALL TRANSACTION 'XK01'.

номне же нужно и USING bdc_tab update 'S' MESSAGES INTO messtab.
дабы из messtab получить номер кредитора.
:roll:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenFI 1421 как проставить номер дебитора в кредиторе
СообщениеДобавлено: Ср, июн 24 2009, 15:40 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
FILisiza написал(а):
Все получилось просто замечательно! Спасибо.
Одно, но как быть, чтобы при

CALL TRANSACTION 'XK01' USING bdc_tab update 'S' MESSAGES INTO messtab.

кнопки менюшки(назад, выход, Отменить) оставались активны, ну дабы пользователь мог выйти из транзакции, если передумал выполнять ввод.

кнопки активны при такой формулировке CALL TRANSACTION 'XK01'.

номне же нужно и USING bdc_tab update 'S' MESSAGES INTO messtab.
дабы из messtab получить номер кредитора.
:roll:

Немного не понятно что значит кнопки активны, Вы с каком режиме отрабатываете пакетный ввод? посмотрите справку по поводу дополенения к Call transaction MODE.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenFI 1421 как проставить номер дебитора в кредиторе
СообщениеДобавлено: Ср, июн 24 2009, 15:45 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, ноя 13 2008, 13:40
Сообщения: 152
да смотрела,
перепробовала все варианты, все равно они серые, неактивные.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenFI 1421 как проставить номер дебитора в кредиторе
СообщениеДобавлено: Чт, июн 25 2009, 13:21 
Директор
Директор

Зарегистрирован:
Пт, окт 07 2005, 09:10
Сообщения: 752
Откуда: 4.6C
Пол: Мужской
Цитата:
Одно, но как быть, чтобы при

CALL TRANSACTION 'XK01' USING bdc_tab update 'S' MESSAGES INTO messtab.

кнопки менюшки(назад, выход, Отменить) оставались активны, ну дабы пользователь мог выйти из транзакции, если передумал выполнять ввод.

Добавьте в код следующее:
Code:
DATA: opt like CTU_PARAMS.

opt-NOBINPT = 'X'.
opt-UPDMODE = 'S'.
opt-NOBIEND = 'X'.
opt-DISMODE = 'A'.
opt-CATTMODE = ''.
opt-DEFSIZE = ''.
opt-RACOMMIT = ''.

call transaction 'XK01' using bdc_tab messages into messtab
                        options from opt.

В результате транзакция будет выполняться вроде как и не в пакетном режиме(заметьте, экраны в обычном режиме и пакетном отличаются) и кнопки будут доступны.
А пользователей, на всякий случай обучите команде - /n.
Кстати, у меня и при пакетном режиме кнопка Назад доступна.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenFI 1421 как проставить номер дебитора в кредиторе
СообщениеДобавлено: Чт, июн 25 2009, 13:32 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, ноя 13 2008, 13:40
Сообщения: 152
Супер! именно то что надо! :D
спасибо :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

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


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

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


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

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