Отключить столбец в заказе клиента SAP

У меня есть требование, когда мне нужно отключить полный столбец в позиции строки заказа на продажу. Поля VBAP-ARKTX и VBAP-KDMAT.

Я нашел способ отключить столбцы с данными в них, но не весь столбец.

Я использовал USEREXIT_FIELD_MODIFICATION для достижения этой цели с помощью следующего кода;

IF sy-TCODE = 'VA02'.
  IF screen-name = 'VBAP-KDMAT' .
      screen-INPUT = 0.
      modify screen.
  ENDIF.
ENDIF.

Есть ли способ отключить весь столбец?

3 ответа

Решение

Конкретная проблема, с которой я столкнулся, заключалась в том, как отключить два поля, но позволить отображать в них стандартные сопоставленные данные.

Чтобы удовлетворить это требование, я использовал следующее;

Включите: MV45AFZZ
Имя выхода пользователя: USEREXIT_FIELD_MODIFICATION
Имя улучшения: -Любое имя, которое вы хотите-

Я создал Улучшение и написал следующий код;

"Specify the condition
IF VBAK-VKORG = '1234' AND ( sy-TCODE = 'VA02' OR sy-TCODE = 'VA01' ) AND ( screen-name = 'VBAP-KDMAT' OR screen-name = 'VBAP-ARKTX' ).

        screen-input = 0."disable input
        MODIFY SCREEN.

         DATA: i_tab_mara TYPE TABLE OF MARA WITH HEADER LINE.
         DATA: l_maktx TYPE MAKT-MAKTX.
         DATA: WA_MARA LIKE LINE OF i_tab_mara.

         DATA: i_tab_vbap TYPE TABLE OF VBAP WITH HEADER LINE.
         DATA: wa_vbap LIKE LINE OF i_tab_vbap.

          IF sy-TCODE = 'VA01' .

             SELECT SINGLE * from MARA INTO WA_MARA WHERE MATNR eq VBAP-MATNR.

             SELECT MAKTX FROM MAKT INTO l_maktx WHERE MATNR eq VBAP-MATNR.
             ENDSELECT.

             VBAP-KDMAT = WA_MARA-KDMAT.
             VBAP-ARKTX = l_maktx.

             MODIFY SCREEN.

          ELSEIF sy-TCODE = 'VA02' .

           SELECT SINGLE * FROM VBAP INTO WA_VBAP WHERE VBELN eq VBAK-VBELN AND POSNR eq VBAP-POSNR.

           IF WA_VBAP-ARKTX eq ''." Check if the fileds are empty, otherwise old data is overwritten

             SELECT MAKTX FROM MAKT INTO l_maktx WHERE MATNR eq VBAP-MATNR.
             ENDSELECT.

             VBAP-ARKTX = l_maktx.

             MODIFY SCREEN.

           ENDIF.

           IF WA_VBAP-KDMAT eq ''." Check if the fileds are empty, otherwise old data is overwritten

             SELECT SINGLE * from MARA INTO WA_MARA WHERE MATNR eq VBAP-MATNR.

             VBAP-KDMAT = WA_MARA-KDMAT.

             MODIFY SCREEN.

           ENDIF.
    ENDIF.
ENDIF.

Настраивать элемент управления таблицей, содержащий элементы, - самый простой и рекомендуемый способ. Это может быть сделано для одного пользователя или для группы пользователей. В противном случае попробуйте создать вариант экрана в SHD0. Это позволяет легко скрыть любой столбец любой таблицы и любое поле на экране.

Есть одна вещь, которую Вы можете сделать в dynpro-designer. Там вы можете изменить sap-standard-dynpro как dynpro-модификацию. Тем не менее, это может быть перезаписано в следующем выпуске. Это тоже вариант для вас?

Другие вопросы по тегам