SAP 中用 ABAP 思维来沟通业务逻辑

作者:SAP养家 约 4 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Data Engineering, MM, WM, 仓库管理, 开发, 数据工程, 物料管理
SAP 中用 ABAP 思维来沟通业务逻辑 - 封面图
SAP 中用 ABAP 思维来沟通业务逻辑 - 封面图

业务背景:

OA与 SAP对接,要获取SAP的单价。初步测试时, 年月+物料+工厂+评估类 测试OK .

进一步测试时,OA传给SAP 只有年月+物料, 没有工厂 ,OA想批量获取价格。

然后双方就开始争执了。

** 对于SAP来讲,价格一定是在工厂维度的,如果没有工厂,取数会非常容易出错。

** **对于OA来讲,他需要的所有工厂的价格,而不是单一工厂。**

**其实呢,这个问题很好解决,双方开发都可以解决,只是不太愿意。

但凡业务顾问懂点ABAP知识,这个问题就非常轻松解决, ** **那就是循环(LOOP AT)** **。

**

SAP 中用 ABAP 思维来沟通业务逻辑 - 封面图
SAP 中用 ABAP 思维来沟通业务逻辑 - 封面图

** 啥是循环,我们从业务上分析。 **

**(一)** ABAP是没错的,你没有工厂,整个价格取数 很容易出错 。

**(二)** 既然工厂是必填的,我们是否可以 一个工厂一个工厂 取数, 然后合并 到一起呢?

**答案是肯定的** ,这就是前面讲的循环(每个开发非常熟悉,也就是上图中的LOOP AT ).

**(三)** 既然这么简单,为啥还会出争执呢? 存在即合理 。

首先ABAP顾问有个 **惯性思维** ,价格一定在工厂维度(说实在的没有工厂,FS也不太好写),没进一步思考。

其次,从OA开发上讲, ** 你给我全部就好了,我不需要再加工。再说了,我 ** 压根也不知道你有几个工厂。 ** **

**(四)** 问题解决。SAP把公司所有工厂传给OA,然后,OA去循环工厂,逐个工厂获取价格,最后合并。

SAP 中用 ABAP 思维来沟通业务逻辑 - 封面图
SAP 中用 ABAP 思维来沟通业务逻辑 - 封面图

获取工厂方法太简单了,你加个 DISTINCT (去重) 就好了。这个反而比你直接从工厂底表取更好(可能存在有工厂没交易的情况)

**注:** 你有没考虑过,循环工厂思路为啥没在FS里写清楚,而是要让双方开发去PK呢?

因为我们写FS不可能100%完美,一般都是边测边改。比如工厂,一开始没考虑到OA **会** ** 传 ** 空白 ** 值 **

(OA需要所有工厂价格),所以FS里也没写这块。后来有问题了,不是说你设必填就完事了。而要像前面那样,双方沟通。

** 小贴士:

** 循环也可以放在ABAP里。

1、首先要有个表来存放所有工厂,比如:T_werks

SAP 中用 ABAP 思维来沟通业务逻辑 - 封面图
SAP 中用 ABAP 思维来沟通业务逻辑 - 封面图
SAP 中用 ABAP 思维来沟通业务逻辑 - 封面图
SAP 中用 ABAP 思维来沟通业务逻辑 - 封面图

2、如果OA传过来工厂有值,就把那一条放到T_weks (相当于表里只有一条,也就循环一次)

3、如果OA传过来工厂为空,就取MARD-werks , 去重复后放到 T_weks。

** 也就是说,无论你传值过来是单条还是为空,首先变成 T_weks 表,然后循环得到数据,再合并。 **

** 你一旦懂些ABAP开发,写FS就合理多了,也不用跟ABAP顾问掰扯了。 ** **

**

SAP 中用 ABAP 思维来沟通业务逻辑 - 封面图
SAP 中用 ABAP 思维来沟通业务逻辑 - 封面图

** **

SAP养家

关于作者:SAP养家

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「SAP中用ABAP思维来沟通业务逻辑.md」整理生成,仅用于内部技术分享与学习交流。