业务需求
修改上图SAP 标准Adobe Form
已知待修改标准Form为SDBIL_CI_STANDARD_US
修改项:
- 右上角新增TAX INVOICE固定文本
- 新增Bill to文本
- 将Bill to地址修改为自定义字段,并将整个区域向下移动
- 将该区域向右移动
- 删除红色框选部分内容
前言介绍
该SAP标准Form与开发正常创建的Form不太一样,正常创建的Form是左侧的Adobe form with context,传参通过Call Function的方式(类似Smartform的一个Function)
该Form是右侧的Adobe form with fragment,直译一下是碎片化的form,这种form可以有多个碎片拼接而成。通过配置打印输出的方式可以直接生成标准发票文件,传参SAP已经设计好了,在回调类中会获取发票的关键信息(如发票号和地址)作为Form的抬头内容,在渲染Form时再使用Odata服务对form主体中绑定的字段进行赋值。
值得注意的是Form的抬头内容为一个单独的碎片(下图黄色部分),使用的值为回调类中的参数,而主体内容(下图蓝色部分)则对应Odata服务中绑定的值
修改部分一:传参
修改项3:
Bill to部分(属于抬头数据,与Form数据不在同一处)修改有些特殊,查资料找到了Form的标准回调类为CL_BILLING_OUTPUT_CONTROL
可通过下述方法找到对应的标准回调类
SPRO -> SAP Reference IMG -> Cross Application Components -> Output Control.
通过Debug找到该回调类对应Form抬头绑定的参数,进行增强修改即可
修改项5:
该Adobe form为SAP标准Form,Form类型为Form With Fragment(碎片化Form,可以有多个Fragment构成),数据来源是Odata 服务(从Gateway Service 处可知使用的Odata 服务是FDP_V3_BD_STANDARD)
要修改传参内容只能去标准Odata 服务中做增强实现
首先在Form里面找到需要修改的变量名,然后去Odata中找对应的实体集
此处我需要修改的变量为:ItemPricingConditions.ItemPricingConditionNode[*]
segw转到上述的Odata服务,找到绑定的实体集,做增强修改即可
修改部分二:样式调整
修改项2、4:
这两块区域都在Form当中能找到,通过layout稍作调整即可,不做赘述
修改项1、3:
这两块区域在抬头Fragment处,要找到对应的抬头Fragment再去修改
抬头Fragment是配置出来的,配置位置应该在下面这个路径,拜托业务帮我把原来标准的SOMU_FORM_MASTER_A4,改成了Copy后修改的ZSOMU_FORM_MASTER_A4
SPRO -> SAP Reference IMG -> Cross Application Components -> Output Control.
然后去抬头Fragment修改对应位置就好了,这个地方有好几个page,还没弄清楚在Form里面是怎么指定用抬头Fragment的哪个page的,正好找到了最后一个page跟我打印的form很接近,修改后确认确实为该Page
参考博客:
Create Adobe form with fragments as a copy of the standard.
SAP S/4HANA Output Control
SAP Output Management: setting custom Dunning Notice Form in SAP S/4HANA Cloud