您的位置:首页 > 编程语言

EBS 学习笔记 发运模块代码编写的思路

2014-08-28 18:40 316 查看
我们的项目是利用了一个stag2表,存放一些必要的物料信息,然后再APEX平台直接显示一批数据的信息,然后一起发运。



表的信息为:

object_version_number   NUMBER NOT NULL,
batch_id                NUMBER NOT NULL,
ridx                    NUMBER NOT NULL,
--
cust_po_number          VARCHAR2(240) NOT NULL,
oe_header_id            NUMBER NOT NULL,
oe_line_id              NUMBER NOT NULL,
oe_line_number          NUMBER NOT NULL,
item_id                 NUMBER NOT NULL,
organization_id         NUMBER NOT NULL,
requested_quantity      NUMBER NOT NULL,
shipped_quantity        NUMBER NOT NULL,
subinventory_code       VARCHAR2(10),
ship_options            VARCHAR2(20),
location_id             NUMBER,
lot_number              VARCHAR2(80),
serial_number           VARCHAR2(30),
ship_method_code        VARCHAR2(30),
actual_departure_date   DATE DEFAULT SYSDATE NOT NULL ,
--
created_by              NUMBER NOT NULL,
creation_date           DATE   NOT NULL,
last_updated_by         NUMBER NOT NULL,
last_update_date        DATE   NOT NULL,
last_update_login       NUMBER,
request_id              NUMBER,
--
process_code            VARCHAR2(30) DEFAULT 'PENDING' NOT NULL,
error_message           VARCHAR2(2000)


而要发运的数据,有几种情况,一种是用货位号,批号控制的数据,另一种是由序列号控制的。

这个时候就要分成两种情况考虑。

第一种情况:

首先要根据stag2表的信息,在物料单中找出满足条件的物料单,循环:

对当前物料单的requested_qty 和 stag2表的shipped_quantity进行比较,如果小于,则将这个物料编号信息放到一个内存表中,

大于的话,在判断shipped_qty是否等于shipped_quantity,不等就要更新一下物料单的发运数量。存入内存表。

如果正好等于的话,直接存入内存表

循环结束;

然后就是进行发货号的生成和分配,然后发运即可。

第二种情况:

根据header_id和line_id等信息找出满足条件的物料单,循环:

然后查出当前的物料单的序列号表,循环:

如果要发运的序列号在表中,将该条物料单放入到内存表。

跳出所有循环

循环结束;

如果这个物料单是要发运的物料单,则对其进行,首先将序列号清空,这里是为了之后的分行,不带有序列号,我是将物料单的发运数量=0,ordered数量=requested数量。

接下来分出一行来,然后对一行数据进行分配序列号,这一行就是stag2表的要发运的序列号,然后在将剩下的序列号和物料单的信息存储下来。

循环结束;

在外面做的是发运操作,但是再发运之前要为分行后的物料单分配多个序列号(如果是需要多个的话),然后再发运。

以上是我的代码逻辑,看不懂的地方请见谅,由于还有任务,不能写的太详细了。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: