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

Часовой пояс: 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 часа


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

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


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

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