SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

как делать User Exit?


Goto page 1, 2  Next
 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
cbw07
Старший специалист
Старший специалист



Joined: 30 Nov 2007
Posts: 127

PostPosted: Tue Dec 04, 2007 1:23 pm    Post subject: как делать User Exit? Reply with quote

Не пинайте сильно - я в ABAP и SAP только начинаю, до этого долго на C++ программировал. Может поэтому мне сама система програмирования в SAP пока не совсем ясна.

У меня такое задание. Заранее извиняюсь, если буду сумбурно изъясняться - у меня в голове сейчас такой же сумбур...

Есть программа SAPMV45A, в ней есть INCLUDE MV45AFZZ. Это то, что мне показали... От меня хотят, чтобы я сделал программу-дополнение, которая бы при вводе новых заказов (transaction VA01) проверяла есть ли такой заказ в таблице MVKE.

Что мне непонятно? С чего начинать, какой порядок действий? Как вообще сделать этот User Exit? Я почитал всякие форумы, полистал книжки, но так и не нашел как это пошагово делать на практике.

Помогите, пожалуйста!
Back to top
View user's profile Send private message
Сергей
Участник
Участник



Joined: 25 Oct 2007
Posts: 49

PostPosted: Tue Dec 04, 2007 1:49 pm    Post subject: Reply with quote

Вам нужно открыть на редактирование include MV45AFZZ
найти подходящую FORM, в ней прочитать данные из MVKE и выдать предупредающее сообщение, если условия не выполняются.

http://www.sapnet.ru/viewtopic.php?t=419

Можете наставить Break-point в каждой FORM и узнаете, какие из них вызываются.


Last edited by Сергей on Tue Dec 04, 2007 2:02 pm; edited 1 time in total
Back to top
View user's profile Send private message
John Doe
Модератор
Модератор


Age: 46
Joined: 05 Nov 2007
Posts: 725
Location: КраснАдар

PostPosted: Tue Dec 04, 2007 1:57 pm    Post subject: Reply with quote

Для чтения:
1. System modifications.
2. A Short Tutorial on User Exits.
3. User Exits in FI/CO.
+ Список юзер-экзитов
+ Интересная статья
Back to top
View user's profile Send private message Blog
cbw07
Старший специалист
Старший специалист



Joined: 30 Nov 2007
Posts: 127

PostPosted: Tue Dec 04, 2007 3:12 pm    Post subject: Reply with quote

спасибо за отклики, сейчас буду читать.

Вообще я открываю этот MV45AFZZ, пытаюсь добавить в него свою FORM, а он не дает. И цвет на экране какой-то странный - не белый как обычно когда я пишу обычную программу, а сероватый.

А может я вообще не то что-то делаю?
А мне еще тут сказали, что надо сделать свой INCLUDE.

Блин, как в C++ все понятно. Rolling Eyes Есть файлы с классами, функциями и т.д. Открыл - и делай что хочешь.
Back to top
View user's profile Send private message
july7
Старший специалист
Старший специалист



Joined: 10 Oct 2007
Posts: 109
Location: Киров

PostPosted: Tue Dec 04, 2007 3:41 pm    Post subject: Reply with quote

для добавления своего кода Вам нужно перейти в режим редактирования (нужен ключ модификации объекта), а затем нажать на кнопку "Вставить" в нужном месте
Back to top
View user's profile Send private message
cbw07
Старший специалист
Старший специалист



Joined: 30 Nov 2007
Posts: 127

PostPosted: Tue Dec 04, 2007 4:42 pm    Post subject: Reply with quote

ключ получил, буду пробовать. Спасибо за помощь!
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 165
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Tue Dec 04, 2007 5:50 pm    Post subject: Reply with quote

Цвет текста в редакторе может быть блеклым, если включен Ассистент модификаций. Когда он включен, для исправления текста нужно использовать кнопки : Insert, Delete, Replace, Undo в меню редактора.
Теоретически ассистент можно отключить через меню Edit - Modification Operations - Switch Off Assistent, но не советую. При апгрейде системы он пригодится.
Back to top
View user's profile Send private message Blog Visit poster's website
cbw07
Старший специалист
Старший специалист



Joined: 30 Nov 2007
Posts: 127

PostPosted: Wed Dec 05, 2007 2:46 pm    Post subject: Reply with quote

Вот нужна снова помощь...

Я вставил в FORM USEREXIT_MOVE_FIELD_TO_VBAK след. код:
include ZZ_TEST_OF_MATERIAL.

Потом делаю двойной щелчок на имени этого инклуда, создаю новый инклуд.
Пишу в нем просто для теста:

DATA: x TYPE i .
x = 10.

Нажимаю на кнопку проверки и получаю ошибку в этом выражении
(x = 10)

И вообще, ошибка появляется при любых операциях (SELECT и т.д.) - все что стоит после декларации данных.

Что бы это значило?
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 165
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Wed Dec 05, 2007 3:37 pm    Post subject: Reply with quote

Точный код ошибки приведите?
Back to top
View user's profile Send private message Blog Visit poster's website
cbw07
Старший специалист
Старший специалист



Joined: 30 Nov 2007
Posts: 127

PostPosted: Wed Dec 05, 2007 3:46 pm    Post subject: Reply with quote

У меня по-немецки пишет:
Anweisung ist nicht erreichbar.

В вольном переводе означает: выражение не достижимо.

Самое прикольное, что то же самое происходит при проверке на ошибки и других INCLUDE из SAPMV45A, написанных уж не знаю кем до меня.

Может у меня в системе какие-то настройки сбились? У нас тут позавчера администраторы делали бэкап системы. Правда все мои обычные REPORT нормально "компилятся".

Еще интересно, что все активируется по Ctr+F3, ошибки не вылезают.
А по Ctr+F2 такая вот ерунда
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 165
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Wed Dec 05, 2007 4:48 pm    Post subject: Reply with quote

Бывает, не обращайте внимание.
Главное, что активируется нормально.
Может поможет переиндексация,
попробуйте сделать "Утилиты" -> "Актуализировать индекс навигации" (Utilities -> Update Navigation Index).
Back to top
View user's profile Send private message Blog Visit poster's website
cbw07
Старший специалист
Старший специалист



Joined: 30 Nov 2007
Posts: 127

PostPosted: Wed Dec 05, 2007 5:11 pm    Post subject: Reply with quote

не помогло, к сожалению
Back to top
View user's profile Send private message
cbw07
Старший специалист
Старший специалист



Joined: 30 Nov 2007
Posts: 127

PostPosted: Thu Dec 13, 2007 2:44 pm    Post subject: Reply with quote

В основном разобрался...

Возник еще такой вопрос.
Я хочу сделать новый заказ или дополнить уже существующий. Вписываю в таблицу несколько материалов. Могу ли я до того как заказ будет сохранен, как-то выяснить какие материалы в данный момент стоят в таблице?
Back to top
View user's profile Send private message
july7
Старший специалист
Старший специалист



Joined: 10 Oct 2007
Posts: 109
Location: Киров

PostPosted: Thu Dec 13, 2007 3:21 pm    Post subject: Reply with quote

Если я Вас правильно поняла, Вам нужна внутренняя таблица XVBAP[], которая доступна в INCLUDE MV45AFZZ.
Back to top
View user's profile Send private message
cbw07
Старший специалист
Старший специалист



Joined: 30 Nov 2007
Posts: 127

PostPosted: Thu Dec 13, 2007 5:24 pm    Post subject: Reply with quote

Возможно, что эта таблица...

Только почему-то я получаю в тесте не совсем актуальное состояние таблицы, а с запаздыванием.

Вариант 1. Я редактирую уже имеющийся заказ
Напр., у меня стоит 2 мат-ла: 100 и 200.
Я добавляю еще номера 300 и 400. А тест показывает, что есть 100, 200, 300, а про 400 - молчок. Потом я удаляю строку 400. В этот раз тест выводит сообщение, что у меня есть 100, 200, 300, 400

Вариант 2. Я создаю новый заказ
Пишу 2 материала, а тест выводит мне штук 50

Code:

FORM zz_material_testing.

  DATA: test_matnr TYPE vbap-matnr.
  DATA: da_xvbap LIKE vbapvb OCCURS 0 WITH HEADER LINE.

  refresh da_xvbap[].
  da_xvbap[] = xvbap[].

  LOOP AT da_xvbap. 
      test_matnr = da_xvbap-matnr.     
      PERFORM msg_material USING test_matnr.     
    ENDLOOP.

ENDFORM.                        " ZZ_MATERIAL_TESTING
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.