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

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


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

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


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

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