草庐IT

SAP MM 外部采购流程里的如同鸡肋一样的Advanced Returns Management功能

Suzhou BOY 2023-03-28 原文

SAP MM 外部采购流程里的如同鸡肋一样的Advanced Returns Management功能

 

 

文章中的配置界面和单据流界面都是基于SAP S4HANA 1909系统。

 

 

Part I: 外部采购订单中高级退货管理(Advanced Return Management) 功能

 

这部分简要介绍外部采购订单中高级退货管理(Advanced Return Management) 功能。

 

1,采购订单单据类型 NB2,

 

 

 

2,交货单类型的设置

 

 

 

3, BP主数据设置

需要为供应商也同时维护一个customer代码,

 

同时勾选供应商角色的数据里的Returns Supplier 选项,如下图:

 

4,创建NB2类型的采购订单。

 

5, VL10B为之创建交货单,

 

6, VL02N为交货单做发货过账。

 

7, 在采购订单的Returns选项卡里看数据。

 

 

退货订单中创建交货单然后发货过账的做法,在项目实践中并不鲜见。

 

 

Part II: 外部采购订单中没有启用ARM(高级退货管理)功能时候的退货流程

 

这部分内容简要介绍外部采购订单中没有启用ARM(高级退货管理)功能时候的退货流程。这个流程里,也可以为退货订单创建外向交货单,然后基于外向交货单做发货出库给到供应商。

 

1,采购订单单据类型 NB的配置,保持SAP标准设置。

 

 

AdvReturns选项不勾选。

2,交货单类型的设置,保持SAP标准配置。

 

 

3, BP主数据设置。

需要为供应商也同时维护一个customer代码,

 

同时勾选供应商角色的数据里的Returns Supplier 选项,如下图:

 

4,创建NB类型的采购订单。

 

此时Returns item选项需要手工勾选!

后续执行事务代码VL10B为之创建交货单,VL02N为交货单做发货过账。

 

我们可以发现,该NB类型的采购订单的Header和ITEM里不会出现Returns选项卡!

 

 

由此可见,不激活ARM(Advanced Returns Management)功能的前提下,我们也可以为退货类型采购订单创建外向交货单,然后拣配,以及发货过账。这是很多SAP项目上的做法。

 

当然SAP项目实践中还可以更简单,创建了退货采购订单后可以直接MIGO对此采购订单执行发货过账。

 

 

Part III:结论

 

笔者认为,SAP 设计的ARM功能其实就是一个鸡肋,用处不大,徒增复杂性而已。这也可以解释为啥ARM功能在项目实践中都不怎么被使用到,毕竟没有哪个SAP顾问喜欢把简单的问题复杂化!

 

 

 

-完-

 

写于2021-12-6

有关SAP MM 外部采购流程里的如同鸡肋一样的Advanced Returns Management功能的更多相关文章

  1. ruby-on-rails - Cucumber 是否只是 rspec 的包装器以帮助将测试组织成功能? - 2

    只是想确保我理解了事情。据我目前收集到的信息,Cucumber只是一个“包装器”,或者是一种通过将事物分类为功能和步骤来组织测试的好方法,其中实际的单元测试处于步骤阶段。它允许您根据事物的工作方式组织您的测试。对吗? 最佳答案 有点。它是一种组织测试的方式,但不仅如此。它的行为就像最初的Rails集成测试一样,但更易于使用。这里最大的好处是您的session在整个Scenario中保持透明。关于Cucumber的另一件事是您(应该)从使用您的代码的浏览器或客户端的角度进行测试。如果您愿意,您可以使用步骤来构建对象和设置状态,但通常您

  2. ruby - 从外部访问类的实例变量 - 2

    我理解(我认为)Ruby中类变量和类的实例变量之间的区别。我想知道如何从该类外部访问该类的实例变量。从内部(即在类方法中而不是实例方法中),它可以直接访问,但是从外部,有没有办法做MyClass.class.[@$#]variablename?我没有任何具体原因要这样做,只是学习Ruby并想知道是否可行。 最佳答案 classMyClass@my_class_instance_var="foo"class上述yield:>>foo我相信Arkku演示了如何从类外部访问类变量(@@),而不是类实例变量(@)。我从这篇文章中提取了上述内

  3. ruby-on-rails - rails 功能测试 - 2

    在Rails自动生成的功能测试(test/functional/products_controller_test.rb)中,我看到以下代码:classProductsControllerTest我的问题是:方法调用products()在哪里/如何定义?products(:one)到底是什么意思?看代码,大概意思是“创建一个产品”,但是它是如何工作的呢?注意我是Ruby/Rails的新手,如果这些是微不足道的问题,我深表歉意。 最佳答案 如果您查看test/fixtures文件夹,您会看到一个products.yml文件。这是在您创建

  4. ruby - 无法安装 gem - make 未被识别为内部或外部命令可运行程序或批处理文件 - 2

    我想在Windows7上安装带有ruby​​1.9.3的rspec-railsgem。我收到一些错误消息,提示无法安装某些json库。所以,我使用下面的说明来解决它。来源=The'json'nativegemrequiresinstalledbuildtools从[rubyinstaller.org][3]下载[Ruby1.9.3][2]从[rubyinstaller.org][3]下载DevKit文件对于Ruby1.9.3,使用[DevKit-tdm-32-4.5.2-20110712-1620-sfx.exe][4]将DevKit解压到路径C:\Ruby193\DevKit运行cd

  5. ruby - 使用 Class.new 时访问外部范围 - 2

    是否有可能以某种方式访问​​Class.new范围内的a?a=5Class.new{defb;aend}.new.b#NameError:undefinedlocalvariableormethod`a'for#:0x007fa8b15e9af0>#:in`b' 最佳答案 即使@MarekLipka的回答是正确的——改变变量范围总是有风险的。这是可行的,因为每个block都带有创建它的上下文,因此您的局部变量a突然变得不那么局部了——它变成了一个“隐藏的”全局变量:a=5object=Class.new{define_method(

  6. ruby-on-rails - 功能测试 Authlogic? - 2

    在我的一些Controller中,我有一个before_filter检查用户是否登录?用于CRUD操作。application.rbdeflogged_in?unlesscurrent_userredirect_toroot_pathendendprivatedefcurrent_user_sessionreturn@current_user_sessionifdefined?(@current_user_session)@current_user_session=UserSession.findenddefcurrent_userreturn@current_userifdefine

  7. ruby - 存储外部 API 的密码 - 最佳实践 - 2

    如果我构建了一个应用程序来访问来自Gmail、Twitter和Facebook的一些数据,并且我希望用户只需输入一次他们的身份验证信息,并且在几天或几周后重置,那会怎样是在Ruby中动态执行此操作的最佳方法吗?我看到很多人只是拥有他们客户/用户凭证的配置文件,如下所示:gmail_account:username:myClientpassword:myClientsPassword这看起来a)非常不安全,b)如果我想为成千上万的用户存储此类信息,它就无法工作。推荐的方法是什么?我希望能够在这些服务之上构建一个界面,因此每次用户进行交易时都必须输入凭据是不可行的。

  8. ruby - 可以像在 C# 中使用#region 一样在 Ruby 中使用 begin/end 吗? - 2

    我最近从C#转向了Ruby,我发现自己无法制作可折叠的标记代码区域。我只是想到做这种事情应该没问题:classExamplebegin#agroupofmethodsdefmethod1..enddefmethod2..endenddefmethod3..endend...但是这样做真的可以吗?method1和method2最终与method3是同一种东西吗?还是有一些我还没有见过的用于执行此操作的Ruby惯用语? 最佳答案 正如其他人所说,这不会改变方法定义。但是,如果要标记方法组,为什么不使用Ruby语义来标记它们呢?您可以使用

  9. ruby - Ruby 中允许 "p *1..10"打印出数字 1-10 的功能是什么? - 2

    require'pp'p*1..10这会打印出1-10。为什么这么简洁?您还可以用它做什么? 最佳答案 它是“splat”运算符。它可用于分解数组和范围并在赋值期间收集值。这里收集赋值中的值:a,*b=1,2,3,4=>a=1b=[2,3,4]在此示例中,内部数组([3,4])中的值被分解并收集到包含数组中:a=[1,2,*[3,4]]=>a=[1,2,3,4]您可以定义将参数收集到数组中的函数:deffoo(*args)pargsendfoo(1,2,"three",4)=>[1,2,"three",4]

  10. java - Java 中的 "caller"和 Ruby 中的 "receiver"一样吗? - 2

    如果我说x.hello()在Java中,对象x正在“调用”它包含的方法。在Ruby中,对象x正在“接收”它包含的方法。这只是表达相同想法的不同术语,还是意识形态上的根本差异?来自Java,我发现Ruby的“接收器”想法非常令人困惑。也许有人可以解释这与Java的关系? 最佳答案 在您的示例中,x不调用hello()。包含该片段的任何对象都是“调用”(即,它是“调用者”)。在Java中,x可以称为接收者;它正在接收对hello()方法的调用。 关于java-Java中的"caller"和R

随机推荐