*&---------------------------------------------------------------------* *& 包含 ZBAPI_MIR7 *&---------------------------------------------------------------------* FORM FRM_MIR7_CREATE TABLES PT_ITEM STRUCTURE ZSMM0030 USING PS_HEAD TYPE ZSMM0029 CHANGING P_RETURN TYPE ZSMM_RFC_RETURN. DATA:LS_HEADERDATA TYPE BAPI_INCINV_CREATE_HEADER, LT_ITEMDATA TYPE STANDARD TABLE OF BAPI_INCINV_CREATE_ITEM, LS_ITEMDATA TYPE BAPI_INCINV_CREATE_ITEM, LT_RETURN TYPE STANDARD TABLE OF BAPIRET2, LS_RETURN TYPE BAPIRET2, LV_INVOICEDOCNUMBER TYPE BAPI_INCINV_FLD-INV_DOC_NO, LV_FISCALYEAR TYPE BAPI_INCINV_FLD-FISC_YEAR, LV_GROSS_AMOUNT TYPE BAPI_RMWWR, LT_TAX TYPE TABLE OF BAPI_INCINV_CREATE_TAX. CLEAR LS_HEADERDATA. IF PS_HEAD-VORGANG = '1'. LS_HEADERDATA-INVOICE_IND = 'X'. "发票 ENDIF. IF PS_HEAD-VORGANG = '2'. LS_HEADERDATA-INVOICE_IND = ''. "贷项 ENDIF. LS_HEADERDATA-DOC_TYPE = 'RE'. LS_HEADERDATA-DOC_DATE = PS_HEAD-BLDAT. "凭证日期 LS_HEADERDATA-PSTNG_DATE = PS_HEAD-BUDAT. "发票日期 LS_HEADERDATA-HEADER_TXT = PS_HEAD-ZZTXT. "抬头文本 LS_HEADERDATA-DEL_COSTS = PS_HEAD-ZH01. "计划外交货成本。 LS_HEADERDATA-COMP_CODE = PS_HEAD-BUKRS. "公司代码 LS_HEADERDATA-DIFF_INV = PS_HEAD-LIFRE . " 供应商编码 LS_HEADERDATA-CURRENCY = PS_HEAD-WAERS. "货币 LS_HEADERDATA-PMNTTRMS = PS_HEAD-ZTERM. "付款条件。 IF PS_HEAD-MWSKZ EQ 'J0'. LS_HEADERDATA-CALC_TAX_IND = 'X'. "J0默认不计税 ELSE. LT_TAX = VALUE #( BASE LT_TAX ( TAX_CODE = PS_HEAD-MWSKZ TAX_AMOUNT = PS_HEAD-WMWST ) ). ENDIF. LS_HEADERDATA-GROSS_AMOUNT = PS_HEAD-WRBTR." 总金额(含税) 行项目含税金额之和。 LS_HEADERDATA-HEADER_TXT = PS_HEAD-ZH02." 收票说明 LS_HEADERDATA-ALLOC_NMBR = 'SRM'." SRM创建的预制发票标识 CLEAR LV_GROSS_AMOUNT. REFRESH LT_ITEMDATA. DATA LV_RBLGP TYPE RBLGP. LOOP AT PT_ITEM INTO DATA(LS_INVINFO). CLEAR:LS_ITEMDATA. LV_RBLGP = LV_RBLGP + 10. LS_ITEMDATA-INVOICE_DOC_ITEM = LV_RBLGP. "行号 LS_ITEMDATA-PO_NUMBER = LS_INVINFO-EBELN. "采购订单号 LS_ITEMDATA-PO_ITEM = LS_INVINFO-EBELP. "采购订单行号 LS_ITEMDATA-REF_DOC_YEAR = LS_INVINFO-ZI01+0(4). "参考凭证号. "需要为采购订单收货的年份 LS_ITEMDATA-REF_DOC = LS_INVINFO-ZI01+4(10). "参考凭证号. "需要为采购订单收货的物料凭证号 LS_ITEMDATA-REF_DOC_IT = LS_INVINFO-ZI01+14(4). "参考凭证号. "需要为采购订单收货的物料凭证行项目号 LS_ITEMDATA-ITEM_AMOUNT = LS_INVINFO-WRBTR. "金额(净价) LS_ITEMDATA-QUANTITY = LS_INVINFO-ERFMG. "数量 LS_ITEMDATA-QUANTITY = ABS( LS_INVINFO-ERFMG ). "数量 LS_ITEMDATA-PO_UNIT = LS_INVINFO-ERFME. "输入单位 * ls_itemdata-po_pr_qnt = abs( ls_invinfo-menge ). "数量 * ls_itemdata-po_pr_uom = ls_invinfo-meins. "输入单位 LS_ITEMDATA-TAX_CODE = LS_INVINFO-MWSKZ. "税别 SELECT SINGLE ISOCODE INTO LS_ITEMDATA-PO_PR_UOM_ISO FROM T006 WHERE MSEHI = LS_INVINFO-ERFME . APPEND LS_ITEMDATA TO LT_ITEMDATA. CLEAR LS_ITEMDATA. ENDLOOP. CALL FUNCTION 'BAPI_INCOMINGINVOICE_PARK' EXPORTING HEADERDATA = LS_HEADERDATA IMPORTING INVOICEDOCNUMBER = LV_INVOICEDOCNUMBER FISCALYEAR = LV_FISCALYEAR TABLES ITEMDATA = LT_ITEMDATA TAXDATA = LT_TAX RETURN = LT_RETURN. IF LT_RETURN IS NOT INITIAL. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. P_RETURN-TYPE = 'E'. P_RETURN-MESSAGE = '预制保存失败:'. LOOP AT LT_RETURN INTO LS_RETURN WHERE TYPE = 'E'. CONCATENATE P_RETURN-MESSAGE LS_RETURN-MESSAGE INTO P_RETURN-MESSAGE . ENDLOOP. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = ABAP_TRUE. P_RETURN-TYPE = 'S'. P_RETURN-MESSAGE = '预制保存成功'. P_RETURN-BELNR = LV_INVOICEDOCNUMBER. P_RETURN-GJAHR = LV_FISCALYEAR. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING INPUT = LV_INVOICEDOCNUMBER IMPORTING OUTPUT = LV_INVOICEDOCNUMBER. ENDIF. ENDFORM.
网友评论