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

此文转载至:https://blog.csdn.net/weixin_43929815/article/details/113928655

在对销售订单抬头和行项目的屏幕做增强开发有两种方法可选:
一.使用BADI:BADI_SD_SALES_BASIC下的BADI_SLS_HEAD_SCR_CUSBADI_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.

 

二.使用销售订单程序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.

posted on 2021-07-02 15:19  seven1314pp  阅读(2170)  评论(0)    收藏  举报