9

在SAP S/4HANA Cloud中通过自定义逻辑检查预制发票的付款条件与供应商主数据中的付款...

 1 year ago
source link: https://blogs.sap.com/2022/10/25/%e5%9c%a8sap-s-4hana-cloud%e4%b8%ad%e9%80%9a%e8%bf%87%e8%87%aa%e5%ae%9a%e4%b9%89%e9%80%bb%e8%be%91%e6%a3%80%e6%9f%a5%e9%a2%84%e5%88%b6%e5%8f%91%e7%a5%a8%e7%9a%84%e4%bb%98%e6%ac%be%e6%9d%a1%e4%bb%b6/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
October 25, 2022

在SAP S/4HANA Cloud中通过自定义逻辑检查预制发票的付款条件与供应商主数据中的付款条件是否一致

问题背景:

有客户提出需求,在为采购订单预制发票时,检查供应商主数据的付款条件。如果预制发票的付款条件与供应商主数据中的付款条件不一致,则发送一条错误信息;如果预制发票的付款条件与供应商主数据中的付款条件一致,预制发票可以保存成功。本文即对该问题展开分析,探索解决方案。

解决方案:

尝试通过自定义逻辑,写一个 BAdI 来满足需求。

分析步骤:

1. 首先,我们需要在 SAP S/4HANA Cloud 系统的应用 – 自定义逻辑里,新增增强实施。根据业务场景,选择下图中的业务上下文以及业务加载项描述,填写好实施描述以及实施标识

%u65B0%u589E%u589E%u5F3A%u63AA%u65BD

新增增强措施

2. 在自定义逻辑新增增强实施完成后,我们需要找到一个字段来获取供应商主数据付款条件这个字段,我们需要在 CDS Views 里进行查找和检索。I_SupplierCompany 这个 CDS View 包含了我们可以获取供应商的一些字段信息。根据字段描述,字段 paymentterms 可以帮助我们获取供应商的付款条件。

同时我们需要将“该 CDS View 里的 supplier 字段等于预制发票数据的 invoicingparty 字段”作为查询条件,这样才能正确的取到采购订单对应的供应商主数据中的付款条件字段。另外,由于这个 BAdI 在保存发票时都会被触发,为了防止在冲销过程中也触发该 BAdI ,我们可以在判断条件里添加一条对字段 reversedocument 的判断。该字段代表冲销凭证编号,当进行发票预制时,该字段为空值。所以将其也作为一条判断条件添加到 BAdI 里。

3. 根据以上分析过程,实现 BAdI ,具体代码如下。

if headerdata-companycode is not initial or headerdata-companycode is initial.
  select single * from i_SupplierCompany with privileged access
    where supplier = @headerdata-invoicingparty
    into @data(Is_inventory_payment_same) .
  if headerdata-paymentterms ne Is_inventory_payment_same-paymentterms and headerdata-reversedocument = ''.
    append value #(  messagetype = 'E' messageid = 'MRM_BADI_CLOUD' messagenumber = '001' messagevariable1 = '预制发票的付款条件和供应商主数据付款条件不一致。' ) to messages.
  endif.
endif.

4. 我们对一个订单进行预制发票操作。进入应用 – 预制供应商发票,输入需要预制发票的采购订单号,在右侧可以看到该订单的供应商。

%u8FDB%u5165%u5E94%u7528%20-%20%u9884%u5236%u4F9B%u5E94%u5546%u53D1%u7968

进入应用 – 预制供应商发票

5. 在应用 – 显示供应商里,查询该订单的供应商,确认该供应商主数据里的付款条件0004

%u786E%u8BA4%u4F9B%u5E94%u5546%u4E3B%u6570%u636E%u91CC%u7684%u4ED8%u6B3E%u6761%u4EF6

确认供应商主数据里的付款条件

6. 返回应用 – 预制供应商发票,修改付款条件为0005,点击保存预制凭证。无法保存成功,点击消息,可以看到日志里的错误消息。

%u4ED8%u6B3E%u6761%u4EF6%u4E0D%u4E00%u81F4%u65E0%u6CD5%u4FDD%u5B58

付款条件不一致无法保存

7. 将付款条件改回0004,再点击保存预制凭证。保存成功,左下角会显示创建成功的消息。

%u4ED8%u6B3E%u6761%u4EF6%u4E00%u81F4%u4FDD%u5B58%u6210%u529F

付款条件一致保存成功

结语:

通过阅读本文,希望您已知晓在为采购订单预制发票时,如何通过自定义逻辑来检查预制发票的付款条件与供应商主数据中的付款条件是否一致。

关注以下链接可以看到更多有关 SAP S/4HANA Cloud 采购相关的问题:All Questions in SAP S/4HANA Cloud for Sourcing and Procurement | SAP Community

您也可以通过后面的链接阅读更多有关 SAP S/4HANA Cloud 采购的博文:SAP S/4HANA Cloud for Sourcing and Procurement | SAP | SAP Blogs

如果您对本文有任何的建议和想法,欢迎在评论区提出,期待与您一起交流。也欢迎您关注我的个人账号,期待我们在下一篇博文再见!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK