SD-如何利用BTE在VKxx显示特殊文本

在SAP的价格维护中,我们经常会自定义一些字段,有时这些字段非系统标准字段,无法显示文本,但需要在维护时显示文本或者显示特殊文本。本文就给出用户输入条形码,显示对应物料名称的样例。

在系统中我们会找到四个BTE和定价维护相关:

  • 00503303 Maintain conditions: Transfers
  • 00503305 Maintain conditions: Field check
  • 00503306 Maintain conditions: Text determination
  • 00503307 Maintain conditions: Default condition

其中00503306就是用来用户编写代码显示特殊文本。我们可以参照SAMPLE_INTERFACE_00503306模板常见自定义函数,对应代码如下:

FUNCTION Y_0000SD_BTE_00503306.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(FIELDNAME) TYPE  CHAR30
*"     VALUE(VALUE)
*"     VALUE(KOMG_I) TYPE  KOMG
*"     VALUE(KONP_I) TYPE  KONP
*"     VALUE(T681E_I) TYPE  T681E
*"  EXPORTING
*"     VALUE(TEXTSTRING) TYPE  CHAR40
*"  CHANGING
*"     REFERENCE(GET_TEXT) TYPE  CHAR1
*"----------------------------------------------------------------------
  IF FIELDNAME eq 'VKORG'.
    w_vkorg = value.
  endif.
  PERFORM y0000sd_0000_bte_00503306
          USING    fieldname
                   value
                   komg_i
                   konp_i
                   T681E_I
          CHANGING textstring
                   get_text.

ENDFUNCTION.

FORM y0000sd_0000_bte_00503306 USING w_fieldname
                                     w_value
                                     w_komg_i
                                     w_konp_i
                                     w_t681e_i
                              CHANGING w_textstring
                                       w_get_text.
  TYPES: BEGIN OF lty_mara,
           matnr    TYPE matnr,
           yyart    TYPE yyart,
         END OF lty_mara.

  TYPES: BEGIN OF lty_mvke,
           matnr    TYPE matnr,
           vkorg    TYPE vkorg,
           vtweg    TYPE vtweg,
         END OF   lty_mvke.
* general rules, can be used in every sales org
  DATA: w_yyart       LIKE mara-yyart,
        w_yycnu       LIKE mara-yycnu,
        lt_mara       TYPE TABLE OF lty_mara WITH HEADER LINE,
        lt_mvke       TYPE TABLE OF lty_mvke WITH HEADER LINE,
        lt_makt       TYPE TABLE OF makt,
        lv_makt       TYPE makt,
        w_vkorg       TYPE vkorg,
        w_vtweg       TYPE vtweg,
        w_EAN11       TYPE EAN11. 
  data: lwa_komg TYPE komg.
  TABLES: mara, makt.
  CASE  w_fieldname.  
  WHEN 'EAN11'.
*   EAN11
      w_EAN11 = w_value.
      MOVE-CORRESPONDING w_komg_i to lwa_komg.
      w_vkorg = lwa_komg-VKORG.
      w_vtweg = lwa_komg-VTWEG.
      SELECT matnr FROM MEAN INTO CORRESPONDING FIELDS OF TABLE lt_mara WHERE EAN11 = w_EAN11.
      IF lt_mara[] IS NOT INITIAL.
        SELECT  matnr vkorg vtweg FROM MVKE INTO TABLE lt_mvke
          FOR ALL ENTRIES IN lt_mara
          WHERE matnr = lt_mara-matnr  AND vkorg = w_vkorg AND vtweg = w_vtweg.
      ENDIF.
      CLEAR:lwa_komg, w_vkorg, w_vtweg, w_EAN11.
      LOOP AT lt_mvke.
        SELECT SINGLE * FROM makt INTO lv_makt WHERE matnr = lt_mvke-matnr AND spras = sy-langu.
          IF sy-subrc = 0.
          w_textstring = lv_makt-maktx.
          CLEAR w_get_text.
          EXIT.
        ELSE.
          SELECT SINGLE * FROM makt INTO lv_makt WHERE matnr = lt_mvke-matnr AND spras = 'EN'.
          IF sy-subrc = 0.
            w_textstring = lv_makt-maktx.
            CLEAR w_get_text.
            EXIT.
          ENDIF.
        ENDIF.
      ENDLOOP.
  ENDCASE.
ENDFORM. 

供大家参考。

 

发布了372 篇原创文章 · 获赞 76 · 访问量 355万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术工厂 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览