Текущее время: Пт, июл 18 2025, 14:38

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: ФМ EXIT_SAPMM06E_004
СообщениеДобавлено: Ср, июн 25 2014, 06:12 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, янв 24 2013, 08:43
Сообщения: 806
Откуда: South Kazakhstan
Пол: Мужской
Всем доброго времени суток. Возникла необходимость добавления полей в транзакцию ME31K - Создание контракта. Для этих целей я воспользовался расширением MM06E005, добавил поле в CI_EKKODB, затем добавил в 201 экран поле. После этого в ФМ EXIT_SAPMM06E_006 в инклуд ZXM06U36 добавил строчку MOVE-CORRESPONDING i_ci_ekko TO ekko_ci. Затем в ФМ EXIT_SAPMM06E_008 в инклуд ZXM06U37 добавил строчку MOVE-CORRESPONDING ekko_ci TO E_CI_EKKO. Новое поле отображается и сохраняет введённые туда запииси. Теперь нужно чтобы это поле не отображалось если выбирается контракт определённого вида, т.е. необходимо условие. Большую части своего времени я функциональщик, но в последнее время приходить начинать абапить, поэтому прошу великодушно простить за возможно глупые вопросы. В общем для последней цели я пытаюсь использовать MM06E004 ФМ EXIT_SAPMM06E_004, но знаний по Абапу маловато, поэтому не совсем понимаю, что нужно сделать. Информации по этому поводу в Интернете много, но она вся разрозненная. Пытаюсь в Инклуд ZXM06U24 добавить
Code:
LOOP AT SCREEN.
if  EKKO-EVART = 'NT'.

screen-name = 'EKKO_CI-Z_POLE1'.

        screen-input = 0.
        modify screen.
endif.
ENDLOOP.


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


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ФМ EXIT_SAPMM06E_004
СообщениеДобавлено: Ср, июн 25 2014, 06:29 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
посмотрите в отладке инструмент "вызовы" (стэк вызовов),
если в самых нижних строках есть буквы PBO, то:
screen-active = 0


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ФМ EXIT_SAPMM06E_004
СообщениеДобавлено: Ср, июн 25 2014, 07:14 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, янв 24 2013, 08:43
Сообщения: 806
Откуда: South Kazakhstan
Пол: Мужской
trop написал(а):
посмотрите в отладке инструмент "вызовы" (стэк вызовов),
если в самых нижних строках есть буквы PBO, то:
screen-active = 0


Я извиняюсь за интеллект, но я вот щас не понял что Вы имели в виду. screen-active, на сколько я знаю нужно для отображения чего либо за экране, а у меня же экран ввода получается, значит нужен screen-input или я что то не так понимаю?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ФМ EXIT_SAPMM06E_004
СообщениеДобавлено: Ср, июн 25 2014, 08:36 
Специалист
Специалист

Зарегистрирован:
Пн, июл 12 2010, 11:43
Сообщения: 186
Добый день.
LOOP AT SCREEN необходимо пистаь только в модуле OUTPUT 201 экрана.
1) На 201 экране необходимо написать
PROCESS BEFORE OUTPUT.
MODULE STATUS_0201.
2) Затем в самом модуле написать
Code:

MODULE status_0201 OUTPUT.
LOOP AT SCREEN.
    CASE screen-name.
      WHEN 'ПОЛЕ' .
        IF ‘условие’.
          screen-input = '1'.
          MODIFY SCREEN.
        ENDIF.
    ENDCASE.
  ENDLOOP.
ENDMODULE. 


Но! Необходимо учесть, для просмотровых транзакций поле не активное. Тогда screen-input = '0'.
Если нужно поле скрыть: screen-ACTIVE = '0'.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ EXIT_SAPMM06E_004
СообщениеДобавлено: Ср, июн 25 2014, 09:13 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, янв 24 2013, 08:43
Сообщения: 806
Откуда: South Kazakhstan
Пол: Мужской
Уважаемый dev403k, всё сделал как Вы и сказали. В PBO создал модуль MODULE STATUS_0201 и в нём прописал
Code:
MODULE STATUS OUTPUT.
TABLES: Ekko.
LOOP AT SCREEN.
  CASE screen-name.
    when 'EKKO_CI-Z_POLE1'.
if  EKKO-bsart = 'NT'.
        screen-input = 1.
        modify screen.
endif.
ENDCASE.
ENDLOOP.

ENDMODULE.         

Всё это дело активирую, пытаюсь создать договор вида NT, но поле добавленное мной в 201 экран подтягивается тоже, хотя не должно. Что то я наверное всё же не так делаю.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ФМ EXIT_SAPMM06E_004
СообщениеДобавлено: Ср, июн 25 2014, 10:33 
Специалист
Специалист

Зарегистрирован:
Пн, июл 12 2010, 11:43
Сообщения: 186
1) Зачем строка прописана в модуле: TABLES: Ekko.
если вам она нужна, то пропишите ее в топах.
2) Для того, чтобы скрыть поле нужно прописать
screen-input = 0.
3) Вы объявили таблицу и тут же анализируете поле с этой таблицы. Посмотрите в дебаге значение поля EKKO-bsart. Скорее всего оно будет пустое.
-Как по мне, то нужно поля из EKKO (или всю структуру), которые нужно увидеть на 201 экране, объявить в ТОПах.
-Затем в соответствующем инклуде перелить в эту перемеммую(структуру) информацию из EKKO .
Только в таком случае вы увидите значение нужного поля в модуле 2001 экрана.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ EXIT_SAPMM06E_004
СообщениеДобавлено: Ср, июн 25 2014, 11:53 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, янв 24 2013, 08:43
Сообщения: 806
Откуда: South Kazakhstan
Пол: Мужской
В общем я убрал TABLES: Ekko. Действительно EKKO-bsart пустое получается. Я создал глобальную переменную, типа ZZZZ, затем в ФМ EXIT_SAPMM06E_006, с него и начинается обработка в дебаге создания контракта, в инклуде написал
Code:
MOVE-CORRESPONDING i_ci_ekko TO ekko_ci.
Clear zzzz.
if i_ekko-bsart = 'NT'.
  zzzz = 'X'.
endif.


потом в PBO вставил
Code:
MODULE STATUS OUTPUT.

LOOP AT SCREEN.
  CASE screen-name.
    when 'EKKO_CI-Z_POLE1' or
       'EKKO-Z_POLE1'.
if  zzzz = 'X'.
       screen-active = 0.
        modify screen.
endif.
ENDCASE.
ENDLOOP.
ENDMODULE.


Теперь вроде бы всё отрабатывает. Спасибо за подказку, уважаемый dev403k. Премного благодарен. Теперь буду думать как понатыкать в транзакцию вкладки с этими полями.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ФМ EXIT_SAPMM06E_004
СообщениеДобавлено: Чт, июл 03 2014, 12:39 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, янв 24 2013, 08:43
Сообщения: 806
Откуда: South Kazakhstan
Пол: Мужской
В продолжении темы: Закладки, которые я пытался сделать на стандартном подэкране транзакции ME31K получились совсем не смотрибельные, потому что область данных подэкрана 0201 ну уж очень мала. Решил добавить кнопку в эту область чтобы при нажатии на неё выходил экран с парой вкладок. Добавил я кнопку в основной подэкран 0201 транзакции. Затем создал подэкран с тремя закладками. В PBO подэкрана 0201 создал модуль
Code:
MODULE status_0201
LOOP AT SCREEN.
  CASE screen-name.
    when  'BTCR'.
if  zzzz = 'X'.
       screen-active = 0.
        modify screen.
endif.
ENDCASE.
ENDLOOP.

Это условие должно срабатывать, если я выбираю создание контракта типа NT. Переменная zzzz объявлена в ZXM06TOP, а в функциональном модуле EXIT_SAPMM06E_006 инклюде ZXM06U36 прописано
Code:
Clear zzzz.
if i_ekko-bsart = 'NT'.
  zzzz = 'X'.
endif.

Когда я пытался делать это с подэкраном 0201 на прямую добавляя туда поля, условие работало, а сейчас я видимо что то не там или не так делаю. Затем я в PBA модуле подэкрана 0201 пробую писать обработчик, который бы при нажатии на кнопку вызывал экран с вкладками.
Code:
MODULE USER_COMMAND_0201 INPUT.

case ok_code.
  WHEN 'BTCR'.
   CALL SUBSCREEN 9005.

ENDCASE.

ENDMODULE.

BTCR это код функции кнопки на экране. Но активировать этот модуль я не могу, ругается что Field OK_CODE is unknown.
Я не пойму, мне эту кнопку тоже где то объявлять надо? В ZXM06TOP она объявлена, но в модуле MODULE USER_COMMAND_0201 INPUT её получается всё равно не видно. Может кто подскажет не опытному в Абапе консультанту что я не так делаю? Буду весьма признателен за помощь.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ФМ EXIT_SAPMM06E_004
СообщениеДобавлено: Пт, июл 04 2014, 00:11 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Почитайте курс BC410. То, что вы спрашиваете - азы программирования экранов на ABAP.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ EXIT_SAPMM06E_004
СообщениеДобавлено: Пт, июл 04 2014, 03:10 
Специалист
Специалист

Зарегистрирован:
Вт, июн 10 2014, 09:41
Сообщения: 180
Maksimka написал:
ругается что Field OK_CODE is unknown.

Проще всего будет заменить OK_CODE на SY-UCOMM :)

Скорее всего, ZXM06TOP у вас не включён в программе, в которой вы создали экран.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ФМ EXIT_SAPMM06E_004
СообщениеДобавлено: Вт, июл 15 2014, 08:50 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, янв 24 2013, 08:43
Сообщения: 806
Откуда: South Kazakhstan
Пол: Мужской
Тут возникла ещё одна проблемка. Вроде бы код весь добавил, экраны, поля, всё это активировал, но при создании контракта при нажатии на копку, которую я вставил в экран система ругается выдаёт сообщение Эта функция не предусмотрена.
№ сообщения 06006

Diagnosis
There is no entry for this function in Table 168F (system table). An error involving the screen control has probably occurred.

В интернете есть кое какая инфа, но она мне не совсем понятна. Насколько я понял мне надо что то добавить в эту табличку, я её открыл, а что и куда добавлять я так и не понял. Может кто сталкивался и объяснит мне?!


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

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


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

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


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

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