销售订单交货计划

Posted sunny-technology

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了销售订单交货计划相关的知识,希望对你有一定的参考价值。

业务场景:销售订单行的交货计划,可以按订单行进行拆分交货,系统的拆分计划,在销售订单没有关联项目Id时,可以使用,有项目ID的销售订单行是不可以使用交货计划的。

我主要分享下下面两个知识点,也可能是大家经常遇到的;

1.交货计划的可编辑性:

一般的按钮编辑都是在Form下写方法控制,但部分Form的可编辑性是在类中实现的,销售订单就是个例子:

控制销售订单按钮可编辑性的类:SalesTableInteractionHelper

比如行上的交货计划按钮就是在SalesTableInteractionHelper类中的isOpenOrderNotReturnNotProjectRelatedSalesLine中控制:

  private boolean isOpenOrderNotReturnNotProjectRelatedSalesLine()
    {
        return (salesTable.SalesType == SalesType::Sales || salesTable.SalesType == SalesType::Journal)
             && salesLine.SalesStatus == SalesStatus::Backorder           // Open order status
             && salesLine.SalesQty >= 0 ;                                 // No negative qty
            //当销售订单上的项目号有值时,也可以使用订单行上的交货计划按钮--Sunny Add start
            /*
             && !salesTable.ProjId;                                     // not part of a project
            */
        //Sunny Add end
    }

2.交货计划拆分行时,其新行上的字段从原行中复制而来,即会执行SalesLine上的InitFromSalesline方法,和initFromOrderLineWithMultipleDeliveries方法,一般新加的字段可在这两个方法中进行初始化;

但例外的是,部分字段会被清空,比如项目Id,跟代码可以看到,这是因为系统再init方法中执行后,在后面的SalesLineType_Project类的初始化时会清空,如果需要带出项目类别,则我们可以重写此类下的初始化方法。当然这是一个字段,要是有其他字段也可类似找方法:

//交货计划拆分时带出项目类别--
[ExtensionOf(classstr(SalesLineType_Project))]
final class SalesLineType_Project_Extension
{
    void initValue()
    {
        SalesLine       saleslineOrig;
        ProjCategoryId  projCategoryId;

        saleslineOrig   = this.salesLine;
        projCategoryId  = saleslineOrig.ProjCategoryId;

        next initValue();

        if(!saleslineOrig.ProjCategoryId)
        {
            saleslineOrig.ProjCategoryId = projCategoryId;
        }

    }

}

一周没更新了。。。

 

以上是关于销售订单交货计划的主要内容,如果未能解决你的问题,请参考以下文章

交货单和销售订单增强不能报错误消息导致DUMP问题解决;

SAP-PS笔记项目交货之基于销售订单VL01N交货

SAP-PS笔记项目交货之基于销售订单VL01N交货

SAP SD如何将销售订单其它ITEM加入到一个已创建好的交货单里

无法创建外向交货单

SAP销售订单的行项目在首次批量维护后,某些行项目的计划行确认数量为0,怎么回事?