采购单与调拨单或销售订单关联,增加表FRET记录
来源:互联网 发布:中国 国防人工智能 编辑:程序博客网 时间:2024/04/29 11:47
采购单与调拨单或销售订单关联,增加表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.
- 采购单与调拨单或销售订单关联,增加表FRET记录
- 建滔.当有税率时,由调拨订单关联生成的销售出库单单价取了含税单价的错误处理
- 应付头行表与采购接收,采购订单表关联
- 销售单-请购单-采购单连接SQL
- 关于生成调拨单
- 服务条目与采购订单、采购申请、工单、项目及WBS的关系
- 关于实仓与虚仓和调拨单和虚仓调拨单的区别
- 使用从调价单取单价,在做销售订单或者采购订单时是总是带出旧单价,而新的调价单的单价没有带出
- 直发订单与采购模块关联关系
- 应收发票与销售订单关联关系
- 销售出库单无法删除,订单-退货申请-销售出库
- 采购单
- 如何获取公司间采购订单或销售订单的交货状态
- Oracle EBS 如何将申购单转换成采购订单
- 委外订单--采购入库单不能记账
- 如何拷贝销售订单文本到发货单
- 如何从销售订单复制sales district到发货单?
- 面向对象划分--ERP销售订单、生产工单、料号
- MapReduce:基于物品的协同过滤算法的MapReduce实现
- ffmpeg使用记录--解决了压制的视频在安卓不播放的问题
- Android PopupWindow 的方法 & 弹出窗口方法
- 14返回指针的函数与指向函数的指针
- 河北霸州:百余名传销人员手持石头袭警
- 采购单与调拨单或销售订单关联,增加表FRET记录
- [leetcode] 学习记录——Add Two Numbers
- 1057.Stack
- makefile宏定义:EXTRA_CFLAGS += -D 与CONFIG_ =y
- span 文本内容超过宽度自动换行
- 15-预处理指令1-宏定义、条件编译、文件包含
- 斯坦福大学自然语言处理第五课“拼写纠错(Spelling Correction)”
- 2015-1-22【erlang】Cowboy学习记录-关于Constraints章节
- Volley架构与使用