SD-增强-销售订单/附加数据B-VA01/VA02/VA03/VA21/VA22/VA23

销售订单增强界面
常规化的销售订单增强
步骤如下:
1.VBAK附加结构 ZSVBAK_EH01在这里插入图片描述
2.SE38->SAPMV45A->8309屏幕
(1).画屏幕
(2).写代码

PROCESS BEFORE OUTPUT.
*                            Verarbeitung vor der Ausgabe
*{   INSERT         SD1K900028                                        1
MODULE ZZVBAK_PBO.
*
*}   INSERT



PROCESS AFTER INPUT.
*{   INSERT         SD1K900028                                        1
MODULE ZZVBAK_PAI.
  FIELD vbak-zlesa MODULE ZGET_ZLESA_TEXT ON REQUEST.
     CHAIN.
     FIELD vbak-zlesa.
   ENDCHAIN.
 FIELD vbak-zpjdn MODULE ZGET_ZPJDN_TEXT ON REQUEST.
   CHAIN.
     FIELD vbak-zpjdn.
   ENDCHAIN.

PROCESS ON VALUE-REQUEST.
   FIELD VBAK-ZLESA
   MODULE ZZVBAK_ZLESA_VALUES.
*}   INSERT
*                            Verarbeitung nach der Eingabe

写在:

MODULE ZZVBAK_PBO OUTPUT.
  TABLES:PROJ.
  " 营销助理描述
  IF VBAK-ZLESA IS NOT INITIAL.
    SELECT SINGLE BEZEI INTO TVGRT-BEZEI FROM TVGRT
    WHERE VKGRP = VBAK-ZLESA
    AND SPRAS =  SY-LANGU.
  ENDIF.

   "项目号描述
  IF vbak-zpjdn IS NOT INITIAL.
    data:lv_pspid1(24) type c.
    clear lv_pspid1.
    call function 'CONVERSION_EXIT_ABPSN_INPUT'
      exporting
        input         = vbak-zpjdn
     IMPORTING
       OUTPUT        = lv_pspid1.
    SELECT SINGLE post1 INTO proj-post1 FROM proj WHERE PSPID = lv_pspid1.
  ENDIF.
  LOOP AT SCREEN.
    IF SCREEN-NAME = 'VBAK-ZCRMN' OR SCREEN-NAME = 'VBAK-ZPJDN' OR SCREEN-NAME = 'VBAK-ZLESA'
    OR SCREEN-NAME = 'VBAK-ZZBBL' OR SCREEN-NAME = 'VBAK-ZYGDZ' OR SCREEN-NAME = 'VBAK-ZZWBS'
    OR SCREEN-NAME = 'VBAK-ZXXLY' OR SCREEN-NAME = 'VBAK-ZYHTJE' OR SCREEN-NAME = 'VBAK-ZQCYHK'.
      IF SY-TCODE = 'VA03' OR SY-TCODE = 'VA23'.
        SCREEN-INPUT = '0'.
      ELSE.
        SCREEN-INPUT = '1'.
      ENDIF.
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.

ENDMODULE.

在这里插入图片描述

MODULE ZGET_ZLESA_TEXT INPUT.
  IF vbak-zlesa IS NOT INITIAL.
    SELECT SINGLE bezei INTO tvgrt-bezei FROM tvgrt
    WHERE vkgrp = vbak-zlesa
    AND spras =  sy-langu.
  ENDIF.
ENDMODULE.
MODULE ZGET_ZPJDN_TEXT INPUT.
  IF vbak-zpjdn IS NOT INITIAL.

    data:lv_pspid(18) type c.
    CONCATENATE vbak-zpjdn+0(1) vbak-zpjdn+2(7)  '000000000'  into lv_pspid. "'000000000' into lv_pspid.
    SELECT SINGLE post1 INTO proj-post1 FROM proj WHERE PSPID = lv_pspid.

  ENDIF.
ENDMODULE.
MODULE ZZVBAK_ZLESA_VALUES INPUT.
  TYPES:BEGIN OF ty_zlesa,
    zlesa TYPE  ze_zlesa,
    bezei TYPE bezei20,
  END OF ty_zlesa.

  DATA:lt_zlesa TYPE STANDARD TABLE OF ty_zlesa.
  DATA:lt_return_tab TYPE STANDARD TABLE OF ddshretval,
        ls_return_tab TYPE ddshretval,
        lt_map        TYPE STANDARD TABLE OF dselc,
        ls_map        TYPE dselc.

  ls_map-fldname = 'ZLESA'.
  ls_map-dyfldname = 'VBAK-ZLESM'.
  APPEND ls_map TO lt_map.
  CLEAR:ls_map.
  ls_map-fldname = 'BEZEI'.
  ls_map-dyfldname = 'TVGRT-BEZEI'.
  APPEND ls_map TO lt_map.
  CLEAR:ls_map.

  SELECT tvgrt~vkgrp AS zlesa  bezei
  FROM tvgrt INNER JOIN tvbvk ON tvgrt~vkgrp = tvbvk~vkgrp
  INTO CORRESPONDING FIELDS OF TABLE lt_zlesa
  WHERE tvbvk~vkbur = vbak-vkbur
  AND spras = sy-langu.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
  EXPORTING
*     ddic_structure   = ''
    retfield         = 'ZLESA'
*     PVALKEY          = ' '
    dynpprog         = sy-repid
    dynpnr           = sy-dynnr
    dynprofield      = 'VBAK-ZLESA'
*     STEPL            = 0
*     WINDOW_TITLE     =
*     VALUE            = ' '
    value_org        = 'S'
*     MULTIPLE_CHOICE  = ' '
*     DISPLAY          = ' '
    callback_program = sy-repid
    callback_form    = 'FRM_BEZEI_FORM '
*     CALLBACK_METHOD  =
*     MARK_TAB         =
* IMPORTING
*     USER_RESET       =
  TABLES
    value_tab        = lt_zlesa
*     FIELD_TAB        =
    return_tab       = lt_return_tab[]
    dynpfld_mapping  = lt_map[]
  EXCEPTIONS
    parameter_error  = 1
    no_values_found  = 2
    OTHERS           = 3.
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.
ENDMODULE.
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值