BAPI_INCOMINGINVOICE_CREATE進項稅發票創建,RBKP自定義字段寫入


遇到一個通過BAPI_INCOMINGINVOICE_CREATE寫入進項發票抬頭自定義字段的需求.

研究了一下源代碼和表RBKP的結構,發現SAP提供了一種新的自定義字段寫入邏輯.現做一下記錄.

 

 函數是在form invoice_ext_fields_convert中進行的值轉換.

   lr_header_bapi_ext TYPE REF TO mmiv_si_s_bapi_header_ext,
    lr_gl_acc_items    TYPE REF TO mmiv_si_t_bapi_glaccitm_ext,
    lr_gl_acc_item     TYPE REF TO mmiv_si_s_bapi_glaccitm_ext,
    lr_po_ref_items    TYPE REF TO mmiv_si_t_bapi_supipr_ext,
    lr_po_ref_item     TYPE REF TO mmiv_si_s_bapi_supipr_ext,

抬頭對應的增強結構是 mmiv_si_s_bapi_header_ext.

該結構data字段的類型是MMIV_SI_S_HEADER_INCL_EEW_PS,是被包含在進項發票抬頭表RBKP中的.

在進行數據轉換時用到了XML轉換.

用到了輔助類:CL_CFD_BAPI_MAPPING

 

查看源代碼發現,如果要想向抬頭賦值,extensionin-structure應該是如下格式:MMIV_SI_S_BAPI_HEADER_EXT_+[0,1,2,3,4,5,6,7,8,9]{1,2},

(+[0,1,2,3,4,5,6,7,8,9]{1,2},是指正則表達式,意思是至少存在一個MMIV_SI_S_BAPI_HEADER_EXT_及連接着的0-99的數字.

且在extension中只能有一個符合條件的記錄.結構名稱只要符合要求即可,不需要真地建這么一個結構.

下邊將具體的步驟:

  1. 增強結構MMIV_SI_S_HEADER_INCL_EEW_PS,起到增強rbkp的目的,為了使用bapi,務必通過此方式增強rbkp表.
  2. 補充extension.
  3. 代碼如下:
     
      DATA:lt_extensionin     TYPE TABLE OF bapiparex .
      DATA(lo_bapi_mapping) = cl_cfd_bapi_mapping=>get_instance( ).
      DATA lr_source TYPE REF TO mmiv_si_s_bapi_header_ext."必須用這個類型
      CREATE DATA lr_source.
      lr_source->*-data-xref1_hd  =  p_head-srcsys.
      lr_source->*-data-xref2_hd  =  p_head-srcdocno.
    
      TRY.
    
          CALL METHOD lo_bapi_mapping->map_to_bapiparex_single
            EXPORTING
              ir_source_structure = lr_source
            CHANGING
              ct_bapiparex        = lt_extensionin[].
        CATCH cx_cfd_bapi_mapping .
      ENDTRY.

    然后在調用bapi的時候將lt_extensionin[]賦值給extensionin.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM