函数使用五:MIR7 发票预制 BAPI_INCOMINGINVOICE_PARK
引自:http://blog.csdn.net/champaignwolf/article/details/51422329
FUNCTION zincominginvoice_park.
*"----------------------------------------------------------------------
*"*"Local interface:
*" EXPORTING
*" VALUE(CODE) TYPE CHAR01
*" VALUE(MESSAGE) TYPE CHAR200
*" TABLES
*" INPUT STRUCTURE ZFC_INCOMINGINVOICE_PARK_INPUT OPTIONAL
*"----------------------------------------------------------------------
DATA: vp_eind(1),
ls_headerdata LIKE bapi_incinv_create_header,
lt_itemdata LIKE TABLE OF bapi_incinv_create_item,
ls_itemdata LIKE bapi_incinv_create_item,
lt_materialdata LIKE TABLE OF bapi_incinv_create_material,
ls_materialdata LIKE bapi_incinv_create_material,
lt_taxdata LIKE TABLE OF bapi_incinv_create_tax,
ls_taxdata LIKE bapi_incinv_create_tax,
lt_return LIKE TABLE OF bapiret2,
ls_return LIKE bapiret2,
lv_invoicedocnumber LIKE bapi_incinv_fld-inv_doc_no,
lv_fiscalyear LIKE bapi_incinv_fld-fisc_year.
DATA:lv_mwskz LIKE ekpo-mwskz.
DATA:lv_rblgp TYPE rblgp.
*1/3 invoice_ind='X' db_cr_ind='S' (抬头), 2/4 invoice_ind='' db_cr_ind='H' (外部物料相关项目)
*1/2 de_cre_ind ='' , 3/4 de_cre_ind='X' (po采购订单相关项目)
* BAPI赋值
CLEAR input.
READ TABLE input INDEX 1.
IF sy-subrc EQ 0.
ls_headerdata-invoice_ind = 'X'." sp_head-xrech. "发票标志
* ls_headerdata-doc_type = 'RE'."sp_head-blart.
ls_headerdata-doc_date = sy-datum."sp_head-bldat.
ls_headerdata-pstng_date = sy-datum. "sp_head-budat.
ls_headerdata-bline_date = sy-datum. "sp_head-zfbdt. "基线日期/付款计算的起始日期
ls_headerdata-comp_code = '6100'."sp_head-bukrs.
SELECT SINGLE
waers
INTO ls_headerdata-currency
FROM ekko
WHERE ebeln = input-ebeln.
* ls_headerdata-gross_amount = '24'."sp_head-rmwwr. "总金额
* ls_headerdata-del_costs = sp_head-beznk. "未计划的交货费
* ls_headerdata-pmnttrms = sp_head-zterm. "付款条件
* ls_headerdata-alloc_nmbr = sp_head-zuonr. "分配编号/外部发票号码
* ls_headerdata-diff_inv = sp_head-lifnr. "出票方/供应商
* ls_headerdata-ref_doc_no = sp_head-xblnr.
ls_headerdata-header_txt = input-bktxt."'123'."sp_head-bktxt.
ls_headerdata-item_text = input-sgtxt."'456'."sp_head-sgtxt.
ENDIF.
CLEAR lv_rblgp.
LOOP AT input.
lv_rblgp = lv_rblgp + 1.
CLEAR lv_mwskz.
SELECT SINGLE
mwskz
meins
INTO (lv_mwskz,ls_itemdata-po_unit)
FROM ekpo
WHERE ebeln = input-ebeln
AND ebelp = input-ebelp.
ls_headerdata-gross_amount = ls_headerdata-gross_amount + input-wrbtr.
ls_itemdata-invoice_doc_item = lv_rblgp."ls_poitem-buzei. "发票行项目号
ls_itemdata-po_number = input-ebeln."'4500038014'."ls_poitem-ebeln.
ls_itemdata-po_item = input-ebelp."'10'."ls_poitem-ebelp.
SELECT SINGLE
belnr
gjahr
buzei
INTO (ls_itemdata-ref_doc,ls_itemdata-ref_doc_year,ls_itemdata-ref_doc_it )
FROM ekbe
WHERE ebeln = input-ebeln
AND ebelp = input-ebelp
AND belnr = input-mblnr.
* ls_itemdata-ref_doc = '5000188866'."ls_poitem-lfbnr.
* ls_itemdata-ref_doc_year = '2016'."ls_poitem-lfgja.
* ls_itemdata-ref_doc_it = '1'."ls_poitem-lfpos.
ls_itemdata-item_amount = input-wrbtr."'24'."ls_poitem-wrbtr.
ls_itemdata-quantity = input-menge."'2'."ls_poitem-menge.
* ls_itemdata-po_unit = 'EA'."ls_poitem-meins.
ls_itemdata-tax_code = lv_mwskz."ls_poitem-mwskz.
APPEND ls_itemdata TO lt_itemdata.
CLEAR: ls_itemdata.
" LOOP AT tp_baitem INTO ls_baitem.
ls_materialdata-invoice_doc_item = lv_rblgp."ls_baitem-buzei.
ls_materialdata-material = input-matnr."'VBJHH05000000000'."ls_baitem-matnr.
ls_materialdata-val_area = '6100'."ls_baitem-bwkey. "评估范围/工厂
ls_materialdata-valuation_type = '6100'."ls_baitem-bwtar. "评估类型
ls_materialdata-db_cr_ind = 'S'."ls_baitem-shkzg. "借方/贷方标识
ls_materialdata-item_amount = '0'."ls_baitem-wrbtr.
ls_materialdata-quantity = input-menge."ls_baitem-menge.
SELECT SINGLE
meins
INTO ls_materialdata-base_uom
FROM mara
WHERE matnr = input-matnr.
* ls_materialdata-base_uom = 'EA'."ls_baitem-meins.
ls_materialdata-tax_code = lv_mwskz."ls_baitem-mwskz.
APPEND ls_materialdata TO lt_materialdata.
CLEAR: ls_materialdata.
ls_taxdata-tax_code = lv_mwskz."ls_taitem-mwskz.
" ls_taxdata-tax_amount = ''."ls_taitem-wrbtr.
APPEND ls_taxdata TO lt_taxdata.
CLEAR: ls_taxdata.
ENDLOOP.
CALL FUNCTION 'BAPI_INCOMINGINVOICE_PARK'
EXPORTING
headerdata = ls_headerdata
* ADDRESSDATA =
IMPORTING
invoicedocnumber = lv_invoicedocnumber
fiscalyear = lv_fiscalyear
TABLES
itemdata = lt_itemdata
* ACCOUNTINGDATA =
* GLACCOUNTDATA =
materialdata = lt_materialdata
taxdata = lt_taxdata
* WITHTAXDATA =
* VENDORITEMSPLITDATA =
return = lt_return.
IF lv_invoicedocnumber IS INITIAL OR lv_fiscalyear IS INITIAL.
vp_eind = 'X'.
ENDIF.
IF vp_eind = 'X'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
code = '1'.
LOOP AT lt_return INTO ls_return WHERE type = 'E'.
IF message IS INITIAL.
message = ls_return-message.
ELSE.
CONCATENATE message ';' ls_return-message INTO message.
ENDIF.
CONCATENATE '预制发票失败:' message INTO message.
ENDLOOP.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
code = '0'.
CONCATENATE '预制发票成功,发票号:' lv_invoicedocnumber '发票年度:' lv_fiscalyear INTO message.
ENDIF.
ENDFUNCTION.
函数使用五:MIR7 发票预制 BAPI_INCOMINGINVOICE_PARK的更多相关文章
- Python 进程线程协程 GIL 闭包 与高阶函数(五)
Python 进程线程协程 GIL 闭包 与高阶函数(五) 1 GIL线程全局锁 线程全局锁(Global Interpreter Lock),即Python为了保证线程安全而采取的独立线程运行的 ...
- resize函数有五种插值算法
转自http://blog.csdn.net/fengbingchun/article/details/17335477 最新版OpenCV2.4.7中,cv::resize函数有五种插值算法:最近邻 ...
- 第196天:js---调用函数的五种方式
一.普通方式 /*普通模式*/ // 声明一个函数,并调用 function func() { console.log("Hello World"); } func(); 二.函数 ...
- matlab自定义函数的五种表示(前2种重点)
1.命令文件/函数文件+函数文件:多个M文件 2.函数文件+子函数:一个M文件 3. inline:无需M文件 4.符号表达式+subs方式:无需M文件 5.字符串+subs方式:无需M文件 第一种: ...
- C# 中奇妙的函数–6. 五个序列聚合运算(Sum, Average, Min, Max,Aggregate)
今天,我们将着眼于五个用于序列的聚合运算.很多时候当我们在对序列进行操作时,我们想要做基于这些序列执行某种汇总然后,计算结果. Enumerable 静态类的LINQ扩展方法可以做到这一点 .就像之前 ...
- python函数(五)
函数 1.函数基本语法及特性 背景提要 现在老板让你写一个监控程序,监控服务器的系统状况,当cpu\memory\disk等指标的使用量超过阀值时即发邮件报警, 你掏空了所有的知识量,写出了以下代码 ...
- Scala 函数(五)
函数是一组一起执行一个任务的语句. 您可以把代码划分到不同的函数中.如何划分代码到不同的函数中是由您来决定的,但在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的. Scala 有函数和方法, ...
- javascript调用Flash里对象的方法(函数)搞了五个小时。
搞了几个小时后,才发现,之前走的路是错的. 今天在Firefox浏览器上测试一个javascript调用Flash中的一个对象的方法时遇到问题了, 一搞就整整搞了一个下午. 我记得之前我用Flash8 ...
- python第十四课--排序及自定义函数之自定义函数(案例五)
演示函数的定义和使用细节: 默认参数:#在设计自定义函数的时候,就存在一个默认值,就算在调用的时候不显示的传入实参,也不会报错.#会用默认值来代替参与后期的运算 def m1(name='张三',ag ...
随机推荐
- Paper Reviews and Presentations
Copied from Advanced Computer Networks, Johns Hopkins University. Paper Reviews and Presentations Ea ...
- 常用模块(json/pickle/shelve/XML)
一.json模块(重点) 一种跨平台的数据格式 也属于序列化的一种方式 介绍模块之前,三个问题: 序列化是什么? 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化. 反序列化又是什么? 将 ...
- PHP变量的值类型和引用类型
PHP 变量在内存中保存的并不直接是值的内容而是值的地址.比如: $a = 1; 从表面上看起来似乎是 $a 直接存储了 1 这个值.但是实际情况是,PHP 解释器创建了变量 $a , 将值 1 存入 ...
- Java 数据库篇
一.简易封装JDBC工具类: package com.jackie.MyBatis.main; import java.sql.Connection; import java.sql.DriverMa ...
- 跳跳虎回家(国庆10.1模拟赛T2)
题目: [题目描述] 跳跳虎在外面出去玩忘了时间,现在他需要在最短的时间内赶回家. 跳跳虎所在的世界可以抽象成一个含有 n 个点的图(点编号从 1 到 n ),跳跳虎现在在 1 号点,跳跳虎的家在 n ...
- XML简单入门
1.xml文件的第一句为<?xml version="1.0" ?> xml 1.0版本和1.1版本有较大不同,且1.1版本向下不可兼容,故使用version 1.0 ...
- The content of element type "web-app" must match "(icon?,display-name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,servlet- mapping*,session-config?,mime-map
修改了一下web.xml,加入了一个<filter>,然后就报这样的错??? The content of element type "web-app" must ma ...
- JDK中关于BIO,NIO,AIO,同步,异步介绍
在理解什么是BIO,NIO,AIO之前,我们首先需要了解什么是同步,异步,阻塞,非阻塞.假如我们现在要去银行取钱: 同步 : 自己亲自出马持银行卡到银行取钱(使用同步IO时,Java自己处理IO读写) ...
- 《剑指offer》第四十二题(连续子数组的最大和)
// 面试题42:连续子数组的最大和 // 题目:输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整 // 数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n). #in ...
- Codeforces 101572 D - Distinctive Character
D - Distinctive Character 思路:bfs 使最大的匹配数最小,转换一下,就是使最小的不匹配数最大,用bfs找最大的距离 代码: #pragma GCC optimize(2) ...