销售订单交货计划

业务场景:销售订单行的交货计划,可以按订单行进行拆分交货,系统的拆分计划,在销售订单没有关联项目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;
        }

    }

}

一周没更新了。。。

原文地址:https://www.cnblogs.com/sunny-technology/p/9415439.html

时间: 2024-10-15 20:53:22

销售订单交货计划的相关文章

销售订单、外向交货单、交货 bapi

转自[http://www.cnblogs.com/elegantok/archive/2009/10/18/1585398.html]***********SALES ORDER INPUT CREATION. REPORT soi. PARAMETERS: p_auart TYPE auart OBLIGATORY.PARAMETERS: p_vkorg TYPE vkorg OBLIGATORY.PARAMETERS: p_vtweg TYPE vtweg OBLIGATORY.PARAM

AR_销售订单收款基本操作(流程)

2014-06-04 BaoXinjian 一.步骤 1. 输入销售订单,输入(Enter)-->预定(Book)-->计划(Schedule)-->保留(Reserve) 2. 进行挑库操作, 挑库(Pick Release)-->挑库确认(Pick Confirm) 3. 制作发运单,制作发运单(Create Delivery)-->发运确认(Ship Confirm) 4. 程式停靠接口(Interface Trip Stop) 5. 关闭订单, 启动workflow处

订单捕获-销售订单自定义

订单捕获-销售订单自定义 你可以自定义销售订单窗口外观来满足需求.所有订单和行块(包含查找窗口)都是作为文件夹块来设计的.你可以隐藏.显示和更改你文件夹的外观. 允许的自定义 您可以从这些可能的自定义选择. 隐藏一个项目(文本项目,复选框,弹出列表,选项组) 注意:如果你想要在销售订单头区域窗口(单个行文件夹块)显示一个当前隐藏的字段,你应该先隐藏一个当前显示的字段.在单个行文件夹块中,显示字段操作在当前光标所在的字段下放置一个新字段. 注意:在多个行文件夹块中,显示字段操作在当前光标所在的字段

转载]SAP囚徒 - 通过销售订单领用到成本中心,FI替代

转载]SAP囚徒 - 通过销售订单领用到成本中心,FI替代 原文地址:SAP囚徒 - 通过销售订单领用到成本中心,FI替代实现不同成本中心记账科目不同作者:SAP囚徒 物品领用通常是库存管理的范畴,直接移动类型201计入成本中心即可:但是也有通过销售订单直接领用到成本中心,记费用科目,比如:给客户送少量的样品可以使用销售订单的成本中心来是实现(公司直接送东西给客户有偷税的嫌疑,这里忽略不计): 系统操作步骤如下: 1.VA01创建可以录入成本中心的免费订单 2.VL01N.VL02N对销售订单过

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

如下的销售订单,有多个ITEM, 为其中的第一个ITEM创建了DN 80016362, 如果业务发现需要修改该交货单,将销售订单里的其它ITEM也加入到该DN里. 如下方式, VL02N,进入到该交货单的修改界面,如下菜单, 弹出如下界面, 回车, 系统就将销售订单的20/30 行项目带入交货单了. 此时可以根据需要修改交货数量,保存即可. 2019-06-10 写于苏州市. 原文地址:https://www.cnblogs.com/DicksonJYL/p/11023610.html

BAPI 修改销售订单的方法 ‘BAPI_SALESORDER_CHANGE’

(原创)BAPI 修改销售订单的方法 ‘BAPI_SALESORDER_CHANGE’ 2009-08-21 16:22:55 分类: Linux sap 标准程序中可以使用VA02来修改销售订单 change sales order,也可以在程序中调用BAPI来更改订单(如物料编号material,订购数量 order quantity等),用到的函数是 BAPI_SALESORDER_CHANGE.sap bapi Explorer中的文档.   Method SalesOrder.Chan

销售订单-修改量-高级定价关联sql

修改量消耗明细 --修改量消耗明细 SELECT t.name, t.comments, t.version_no, cux_rebate_pub.get_hou_name(p_organization_id => t.orig_org_id) org_name, ac.customer_name, --ql.amount "限额", -- qlb.limit_balance_id, qlb.consumed_amount "总消耗", qlb.availab

Oracle EBS更新销售订单行信息API

 更新销售订单行信息 DECLARE l_header_rec             oe_order_pub.header_rec_type; l_line_tbl               oe_order_pub.line_tbl_type; l_line_tb2               oe_order_pub.line_tbl_type; l_action_request_tbl     oe_order_pub.request_tbl_type; l_return_sta

已存在销售订单上插入销售订单行

 在已存在销售订单上插入销售订单行 --This is to add a line to an existing order DECLARE l_api_version_number NUMBER := 1 ; l_return_status      VARCHAR2(2000 ); l_msg_count          NUMBER; l_msg_data           VARCHAR2(2000 ); /*****************INPUT VARIABLES FOR