1

我有一个要求,我需要禁用销售订单行项目中的完整列。字段是VBAP-ARKTXVBAP-KDMAT

我找到了禁用包含数据的列的方法,但不是整个列。

我使用USEREXIT_FIELD_MODIFICATION使用以下代码实现此目的;

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

有没有办法禁用整个列?

在此处输入图像描述

4

3 回答 3

1

调整包含项目的表格控件是最简单和最推荐的方法。它可以为单个用户或一组用户完成。否则,请尝试在 SHD0中创建屏幕变体。它允许轻松隐藏任何表格的任何列和屏幕上的任何字段。

于 2015-12-09T15:09:17.557 回答
0

我面临的具体问题是如何禁用两个字段,但让标准映射数据显示在其中。

为了满足这个要求,我使用了以下内容;

包括: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.
于 2015-12-09T19:13:32.083 回答
-1

您可以在 dynpro-designer 中完成一件事。在那里您可以将 sap-standard-dynpro 修改为 dynpro-modification。不过,这可能会被下一个版本覆盖。这也是你的选择吗?

于 2015-11-23T14:38:01.083 回答