采购单与调拨单或销售订单关联,增加表FRET记录

采购单与调拨单或销售订单关联,增加表FRET记录,在对采购单做收货时,

系统自动对调拔单或销售订单,创建拣配单(交货单),具体做法:

1、往FRET增加记录;

2、修改采购单抬头和行项目相应关联标识。

代码:

(1)在SE11创建结构: ZST_SAVE_FRET

BLNRB CHAR
10 0 凭证号,采购

BPOSB NUMC
6 0 凭证项目,采购

BLNRA CHAR
10 0 发货凭证号

BPOSA NUMC
6 0 凭证项目,发货

(2)在SE37创建函数如下:

FUNCTION ZF_SAVE_FRET.

*"----------------------------------------------------------------------

*"*"Local interface:

*"  EXPORTING

*"     REFERENCE(ERRCODE) TYPE  CHAR1

*"     REFERENCE(EXEMSG) TYPE  CHAR100

*"  TABLES

*"      IT_FRET STRUCTURE  ZST_SAVE_FRET

*"----------------------------------------------------------------------

DATA:F_IT_FRET_SAVE LIKE FRET OCCURS 0 WITH HEADER LINE,

F_IT_CGD_TT   LIKE EKKO OCCURS 0 WITH HEADER LINE,

F_IT_CGD_HXM  LIKE EKPO OCCURS 0 WITH HEADER LINE,

F_IT_XSD_TT   LIKE VBAK OCCURS 0 WITH HEADER LINE,

F_IT_XSD_HXM  LIKE VBAP OCCURS 0 WITH HEADER LINE,

F_IT_DBD_HXM  LIKE EKPO OCCURS 0 WITH HEADER LINE,

F_CGD_HT_INDEX  TYPE SY-TABIX,

F_CGD_HXM_INDEX TYPE SY-TABIX.

CLEAR:ERRCODE.

EXEMSG = ‘数据保存成功‘.

IF IT_FRET[] IS INITIAL.

EXEMSG = ‘传入内表[IT_FRET]为空‘.

RETURN.

ENDIF.

"-------------------- 1、取采购单信息 --------------------

"--**--  (1) 行项目数据

SELECT * FROM EKPO INTO CORRESPONDING FIELDS OF TABLE F_IT_CGD_HXM

FOR ALL ENTRIES IN IT_FRET

WHERE EBELN = IT_FRET-BLNRB AND

EBELP = IT_FRET-BPOSB+1.

"--**--  (2) 抬头数据

SELECT * FROM EKKO INTO CORRESPONDING FIELDS OF TABLE F_IT_CGD_TT

FOR ALL ENTRIES IN IT_FRET

WHERE EBELN = IT_FRET-BLNRB.

"--------------------  2、取销售订单信息 --------------------

"--**--  (1) 行项目数据

SELECT * FROM VBAP INTO CORRESPONDING FIELDS OF TABLE F_IT_XSD_HXM

FOR ALL ENTRIES IN IT_FRET

WHERE VBELN = IT_FRET-BLNRA AND

POSNR = IT_FRET-BPOSA.

"--**--  (2) 抬头数据

SELECT * FROM VBAK INTO CORRESPONDING FIELDS OF TABLE F_IT_XSD_TT

FOR ALL ENTRIES IN IT_FRET

WHERE VBELN = IT_FRET-BLNRA.

"-------------------- 3、取调拨单信息 -----------------------

SELECT * FROM EKPO INTO CORRESPONDING FIELDS OF TABLE F_IT_DBD_HXM

FOR ALL ENTRIES IN IT_FRET

WHERE EBELN = IT_FRET-BLNRA AND

EBELP = IT_FRET-BPOSA+1.

SORT F_IT_CGD_HXM BY EBELN EBELP.

SORT F_IT_XSD_TT  BY VBELN.

SORT F_IT_XSD_HXM BY VBELN POSNR.

SORT F_IT_DBD_HXM BY EBELN EBELP.

CLEAR F_IT_FRET_SAVE[].

LOOP AT IT_FRET.

CLEAR F_IT_FRET_SAVE.

MOVE-CORRESPONDING IT_FRET TO F_IT_FRET_SAVE.

"检查采购单

READ TABLE F_IT_CGD_HXM WITH KEY EBELN = IT_FRET-BLNRB

EBELP = IT_FRET-BPOSB+1

BINARY SEARCH.

F_CGD_HXM_INDEX = SY-TABIX.

IF SY-SUBRC NE 0.

CONTINUE.

ENDIF.

"检查销售订单

READ TABLE F_IT_XSD_HXM WITH KEY VBELN = IT_FRET-BLNRA

POSNR = IT_FRET-BPOSA

BINARY SEARCH.

IF SY-SUBRC EQ 0.

F_IT_FRET_SAVE-BTYPA = ‘2‘.

F_IT_FRET_SAVE-MATNR = F_IT_XSD_HXM-MATNR.

F_IT_FRET_SAVE-ABNTP = ‘01‘.

F_IT_FRET_SAVE-PMENA = F_IT_XSD_HXM-KWMENG.

F_IT_FRET_SAVE-PEINA = F_IT_XSD_HXM-MEINS.

READ TABLE F_IT_XSD_TT WITH KEY VBELN = IT_FRET-BLNRA BINARY SEARCH.

IF SY-SUBRC EQ 0.

F_IT_FRET_SAVE-ABNNR = F_IT_XSD_TT-KUNNR.

ENDIF.

ELSE.

"检查调拨订单

READ TABLE F_IT_DBD_HXM WITH KEY EBELN = IT_FRET-BLNRA

EBELP = IT_FRET-BPOSA+1

BINARY SEARCH.

IF SY-SUBRC EQ 0.

F_IT_FRET_SAVE-BTYPA = ‘1‘.

F_IT_FRET_SAVE-MATNR = F_IT_DBD_HXM-MATNR.

F_IT_FRET_SAVE-PMENA = F_IT_DBD_HXM-MENGE.

F_IT_FRET_SAVE-PEINA = F_IT_DBD_HXM-MEINS.

F_IT_FRET_SAVE-ABNTP = ‘02‘.

F_IT_FRET_SAVE-ABNNR = F_IT_DBD_HXM-WERKS.

ELSE.

CONTINUE.

ENDIF.

ENDIF.

F_IT_FRET_SAVE-BTYPB = ‘1‘.

F_IT_FRET_SAVE-GABLV = ‘02‘.

F_IT_FRET_SAVE-BARTV = ‘5‘.

F_IT_FRET_SAVE-VERVF = ‘1‘.

F_IT_FRET_SAVE-KZVST = ‘X‘.

F_IT_FRET_SAVE-PMENB = F_IT_CGD_HXM-MENGE.

F_IT_FRET_SAVE-PEINB = F_IT_CGD_HXM-MEINS.

F_IT_FRET_SAVE-WERKA = F_IT_CGD_HXM-WERKS.

CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT‘

EXPORTING

INPUT  = F_IT_FRET_SAVE-ABNNR

IMPORTING

OUTPUT = F_IT_FRET_SAVE-ABNNR.

F_IT_FRET_SAVE-ERFDAT = SY-DATUM.

F_IT_FRET_SAVE-ERFUSR = SY-UNAME.

GET TIME FIELD F_IT_FRET_SAVE-ERFZT.

APPEND F_IT_FRET_SAVE.

"修改采购单行项目内表数据状态

F_IT_CGD_HXM-AUREL = ‘5‘.

MODIFY F_IT_CGD_HXM INDEX F_CGD_HXM_INDEX TRANSPORTING AUREL.

AT END OF BLNRA.

"修改采购单表头数据状态

READ TABLE F_IT_CGD_TT WITH KEY  EBELN = F_IT_CGD_HXM-EBELN BINARY SEARCH.

F_CGD_HT_INDEX = SY-TABIX.

IF SY-SUBRC EQ 0.

F_IT_CGD_TT-STATU = ‘S‘.

MODIFY F_IT_CGD_TT INDEX F_CGD_HT_INDEX TRANSPORTING STATU.

ENDIF.

ENDAT.

ENDLOOP.

IF F_IT_FRET_SAVE[] IS INITIAL.

ERRCODE = ‘X‘.

EXEMSG  = ‘没有数据需要保存,请检查内表IT_FRET中的单据是否有效‘.

RETURN.

ENDIF.

"保存数据到FRET

MODIFY FRET FROM TABLE F_IT_FRET_SAVE.

IF SY-SUBRC NE 0.

ERRCODE = ‘X‘.

EXEMSG  = ‘保存数据到FRET失败‘.

ROLLBACK WORK.

RETURN.

ENDIF.

"修改采购的状态

MODIFY EKKO FROM TABLE F_IT_CGD_TT.

IF SY-SUBRC NE 0.

ERRCODE = ‘X‘.

EXEMSG  = ‘修改采购单数据[EKKO]失败‘.

ROLLBACK WORK.

RETURN.

ENDIF.

MODIFY EKPO FROM TABLE F_IT_CGD_HXM.

IF SY-SUBRC NE 0.

ERRCODE = ‘X‘.

EXEMSG  = ‘修改采购单数据[EKPO]失败‘.

ROLLBACK WORK.

RETURN.

ENDIF.

COMMIT WORK AND WAIT.

ENDFUNCTION.

时间: 2024-10-10 15:15:04

采购单与调拨单或销售订单关联,增加表FRET记录的相关文章

销售订单-修改量-高级定价关联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

[SAP ABAP开发技术总结]SD销售订单定价过程

目录导航 声明:原创作品,转载时请注明文章来自SAP师太博客,并以超链接形式标明文章原始出处,否则将追究法律责任!原文出自: 16.3.2.     定价过程... 141 16.3.2.1.           条件技术七要素... 141 16.3.2.2.           条件表V/03.V/04.V/05. 142 16.3.2.3.           存取顺序 V/07. 142 16.3.2.4.           条件类型 V/06. 142 16.3.2.5.      

K3老单开发-销售订单计算比例(实际价格反推)

最近碰到了销售订单中,字段间信息计算的问题, 问题描述: 销售订单中,产品的目录单价.数量为人工进行填写,但是业务流程中,价格填写模式为:销售合同回来-目录价格-下浮比-实际价格 销售订单的实际价格为锁定模式,不能人为进行编辑,故导致了合同录入人员在录入过程中需要人工计算下浮比且小数点后位数控制困难: 解决方案: 1.在数据库中将[实际单价]字段解锁: update ictemplateentry set FEnable=48 where FHeadCaption='实际含税单价' and FC

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处

成功建立销售订单必须做好的配置

一.VA01界面進來的時候提示產品組不在工廠和分銷渠道的范圍內 解决方法: 在建立销售单之前,得建好销售区域和销售组 a:建立销售区域 SPRO->企业结构->定义->销售和分销->维护销售办公室 b:建立销售组 SPRO->企业结构->定义->销售和分销->维护销售组 把建立好的销售区域和销售组分配给销售区域和办公室 C:办公室分配给销售区域 SPRO->企业结构->分配->销售和分销->给销售范围分配销售办公室 D:分销组分配办公

销售订单交货计划

业务场景:销售订单行的交货计划,可以按订单行进行拆分交货,系统的拆分计划,在销售订单没有关联项目Id时,可以使用,有项目ID的销售订单行是不可以使用交货计划的. 我主要分享下下面两个知识点,也可能是大家经常遇到的: 1.交货计划的可编辑性: 一般的按钮编辑都是在Form下写方法控制,但部分Form的可编辑性是在类中实现的,销售订单就是个例子: 控制销售订单按钮可编辑性的类:SalesTableInteractionHelper 比如行上的交货计划按钮就是在SalesTableInteractio

销售订单、外向交货单、交货 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

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

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