【修正】销售开票BAPI实例:BAPI_BILLINGDOC_CREATEMULTIPLE
生活随笔
收集整理的這篇文章主要介紹了
【修正】销售开票BAPI实例:BAPI_BILLINGDOC_CREATEMULTIPLE
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
FORM FRM_GENERATE_BILLING .
*-------------------------------------------------------------------------
* EKBE部分 生成VF01憑證
*-------------------------------------------------------------------------DATA: LT_BILLINGDATAIN TYPE TABLE OF BAPIVBRK,LS_BILLINGDATAIN TYPE BAPIVBRK,LT_SUCCESS TYPE TABLE OF BAPIVBRKSUCCESS,LS_SUCCESS TYPE BAPIVBRKSUCCESS,LT_RETURN2 TYPE TABLE OF BAPIRET1,LS_RETURN2 TYPE BAPIRET1.DATA: LV_FKART TYPE VBRK-FKART,LV_VBTYP TYPE VBRK-VBTYP.* BAPI賦值LOOP AT GT_ALV INTO GS_ALV WHERE SOURCE = 'EKBE' AND JSPRI NE 0.CLEAR: LV_VBTYP,LV_VBTYP.LS_BILLINGDATAIN-DOC_NUMBER = GS_ALV-EBELN. "采購訂單LS_BILLINGDATAIN-ITM_NUMBER = GS_ALV-EBELP. "采購訂單行項目LS_BILLINGDATAIN-REF_DOC = GS_ALV-BELNR. "交貨單號LS_BILLINGDATAIN-REF_ITEM = GS_ALV-BUZEI. "交貨單行項目SELECT SINGLE FKAIV VBTYP INTO (LV_FKART,LV_VBTYP) FROM LIKP WHERE VBELN = GS_ALV-BELNR.LS_BILLINGDATAIN-ORDBILLTYP = LV_FKART.LS_BILLINGDATAIN-REF_DOC_CA = LV_VBTYP.SELECT SINGLE VKORG VTWEG SPART KUNNRINTO (LS_BILLINGDATAIN-SALESORG,LS_BILLINGDATAIN-DISTR_CHAN,LS_BILLINGDATAIN-DIVISION,LS_BILLINGDATAIN-SHIP_TO)FROM EKPVWHERE EBELN = GS_ALV-EBELNAND EBELP = GS_ALV-EBELP.LS_BILLINGDATAIN-SOLD_TO = LS_BILLINGDATAIN-SHIP_TO. "售達方LS_BILLINGDATAIN-BILL_TO = LS_BILLINGDATAIN-SHIP_TO. "開票方LS_BILLINGDATAIN-PAYER = LS_BILLINGDATAIN-SHIP_TO. "付款方SELECT SINGLE A~ZTERM A~INCO1 A~INCO2 B~WERKSINTO (LS_BILLINGDATAIN-PAYMENT_TERMS,LS_BILLINGDATAIN-INCOTERMS1,LS_BILLINGDATAIN-INCOTERMS2,LS_BILLINGDATAIN-PLANT)FROM EKKO AS AINNER JOIN EKPO AS B ON B~EBELN = A~EBELNWHERE B~EBELN = GS_ALV-EBELNAND B~EBELP = GS_ALV-EBELP.LS_BILLINGDATAIN-MATERIAL = GS_ALV-MATNR.LS_BILLINGDATAIN-REQ_QTY = ABS( GS_ALV-JSSHL ).LS_BILLINGDATAIN-SALES_UNIT = GS_ALV-MEINS.LS_BILLINGDATAIN-BILL_DATE = G_POST_DATE.APPEND LS_BILLINGDATAIN TO LT_BILLINGDATAIN.CLEAR: LS_BILLINGDATAIN.ENDLOOP.SORT LT_BILLINGDATAIN BY REF_DOC REF_ITEM.REFRESH: GT_ZTFI014,LT_RETURN,LT_SUCCESS.CLEAR:LS_RETURN,LS_SUCCESS.CALL FUNCTION 'BAPI_BILLINGDOC_CREATEMULTIPLE'TABLESBILLINGDATAIN = LT_BILLINGDATAINRETURN = LT_RETURNSUCCESS = LT_SUCCESS.IF LT_SUCCESS[] IS INITIAL.CP_EIND = 'X'.ENDIF.IF CP_EIND EQ 'X'.CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.ELSE.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGWAIT = 'X'."返回成功的發票號LOOP AT LT_SUCCESS INTO LS_SUCCESS.CLEAR: GS_LOG.GS_LOG-DOCNO = LS_SUCCESS-BILL_DOC.GS_LOG-MESSAGE = LS_SUCCESS-BILL_DOC_ITEM.APPEND GS_LOG TO GT_LOG.*---插入值到表ZTFI014CLEAR: GS_ZTFI014.GS_ZTFI014-TCODE = SY-TCODE.GS_ZTFI014-SEQNO = P_DATUM.GS_ZTFI014-OBJNR = P_BUKR2.GS_ZTFI014-GJAHR = P_DATUM(4).GS_ZTFI014-BUKRS = P_BUKRS.GS_ZTFI014-BELNR = LS_SUCCESS-BILL_DOC.APPEND GS_ZTFI014 TO GT_ZTFI014.CLEAR: GS_LOG,GS_ZTFI014.ENDLOOP.READ TABLE LT_SUCCESS INTO LS_SUCCESS INDEX 1.*----處理ztfi014表SORT GT_ZTFI014 BY BELNR.DELETE ADJACENT DUPLICATES FROM GT_ZTFI014 COMPARING BELNR.INSERT ZTFI014 FROM TABLE GT_ZTFI014 ACCEPTING DUPLICATE KEYS.ENDIF.LOOP AT LT_RETURN INTO LS_RETURN.CLEAR GS_LOG.GS_LOG-TYPE = LS_RETURN2-TYPE.GS_LOG-DOCNO = INVOICEDOCNUMBER.CALL FUNCTION 'MESSAGE_TEXT_BUILD'EXPORTINGMSGID = LS_RETURN-IDMSGNR = LS_RETURN-NUMBERMSGV1 = LS_RETURN-MESSAGE_V1MSGV2 = LS_RETURN-MESSAGE_V2MSGV3 = LS_RETURN-MESSAGE_V3MSGV4 = LS_RETURN-MESSAGE_V4IMPORTINGMESSAGE_TEXT_OUTPUT = GS_LOG-MESSAGE.CASE GS_LOG-TYPE.WHEN 'S'.GS_LOG-ICON = '3'.WHEN 'W'.GS_LOG-ICON = '2'.WHEN 'E' OR 'A'.GS_LOG-ICON = '1'.WHEN OTHERS.ENDCASE.APPEND GS_LOG TO GT_LOG.CLEAR LS_RETURN2.ENDLOOP.IF CP_EIND EQ 'X'."billing憑證 .MESSAGE E001(00) WITH 'VF01生成billing憑證失敗,請點擊顯示消息查看詳細信息!'.ENDIF.
ENDFORM. " FRM_GENERATE_BILLING
銷售開票BAPI實例:BAPI_BILLINGDOC_CREATEMULTIPLE
請問這篇有啥問題嗎?
總結
以上是生活随笔為你收集整理的【修正】销售开票BAPI实例:BAPI_BILLINGDOC_CREATEMULTIPLE的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【整理】ABAP开发中的屏幕跳转
- 下一篇: 【整理】BADI的查找和使用