当前位置:主页 > 游戏服务器 > 防御 >

京东云_网页制作网站建设公司_免费6个月

  • 防御
  • 2021-07-13 10:42
  • 动埠云

Click here for English Version

有时候我们需要为VF01/VF02/VF03增加自定义选项卡来满足用户需求,并且在这个选项卡上维护一些自定义字段的值,在这份文档中我们以金税发票为例。

发票凭证选项卡没有屏幕增强和用户出口,SAP标准只有业务加载项 (BADI_SD_CUST_HEAD, BADI_SD_CUST_ITEM) 可用,但是这两个业务加载项仅供SAP内部使用。

本文基于SAP ERP 6.0 EHP7 IDES,NetWeaver 7.42,并且在SAP S4/HANA 1511(S4Core 100 SP03), NetWeaver 7.49同步验证。

本文使用的SAP GUI是750 Patch 1。

当我们尝试创建BADI_SD_CUST_HEAD或BADI_SD_CUST_ITEM的业务加载项实施时,大数据时代的特点,会看到错误消息"业务加载项定义BADI_SD_CUST_xxxx仅供SAP内部使用"。

检查业务加载项定义,我们发现这些业务加载项被标记为"SAP内部",所以我们不能使用这个业务加载项来增加我们自己的数据。

5.1 参考

SAP Note 864944 有详细说明,SAP只打算让这些业务加载项用在单独的SAP行业解决方案中。

5.2 调查分析

本文以发票凭证的抬头选项卡为例,计划增加金税发票号和金税发票生成日期两个字段,并且相关数据应当存储在VBRK的附加结构中。

从SE93找到VF03对应的主程序是SAPMV60A (VF01/VF02也是同一个),在资源库浏览器中检查程序SAPMV60A的屏幕,发现屏幕6001/6101可能是相关的。

从所用位置可以看出BADI_SD_CUST_HEAD被用在函数模块GET_HANDLE_SD_CUST_HEAD中,这个函数模块的使用位置有4个命中。

同时我们检查屏幕逻辑流(以6001为例),模块CUST_HEAD_ACTIVATE调用的CUST_HEAD_ACTIVATE中使用到函数模块GET_HANDLE_SD_CUST_HEAD。

从IF_EX_BADI_SD_CUST_HEAD~ACTIVATE_TAB_PAGE的导航目标我们可以看到SAP标准有一个业务加载项实施CL_IM_WB2_IVGUI_LAYOUT_H,我们可以通过SE19查看WB2_IVGUI_LAYOUT_H。

结论就是业务加载项定义BADI_SD_CUST_HEAD的实施WB2_IVGUI_LAYOUT_H是为全球贸易这个行业解决方案实现的,存储在WB2B_CORE这个包中。

照此完整来看,为发票凭证增加自定义选项卡的业务加载项实施正是与屏幕6001和6101有关,既然这个业务加载项不允许我们自己来实施,大数据系统,我们可以尝试在屏幕6001和6101中注入类似的代码来达成目标。

5.3 验证

我们来调试找出所有的关键点。

业务加载项实施WB2_IVGUI_LAYOUT_H中有4个方法,我们为每一个方法设置断点,然后找一个发票凭证用VF02来修改。

当我们转到抬头选项卡,会碰到第一个断点ACTIVATE_TAB_PAGE。

当我们转到"全球贸易管理"选项卡,会碰到第二个断点TRANSFER_DATA_TO_SUBSCREEN,互联网大数据,这个选项卡就是有业务加载项WB2_IVGUI_LAYOUT_H增强出来的。

当我们输入数据或点击屏幕上的按钮,会碰到第三个断点PASS_FCODE_TO_SUBSCREEN,然后碰到第四个断点TRANSFER_DATA_FROM_SUBSCREEN。

使用调试器的"返回 (F7)"我们可以验证这四个断点都是跟屏幕6001和6101有关的,这就验证了之前的结论。

以上是基于SAP ERP 6.0 EHP7 IDES,但是基本上在生产环境我们不会有"全球贸易管理"这个选项卡,让我们来找出根本原因。

检查WB2_IVGUI_LAYOUT_H->ACTIVATE_TAB_PAGE中的代码并追溯,最终找到控制点来自TWGTA–WB2_ADDON_ACTIVE。

表TWGTA是通过视图V_TWGTA维护的,配置路径是SPRO–>后勤 – 常规–>全球贸易管理–>激活组件,找到配置选项"增强设置"–>"附加激活"。

当这个选项设置为"2 所有凭证激活",我们可以在发票凭证抬头看到增强的"全球贸易管理"选项卡。

尝试设置成"未激活"

这样"全球贸易管理"选项卡就不见了。

这个选项属于"SAP企业扩展全球贸易"这个行业解决方案,包含在独立的EA-GLTRADE组件中,从S4/HANA 1503开始被合并到S4CORE中。

这个选项在不同SAP版本中的默认值不同,具体如下:

6.1 副作用

因为SAP只预留了一个屏幕对发票凭证抬头进行增强,所以我们为发票凭证增加我们自定义的选项卡之前需要注意检查"全球贸易管理"的有效性。

如下解决方案基于我们未启用"全球贸易管理"的前提,如果希望启用"全球贸易管理"的情况下增加自定义的数据,可以考虑在业务加载项WB2_IVGUI_LAYOUT_H中处理,本文不再赘述,返利手游,参考主程序SAPLWB2B_SCREEN_HANDLING。

6.2 附加结构

要显示在自定义选项卡中的数据,我们将定义ZZ字段附加到VBRK中,以便这些数据能够自动存储在VBRK里。为了避免冲突,所有的名称应当以两个Z打头,因为有些标准字段的名称是以一个Z打头的。

创建数据元素ZGTINO,描述、数据类型、字段标签如下:

创建数据元素ZGTIDT,描述、数据类型、字段标签如下:

显示表VBRK,转到附加结构,并点击创建附加,填写附加名称"ZZVBRK_APPEND_GTI",结构名称应当以"ZZ"打头。

填入组件"ZZGTI_NUM"和"ZZGTI_DAT",用先前创建的数据元素作为组件类型,确保组件名称也是以"ZZ"打头。

6.3 创建处理程序

主程序SAPMV60A中的所有包含文件都是以MV60AF打头的,所以我们创建一个独立的程序ZMV60AF_CUST_HEAD来存放所有的处理代码。

转到资源库浏览器,创建屏幕6001,确保屏幕类型设置为"子屏幕"。

猜你喜欢

微信公众号