首页 > 其他分享 >SAP CODING BLOCK

SAP CODING BLOCK

时间:2023-05-24 15:13:00浏览次数:44  
标签:自定义 CODING cast 字段 添加 ls 屏幕 SAP BLOCK

https://blog.csdn.net/m0_46145967/article/details/110954475

 

 

文章目录
1.背景
2.添加字段
2.1 普通模式
2.2 专家模式
2.3 新建MSEG的CDS视图
3.添加字段到屏幕
3.1 需要更改的标准程序及屏幕
3.2 将拷贝出来的屏幕替换标准屏幕
4.维护字段状态
4.1 维护字段状态变式
4.2 维护字段是否隐藏或者可选
5.添加搜索帮助
5.1 创建搜索帮助
5.2 编码块屏幕自定义字段搜索帮助
5.3 应收应付屏幕添加自定义字段搜索帮助
6.检查自定义字段的合法性
6.1 添加检查表
6.2 通过校验来检查合法性
6.2.1 编写出口检查代码
6.2.2 维护应用区域的退出程序
6.2.3 配置验证
6.2.4 配置有效性
6.2.5 激活校验
7.调整字段长度
7.1 SE11调整结构CI_COBL里的自定义字段的数据元素的长度
7.2 SE14调整表
7.3 OXK3专家模式调整
8.删除字段
8.1 OXK3专家模式删除
8.2 删除MSEG的CDS视图字段
9.增强字段超过18个
10.常见问题
10.1 屏幕配置(T019)是对的,但是前台屏幕还是标准屏幕,不是拷贝出来的增强屏幕?
1.背景
在日益复杂的财务核算中,越来越多的辅助核算项需要在凭证中展现。例如,营业外收支、政府补助等需要挂项目;内部交易的收入、财务费用等需要挂客商;内部资金调拨往来科目需要挂原因代码;SAP的一张凭证中虽然有众多的字段,但是许多是各行各业用到的,不能随便将已有字段改造成自定义的辅助核算字段。
此时,SAP的coding block功能能够部分解决这一问题,但是有一定的局限性,因为coding block即便激活,能够使用也是除客户、供应商统驭科目外的科目,客户、供应商统驭科目如果想使用需要做其他的系统开发。

2.添加字段
事务代码OXK3

2.1 普通模式
最多可激活18个字段,每个字段的长度不得长于22,自定义字段必须以"ZZ"或 “YY” 开头

按照以上方法添加字段,需要添加的字段如下:

点击执行,可以勾选测试运行,以检查是否满足执行条件

测试运行结果,警告消息中会有激活步骤完成后需要对MSEG视图需要特殊处理的note

测试执行如果无错误,则正式执行,激活过程由于修改了大量标准表和结构,同时相应的程序也需要同步调整,此步骤会将激活包入请求中,并且持续半个小时到1个小时,前台业务操作将会ABAP DUMP而受到影响,会出现耐心等待别让你的系统掉线,如果掉线,则根据ABAP错误使用SE11直接去激活ABAP对象,最后系统会自动生成9999屏幕,用于凭证输入时输入自定义字段的内容。9999屏幕为编码块屏幕。


2.2 专家模式

添加字段到结构CI_COBL和CI_COBL_BI

需要添加的字段,字段长度可以超过22位,最后激活该结构


保持跟结构CI_COBL一致,最后激活


2.3 新建MSEG的CDS视图
无论是使用普通模式还是专家模式,都需要调整MSEG的CDS视图,在Eclipse里操作步骤如下:

 

点击下一步,选择Extend View,点击完成
编写如下代码:
@AbapCatalog.sqlViewAppendName: ‘Z_CL_COBL’
@EndUserText.label: ‘Extension view for Append CI_COBL’
extend view nsdm_e_mseg with Z_CL_COBL_TEMP {
cast(’’ as zz001 ) as ZZ001,
cast(’’ as zz002 ) as ZZ002,
cast(’’ as zz003 ) as ZZ003,
cast(’’ as zz004 ) as ZZ004,
cast(’’ as zz005 ) as ZZ005,
cast(’’ as zz006 ) as ZZ006,
cast(’’ as zz007 ) as ZZ007,
cast(’’ as zz008 ) as ZZ008,
cast(’’ as zz009 ) as ZZ009,
cast(’’ as zz010 ) as ZZ010,
cast(’’ as ze_zzdkhth ) as ZZDKHTH,
cast(’’ as ze_zzzqlx ) as ZZZQLX,
cast(’’ as ze_zzyhda ) as ZZYHDA,
cast(’’ as ze_zzqmc ) as ZZQMC,
cast(’’ as zz011 ) as ZZ011,
cast(’’ as zz012 ) as ZZ012,
cast(’’ as zz013 ) as ZZ013,
cast(’’ as zz014 ) as ZZ014
}
最后激活

3.添加字段到屏幕
需要注意的是:这种coding block实现的方式只能应用到总账凭证上,应收应付不适用。应收应付我们的实现方法是:修改标准程序。
应收应付实现方法如下:
因为SAP的Coding Block功能并没有覆盖FI的全部模块,在应收应付帐和预制凭证中需要拷贝标准屏幕并手工添加Coding Block字段以满足业务需求

3.1 需要更改的标准程序及屏幕
SAPMF05A: 用户总帐屏幕一般过帐创建及修改
屏幕301->9901 客户 屏幕302->9902 供应商 屏幕303->9903特殊分类帐
SAPMF05L:用户总帐屏幕一般过帐显示
屏幕301->9901 客户 屏幕302->9902 供应商 屏幕303->9903特殊分类帐
SAPLF040: 预制凭证创建/修改/显示
屏幕301->9901 客户 屏幕302->9902 供应商 屏幕303->9903特殊分类帐
例如:复制标准屏幕303到9303或者9903

点击布局,添加自定义字段到复制的屏幕中

选择自定义字段

如果需要控制修改凭证时,前台该自定义字段可以编辑,则修改屏幕字段属性


3.2 将拷贝出来的屏幕替换标准屏幕
标准表T019,将标准屏幕301或者302或者303对应的条目里,将屏幕号改成自定义屏幕

或者新建配置
客户配置如下:

供应商配置如下:

特殊分类账配置如下:

或者

如果复制屏幕没有显示出来,可以检查表T074U中的事务类型 UMSKS,在程序MF05AFD0_DYNPRO_ERMITTELN里调试跟踪找出问题

4.维护字段状态
该配置决定了自定义字段是否在编码块中隐藏、必输属性。
事务代码SPRO或者事务代码OBC4


4.1 维护字段状态变式


4.2 维护字段是否隐藏或者可选

 


5.添加搜索帮助
由于是自定义字段,不能使用标准搜索帮助,故需要自建搜索帮助,步骤如下:

5.1 创建搜索帮助
事务代码SE11,输入搜索帮助名称,ZH+字段名


事务代码SE37,复制标准函数F4IF_SHLP_EXIT_EXAMPLE到ZFMFI_ZZ004_SHLP_EXIT,代码如下:

RANGES:lr_zz004 FOR cobl-zz004.
RANGES:lr_zz004_txt FOR kna1-name1.

LOOP AT shlp-selopt INTO DATA(ls_selopt).
IF ls_selopt-shlpfield = ‘ZZ004’.
APPEND VALUE #( sign = ls_selopt-sign option = ls_selopt-option low = ls_selopt-low high = ls_selopt-high ) TO lr_zz004.
ELSEIF ls_selopt-shlpfield = ‘ZZ004_TXT’.
APPEND VALUE #( sign = ls_selopt-sign option = ls_selopt-option low = ls_selopt-low high = ls_selopt-high ) TO lr_zz004_txt.
ENDIF.
ENDLOOP.

SELECT
kunnr AS zz004,name1 AS zz004_txt
FROM kna1
WHERE kunnr IN @lr_zz004
AND name1 IN @lr_zz004_txt
INTO TABLE @DATA(lt_kna1).

"也可以使用系统标准函数F4UT_RESULTS_MAP将源数据绑定到recordtab
CALL FUNCTION 'F4UT_RESULTS_MAP'
1
2
3
4
5
6
7
8
9
EXPORTING
1
SOURCE_STRUCTURE =
1
APPLY_RESTRICTIONS = ' '
TABLES
shlp_tab = shlp_tab
record_tab = record_tab
source_tab = lt_kna1
CHANGING
shlp = shlp
callcontrol = callcontrol
1
2
3
4
5
6
7
8
EXCEPTIONS
1
ILLEGAL_STRUCTURE = 1
1
OTHERS = 2
.
1
2
IF sy-subrc <> 0.
Implement suitable error handling here
ENDIF.
5.2 编码块屏幕自定义字段搜索帮助
添加搜索帮助到COBL结构,SE11打开结构CI_COBL
选中需要添加搜索帮助的字段,点击搜索帮助


激活该结构

时间较长,耐心等待

用同样的方法在结构CI_COBL_BI里对自定义字段加搜索帮助


最后激活

添加完之后,编码块屏幕的自定义字段会有搜索帮助


5.3 应收应付屏幕添加自定义字段搜索帮助
应收应付是复制标准屏幕到自定义屏幕(具体步骤可参考 3.1需要更改的标准程序及屏幕 )例如复制标准屏幕303到9303或者9903,打开该屏幕,添加搜索帮助

前台F-02执行效果如下


6.检查自定义字段的合法性
6.1 添加检查表
当自定义字段有相关的检查表,且自定义字段名和检查表名中被检查的字段名一致,则可以直接使用检查表。


6.2 通过校验来检查合法性
当自定义字段没有相关的检查表,比如自定义字段ZZ005,辅助供应商字段,需要从表LFA1里根据供应商检查该字段的合法性,而LFA1里没有ZZ005字段,这种情况下,需要用到SAP的校验来检查合法性,步骤如下:

6.2.1 编写出口检查代码
事务代码SE38复制标准程序RGGBR000到ZFIM_RGGBR000
添加如下代码

 

6.2.2 维护应用区域的退出程序
事务代码GCX2,将上一步复制的程序维护在应用区域GBLR的退出程序列


6.2.3 配置验证
事务代码GGB0,在财务会计-行项目下新建步骤

设置检查:双击退出简短描述中的“辅助供应商校验”,则已经将校验的出口ID添加到步骤上了

设置消息:

设置完毕如下所示,最后点击保存


6.2.4 配置有效性
事务代码OB28,配置公司代码和调用点的检查是否可用。
调用点2为行项目检查,活动等级1为激活,0为未激活


6.2.5 激活校验
SE38运行程序RGUGBR00

最后前台F-02执行效果如下


7.调整字段长度
比如将字段长度调短,ZZ006字段由22位长度缩短为10位长度
1

步骤如下:

7.1 SE11调整结构CI_COBL里的自定义字段的数据元素的长度

调整时间较长,耐心等待

7.2 SE14调整表
调整完之后,有很多表没有激活,需要使用事务代码SE14一个个调整表对象


调整过程中不能强制退出调整或者掉线,如果退出了,则使用无效临时表找回数据

临时表都是QCM开头

最后在SE38程序里SELECT临时表,将取到的数据写SQL语句保存到正式表中。
如果以上方式还无法找回数据,则请求BASIS协助。如果调整的是大表,耗时较长,可以使用后台方式。

7.3 OXK3专家模式调整
事务代码OXK3切换到专家模式,将相关代码重新调整

选中需要调整的自定义字段,添加控制条目-更新运行


8.删除字段
不推荐删除字段,删除过程耗时特别长,一个字段调整预估六七个小时,最后运行完毕,有可能调整失败,COBL结构和拓展CDS视图都会激活不了。

8.1 OXK3专家模式删除
事务代码OXK3里切换到专家模式

选中需要删除的自定义字段,删除控制条目-更新运行


8.2 删除MSEG的CDS视图字段
Eclipse里打开MSEG的拓展CDS视图

删除该字段,激活CDS。

9.增强字段超过18个
Cording Block最多支持18个字段,但是某些情况下需要的辅助核算字段可能会超过18个。
下图中编号133到150为客户保留编号,所以最多18个字段(加的字段必须在表TCOBM和表TCOBF有数据)

解决办法:
将多个字段(该字段保证同时隐藏或者同时必输或者同时可选输入)设置在同一个编码下,包括表TCOBM和表TCOBF

OBC4设置字段状态时只会显示其中一个字段。比如投资产品(ZZFIF0016)和替补字段(ZZFIF0021)设置成同一个编码(组),下图只会显示投资产品字段,设置了投资产品字段状态的同时,也会设置替补字段的状态


10.常见问题
10.1 屏幕配置(T019)是对的,但是前台屏幕还是标准屏幕,不是拷贝出来的增强屏幕?
通过跟踪标准代码,由凭证上事务类型缺失造成的。而事务类型在T074U表里可以通过账户类型和特殊总账标记获得。在会计凭证过账时,将事务类型写入到增强字段里,具体代码如下:
"事物类型逻辑 根据记账码和特殊总账标记取事务类型
DATA ls_zfiextn TYPE zsfibesg.
SELECT SINGLE b~umsks
FROM tbsl AS a
INNER JOIN t074u AS b ON a~koart = b~koart AND b~umskz = @<gfs_docline>-umskz
WHERE a~bschl = @<gfs_docline>-bschl
INTO @DATA(lv_umsks).
ls_zfiextn-buzei = gv_itemno. "凭证行号
ls_zfiextn-umsks = lv_umsks.
gt_ext2-structure = ‘ZSFIBESG’.
gt_ext2-valuepart1 = ls_zfiextn.
APPEND gt_ext2. CLEAR gt_ext2.
————————————————
版权声明:本文为CSDN博主「Yisoon」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/HAND_YS/article/details/122874066

标签:自定义,CODING,cast,字段,添加,ls,屏幕,SAP,BLOCK
From: https://www.cnblogs.com/ZJY-1314/p/17428346.html

相关文章

  • (个人简介)Coding Home - 漂流瓶jz
    个人简介:华东师范大学计算机专业硕士。目前是Web前端开发。GitHub    jzplp(漂流瓶jz)·GitHub新浪博客   漂流瓶jz_新浪博客......
  • 双模齐下,提质增效:CODING 携手知微共创 BizDevOps 体系新篇章
    为了提升工作和管理效率,工具建设是许多企业不得不面对的现实,然而在工具建设落地过程中,往往存在一系列的问题。如不同组织、部门之间互不相通,各自为政,工具流程与实际工作所需不符,导致工具建设的结果是人去适应工具而不是工具来辅助人。由此可见,工具体系若建设不佳,非但无法起到提......
  • 专精特新 ︱ 腾讯云 CODING 助力消费电子类企业高速发展期的研运一体化
    ......
  • 《安富莱嵌入式周报》第312期:开源磁场照相机,仿生神经元PCB,开源无线耳机,手机系统PalmOS
    更新一期视频教程:BSP视频教程第26期:CAN/CANFD/CANopen专题,CANFD整个运行机制精讲,图文并茂,配合综合实战演练(2023-05-15)https://www.armbbs.cn/forum.php?mod=viewthread&tid=119189视频版:https://www.bilibili.com/video/BV1zL41167Ti 1、基于开放系统组装协议OSAP实现的简化硬件设......
  • VFS: Unable to mount root fs on unknown-block
    [1.736146]Listofallpartitions:[1.736921]fd00256000vda[1.736928]driver:virtio_blk[1.737723]Nofilesystemcouldmountroot,tried:[1.737723][1.738136]Kernelpanic-notsyncing:VFS:Unabletomountrootfs......
  • RISE with SAP是什么?适合哪些企业使用!
    一直以来,企业的数字化转型被认为是一件极其复杂的事情。目前的市场信息环境快速变化,企业想通过数字化转型来实现业务价值的增长,然而在具体实践方面,企业仍然面临着许多挑战与难题。SAP作为全球的企业软件供应商,于今年全新推出RISEwithSAP。RISEwithSAP是一个解决方案包,该方案包......
  • 面向对象设计里引入 Friend 是对封装性的破坏吗,friend 在 SAP ABAP 里的应用场景
    笔者的SAP技术交流群里,有朋友提问:我想问一个很基础的问题,为什么类要有friend啊反正我工作这些年,在SAP生产代码里没用过友元,只是在生产代码的单元测试代码里用过,原因也就是让单元测试代码能够访问到被测试的生产类的私有属性。代码如下:SAPABAP的帮助文档:在面向对象......
  • 产废单位EPM+SAP产废企业数字化管理解决方案——环保数字化转型利器
    哲讯产废单位EPM+SAP产废企业数字化解决方案随着环保部门对重点产废单位监管的日益加强,产废企业必须要做好内部危废转移管理。基于成熟的危废管理系统衍生产品“产废管理系统”,可以帮助产废企业规范化管理内部危废的转运与处置,轻松应对环保监管。系统设计遵循开放性原则,各系统采......
  • LinkedBlockingQueue源码分析
    1、LinkedBlockingQueue使用LinkedBlockingQueue的使用案例详情如下:1importjava.util.concurrent.LinkedBlockingDeque;2importjava.util.concurrent.LinkedBlockingQueue;34publicclassTestLinkedBlockingQueue{5publicstaticvoidmain(String[]......
  • 什么是 SAP UI5 Application Index
    SAPUI5ApplicationIndex是一个集成在SAPFioriLaunchpad中的应用程序索引。它提供了一个集中式的位置,用于展示和访问已安装的SAPUI5应用程序。在SAPFioriLaunchpad的主页上,用户可以看到一个应用程序索引页面,其中包含了所有已经安装的SAPUI5应用程序。这个索引页面提供了......