KEMBAR78
Bapi Acc Document Post | PDF | Control Flow | Information Age
0% found this document useful (0 votes)
1K views9 pages

Bapi Acc Document Post

This document contains code for posting a document in SAP using BAPI functions. It retrieves document data from a FI document, loops through the line items, and builds the header and line item structures needed for the BAPI_ACC_DOCUMENT_POST function. Key steps include retrieving the document header and line items from the database, mapping fields to the BAPI structures, appending the structures to internal tables, and calling the BAPI to post the document.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1K views9 pages

Bapi Acc Document Post

This document contains code for posting a document in SAP using BAPI functions. It retrieves document data from a FI document, loops through the line items, and builds the header and line item structures needed for the BAPI_ACC_DOCUMENT_POST function. Key steps include retrieving the document header and line items from the database, mapping fields to the BAPI structures, appending the structures to internal tables, and calling the BAPI to post the document.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 9

Y_BAPI_ACC_DOCUMENT_POST_1

*&---------------------------------------------------------------------*
*& Report Y_BAPI_ACC_DOCUMENT_POST
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT y_bapi_acc_document_post_1.

DATA: ls_header TYPE bapiache09.
*
*        move: 'BKPFF' to ls_header-obj_type.
*      call function 'OWN_LOGICAL_SYSTEM_GET'
*        importing
*          own_logical_system = ls_header-obj_sys.
*
*       move: ls_bkpf-glvor to ls_header-bus_act,
*       sy-uname to ls_header-username,
*       <lfs_datos>-bktxt to ls_header-header_txt,
DATA: LV_BELNR TYPE BELNR_D.
data: lv_bukrs TYPE bukrs.

lv_bukrs = 'CGAL'.

LV_BELNR = '0400000000'.
*LV_BELNR = '9400000003'.
*LV_BELNR = '9400000015'.

SELECT SINGLE *
  FROM bkpf
  INTO @DATA(ls_bkpf)
  WHERE bukrs EQ @lv_bukrs AND
        belnr EQ @LV_BELNR AND
*        belnr EQ '9400000025' AND
        gjahr EQ '2021'.

CALL FUNCTION 'OWN_LOGICAL_SYSTEM_GET'
  IMPORTING
    own_logical_system = ls_header-obj_sys.

ls_header-obj_type = 'BKPFF'.
ls_header-bus_act = ls_bkpf-glvor.
ls_header-bus_act = 'RFBU'.
ls_header-username = sy-uname.
ls_header-header_txt = ls_bkpf-bktxt.
ls_header-comp_code = ls_bkpf-bukrs.
ls_header-doc_date = ls_bkpf-bldat.
ls_header-pstng_date = ls_bkpf-budat.
ls_header-doc_type = ls_bkpf-blart.
ls_header-FIS_PERIOD = ls_bkpf-monat.
ls_header-ref_doc_no = ls_bkpf-xblnr.

DATA: lt_return TYPE STANDARD TABLE OF bapiret2.
DATA: lt_currency TYPE TABLE OF bapiaccr09,
      ls_currency TYPE bapiaccr09.

DATA: lt_accountgl  TYPE TABLE OF  bapiacgl09,
      ls_bapiacgl09 TYPE bapiacgl09.

data: lt_BAPIACAR09 TYPE TABLE OF BAPIACAR09,
      ls_BAPIACAR09 TYPE BAPIACAR09.
*--------------------------------------------------------------------*
**--------------------------------------------------------------------*
** Posicion de la moneda
**--------------------------------------------------------------------*
*    move: '001'  to ls_currency-itemno_acc,
*          'EUR' to ls_currency-currency.
*
*    if <lfs_bseg>-shkzg eq 'S'.
*      ls_currency-amt_doccur = '110'.
*    elseif <lfs_bseg>-shkzg eq 'H'.
*      ls_currency-amt_doccur = <lfs_bseg>-wrbtr * -1.
*    else.
*      " nothing to do with default case
*    endif.

*APPEND ls_currency TO lt_currency.
DATA: lt_bseg TYPE STANDARD TABLE OF bseg.

CALL FUNCTION 'FI_DOCUMENT_READ'
  EXPORTING
*   I_AWTYP     = 'BKPF'
*   I_AWREF     =
*   I_AWORG     = ' '
*   I_AWSYS     = ' '
*   I_XNBKL     = ' '
    i_bukrs     = lv_bukrs "'2410'
   I_BELNR     = LV_BELNR "'9400000025'
*   I_BELNR     = '9400000024'
*    i_belnr     = '1600000000'
    i_gjahr     = '2021'
*   I_BSTAT     = ' '
*   I_XBLNR     = ' '
*   I_BUDAT     =
*   I_BLART     = ' '
*   I_AUTH_RFC  = ' '
*   I_BSEG_STRUCNAME                 = 'BSEG'
*   I_CAST_TO_CALLING_BSEG           = 'X'
*   I_BKPF_STRUCNAME                 = 'BKPF'
*   I_CAST_TO_CALLING_BKPF           = 'X'
*   I_CHECK_FOR_MAPPING_ISSUES       = 'X'
  TABLES
    t_bseg      = lt_bseg
  EXCEPTIONS
    wrong_input = 1
    not_found   = 2
    OTHERS      = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

LOOP AT lt_bseg ASSIGNING FIELD-SYMBOL(<lfs_bseg>) TO 1 FROM 1.
*LOOP AT lt_bseg ASSIGNING FIELD-SYMBOL(<lfs_bseg>).
*  IF <lfs_bseg>-bschl = '01'.
    ls_bapiacgl09-itemno_acc = <lfs_bseg>-buzei.
*    ls_bapiacgl09-gl_account = <lfs_bseg>-hkont.
    ls_bapiacgl09-gl_account = <lfs_bseg>-KUNNR.
    ls_bapiacgl09-comp_code = <lfs_bseg>-bukrs.
    ls_bapiacgl09-pstng_date = sy-datum.
*ls_bapiacgl09-doc_type = ls_bseg-bkpf-blart.
    ls_bapiacgl09-profit_ctr = <lfs_bseg>-prctr.

*move:

*<lfs_bseg>-sgtxt to  ls_bapiacgl09-item_text.

*                              ' ' 'FS006-DOCID' '*',
*                              ' ' 'RF05A-NEWBS' '06', "50 40
*                              ' ' 'RF05A-NEWKO' i_bseg-kunnr, GL_ACCOUNT
*                              ' ' 'BSEG-WRBTR' d_wrbtr_c,
*                              ' ' 'BSEG-SGTXT' i_bkpf-belnr,
*                              ' ' 'BSEG-KIDNO' i_bkpf-belnr,
*                              ' ' 'BSEG-ZTERM' i_bseg-zterm,
*                              ' ' 'RF05A-NEWBS' '18',
*                              ' ' 'RF05A-NEWKO' i_bseg-kunnr,
*
*                              ' ' 'BSEG-XREF1' i_bseg-xref1,
*                              ' ' 'BSEG-XREF2' i_bseg-xref2,
*                              ' ' 'BSEG-XREF3' i_bseg-xref3,
*
*                              ' ' 'BSEG-WRBTR' d_wrbtr_c,
*                              ' ' 'BSEG-SAMNR' i_bseg-samnr,
*                              ' ' 'BSEG-SGTXT' d_c_fdev,

*  ELSE.

*  ENDIF.
MOVE:
*  MOVE: <lfs_bseg>-buzei TO ls_bapiacgl09-itemno_acc,
*        <lfs_bseg>-hkont TO  ls_bapiacgl09-gl_account,
        <lfs_bseg>-sgtxt TO  ls_bapiacgl09-item_text,
****   ls_bseg-belnr TO  ls_bapiacgl09-ac_doc_no,
        <lfs_bseg>-xref1 TO  ls_bapiacgl09-ref_key_1,
        <lfs_bseg>-xref2 TO  ls_bapiacgl09-ref_key_2,
  <lfs_bseg>-xref3 to  ls_bapiacgl09-ref_key_3.
*  <lfs_bseg>-kostl to  ls_bapiacgl09-costcenter, "acct_key,
*  <lfs_bseg>-koart to  ls_bapiacgl09-acct_type,
***  ls_bseg-bkpf-blart  TO  ls_bapiacgl09-doc_type,
*  <lfs_bseg>-bukrs to  ls_bapiacgl09-comp_code,
*        <lfs_bseg>-gsber TO  ls_bapiacgl09-bus_area,
*  <lfs_bseg>-fkber to  ls_bapiacgl09-func_area,
*  <lfs_bseg>-werks to  ls_bapiacgl09-plant,
***  ls_bseg-bkpf  TO  ls_bapiacgl09-fis_period,
*  <lfs_bseg>-gjahr to  ls_bapiacgl09-fisc_year,
*        <lfs_bseg>-valut TO  ls_bapiacgl09-value_date,
*  <lfs_bseg>-kunnr to  ls_bapiacgl09-customer,
*  <lfs_bseg>-xskrl to  ls_bapiacgl09-cshdis_ind,
*  <lfs_bseg>-lifnr to  ls_bapiacgl09-vendor_no,
*  <lfs_bseg>-zuonr to  ls_bapiacgl09-alloc_nmbr,
**********  <lfs_bseg>-mwskz to  ls_bapiacgl09-tax_code.
*  <lfs_bseg>-txjcd to  ls_bapiacgl09-taxjurcode,
*  <lfs_bseg>-kstrg to  ls_bapiacgl09-costobject,
*  <lfs_bseg>-kostl to  ls_bapiacgl09-costcenter,
*  <lfs_bseg>-lstar to  ls_bapiacgl09-acttype,
*  <lfs_bseg>-prctr to  ls_bapiacgl09-profit_ctr,
*  <lfs_bseg>-prctr  to  ls_bapiacgl09-part_prctr,
*  <lfs_bseg>-nplnr to  ls_bapiacgl09-network,
*  <lfs_bseg>-aufnr to  ls_bapiacgl09-orderid,
*  <lfs_bseg>-geber to  ls_bapiacgl09-fund,
*  <lfs_bseg>-fistl to  ls_bapiacgl09-funds_ctr,
*  <lfs_bseg>-fipos to  ls_bapiacgl09-cmmt_item,
*  <lfs_bseg>-prznr to  ls_bapiacgl09-co_busproc,
**  ls_bseg-anln1 TO  ls_bapiacgl09-asset_no,
**  ls_bseg-anln2 TO  ls_bapiacgl09-sub_number,
*  <lfs_bseg>-menge to  ls_bapiacgl09-quantity,
*  <lfs_bseg>-meins to  ls_bapiacgl09-base_uom_iso,
*  <lfs_bseg>-erfmg to  ls_bapiacgl09-entry_qnt,
*  <lfs_bseg>-erfme to  ls_bapiacgl09-entry_uom,
*  <lfs_bseg>-matnr to  ls_bapiacgl09-material,
*  <lfs_bseg>-hrkft to  ls_bapiacgl09-orig_group,
*  <lfs_bseg>-vptnr to  ls_bapiacgl09-part_acct,
*  <lfs_bseg>-pargb to  ls_bapiacgl09-tr_part_ba,
*  <lfs_bseg>-vbund to  ls_bapiacgl09-trade_id,
*  <lfs_bseg>-bwkey to  ls_bapiacgl09-val_area,
*  <lfs_bseg>-bwtar to  ls_bapiacgl09-val_type,
*  <lfs_bseg>-ebeln to  ls_bapiacgl09-po_number,
*  <lfs_bseg>-ebelp to  ls_bapiacgl09-po_item,
*  <lfs_bseg>-projn to  ls_bapiacgl09-itm_number,
*  <lfs_bseg>-fkber  to  ls_bapiacgl09-func_area_long,
*  <lfs_bseg>-grant_nbr to  ls_bapiacgl09-grant_nbr,
*  <lfs_bseg>-bewar to  ls_bapiacgl09-cs_trans_t,
*  <lfs_bseg>-measure to  ls_bapiacgl09-measure,
*  <lfs_bseg>-segment to  ls_bapiacgl09-segment,
*  <lfs_bseg>-psegment  to  ls_bapiacgl09-partner_segment,
*  <lfs_bseg>-kblnr to  ls_bapiacgl09-res_doc,
*  <lfs_bseg>-kblpos  to  ls_bapiacgl09-res_item,
*  <lfs_bseg>-perop_beg to  ls_bapiacgl09-billing_period_start_date,
*  <lfs_bseg>-perop_end to  ls_bapiacgl09-billing_period_end_date,
*  <lfs_bseg>-ppa_ex_ind  to  ls_bapiacgl09-ppa_ex_ind,
*  <lfs_bseg>-fastpay to  ls_bapiacgl09-fastpay,
*  <lfs_bseg>-budget_pd to  ls_bapiacgl09-budget_period,
*  <lfs_bseg>-pbudget_pd  to  ls_bapiacgl09-partner_budget_period,
*  <lfs_bseg>-pgeber  to  ls_bapiacgl09-partner_fund,
*  <lfs_bseg>-taxps to  ls_bapiacgl09-itemno_tax.

  APPEND ls_bapiacgl09 TO lt_accountgl.

*--------------------------------------------------------------------*
* Posicion de la moneda
*--------------------------------------------------------------------*

  MOVE: <lfs_bseg>-buzei TO ls_currency-itemno_acc,
       ls_bkpf-waers  TO ls_currency-currency.

  IF <lfs_bseg>-shkzg EQ 'S'.
*    ls_currency-amt_doccur = <lfs_bseg>-wrbtr.
    ls_currency-DISC_BASE = <lfs_bseg>-wrbtr.
    ls_currency-AMT_DOCCUR = <lfs_bseg>-wrbtr.

  ELSEIF <lfs_bseg>-shkzg EQ 'H'.
*    ls_currency-amt_doccur = <lfs_bseg>-wrbtr * -1.
    ls_currency-DISC_BASE = <lfs_bseg>-wrbtr * -1.
  ELSE.
*      " nothing to do with default case
  ENDIF.
ls_currency-CURR_TYPE = '00'.
  APPEND ls_currency TO lt_currency.

      ls_currency-DISC_BASE = <lfs_bseg>-wrbtr * -1.
    ls_currency-AMT_DOCCUR = <lfs_bseg>-wrbtr * -1.
    Ls_currency-itemno_acc = <lfs_bseg>-buzei + 1.
  APPEND ls_currency TO lt_currency.

*--------------------------------------------------------------------*
    ls_BAPIACAR09-itemno_acc = <lfs_bseg>-buzei.
*    ls_bapiacgl09-gl_account = <lfs_bseg>-hkont.
*    ls_BAPIACAR09-gl_account = <lfs_bseg>-KUNNR.
    ls_BAPIACAR09-CUSTOMER = <lfs_bseg>-KUNNR.
    ls_BAPIACAR09-comp_code = <lfs_bseg>-bukrs.
*    ls_BAPIACAR09-pstng_date = sy-datum.
    move:
        <lfs_bseg>-sgtxt TO  ls_BAPIACAR09-item_text,
****   ls_bseg-belnr TO  ls_bapiacgl09-ac_doc_no,
        <lfs_bseg>-xref1 TO  ls_BAPIACAR09-REF_KEY_1,
        <lfs_bseg>-xref2 TO  ls_bapiacgl09-REF_KEY_2,
        <lfs_bseg>-xref3 to  ls_BAPIACAR09-REF_KEY_3.
*'XX' TO ls_BAPIACAR09-W_TAX_CODE.
        append ls_BAPIACAR09 to lt_BAPIACAR09.
        ls_BAPIACAR09-itemno_acc = <lfs_bseg>-buzei + 1.
        append ls_BAPIACAR09 to lt_BAPIACAR09.
*--------------------------------------------------------------------*

ENDLOOP.
*--------------------------------------------------------------------*

*--------------------------------------------------------------------*

***DATA: ls_extension2 TYPE bapiparex.
***DATA: lt_extension2 LIKE TABLE OF ls_extension2.
***DATA: lt_extension22222 type table of bapiparex.
***
***DATA: ls_extension_field TYPE ZFI_ACC_DOCUMENT_EXTENSION2.
***
****DATA: IT_EXTENSION2 TYPE STANDARD TABLE OF BAPIPAREX WITH HEADER LINE.
***
***
***
****DATA: Lt_ext               TYPE STANDARD TABLE OF ZFI_ACC_DOCUMENT_EXTENSION2.
****DATA: Lt_ext               like table of bapiacextc with header line.
***DATA: Lt_ext               like table of bapiacextc with header line.
***CLEAR lt_extension2[].
***
***CLEAR ls_extension_field.
***
***ls_extension_field-bschl = '06'. "Línea de pedido de documento
***ls_extension_field-SAMNR = '516'. "Código de razón
***
***CLEAR ls_extension2.
***ls_extension2-structure = 'ZFI_ACC_DOCUMENT_EXTENSION2'.
***ls_extension2-valuepart1 = ls_extension_field.
***APPEND ls_extension2 TO lt_extension2.
***
***APPEND ls_extension_field TO Lt_ext.
DATA: LT_EXTENSION2 TYPE STANDARD TABLE OF BAPIPAREX,
      LWA_EXTENSION2 TYPE BAPIPAREX.

*LWA_EXTENSION2-STRUCTURE = 'ACCIT'.
LWA_EXTENSION2-STRUCTURE = 'ZFI_ACC_DOCUMENT_EXTENSION2'.
LWA_EXTENSION2-VALUEPART1 = '06'.
*LWA_EXTENSION2-VALUEPART1+6(2) = 15.
LWA_EXTENSION2-VALUEPART2 = '03'.
APPEND LWA_EXTENSION2 TO  LT_EXTENSION2.
LWA_EXTENSION2-VALUEPART1 = '18'.
*LWA_EXTENSION2-VALUEPART1+6(2) = 15.
LWA_EXTENSION2-VALUEPART2 = '04'.
APPEND LWA_EXTENSION2 TO  LT_EXTENSION2.
*--------------------------------------------------------------------*
CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
  EXPORTING
    documentheader = ls_header
*   CUSTOMERCPD    =
*   CONTRACTHEADER =
*     IMPORTING
*   OBJ_TYPE       =
*   OBJ_KEY        =
*   OBJ_SYS        =
  TABLES
*    accountgl      = lt_accountgl
   ACCOUNTRECEIVABLE       = lt_BAPIACAR09
*   ACCOUNTPAYABLE =
*   ACCOUNTTAX     =
    currencyamount = lt_currency
*   CRITERIA       =
*   VALUEFIELD     =
*   EXTENSION1     = Lt_ext
    return         = lt_return
*   PAYMENTCARD    =
*   CONTRACTITEM   =
   EXTENSION2     = LT_EXTENSION2
*   EXTENSION2     = lt_extension2
*   REALESTATE     =
*   ACCOUNTWT      =
  .

BREAK-POINT.
*CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
** EXPORTING
**   WAIT          =
** IMPORTING
**   RETURN        =
*          .
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
CREAMOS LA BADI ACC_DOCUMENT
https://www.zapyard.com/how-to-pass-reversal-date-reason-to-bapi_acc_document_post/

You might also like