SD-销售订单抬头和行项目屏幕增强

在对销售订单抬头和行项目的屏幕做增强开发有两种方法可选:
一.使用BADI:BADI_SD_SALES_BASIC下的BADI_SLS_HEAD_SCR_CUS和BADI_SLS_ITEM_SCR_CUS来实现屏幕增强
1.创建增强结构,附加到VBAK或者VBAP表中,这里以表头为例
2.SE18查看BADI:BADI_SLS_HEAD_SCR_CUS,创建BADI实施ZSD_BADI_SLS_HEAD_SCR_CUS
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
创建之后可以看到接口下有四个方法,其中1.用来把屏幕挂在销售订单2.将数据读取到子屏幕3.从子屏幕读取数据
3.创建子屏幕
首先创建函数组ZSD_HEAD
在这里插入图片描述
新建子屏幕,屏幕内容即为新增的附加结构
新建两个函数模块,用来传递子屏幕的值
在这里插入图片描述
以下为这两个函数模块的代码
FUNCTION ZSD_HEAD_INPUT.
*"----------------------------------------------------------------------
"“本地接口:
*” IMPORTING
*" REFERENCE(IS_VBAK) TYPE VBAK
*" REFERENCE(IS_T180) TYPE T180
*"----------------------------------------------------------------------

gs_vbak = is_vbak.
gs_t180 = is_t180. "这个用来判断是显示还是修改 A代表显示
MOVE-CORRESPONDING is_vbak to zsd_VBAK_1.
ENDFUNCTION.

FUNCTION ZSD_HEAD_OUTPUT.
*"----------------------------------------------------------------------
"“本地接口:
*” EXPORTING
*" REFERENCE(ES_VBAK) TYPE VBAK
*"----------------------------------------------------------------------

MOVE-CORRESPONDING zsd_vbak_1 to gs_vbak.
es_vbak = gs_vbak.
ENDFUNCTION.
4.在增强实施中的方法调用这个函数组
方法1.
method IF_EX_SLS_HEAD_SCR_CUS~ACTIVATE_TAB_PAGE.
DATA ls_tab like LINE OF CT_CUS_HEAD_TAB.
IF sy-tcode CP ‘VA++’.
ls_tab-HEAD_CAPTION = ‘项目信息’.
ls_tab-HEAD_PROGRAM = ‘SAPLZSD_HEAD’."函数组主程序名称
ls_tab-HEAD_DYNPRO = ‘9001’.
APPEND ls_tab to CT_CUS_HEAD_TAB.
ENDIF.
endmethod.
方法2.
method IF_EX_SLS_HEAD_SCR_CUS~TRANSFER_DATA_TO_SUBSCREEN.
CALL FUNCTION ‘ZSD_HEAD_INPUT’
EXPORTING
is_vbak = is_vbak
is_t180 = is_t180
endmethod.
方法3.
method IF_EX_SLS_HEAD_SCR_CUS~TRANSFER_DATA_FROM_SUBSCREEN.
CALL FUNCTION ‘ZSD_HEAD_OUTPUT’
IMPORTING
ES_VBAK = CS_VBAK
endmethod.
5.字段状态控制
根据用户选择的是查看,新建,还是修改控制字段是否允许被修改
在子屏幕的PBO事件中加入
MODULE status_9001 OUTPUT.
IF gs_t180-trtyp = ‘A’.
LOOP AT SCREEN .
IF screen-group1 = ‘HEA’."HEA为在创建子屏幕时设置的group
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
ENDMODULE.
二.使用销售订单程序SAPMV45A中预留的屏幕8309,8459实现增强
此种方法实现较简单
1.找到销售订单主程序SAPMV45A,再找到这两个子屏幕
在这里插入图片描述
直接根据新增的结构编辑子屏幕
同时增加字段控制代码
MODULE SO_ADD_8309 OUTPUT.

LOOP AT SCREEN.

  IF SY-TCODE = 'VA03' OR SY-TCODE = 'VA23'.
    SCREEN-INPUT = '0'.
  ELSE.
    IF SCREEN-GROUP1 EQ 'Z1'.
      SCREEN-INPUT = '0'.
    ELSE.
      SCREEN-INPUT = '1'.
    ENDIF.
  ENDIF.
  MODIFY SCREEN.

ENDLOOP.

ENDMODULE.

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值