Текущее время: Вс, июн 22 2025, 22:38

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: поле ввода\поле вывода на уровне ячейки SCREEN_TABLE
СообщениеДобавлено: Пт, сен 24 2010, 15:34 
Специалист
Специалист

Зарегистрирован:
Вт, мар 18 2008, 10:21
Сообщения: 136
Откуда: краснодар
Доброго дня стоит задача ввод данных на уровне ячейки экрнной таблицы, то есть для тех записей которые добовлялись пользователем в интерфейсе экранной таблицы необходимо обеспечит ввод данных в некоторые поля, а для тех записей которые расчитал отчет для экранной таблицы - запретить редактирование
Что быбыло понятнее такое реализовано в заказе на поставку например если открыть на редактирование любой заказ то в обзоре позиций для строки нельзя редактировать поля тип контировки, материа и т.д. но зато можно редактировать поля текст позиции и т.д.
Вот такое же необходимо реализовать. В стандартной обработке так все замудрено((((
Итак имею следующую конструкцию
Code:
PROCESS BEFORE OUTPUT.

*&SPWIZARD: PBO FLOW LOGIC FOR TABLECONTROL 'SCREEN_TABLE'
  MODULE SCREEN_TABLE_CHANGE_TC_ATTR.
*&SPWIZARD: MODULE SCREEN_TABLE_CHANGE_COL_ATTR.
  LOOP AT   GT_ORDER_ITAB
       INTO GS_ORDER_ITAB
       WITH CONTROL SCREEN_TABLE
       CURSOR SCREEN_TABLE-CURRENT_LINE.
       MODULE SCREEN_TABLE_GET_LINES_C.
*    FIELD GS_ORDER_ITAB-SEL
*      MODULE SCREEN_TABLE_MARK.
*&SPWIZARD:   MODULE SCREEN_TABLE_CHANGE_FIELD_ATTR
  ENDLOOP.

PROCESS AFTER INPUT.
*&SPWIZARD: PAI FLOW LOGIC FOR TABLECONTROL 'SCREEN_TABLE'
  LOOP AT GT_ORDER_ITAB.
    CHAIN.
      FIELD GS_ORDER_ITAB-VORNR.
      FIELD GS_ORDER_ITAB-UVORN.
      FIELD GS_ORDER_ITAB-ARBPL.
      FIELD GS_ORDER_ITAB-WERKS.
      FIELD GS_ORDER_ITAB-LTXA1.
      FIELD GS_ORDER_ITAB-SHORT.
      FIELD GS_ORDER_ITAB-PLARB.
      FIELD GS_ORDER_ITAB-FCARB.
      FIELD GS_ORDER_ITAB-UNARB.
    endchain.
    FIELD GS_ORDER_ITAB-SEL
      MODULE SCREEN_TABLE_MARK ON REQUEST.
  ENDLOOP.
  MODULE SCREEN_TABLE_USER_COMMAND.
*&SPWIZARD: MODULE SCREEN_TABLE_CHANGE_TC_ATTR.
*&SPWIZARD: MODULE SCREEN_TABLE_CHANGE_COL_ATTR.
MODULE USER_COMMAND_0300.


логику обработки полей реализовал в этом модуле

Code:
*&---------------------------------------------------------------------*
*&      Module  SCREEN_TABLE_GET_LINES_C  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE SCREEN_TABLE_GET_LINES_C OUTPUT.
  loop at SCREEN_TABLE-cols into l_col.
    IF l_col-SCREEN-NAME = 'GS_ORDER_ITAB-PLARB'.
      IF GS_ORDER_ITAB-INS = 'X'.                     " ввод разрешен
        l_col-SCREEN-OUTPUT = 1.
        l_col-SCREEN-REQUIRED = 1.
        l_col-SCREEN-ACTIVE = 1.
        l_col-SCREEN-INPUT = 1.
      ELSE.
        l_col-SCREEN-OUTPUT = 1.                        " ввод запрещен
        l_col-SCREEN-ACTIVE = 1.
        l_col-SCREEN-REQUIRED = 0.
        l_col-SCREEN-INPUT = 0.
      ENDIF.
    ENDIF.
    modify SCREEN_TABLE-cols from l_col.
  endloop.
ENDMODULE.                 " SCREEN_TABLE_GET_LINES_C  OUTPUT


собственно само поле ввода GS_ORDER_ITAB-PLARB имеет свойства: поле ввода = Х и поле вывода = Х
но не работает эта конструкция(( что не так? Причем заметил что например свойство ACTIVE отрабатывает как положено)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: поле ввода\поле вывода на уровне ячейки SCREEN_TABLE
СообщениеДобавлено: Пт, сен 24 2010, 15:35 
Специалист
Специалист

Зарегистрирован:
Вт, мар 18 2008, 10:21
Сообщения: 136
Откуда: краснодар
чуть не забыл
поле l_col
data: l_col type CXTAB_COLUMN.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: поле ввода\поле вывода на уровне ячейки SCREEN_TABLE
СообщениеДобавлено: Пт, сен 24 2010, 16:19 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
aivengo написал(а):
чуть не забыл
поле l_col
data: l_col type CXTAB_COLUMN.

См. программу DEMO_DYNPRO_TABCONT_LOOP_AT

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: поле ввода\поле вывода на уровне ячейки SCREEN_TABLE
СообщениеДобавлено: Пт, сен 24 2010, 22:55 
Специалист
Специалист

Зарегистрирован:
Вт, мар 18 2008, 10:21
Сообщения: 136
Откуда: краснодар
Спасибо. Но в программе пример немного не тот, там реализовано управление свойствами INPUT\OUTPUT на уровне поля экранной таблицы (это я умею) а мне необходимо управление на уровне ячейки((


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: поле ввода\поле вывода на уровне ячейки SCREEN_TABLE
СообщениеДобавлено: Пн, сен 27 2010, 11:07 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, окт 03 2008, 17:20
Сообщения: 162
Используйте LOOP AT SCREEN в Вашем SCREEN_TABLE_GET_LINES_C, а не loop at SCREEN_TABLE-cols.

P.S. Ужас, куда катится мир...

_________________
В SAPе есть всё, просто вы чего-то не нашли.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: поле ввода\поле вывода на уровне ячейки SCREEN_TABLE
СообщениеДобавлено: Пн, сен 27 2010, 17:30 
Специалист
Специалист

Зарегистрирован:
Вт, мар 18 2008, 10:21
Сообщения: 136
Откуда: краснодар
SYS написал(а):
Используйте LOOP AT SCREEN в Вашем SCREEN_TABLE_GET_LINES_C, а не loop at SCREEN_TABLE-cols.

P.S. Ужас, куда катится мир...


Спасибо заработало.
На самом деле так пробовал, просто не досмотрел что надо было еще убрать галочку "только поле вывода" в свойствах поля экранной таблицы.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: поле ввода\поле вывода на уровне ячейки SCREEN_TABLE
СообщениеДобавлено: Пт, дек 11 2015, 14:15 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, мар 17 2009, 00:53
Сообщения: 166
Откуда: Екатеринбург
Пол: Мужской
Спасибо. Получилось всё на ура.

Искал как погасить кнопочку в таблице.

Изображение

Объявление экрана
Code:
CONTROLS: EK_0200_CHANGE TYPE TABLEVIEW USING SCREEN 0200.
DATA: cols LIKE LINE OF EK_0200_CHANGE-cols.


PBO экрана
Code:
PROCESS BEFORE OUTPUT.

  MODULE EK_0200_CHANGE_CHANGE_TC_ATTR.

  LOOP AT   WA_NAKL_CHANGE
       WITH CONTROL EK_0200_CHANGE
       CURSOR EK_0200_CHANGE-CURRENT_LINE.
      MODULE SCREEN_TABLE_SHOW_HIDE_CELLS.

  ENDLOOP.


Модуль отвечающий за SHOW & HIDE
Code:
MODULE SCREEN_TABLE_SHOW_HIDE_CELLS OUTPUT.

IF WA_NAKL_CHANGE-TYPE_ROW = 'KEY'.
LOOP AT SCREEN.
    CHECK SCREEN-NAME = 'DEL_ROW'.
    SCREEN-OUTPUT = 1.
    SCREEN-ACTIVE = 1.
    SCREEN-REQUIRED = 0.
    SCREEN-INPUT = 0.
    MODIFY SCREEN.
ENDLOOP.
ENDIF.

ENDMODULE.                 " SCREEN_TABLE_SHOW_HIDE_CELLS  OUTPUT


Работает как из пулемёта :D

_________________
Высшая степень уважения к клиенту - это разработать программу не так как он хочет, так как следует!


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

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


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

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


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

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