销售发票选项卡没有增强和屏幕用户出口,SAP标准只有业务加载项(BADI_SD_CUST_HEAD , BADI_SD_CUST_ITEM)可以使用,但是这两个业务加载项使用SAP内部。SAP Note 864944有详细说明,SAP 只打算让这些业务加载项使用在单独的 SAP 解决方案中。
经过DEBUG发现,业务加载项定义BADI_SD_CUST_ITEM的实施WB2_IVGUI_LAYOUT_I是为全球贸易这个行业解决方案实现的,存储在WB2B_CORE这个包中。照此完整来看,为发票凭证增加自定义选项卡的业务加载项实施正是与屏幕6002和6102有关,既然这个业务加载项不允许我们自己来实施,我们可以尝试在屏幕6002和6102中注入类似的代码来成就目标。

增强步骤

1.为主表增加一个附加结构
2.创建一个函数组用于存放所有的处理代码
创建6002屏幕(抬头6001)
增加PBO逻辑

PROCESS BEFORE OUTPUT.MODULE STATUS_6002.
*
PROCESS AFTER INPUT.
* MODULE USER_COMMAND_6002.
*&---------------------------------------------------------------------*
*& Module STATUS_6002 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_6002 OUTPUT.IF sy-tcode EQ 'VF03'.LOOP AT SCREEN.screen-input = '0'.MODIFY SCREEN .ENDLOOP.ENDIF.
ENDMODULE.

3.屏幕增强
在主程序SAPMV60A的屏幕6002中进行屏幕逻辑流增强
创建四代增强,模式为声明

  PERFORM cust_item_active IN PROGRAM saplzfgfico_mv60a1 IF FOUNDUSING vbrp vbrk vbukCHANGING gs_cust_tab-item_captiongs_cust_tab-item_programgs_cust_tab-item_dynprogs_cust_tab-item_caption.

在自建的函数组包含文件中写FORM逻辑

FORM cust_item_active USING fvbrp TYPE vbrpfvbrk TYPE vbrkfvbuk TYPE vbukCHANGINGfcaption TYPE char40fprogram TYPE syrepidfdynpro  TYPE sydynnrftab     TYPE char40 .DATA:lv_zswitch    TYPE ztzq_switch-zswitch.SELECT SINGLE zswitch INTO lv_zswitch FROM ztzq_switch WHERE ztype = '4' AND zmk = 'FICO' AND zname = 'ZFGFICO_MV60A1'.CHECK lv_zswitch = 1.PERFORM check_badi_activate.CHECK badi_activate EQ abap_false .fcaption = '金税数据'(c01).fprogram = 'SAPLZFGFICO_MV60A1'.fdynpro  = '6002'.ftab = fcaption.LOOP AT SCREEN.IF screen-name EQ  'TABSTRIP_TAB08' ."'TABSTRIP_TAB06'.screen-active = 1.screen-invisible = 0 .ENDIF.ENDLOOP.ENDFORM .

业务加载项BADI_SD_CUST_ITEM的另外三个是用在屏幕6102中的方法,建议不管当前有使用到,都应该增强到增强点中以能够随时使用,最好使用相同的实施名称,这样我们可以方便地使用SE20查看所有的增强。
具体代码逻辑可参考SAP内部实施点(抬头:WB2_IVGUI_LAYOUT_H;行项目:WB2_IVGUI_LAYOUT_I)
注:抬头屏幕增强则是业务加载项BADI_SD_CUST_HEAD,在屏幕6101同样方法中实施增强即可。

  PERFORM cust_item_set_data IN PROGRAM saplzfgfico_mv60a1 IF FOUNDUSING      vbrkvbrpxvbrp_tabixt180CHANGING   rv60ayvbadr[]xvbadr[]xvbpa[]yvbrk[]xvbrk[]yvbpa[]xvbrp[]yvbrp[]vbrk.
* 发票数据到子屏幕
FORM cust_item_set_data USING f_vbrk TYPE vbrkf_vbrp TYPE vbrpf_tabix TYPE sytabixft180 TYPE t180CHANGINGfrv60a TYPE rv60afxyvbadr TYPE shp_sadrvb_tfxvbadr TYPE shp_sadrvb_tfxvbpa TYPE va_vbpavb_tfxyvbrk TYPE vbrkvb_tfxvbrk TYPE vbrkvb_tfxyvbpa TYPE va_vbpavb_tfxvbrp TYPE vbrpvb_tfxyvbrp TYPE vbrpvb_tfvbrk TYPE vbrk.PERFORM check_badi_activate.CHECK badi_activate EQ abap_false .
* check ADD ON activecheck not a_gtm_active is initial.
* check enhancement activecheck a_enhance = 2 or not a_cc_active is initial.
* set atributsa_vbrk = f_vbrk.a_vbrkvb = f_vbrk.a_vbrp = f_vbrp.
* set datacall function 'WB2_IV_GET_ITEM_DATA'exportingi_t180    = ft180changingc_vbrk    = a_vbrkc_vbrp    = a_vbrpct_vbpa   = fxvbpact_yvbpa  = fxyvbpact_vbadr  = fxvbadrct_yvbadr = fxyvbadr.
* get komvif a_cc_active is not initial.
* fill condition datacall function 'WB2_PROCESS_SERVICE_IV1'exportingit_vbrp = fxvbrpi_vbrk  = a_vbrkvb.endif.
ENDFORM.

    PERFORM cust_item_pass_code IN PROGRAM saplzfgfico_mv60a1 IF FOUNDUSING fcode_gleiche_seite fcode.
FORM cust_item_pass_code USING ffcode_same_page TYPE fcodeffcode TYPE fcode .PERFORM check_badi_activate.CHECK badi_activate EQ abap_false .
* check ADD ON activecheck not a_gtm_active is initial.
* check enhancement activecheck a_enhance = 2 or not a_cc_active is initial.
* Fcode setzencall function 'WB2_TRADE_PASS_FCODE_ITEM'exportingi_fcode = ffcode.
ENDFORM.

    PERFORM cust_item_get_data IN PROGRAM saplzfgfico_mv60a1 IF FOUNDUSING t180CHANGING vbrkvbrprv60axvbpa[]yvbrk[]xvbrk[]yvbadr[]xvbadr[]yvbpa[]xvbrp[]yvbrp[]fcode.
* 子屏幕到发票数据
FORM cust_item_get_data USINGft180 TYPE t180CHANGINGfvbrk  TYPE vbrkfvbrp  TYPE vbrpfrv60a TYPE rv60afxvbpa TYPE va_vbpavb_tfxyvbrk TYPE vbrkvb_tfxvbrk  TYPE vbrkvb_tfxyvbadr TYPE shp_sadrvb_tfxvbadr  TYPE shp_sadrvb_tfxyvbpa  TYPE va_vbpavb_tfxvbrp  TYPE vbrpvb_tfxyvbrp TYPE vbrpvb_tffcode  TYPE fcode.PERFORM check_badi_activate.CHECK badi_activate EQ abap_false .
* check ADD ON activecheck not a_gtm_active is initial.
* check enhancement activecheck a_enhance = 2 or not a_cc_active is initial.
* Get fcodecall function 'WB2_TRADE_FETCH_FCODE'importinge_fcode = ffcode.
* get changed datacall function 'WB2_TRADE_DATA_GET'importinge_header_data = a_vbrke_item_data   = a_vbrp.
* set datafvbrk = a_vbrk.fvbrp = a_vbrp.call function 'WB2_PROCESS_SERVICE_IV_FREE'.ENDFORM.
DATA:badi_activate TYPE abap_bool.
FORM check_badi_activate .INCLUDE wb2_param_control_global.DATA:lr_badi TYPE REF TO if_ex_badi_sd_cust_item .CALL FUNCTION 'GET_HANDLE_SD_CUST_ITEM'IMPORTINGhandle = lr_badiactive = badi_activate.IF badi_activate EQ 'X'.IF cl_wb2_check_add_on_active=>a_gtm_active EQ ' '.badi_activate = 'X' .ENDIF.IF cl_wb2_check_add_on_active=>a_enhance NE addon_all_active.badi_activate = ' ' .ENDIF.ENDIF.
ENDFORM.

增强效果

VF01/VF02/VF03销售发票屏幕增强实例相关推荐

  1. [ABAP] VF01/VF02/VF03 发票字段增强总结(BAPI赋值屏幕增强)

    最近接到需求需要对销售发票(VBRK/VBRP)做字段增强,下面做一下实现这个增强功能的总结. 该功能的主要需求点是通过BAPI:BAPI_BILLINGDOC_CREATEMULTIPLE对增强附加 ...

  2. 销售订单屏幕增强及功能增强

    增强点在程序SAPMV45A中有明显标志,见下图 或查看该程序子例程以USEREXIT_开头的即为增强出口,这些出口就包含在上图的INCLUDE程序中. 1.1  .销售订单行项目屏幕增强 程序SAP ...

  3. SAP增强 BADI屏幕增强实例(MIGO增加分页签)

    最终效果:以下根据系统实例做的 (需要注意第4步中的UPDATE函数配置) 1.SE11建立数据表,主要是用于存放附加的数据: MANDT     MANDT   CLNT        3      ...

  4. SAP SO销售单抬头行项目屏幕增强,新增客户自定义字段示例

    1. 前言 对于销售单屏幕增强: 屏幕使用sap程序SAPMV45A标准预留的两个子屏幕8309 8459 增强出口BAdI & USER_EXIT BAdI 使用SAP BADI_SD_SA ...

  5. VA01/VA02/VA03 屏幕增强

    销售订单屏幕增强 项目中经常有销售订单屏幕增强的需求以满足客户在录入销售订单时特殊指标的录入和存储. 销售订单屏幕增强分为抬头屏幕增强和行项目屏幕增强,根据需求,完成增强开发. 1.T-code :S ...

  6. 【实例】销售合同VA41屏幕字段增强实例

    背景:销售合同(VA41)和销售订单(VA01)是一般企业里面非常常用的单据,当然也会有各式各样的需求存在,有需要做特殊校验的,有需要增加抬头/明细字段的,本例就选取客户的其中一个小需求记录实现方式( ...

  7. MIGO 行项目屏幕增强创建实例

    本人诚心接ABAP远程开发任务,价格公道,有需要的联系我,欢迎个人,甲方爸爸,乙方私信联系. 1.首先创建一张自建表用于存放客制化信息 2.建立结构,在屏幕数据交换时使用 3.建立表类型 4.给之前创 ...

  8. VF03发票凭证增强

    最近做发票凭证增强,将凭证内的发票凭证明细金额替换成销售订单条件类型金额,数量替换成销售订单数量.试过以下几种增强方式. 1 文本会计替换. 1自定义替代程序(TCODE:GCX2)配置ZRGGBS0 ...

  9. SD-增强-销售订单/开票计划屏幕增强-VA01/VA02/VA03/VA21/VA22/VA23

    需求:业务要求在开票计划的页签中把这个字段给它放出来. 字段为DESCR,这个字段是原来就有的,只是在屏幕上不显示而已.现在要求放出来. 遇到的问题: 1.在这里做个屏幕增强相当简单了.但是,输入值之 ...

最新文章

  1. 自定义spring kafka consumer 线程池
  2. python list除以_扫描器篇(三)之python编写基于字典的网站目录探测脚本
  3. The Geometry has no Z values 解决办法(转载)
  4. oracle 斜线出现次数,oracle一些操作小知识
  5. hdu 4970 killing monster 代代相传刷qq 不用线段树啦~
  6. What is yield
  7. 深度学习中梯度消失原因、梯度爆炸及解决方案
  8. 电脑两个,电脑有两个系统盘怎么办
  9. 计算机读不到u盘如何修复u盘,U盘读不出来怎么办?U盘无法读取修复方法
  10. next. js_Next.js添加到您的应用程序中的图标
  11. 字节跳动面试--二面算法题复盘
  12. 《数据结构》:中缀表达式合法性判断
  13. 中国医疗器械标准网站(全网最全)
  14. [转]React 入门实例教程
  15. Robotics: Computational Motion Planning(路径规划)笔记(一):基于图搜索的方法-Grassfire、Dijkstra和A*算法
  16. 第四章SignalR自托管主机
  17. 【OJ基础Java】输入一个双精度浮点数,保留12位小数输出
  18. win10调节屏幕亮度_小米10首创双光线感应器,屏幕亮度调节更加智能和人性化...
  19. 蓝牙定位资产解决方案,蓝牙定位的用用实例——苏州新导智能
  20. Java游戏项目之俄罗斯方块

热门文章

  1. 前端背景图放置_前端开发关于网页背景图片的缩放自适应及组合形成背景图的问题...
  2. mysql主从配置时Slave_IO_Running: Connecting解决
  3. 图像生成与图像模型——摄像机的几何模型
  4. BSN合作伙伴大会 | 向阳:探索中国式元宇宙——中国移动咪咕公司的创新与实践
  5. css collapsing margins问题
  6. 祛湿颗粒教你如何快速分辨与治疗湿邪
  7. 数据安全学习概念理解——明文与密文的区别
  8. 微信小程序邀请好友增加积分
  9. Eformer: Edge Enhancement based Transformer for Medical ImageDenoising--用于医学图像去噪的基于边缘增强的 Transformer
  10. Android入门教程三十六之BaseAdapter优化