ship_confirm API of my test script

本文介绍了一种使用无线扫描设备实现销售订单发运的方法。主要包括创建物料搬运单、挑库及挑库确认等步骤,并讨论了相关接口问题及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

method 2 , exit delivery_id and change the line/orders to ship

method1: by pick realease API add a parameter:

lr_batch_rec. ship_confirm_rule_id:=1;

 

select wda.delivery_id,ol.shipment_number , ol.unit_cost,ol.*-- delivery_id ÓʼĺÅÂë :80514
from
oe_order_headers_all oh,
oe_order_lines_all ol,
wsh_delivery_assignments wda,
wsh_delivery_details wdd
where
oh.header_id=ol.header_id
and
ol.line_id=wdd.source_line_id
and wdd.delivery_detail_id=wda.delivery_detail_id
and oh.order_number=51408


G_RET_STS_SUCCESS CONSTANT VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;



FND_API.G_RET_STS_UNEXP_ERROR


wsh_deliveries_pub.delivery_action


*****************************


/* Formatted on 2007/05/14 15:37 (Formatter Plus v4.8.7) */
DECLARE
v_return_status VARCHAR2(100);
v_msg_count NUMBER;
v_msg_data VARCHAR2(2000);
v_trip_id NUMBER;
v_trip_name VARCHAR2(2000);
fail_api EXCEPTION;
v_msg_summary VARCHAR2(2000);
v_msg_details VARCHAR2(2000);
v_message_count number;
BEGIN
wsh_deliveries_pub.delivery_action(p_api_version_number => 1.0,
p_init_msg_list => '',
x_return_status => v_return_status,
x_msg_count => v_msg_count,
x_msg_data => v_msg_data,
p_action_code => 'CONFIRM',
p_delivery_id => 42011,
p_delivery_name => '42011',
p_asg_trip_id => '',
p_asg_trip_name => '',
p_asg_pickup_stop_id => '',
p_asg_pickup_loc_id => '',
p_asg_pickup_stop_seq => '',
p_asg_pickup_loc_code => '',
p_asg_pickup_arr_date => '',
p_asg_pickup_dep_date => '',
p_asg_dropoff_stop_id => '',
p_asg_dropoff_loc_id => '',
p_asg_dropoff_stop_seq => '',
p_asg_dropoff_loc_code => '',
p_asg_dropoff_arr_date => '',
p_asg_dropoff_dep_date => '',
p_sc_action_flag => 'S',
p_sc_intransit_flag => '',
p_sc_close_trip_flag => 'Y',
p_sc_create_bol_flag => '',
p_sc_stage_del_flag => '',
p_sc_trip_ship_method => 'CP',
p_sc_actual_dep_date => '',
p_sc_report_set_id => '',
p_sc_report_set_name => '',
p_sc_defer_interface_flag => '',
p_sc_send_945_flag => '',
p_sc_rule_id => 1,


p_sc_rule_name => '·¢»õÈ·ÈÏ',
p_wv_override_flag => '',
x_trip_id => v_trip_id,
x_trip_name => v_trip_name);

DBMS_OUTPUT.put_line('return status:' || v_return_status);
DBMS_OUTPUT.put_line('msg_count:' || v_msg_count);
DBMS_OUTPUT.put_line('msg data:' || v_msg_data);
DBMS_OUTPUT.put_line('trip id :' || v_trip_id);
DBMS_OUTPUT.put_line('trip name' || v_trip_name);

IF (v_return_status = wsh_util_core.g_ret_sts_success) THEN

-- RAISE fail_api;
COMMIT;

ELSIF v_return_status = 'W' then
RAISE fail_api;
COMMIT;
ELSIF v_return_status = 'U' then
RAISE fail_api;
rollback;
ELSIF v_return_status = 'E' then
RAISE fail_api;
rollback;
END IF;

EXCEPTION
WHEN fail_api THEN
wsh_util_core.get_messages('Y',
v_msg_summary,
v_msg_details,
v_message_count);

IF v_msg_count > 1 THEN
v_msg_data := v_msg_summary || v_msg_details;
ELSE
v_msg_data := v_msg_summary;
END IF;
DBMS_OUTPUT.put_line('*****errors detail******');
DBMS_OUTPUT.put_line('summary' || v_msg_summary);
--DBMS_OUTPUT.PUT_LINE(length(v_msg_details));
DBMS_OUTPUT.put_line('details' || substr(v_msg_details, 0, 240));
DBMS_OUTPUT.put_line(substr(v_msg_details, 240, length(v_msg_details)));
DBMS_OUTPUT.put_line('count number: ' || v_message_count);
END;

 

********************

 

--other references:

 


销售订单发运Interface相关问题

销售订单发运Interface相关问题
我们现在计划使用无线扫描设备实现销售订单发运,计划使用的方案有:
A:方法 inv_move_order_pub.process_move_order 创建物料搬运单,物料搬运单行和order_line相关联
inv_pick_release_pub.pick_release 进行挑库
inv_pick_wave_pick_confirm_pub.pick_confirm 挑库确认
问题 一直在挑库确认时出错, 个人怀疑还需调用WSH_DELIVERIES_PUB,那位大侠有什么建议

B: 方法 设置发运参数 关闭自动挑库和自动发运
运行 发运-〉发放销售订单 -〉发放销售订单 菜单通过系统创建物料搬运单
inv_move_order_pub.process_move_order 更新move_order相关信息,加入批次信息
inv_pick_release_pub.pick_release 进行挑库
inv_pick_wave_pick_confirm_pub.pick_confirm 挑库确认


方案
1。登记订单 erp系统中实现
2。拆分发运行wsh_delivery_details_pub.split_line实现,把一个订单行需要的每个批次进行拆分,每个批次对应一行
3。自动生成创建生成交货WSH_DELIVERY_DETAILS_PUB.Autocreate_Deliveries,把需要发运的行分配到一个交货
4。对交货启动挑库发放wsh_deliveries_pub.delivery_action,生成搬运单
5。update搬运单加入批次信息inv_move_order_pub.Process_Move_Order_Line
6。处理搬运单 inv_pick_release_pub.Pick_Release
7。确认挑库inv_pick_wave_pick_confirm_pub.Pick_Confirm
8。确认交货wsh_deliveries_pub.delivery_action


*************

1. 出现错误

2.执行时间过长

<think>好的,我现在需要帮用户将给定的Oracle SQL CREATE TABLE语句转换为C#的类定义。首先,我得仔细看一下这个表的结构,了解每个字段的数据类型和约束,这样才能正确地映射到C#的类型。 首先看表名是XMCG.XXCT_PATCH_SHIP_CONFIRM_CSI_LOG,对应的类名通常会用大驼峰命名法,所以可能命名为XxctPatchShipConfirmCsiLog或者去掉前缀,但用户可能需要保留原表名结构,所以先按原样转换。 接下来逐个字段分析: 1. LOG_ID是NUMBER类型,并且是自增主键。在C#中,通常会用int或者long,但Oracle的NUMBER可以很大,所以可能需要用long。同时,因为是自增,可能需要用[Key]和[DatabaseGenerated(DatabaseGeneratedOption.Identity)]特性。 2. CSI_NUMBER是VARCHAR2(100),非空。对应C#的string,长度可以用[MaxLength(100)],非空可能需要[Required]。 3. STATUS到STATUS_FLAG这些字段都是VARCHAR2不同长度,都对应string,加上MaxLength。注意是否有非空约束,除了CSI_NUMBER、CREATED_BY、CREATED_DATE之外,其他字段没有NOT NULL,所以这些属性可以不加Required。 4. SHIP_CONFIRM_DATE和CREATED_DATE等是TIMESTAMP,在C#中用DateTime,或者DateTime?如果允许为空。但根据表定义,CREATED_DATE是NOT NULL,所以是DateTime,而其他如UPDATED_DATE可能允许为空,所以用DateTime?。 5. 字段名在C#中通常用帕斯卡命名法,比如CSI_NUMBER变为CsiNumber,STATUS变为Status等。 6. 需要检查是否有其他约束,比如主键、外键等,但这里只有LOG_ID是主键,其他字段没有提到外键,所以暂时不考虑。 然后,考虑是否使用数据注解(DataAnnotations)来进行属性修饰,比如[Key]、[MaxLength]、[Required]等,这样在Entity Framework等ORM中会更方便映射。 现在需要处理可能的细节问题,比如字段名中的下划线转换为驼峰,例如BILL_REFERENCE变成BillReference,OU_TEXT变成OuText等。 还需要注意Oracle的TIMESTAMP精度,在C#中DateTime默认有毫秒,可能没问题,或者是否需要指定数据类型特性。 另外,注意到最后一个字段STATUS_FLAG后面没有逗号,可能在原始SQL中有拼写错误,但用户提供的代码中最后一个字段的末尾有逗号,可能是输入错误,但用户给的SQL语句中UPDATED_DATE后的逗号是中文逗号,这可能导致语法错误,但用户可能希望直接转换,所以保留字段即可,不过在C#类中不需要处理这个,只需按正确字段处理。 最后,组合所有字段,应用正确的数据类型和特性,生成C#类。</think>以下是针对该Oracle表结构转换的C#类定义,包含逐字段映射说明及注意事项: ```csharp using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace YourNamespace { [Table("XXCT_PATCH_SHIP_CONFIRM_CSI_LOG", Schema = "XMCG")] public class XxctPatchShipConfirmCsiLog { // 主键:自增数字(Oracle Identity列) [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] [Column("LOG_ID")] public long LogId { get; set; } // 必填字段:最大长度100 [Required] [MaxLength(100)] [Column("CSI_NUMBER")] public string CsiNumber { get; set; } // 可空字段:最大长度100 [MaxLength(100)] [Column("STATUS")] public string Status { get; set; } /* 类似字段处理(省略部分特性声明) */ [MaxLength(100)] public string EbsStatus { get; set; } [MaxLength(100)] public string BpmStatus { get; set; } [MaxLength(10)] public string IsAllConfirmed { get; set; } [MaxLength(10)] public string ShipConfirm { get; set; } // 时间戳类型(Oracle TIMESTAMP) [Column("SHIP_CONFIRM_DATE")] public DateTime? ShipConfirmDate { get; set; } [MaxLength(10)] public string IsFrozen { get; set; } [MaxLength(50)] public string OrderType { get; set; } [MaxLength(200)] public string BillReference { get; set; } [MaxLength(100)] public string OuText { get; set; } [MaxLength(100)] public string IoText { get; set; } [MaxLength(20)] public string CurrencyCode { get; set; } [Column("INVOICE_ISSUED_DATE")] public DateTime? InvoiceIssuedDate { get; set; } // 必填字段:创建信息 [Required] [MaxLength(100)] [Column("CREATED_BY")] public string CreatedBy { get; set; } [Required] [Column("CREATED_DATE")] public DateTime CreatedDate { get; set; } // 可空更新信息 [MaxLength(100)] [Column("UPDATED_BY")] public string UpdatedBy { get; set; } [Column("UPDATED_DATE")] public DateTime? UpdatedDate { get; set; } // 新增状态相关字段 [MaxLength(100)] public string StatusId { get; set; } [MaxLength(100)] public string CsiCurrentStatus { get; set; } [MaxLength(100)] public string StatusFlag { get; set; } } } ``` 关键映射说明: 1. **数据类型映射** - `NUMBER` ➔ `long`(主键)/`decimal`(需根据实际精度选择) - `VARCHAR2` ➔ `string` + `[MaxLength]` - `TIMESTAMP` ➔ `DateTime` 或 `DateTime?` 2. **特殊处理** ```csharp // 自增主键需显式声明 [DatabaseGenerated(DatabaseGeneratedOption.Identity)] // Oracle模式指定 [Table("XXCT_...", Schema = "XMCG")] ``` 3. **空值处理** - 非空字段:添加`[Required]`特性 - 可空字段:使用`?`可空类型标识符 建议补充: 1. 如果使用Entity Framework Core: ```csharp // 在DbContext中配置 modelBuilder.Entity<XxctPatchShipConfirmCsiLog>(entity => { entity.Property(e => e.LogId) .HasColumnName("LOG_ID") .UseOracleIdentityColumn(); // 明确指定Oracle自增 }); ``` 2. 枚举优化建议(示例): ```csharp public enum ConfirmationStatus { Pending, Confirmed, Frozen } // 将IS_FROZEN等字段替换为枚举类型 ``` 3. 日期处理建议: ```csharp // 确保时区一致性 [Column("SHIP_CONFIRM_DATE")] public DateTimeOffset? ShipConfirmDate { get; set; } ``` 该实现已考虑: - Oracle命名规范到C# PascalCase的转换 - 空值约束的准确表达 - 自增主键的特殊处理 - 数据库模式声明 - ORM框架兼容性 实际使用时需根据具体采用的ORM框架(如Entity Framework/Dapper)进行适当调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值