引自: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的更多相关文章

  1. Python 进程线程协程 GIL 闭包 与高阶函数(五)

    Python 进程线程协程 GIL 闭包 与高阶函数(五) 1 GIL线程全局锁 ​ 线程全局锁(Global Interpreter Lock),即Python为了保证线程安全而采取的独立线程运行的 ...

  2. resize函数有五种插值算法

    转自http://blog.csdn.net/fengbingchun/article/details/17335477 最新版OpenCV2.4.7中,cv::resize函数有五种插值算法:最近邻 ...

  3. 第196天:js---调用函数的五种方式

    一.普通方式 /*普通模式*/ // 声明一个函数,并调用 function func() { console.log("Hello World"); } func(); 二.函数 ...

  4. matlab自定义函数的五种表示(前2种重点)

    1.命令文件/函数文件+函数文件:多个M文件 2.函数文件+子函数:一个M文件 3. inline:无需M文件 4.符号表达式+subs方式:无需M文件 5.字符串+subs方式:无需M文件 第一种: ...

  5. C# 中奇妙的函数–6. 五个序列聚合运算(Sum, Average, Min, Max,Aggregate)

    今天,我们将着眼于五个用于序列的聚合运算.很多时候当我们在对序列进行操作时,我们想要做基于这些序列执行某种汇总然后,计算结果. Enumerable 静态类的LINQ扩展方法可以做到这一点 .就像之前 ...

  6. python函数(五)

    函数 1.函数基本语法及特性 背景提要 现在老板让你写一个监控程序,监控服务器的系统状况,当cpu\memory\disk等指标的使用量超过阀值时即发邮件报警, 你掏空了所有的知识量,写出了以下代码 ...

  7. Scala 函数(五)

    函数是一组一起执行一个任务的语句. 您可以把代码划分到不同的函数中.如何划分代码到不同的函数中是由您来决定的,但在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的. Scala 有函数和方法, ...

  8. javascript调用Flash里对象的方法(函数)搞了五个小时。

    搞了几个小时后,才发现,之前走的路是错的. 今天在Firefox浏览器上测试一个javascript调用Flash中的一个对象的方法时遇到问题了, 一搞就整整搞了一个下午. 我记得之前我用Flash8 ...

  9. python第十四课--排序及自定义函数之自定义函数(案例五)

    演示函数的定义和使用细节: 默认参数:#在设计自定义函数的时候,就存在一个默认值,就算在调用的时候不显示的传入实参,也不会报错.#会用默认值来代替参与后期的运算 def m1(name='张三',ag ...

随机推荐

  1. Gitflow 视频讲解

      How to use a scalable Git branching model called Gitflow   git视频合集列表   github大本营   gitflow中文备忘清单   ...

  2. ExceptionLogger

    应用1:webconfig.cs中设置 public static class WebApiConfig { public static void Register(HttpConfiguration ...

  3. 5、web站点架构模式简介及Nginx

    LB Cluster: 提升系统容量的方式: scale up:向上扩展 scale out:向外扩展 LVS工作在内核中,本身的数量不受套接字数量限制,利用LVS做调度器,优化得当的话,并发数量可以 ...

  4. 爬虫系列之requests

    爬取百度内容: import requests url = "https://www.baidu.com" if __name__ == '__main__': try: kv = ...

  5. Codeforces Round #367 (Div. 2) D. Vasiliy's Multiset(01字典树求最大异或值)

    http://codeforces.com/contest/706/problem/D 题意:有多种操作,操作1为在字典中加入x这个数,操作2为从字典中删除x这个数,操作3为从字典中找出一个数使得与给 ...

  6. _itemmod_currency_like

    设置物品掉落模式为货币类型功能:掉落的时候 所有人都可以拿,就像公正徽章,每个人都会获得一个.小技巧:配合DBC使用,可以将该道具其显示在角色栏的货币中.1.转存item_template,在item ...

  7. 在使用Java8并行流时的问题分析

    最近在使用Java8的并行流时遇到了坑,线上排查问题时花了较多时间,分享出来与大家一起学习与自查 // 此处为坑 List<Java8Demo> copy = Lists.newArray ...

  8. 使用ajax无法跨源问题总结

    参考文章: 浏览器同源政策及其规避方法 跨域资源共享 CORS 详解 使用jQuery实现跨域提交表单数据 <form action="http://v.juhe.cn/weather ...

  9. /usr/bin/perl:bad interpreter:No such file or directory 的解决办法

    yum -y install gcc gcc-c++ perl make kernel-headers kernel-devel 可能会提示:Cannot find a valid baseurl f ...

  10. python测试框架&&数据生成&&工具最全资源汇总

    xUnit frameworks 单元测试框架frameworks 框架unittest - python自带的单元测试库,开箱即用unittest2 - 加强版的单元测试框架,适用于Python 2 ...