壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 924|回复: 1

[ABAP] BAPI_INCOMINGINVOICE_CREATE生成发票凭证报错

[复制链接]
发表于 2012/5/7 17:58:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
报错信息:没有指定iso-codeSPACE的测量单位。
意思是不是我的项目明细里有的单位没有指定啊?但是我已经逐行 SELECT SINGLE MEINS FROM EKPO
  INTO I_ITEM-PO_UNIT
  WHERE EBELN EQ I_ITAB-EBELN "采购凭证号
        AND   EBELP EQ I_ITAB-EBELP. "采购凭证的项目编号   赋值了啊。
源程序-----------------------------------------------------------------------
FUNCTION ZFS_GENFIBILL .
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     VALUE(I_HEADER) TYPE  BAPI_INCINV_CREATE_HEADER
*"  EXPORTING
*"     VALUE(W_BELNR) TYPE  BAPI_INCINV_FLD-INV_DOC_NO
*"     VALUE(W_GJAHR) TYPE  BAPI_INCINV_FLD-FISC_YEAR
*"     VALUE(LOC_MSG) TYPE  SYMSGV
*"  TABLES
*"      I_RETURN STRUCTURE  BAPIRET2 OPTIONAL
*"      I_ITEM STRUCTURE  BAPI_INCINV_CREATE_ITEM
*"      I_ACCOUNTINGDATA STRUCTURE  BAPI_INCINV_CREATE_ACCOUNT OPTIONAL
*"      I_TAX STRUCTURE  BAPI_INCINV_CREATE_TAX OPTIONAL
*"      I_ITAB STRUCTURE  ZFS_MIRO OPTIONAL
*"----------------------------------------------------------------------
*
*  日期:2007-07-18
data W_COUNTER TYPE I.
data lv_count TYPE I.
DATA: wmenge LIKE iseg-menge,
error_flag.
*....
*....
*----------------------------------------------------------------------*
* Populate Item Table from item data in data file
lv_count = 0.
LOOP AT I_ITAB.
*   Processing for header records of data file.
  lv_count = lv_count + 1.
* ...........
* ...........
* Item Data
  I_ITEM-INVOICE_DOC_ITEM = lv_COUNT.        "发票凭证中的凭证项目
  I_ITEM-PO_NUMBER    = I_ITAB-EBELN.            "采购订单号
  I_ITEM-PO_ITEM      = I_ITAB-EBELP.            "采购凭证的项目编号
  I_ITEM-TAX_CODE     = I_ITAB-MWSKZ2.           "税码
  I_ITEM-ITEM_AMOUNT  = I_ITAB-NETWR.         "凭证货币金额
  I_ITEM-QUANTITY = I_ITAB-MENGE.            "数量
  I_ITEM-REF_DOC = I_ITAB-REF_DOC.           "参考凭证的凭证号
  I_ITEM-REF_DOC_YEAR = I_ITAB-REF_DOC_YEAR. "当前期间的会计年度
  I_ITEM-REF_DOC_IT = I_ITAB-REF_DOC_IT.     "参考凭证的项目
  I_ITEM-ITEM_TEXT = I_ITAB-ITEM_TEXT.           "项目文本
  SELECT SINGLE MEINS FROM EKPO
  INTO I_ITEM-PO_UNIT
  WHERE EBELN EQ I_ITAB-EBELN "采购凭证号
        AND   EBELP EQ I_ITAB-EBELP. "采购凭证的项目编号
  I_ACCOUNTINGDATA-PO_UNIT = I_ITEM-PO_UNIT.   "订单单位
  ENDIF.
  APPEND I_ITEM.
ENDLOOP.
*----------------------------------------------------------------------*
*   The following coding is to solve the problem
*   mentioned in OSS Note 518338.
*   Same PO item within several invoice items.
SORT I_ITEM BY PO_NUMBER PO_ITEM.
LOOP AT I_ITEM.
  ON CHANGE OF I_ITEM-PO_NUMBER OR I_ITEM-PO_ITEM.
    W_COUNTER = 1.
    LOOP AT I_ITEM WHERE PO_NUMBER = I_ITEM-PO_NUMBER
                     AND PO_ITEM   = I_ITEM-PO_ITEM.
      IF W_COUNTER EQ 1.
        I_ACCOUNTINGDATA-SERIAL_NO = '01'.
        I_ACCOUNTINGDATA-XUNPL     = ' '.
      ELSE.
        I_ACCOUNTINGDATA-SERIAL_NO = ' '.
        I_ACCOUNTINGDATA-XUNPL     = 'X'.
      ENDIF.
      MODIFY I_ACCOUNTINGDATA
       TRANSPORTING SERIAL_NO XUNPL
      WHERE INVOICE_DOC_ITEM = I_ITEM-INVOICE_DOC_ITEM.
      W_COUNTER = W_COUNTER + 1.
    ENDLOOP.
*     To solve the repetition of PO item in subsequent invoices.
  ELSEIF SY-TABIX EQ 1.
    W_COUNTER = 1.
    LOOP AT I_ITEM WHERE PO_NUMBER = I_ITEM-PO_NUMBER
                     AND PO_ITEM   = I_ITEM-PO_ITEM.
      IF W_COUNTER EQ 1.
        I_ACCOUNTINGDATA-SERIAL_NO = '01'.
        I_ACCOUNTINGDATA-XUNPL     = ' '.
      ELSE.
        I_ACCOUNTINGDATA-SERIAL_NO = ' '.
        I_ACCOUNTINGDATA-XUNPL     = 'X'.
      ENDIF.
      MODIFY I_ACCOUNTINGDATA
       TRANSPORTING SERIAL_NO XUNPL
      WHERE INVOICE_DOC_ITEM = I_ITEM-INVOICE_DOC_ITEM.
      W_COUNTER = W_COUNTER + 1.
    ENDLOOP.
  ENDON.
ENDLOOP.
*   Changes over for  OSS Note 518338.
SORT I_ITEM BY INVOICE_DOC_ITEM PO_NUMBER PO_ITEM.
CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE'
  EXPORTING
    HEADERDATA       = I_HEADER
  IMPORTING
    INVOICEDOCNUMBER = W_BELNR
    FISCALYEAR       = W_GJAHR
  TABLES
    ITEMDATA         = I_ITEM
    ACCOUNTINGDATA   = I_ACCOUNTINGDATA
    TAXDATA          = I_TAX
    RETURN           = I_RETURN.
if sy-subrc <>  0.
  "message e999(re) with  'Problem occured'.
else.
  loop at I_RETURN.
    if not I_RETURN is initial.
      if I_RETURN-type = 'A' or I_RETURN-type = 'E'.
        error_flag = 'X'.
      endif.
      CONCATENATE LOC_MSG  I_RETURN-message INTO LOC_MSG.
    endif.
  endloop.
  if error_flag = 'X'.
    "message e999(re) with  'Problem occured'.
    rollback work.
  else.
    "Return Table from BAPI call is empty
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        WAIT   = 'X'
      IMPORTING
        RETURN = I_RETURN.
  endif.
endif.
ENDFUNCTION.



该贴已经同步到 xiaoerp的微博
发表于 2012/9/26 15:41:33 | 显示全部楼层
请问这个问题解决了吗?是因为收货单位和订单单位不一致导致的吗?\n\n 来自 TKTIK 的新浪微博
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 20:13 , Processed in 0.011533 second(s), 14 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表