zoukankan      html  css  js  c++  java
  • 201704 F-02创建财务凭证

    一、F-02 创建财务凭证-BDC 期初余额导入程序

    程序:ZFIU_LDV_F_02_UPLOAD

    创建F-02 凭证:

    *&----------------------------------------------------------------------------------------------------
    
      CALL TRANSACTION 'F-02'
                USING it_bdcdata
                MODE  mode_f
                UPDATE 'S'
                MESSAGES INTO it_bdcmsge.
      READ TABLE it_bdcmsge INDEX 1.
      it_msg_tab-msgtyp = it_bdcmsge-msgtyp.
      it_msg_tab-msgid  = it_bdcmsge-msgid.
      it_msg_tab-msgnr  = it_bdcmsge-msgnr.
      IF it_bdcmsge-msgid NE space.
        CALL FUNCTION 'MESSAGE_TEXT_BUILD'
          EXPORTING
            msgid               = it_bdcmsge-msgid
            msgnr               = it_bdcmsge-msgnr
            msgv1               = it_bdcmsge-msgv1
            msgv2               = it_bdcmsge-msgv2
            msgv3               = it_bdcmsge-msgv3
            msgv4               = it_bdcmsge-msgv4
          IMPORTING
            message_text_output = msg_text.
        it_msg_tab-text   = msg_text.
      ELSE.
        it_msg_tab-text   = '======成功创建======'.
      ENDIF.
    *  MOVE it_upload_data-col01 TO it_msg_tab-saknr.
      APPEND it_msg_tab.
    *&----------------------------------------------------------------------------------------------------

     

    SAPMF05A

    100

    X

       
     

    0

     

    BDC_OKCODE

    /00

     

    0

     

    BKPF-BLDAT

    20170411

     

    0

     

    BKPF-BLART

    SA

     

    0

     

    BKPF-BUKRS

    CV00

     

    0

     

    BKPF-BUDAT

    20170411

     

    0

     

    BKPF-MONAT

    4

     

    0

     

    BKPF-WAERS

    CNY

     

    0

     

    BKPF-XBLNR

    参照

     

    0

     

    BKPF-BKTXT

    凭证抬头文本

     

    0

     

    BKPF-KURSF

    1

     

    0

     

    RF05A-NEWBS

    40

     

    0

     

    RF05A-NEWKO

    6608990200

     

    0

     

    RF05A-NEWUM

    SAPMF05A

    300

    X

       
     

    0

     

    BDC_OKCODE

    /00

     

    0

     

    BSEG-WRBTR

    30

     

    0

     

    BSEG-ZUONR

     

    0

     

    BSEG-SGTXT

     

    0

     

    RF05A-NEWBS

     

    0

     

    RF05A-NEWKO

    SAPLKACB

    2

    X

       
     

    0

     

    BDC_OKCODE

    #NAME?

    SAPMF05A

    300

    X

       
     

    0

     

    BDC_OKCODE

    #NAME?

     

    0

     

    BSEG-WRBTR

     

    0

     

    BSEG-ZUONR

     

    0

     

    BSEG-SGTXT

    SAPLKACB

    2

    X

       
     

    0

     

    BDC_OKCODE

    #NAME?


    二、BAPI_ACC_DOCUMENT_POST
    创建供应商,客户,总账凭证,

    *&----------------------------------------
    
    FUNCTION zfifm_receipt_posting .
    *"----------------------------------------------------------------------
    *"*"Local interface:
    *"  EXPORTING
    *"     VALUE(ERRCODE) TYPE  CHAR8
    *"     VALUE(ERRDESC) TYPE  CHAR250
    *"  TABLES
    *"      IT_HEAD STRUCTURE  ZSFI_DOC_HEAD OPTIONAL
    *"      IT_ITEM STRUCTURE  ZSFI_DOC_ITEM OPTIONAL
    *"      OT_HEAD STRUCTURE  ZSFI_DOC_HEAD_O OPTIONAL
    *"----------------------------------------------------------------------
      DATA: t_head TYPE STANDARD TABLE OF ztfi_doc_head WITH HEADER LINE,
          t_item TYPE STANDARD TABLE OF ztfi_doc_item WITH HEADER LINE.
      DATA: lt_item TYPE STANDARD TABLE OF ztfi_doc_item WITH HEADER LINE.
      g_datum = sy-datum.
      g_uzeit = sy-uzeit.
    
    *---- Mapping Data
      PERFORM frm_mapping_data TABLES t_head
                        t_item
                        it_head
                        it_item.
    
      LOOP AT t_head.
        idx_tabix = sy-tabix.
    
        CLEAR: lt_item , lt_item[].
        LOOP AT t_item WHERE zsernr = t_head-zsernr.
          MOVE-CORRESPONDING t_item TO lt_item.
          APPEND lt_item.
        ENDLOOP.
    
    *---- 数据检查
        PERFORM frm_check_data1 TABLES lt_item USING t_head.
    
        IF t_head-proce <> ''.
          MODIFY t_head INDEX idx_tabix.
          CONTINUE.
        ENDIF.
    
    *---- 创建会计凭证
        PERFORM frm_create_fi_doc TABLES lt_item USING t_head.
    
        MODIFY t_head INDEX idx_tabix.
      ENDLOOP.
    
      LOOP AT t_head.
        MOVE-CORRESPONDING t_head TO ot_head.
        IF ot_head-proce  = 'W' AND ot_head-belnr <> ''.
          ot_head-proce = 'S'.
        ENDIF.
        APPEND ot_head.
      ENDLOOP.
    
    *---- 自定义表更新
      MODIFY ztfi_doc_head FROM TABLE t_head.
      MODIFY ztfi_doc_item FROM TABLE t_item.
      COMMIT WORK AND WAIT.
    
    *---- 返回码
      IF t_head[] IS NOT INITIAL.
        READ TABLE t_head INDEX 1.
        IF t_head-proce = 'S'.
          errcode = 'S0000000'.
        ELSE.
          errcode = 'E0468001'.
          errdesc = t_head-message.
        ENDIF.
      ENDIF.
    
    ENDFUNCTION.
    
    *&----------------------------------------------------------------------------------------------------
    
    FORM frm_create_fi_doc  TABLES  lt_item  STRUCTURE  ztfi_doc_item
                             USING  wa_head  STRUCTURE  ztfi_doc_head.
      DATA: documentheader    LIKE bapiache09.
      DATA: customercpd       LIKE bapiacpa09.
      DATA: accountgl         TYPE STANDARD TABLE OF bapiacgl09 WITH HEADER LINE,
            accountreceivable TYPE STANDARD TABLE OF bapiacar09 WITH HEADER LINE,
            accountpayable    TYPE STANDARD TABLE OF bapiacap09 WITH HEADER LINE,
            accounttax        TYPE STANDARD TABLE OF bapiactx09 WITH HEADER LINE,
            currencyamount    TYPE STANDARD TABLE OF bapiaccr09 WITH HEADER LINE,
            criteria          TYPE STANDARD TABLE OF bapiackec9 WITH HEADER LINE,
            lt_return         TYPE STANDARD TABLE OF bapiret2 WITH HEADER LINE.
    
      DATA: obj_type  LIKE  bapiache09-obj_type,
            obj_key   LIKE  bapiache09-obj_key,
            obj_sys   LIKE  bapiache09-obj_sys.
    
      documentheader-username   = sy-uname.
      documentheader-doc_type   = wa_head-blart.
      documentheader-header_txt = wa_head-bktxt.
      documentheader-comp_code  = wa_head-bukrs.
      documentheader-doc_date   = wa_head-bldat.
      documentheader-pstng_date = sy-datum."wa_head-budat.
      documentheader-ref_doc_no = wa_head-xblnr.
    
      LOOP AT lt_item.
    
        documentheader-neg_postng = lt_item-xnegp.
    
    *---- 金额
        CLEAR: currencyamount.
        currencyamount-itemno_acc = lt_item-buzei.
        currencyamount-currency   = wa_head-waers.
        currencyamount-amt_doccur = lt_item-wrbtr.
        currencyamount-exch_rate  = wa_head-kursf.
        IF lt_item-shkzg ='H'."  lt_item-bschl = '50' OR lt_item-bschl = '11' OR lt_item-bschl =  '39' OR lt_item-bschl =  '31'.
          currencyamount-amt_doccur = - currencyamount-amt_doccur.
        ENDIF.
        APPEND currencyamount.
    
    
        CASE lt_item-flag.
          WHEN 'D'.
    *---- 客户
            accountreceivable-itemno_acc  = lt_item-buzei.
            accountreceivable-customer = lt_item-hkont.
    *        ACCOUNTRECEIVABLE-gl_account  = lt_item-hkont.
            accountreceivable-item_text   = lt_item-sgtxt.
            accountreceivable-alloc_nmbr  = lt_item-zuonr.
            accountreceivable-bline_date  = lt_item-zfbdt.
            accountreceivable-sp_gl_ind   = lt_item-umskz.
    *        ACCOUNTRECEIVABLE-costcenter  = lt_item-kostl.
            APPEND accountreceivable.
    
    *----- 一次性客户信息
            SELECT SINGLE * FROM kna1 WHERE kunnr = lt_item-hkont.
            IF kna1-xcpdk = 'X'.
              customercpd-name      = lt_item-sgtxt.
              customercpd-city      = lt_item-sgtxt.
              customercpd-country   = 'CN'.
              customercpd-bank_ctry = 'CN'.
            ENDIF.
          WHEN 'K'.
    *---- 供应商
            accountpayable-itemno_acc  = lt_item-buzei.
            accountpayable-vendor_no = lt_item-hkont.
    *        ACCOUNTRECEIVABLE-gl_account  = lt_item-hkont.
            accountpayable-item_text   = lt_item-sgtxt.
            accountpayable-alloc_nmbr  = lt_item-zuonr.
            accountpayable-bline_date  = lt_item-zfbdt.
            accountpayable-sp_gl_ind   = lt_item-umskz.
    *        accountpayable-costcenter  = lt_item-kostl.
            APPEND accountpayable.
    
          WHEN OTHERS.
    *---- 总帐科目
            accountgl-itemno_acc  = lt_item-buzei.
            accountgl-gl_account  = lt_item-hkont.
            accountgl-item_text   = lt_item-sgtxt.
            accountgl-alloc_nmbr  = lt_item-zuonr.
            accountgl-costcenter  = lt_item-kostl.
            APPEND accountgl.
    
        ENDCASE.
      ENDLOOP.
    
    
      CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
        EXPORTING
          documentheader          = documentheader
          customercpd             = customercpd
    *   CONTRACTHEADER          = CONTRACTHEADER
       IMPORTING
          obj_type                = obj_type
          obj_key                 = obj_key
          obj_sys                 = obj_sys
       TABLES
       accountgl               = accountgl
       accountreceivable       = accountreceivable
       accountpayable          = accountpayable
       accounttax              = accounttax
          currencyamount          = currencyamount
    *   CRITERIA                = CRITERIA
    *   VALUEFIELD              = VALUEFIELD
    *   EXTENSION1              = EXTENSION1
          return                  = lt_return
    *   PAYMENTCARD             = PAYMENTCARD
    *   CONTRACTITEM            = CONTRACTITEM
    *   EXTENSION2              = EXTENSION2
    *   REALESTATE              = REALESTATE
    *   ACCOUNTWT               = ACCOUNTWT
                .
    
    
    
      READ TABLE lt_return WITH KEY type = 'E'.
      IF sy-subrc = 0.
        LOOP AT lt_return WHERE type = 'E'.
          wa_head-proce = 'E'.
          CONCATENATE wa_head-message lt_return-message INTO wa_head-message SEPARATED BY ' '.
        ENDLOOP.
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      ELSE.
        wa_head-belnr = obj_key+0(10).
        wa_head-gjahr = obj_key+14(4).
        wa_head-proce = 'S'.
        wa_head-message = '凭证创建成功!'.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait = 'X'.
    
    
      ENDIF.
    ENDFORM.                    "FRM_CREATE_FI_DOC

    三、SE37 函数创建凭证,测试使用


    1.SE37初始界面,

    2.菜单:FUNCTION MODULE-> TEST-> TEST sequences

    3. BAPI_ACC_DOCUMENT_POST

     +BAPI_TRANSACTION_COMMIT  (提交数据)
    *&------------------------------------------------------------------------------------------------

    BAPI_TRANSACTION_COMMIT  (测试)

    *&------------------------------------------------------------------------------------------------

    创建F-02 凭证 测试参数

     

     

    1. 运行第一个函数

     

    得到 财务凭证:100000035



    2.运行第二个函数,提交凭证,

  • 相关阅读:
    Sitecore Digital Marketing System, Part 1: Creating personalized, custom content for site visitors(自定义SiteCore中的 Item的Personalize的Condition) -摘自网络
    Send email alert from Performance Monitor using PowerShell script (检测windows服务器的cpu 硬盘 服务等性能,发email的方法) -摘自网络
    使用Mono Cecil 动态获取运行时数据 (Atribute形式 进行注入 用于写Log) [此文报考 xxx is declared in another module and needs to be imported的解决方法]-摘自网络
    秒杀 ILSpy 等反编译利器 DotNet Resolver
    Nagios:企业级系统监控方案
    C# Asp.net中的AOP框架 Microsoft.CCI, Mono.Cecil, Typemock Open-AOP API, PostSharp -摘自网络 (可以利用反射 Attribute 进行面向切面编程 可以用在记录整个方法的Log方面)
    Windows性能监视器之CPU、硬盘、IO等监控方法详解-摘自网络
    网站防刷方案 -摘自网络
    利用XSD配合XSLT產出特定格式Word檔案 -摘自网络
    asp页面快速找到菜单按钮转向的页面的方法
  • 原文地址:https://www.cnblogs.com/rainysblog/p/6725920.html
Copyright © 2011-2022 走看看