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

Синтаксис SQL в ABAP


Goto page Previous  1, 2
 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
Dmitry
Участник
Участник



Joined: 12 May 2008
Posts: 14

PostPosted: Thu May 15, 2008 3:14 pm    Post subject: Reply with quote

С созданием функции Function group не тот указал по ошибке, в итоге спрашивала пароль разработчика. В PAI модуле IF number CO '0987654321' проверил, работает. Определяет, если не цифра. Теперь в функцию вставить пытаюсь. С функцией CONVERSION_EXIT_ Z _OUTPUT небольшая проблема: если программно указывать значение, например в PAI "поле_ввода = '1'" то функция запускается и работает. А если значение вводить на экране с клавиатуры в поле ввода, соответственно затем со срабатыванием OK_CODE , то не работает. Пока на этом остановился. По типам данных: для поля ввода string, для функции import и export типа CLIKE.
Back to top
View user's profile Send private message
Alex80
Старший специалист
Старший специалист


Age: 43
Joined: 24 Jan 2008
Posts: 129

PostPosted: Thu May 15, 2008 3:46 pm    Post subject: Reply with quote

Dmitry wrote:
С созданием функции Function group не тот указал по ошибке, в итоге спрашивала пароль разработчика. В PAI модуле IF number CO '0987654321' проверил, работает. Определяет, если не цифра. Теперь в функцию вставить пытаюсь. С функцией CONVERSION_EXIT_ Z _OUTPUT небольшая проблема: если программно указывать значение, например в PAI "поле_ввода = '1'" то функция запускается и работает. А если значение вводить на экране с клавиатуры в поле ввода, соответственно затем со срабатыванием OK_CODE , то не работает. Пока на этом остановился. По типам данных: для поля ввода string, для функции import и export типа CLIKE.
Может ещё пробел добавить в условие?
Code:
CO ' 0987654321'
Back to top
View user's profile Send private message
Dmitry
Участник
Участник



Joined: 12 May 2008
Posts: 14

PostPosted: Thu May 15, 2008 4:33 pm    Post subject: Reply with quote

Саму проверку вводимых значений в функцию пока не вставлял. Проверяю её по export. С присвоением в PAI: те пробелы, что идут за вводимыми значениями не влияли на проверку, а те что перед ними(слева) убираю при помощи SHIFT strshift left DELETING LEADING ' '. Проблема в том, что если написать программно "поле_ввода = 'чему-то'", то в поле ввода на экране выводится значение из функции из export. А если не программно значения в поле вводить, то export из функции в поле не вставляется.
Если уж проверять то вводимым значениям, то код функции с пробелом такой:

IF input CO '0123456789 ' .
leave program.
ENDIF.
Back to top
View user's profile Send private message
Armann
Модератор
Модератор



Joined: 01 Jan 2008
Posts: 422
Location: Moscow

PostPosted: Thu May 15, 2008 4:33 pm    Post subject: Reply with quote

Alex80 wrote:
Может ещё пробел добавить в условие?
Code:
CO ' 0987654321'

Тогда лучше делать CONDENSE xxx NO-GAPS
Back to top
View user's profile Send private message Blog
Dmitry
Участник
Участник



Joined: 12 May 2008
Posts: 14

PostPosted: Thu May 15, 2008 4:46 pm    Post subject: Reply with quote

Если функция вызывается, то output(export) отрабатывать должен. В функции без всяких IF напрямую прописано - Output = 'proverka'. Тут может функция не воспринимает, что в поле ввода что-то ввели? Если в само поле ничего не вводить и не прописывать присвоение в PBA и PAI, то функция тоже ничего не выводит. Либо тут какая-то проблема с типами данных может быть.
Back to top
View user's profile Send private message
Dmitry
Участник
Участник



Joined: 12 May 2008
Posts: 14

PostPosted: Thu May 15, 2008 4:58 pm    Post subject: Reply with quote

Ради интереса в функции написал одну только строчку - Leave program. Если в модуле пишу "поле_ввода = значение", то работает. А если с экрана ввожу значение в это же самое поле ввода с последующим исполнением OK_Code по нажатию на кнопку, то не срабатывает. Тут наверное в самой программе надо как-то повторно присвоить значение введённое пользователем.
Back to top
View user's profile Send private message
Dmitry
Участник
Участник



Joined: 12 May 2008
Posts: 14

PostPosted: Fri May 16, 2008 12:51 pm    Post subject: Reply with quote

Сам факт изменения поля фиксируется и при ok_code вызываются соответствующие функции. Программа SAPCNVE и в ней функции AB_GET_C_PARMS и AB_SET_C_PARMS. Проверял путём указания неверного типа данных. Если поле с неверным типом данных оставлять пустым, то ничего не произойдёт, а если ввести в него что-то, то сразу вываливается ошибка при выполнении функции AB_GET_C_PARMS, которая внутри SAPCNVE. Сам SAPCNVE оказался не таким уж и большим. Внутри help на немецком про CONVERSION_EXIT_ xxxxx _OUTPUT и CONVERSION_EXIT_ xxxxx _INPUT и две фунции. Пока только непонятно почему весь этот набор функций и программм не хочет вызывать CONVERSION_EXIT_ Z _OUTPUT, если значения в поле вручную вводятся. Ладно, попробую перевести с немецкого что написано в этом SAPCNVE, может что прояснится.
Back to top
View user's profile Send private message
Dmitry
Участник
Участник



Joined: 12 May 2008
Posts: 14

PostPosted: Fri May 16, 2008 1:16 pm    Post subject: Reply with quote

Проблема оказалась в разных типах данных. Можно ли избавиться от пробелов в переменной типа "type c" с заданой длиной поля?
Back to top
View user's profile Send private message
Dmitry
Участник
Участник



Joined: 12 May 2008
Posts: 14

PostPosted: Fri May 16, 2008 1:47 pm    Post subject: Reply with quote

Функция ....Z_OUTPUT в Export и Import почему-то только тип "с" воспринимает. У меня поле типа string было, вот и не работало, ошибку тоже никакую не выдавало. С пробелами - просто размерность типа "с" убрал и нормально. Теперь другая проблема появилась - "функции ...Z_INPUT не существует". Интересно, они должны быть идентичными - ....Z_OUTPUT и ...Z_INPUT?
Back to top
View user's profile Send private message
Dmitry
Участник
Участник



Joined: 12 May 2008
Posts: 14

PostPosted: Fri May 16, 2008 2:36 pm    Post subject: Reply with quote

Всё, работает наконец-то Conv. exit. Если кому интересно, то вкратце: типы данных - в самой функции тип CLIKE, поле ввода типа "С" с указанием длины. Создаём CONVERSION_EXIT_ xxxxx_INPUT и CONVERSION_EXIT_ xxxxx _OUTPUT. Код первой функции:
Code:
 
CALL 'CONVERSION_EXIT_ALPHA_INPUT'  ID 'INPUT'  FIELD INPUT
                                      ID 'OUTPUT' FIELD OUTPUT.


Код второй функции:

Code:
 
IF  input CO '0123456789' .
........
ENDIF.


Теперь при ok_code либо программном изменении значения поля вызываются две верхнии функции и происходит проверка. Вроде всё.

P.S.
А тип "c" без размерности мне 1 символ выдавал, пришлось длину выставлять. Впрочем с помощью 'CONVERSION_EXIT_ALPHA_INPUT' в первой функции проблема с пробелами решилась.[/code]
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 Previous  1, 2
Page 2 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.