2013-06-28 1 views
2

Следующий код в PBO не работает, чтобы полностью скрыть столбец.Как скрыть столбец SAP ABAP Table Column?

LOOP AT SCREEN. 

    IF SCREEN-NAME EQ 'GT_SO-POSNR' 
     SCREEN-INPUT = 0. 
     SCREEN-ACTIVE = 0. 
     SCREEN-INVISIBLE = 1. 
     MODIFY SCREEN. 
    ENDIF. 
ENDLOOP. 

Но выше отключается колонка, а не скрывается. Любая помощь, как скрыть столбец?

ответ

1

Используйте поле INVISIBLE таблицы COLS в структуре, определяемой положением CONTROLS. Вся структура документирована here. В вашей системе должна быть примерная программа с именем RSDEMO02, которая позволяет изменять свойства элемента управления таблицами и проверять результаты по мере их выполнения.

+0

Привет, любое другое имущество, чем невидимая? Я попробовал INVISIBLE, но не повезло, он не делает его невидимым, вместо этого он преобразует содержимое в «*********», я предполагаю, что это предназначено, чтобы сделать контент невидимым? Вероятно, вроде поля «Пароль». Но мне нужно скрыть весь столбец с данными и заголовком. Благодарю. –

+0

Прочтите мой ответ еще раз. НЕ ИСПОЛЬЗУЙТЕ ЭКРАН-НЕВИДИМО. – vwegert

0

Проверьте, как вы пытаетесь скрыть конкретный столбец. Всякий раз, когда у вас есть элемент управления Table на экране, создается структура CXTAB, созданная против него. Поэтому отключение поля не так просто, как запись имени внутренней таблицы, за которой следует имя столбца.

Ваш код должен быть что-то вроде этого

PROCESS BEFORE OUTPUT. 
MODULE STATUS. 
LOOP WITH CONTROL TABCTRL. 
    MODULE MODIFY_100. 
ENDLOOP. 


MODULE MODIFY_100 OUTPUT. 
    DATA wa_tabctrl TYPE cxtab_column . 

    LOOP AT TABCTRL-COLS INTO WA_TABCTRL. 
    IF WA_TABCTRL-NAME = 'POSNR'.      
     WA_TABCTRL-SCREEN-INVISIBLE = '1'. 
     MODIFY TABCTRL-COLS FROM WA_TABCTRL. 
    ENDIF. 
    ENDLOOP. 

ENDMODULE. 
1

Мы имели такую ​​же проблему в нашем проекте, и мы выяснить, как это сделать.

Смотрите ниже образца:

PROCESS BEFORE OUTPUT. 
MODULE STATUS. 
LOOP WITH CONTROL TABCTRL. 
    MODULE MODIFY_100. 
ENDLOOP. 


MODULE MODIFY_100 OUTPUT. 
    DATA wa_tabctrl TYPE cxtab_column . 

* loop at the table control 
    LOOP AT TABCTRL-COLS INTO WA_TABCTRL. 
    IF WA_TABCTRL-NAME = 'POSNR'. 
*  once you get to the desired screen, flag the INVISIBLE field for the table control, not the SCREEN table.    
     WA_TABCTRL-INVISIBLE = 'X'. 
*  Modify the table for table control 
     MODIFY TABCTRL-COLS FROM WA_TABCTRL. 
    ENDIF. 
    ENDLOOP. 

ENDMODULE.