我在USEREXIT_FIELD_MODIFICATION遇到问题

2020-08-21 16:30发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我希望在某些情况下进行屏幕屏蔽输入,其中之一是用户状态。 我使用FM status_text_edit获取用户状态的值。 就像下面的代码一样。

但是有问题,当用户更改用户状态时,这是错误的。

 FORM USEREXIT_FIELD_MODIFICATION。

 数据:jstat的it_status类型标准表,
        wa_status喜欢it_status的行,
        lv_objnr TYPE vbak-objnr,
        lv_line TYPE BSVX-STTXT,
        lv_status类型BSVX-STTXT。
 清除:lv_objnr。
 刷新it_status。
 从vbak选择单个objnr到lv_objnr,其中vbeln = vbak-vbeln。


 通话功能" STATUS_TEXT_EDIT"
   出口
    客户= SY-MANDT
    FLG_USER_STAT ='X'
     objnr = lv_objnr
     ONLY_ACTIVE ='X'
     spras = sy-langu
 * BYPASS_BUFFER =''
  输入
 * ANW_STAT_EXISTING =
 * E_STSMA =
    LINE = lv_line
    USER_LINE = lv_status
 * STONR =
  例外情况
    OBJECT_NOT_FOUND = 1
    其他= 2
           。
 如果sy-subrc <> 0。
 *在这里实施适当的错误处理
 万一。

  IF语法EQ'VA02'。
    sy-uname NE'STC25'和sy-uname NE'STC26'。
      如果是lv_status EQ'AP'或lv_status EQ'CBDA'。  " AP和CBDA"
         案例屏幕名称。
           当" RV45A-KWMENG"时。
                 如果是VBAP-PSTYV EQ'ZPPR'。
           屏幕输入= 0。
                  修改屏幕。
                 万一。
           当" VBAP-VRKME"时。
             如果是VBAP-PSTYV EQ'ZPPR'。
                  屏幕输入= 0。
                  修改屏幕。
             万一。
           当'VBEP-WMENG'。
             如果是VBAP-PSTYV EQ'ZPPR'。
                  屏幕输入= 0。
                  修改屏幕。
             万一。
        结束。
       万一。
    万一。
  万一。


 ENDFORM。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我希望在某些情况下进行屏幕屏蔽输入,其中之一是用户状态。 我使用FM status_text_edit获取用户状态的值。 就像下面的代码一样。

但是有问题,当用户更改用户状态时,这是错误的。

 FORM USEREXIT_FIELD_MODIFICATION。

 数据:jstat的it_status类型标准表,
        wa_status喜欢it_status的行,
        lv_objnr TYPE vbak-objnr,
        lv_line TYPE BSVX-STTXT,
        lv_status类型BSVX-STTXT。
 清除:lv_objnr。
 刷新it_status。
 从vbak选择单个objnr到lv_objnr,其中vbeln = vbak-vbeln。


 通话功能" STATUS_TEXT_EDIT"
   出口
    客户= SY-MANDT
    FLG_USER_STAT ='X'
     objnr = lv_objnr
     ONLY_ACTIVE ='X'
     spras = sy-langu
 * BYPASS_BUFFER =''
  输入
 * ANW_STAT_EXISTING =
 * E_STSMA =
    LINE = lv_line
    USER_LINE = lv_status
 * STONR =
  例外情况
    OBJECT_NOT_FOUND = 1
    其他= 2
           。
 如果sy-subrc <> 0。
 *在这里实施适当的错误处理
 万一。

  IF语法EQ'VA02'。
    sy-uname NE'STC25'和sy-uname NE'STC26'。
      如果是lv_status EQ'AP'或lv_status EQ'CBDA'。  " AP和CBDA"
         案例屏幕名称。
           当" RV45A-KWMENG"时。
                 如果是VBAP-PSTYV EQ'ZPPR'。
           屏幕输入= 0。
                  修改屏幕。
                 万一。
           当" VBAP-VRKME"时。
             如果是VBAP-PSTYV EQ'ZPPR'。
                  屏幕输入= 0。
                  修改屏幕。
             万一。
           当'VBEP-WMENG'。
             如果是VBAP-PSTYV EQ'ZPPR'。
                  屏幕输入= 0。
                  修改屏幕。
             万一。
        结束。
       万一。
    万一。
  万一。


 ENDFORM。
付费偷看设置
发送
3条回答
闻人可可
1楼-- · 2020-08-21 17:12

在屏幕上滚动

ENDLOOP

缺少

请参见下面的代码

 IF sy-tcode EQ'VA02'  。
     sy-uname NE'STC25'和sy-uname NE'STC26'。
       如果是lv_status EQ'AP'或lv_status EQ'CBDA'。  " AP和CBDA"
         环视屏幕。
           CASE屏幕名称。
             当" RV45A-KWMENG"时。
               如果是vbap-pstyv EQ'ZPPR'。
                 屏幕输入= 0。
                 修改屏幕。
               万一。
             当" VBAP-VRKME"时。
               如果是vbap-pstyv EQ'ZPPR'。
                 屏幕输入= 0。
                 修改屏幕。
               万一。
             当'VBEP-WMENG'。
               如果是vbap-pstyv EQ'ZPPR'。
                 屏幕输入= 0。
                 修改屏幕。
               万一。
           结束。
         结局。
       万一。
     万一。
   ENDIF。
土豆飞人
2楼-- · 2020-08-21 16:53

当我使用循环时,它变慢了。

我在userexit_field_modification中将FM STATUS_TEXT_EDIT放错了吗?

暮风yp
3楼-- · 2020-08-21 17:13

是的,我想根据用户状态将数量和单位字段设置为只读。

我刚刚意识到,如果任何人都可以更改用户状态,那就没用了。

我认为,我应该与SAP顾问再次讨论此逻辑。

一周热门 更多>