• 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.
  • 相关阅读:
    Jmeter的安装与配置。
    Jemeter学习环境部署。
    将字符串转换为字符数组。
    正则
    将字符串转换为字符数组。
    final,finally,finalize之间的区别。
    Throwable中几个常见方法。
    NET(C#)接入Dubbo服务,Zookeeper作为Dubbo服务的注册中心,实现thrift协议访问接口(2)
    SELECT INTO和INSERT INTO SELECT的区别
    NET(C#)接入Dubbo服务,Zookeeper作为Dubbo服务的注册中心,实现thrift协议访问接口(1)
  • 原文地址:https://www.cnblogs.com/seven1314pp/p/14963432.html
Copyright © 2020-2023  润新知