调用BAPI创建FI凭证

下例演示了如何通过BAPI创建FI 凭证

TYPE-POOLSslis.
DATA ls_header TYPE bapiache08.
DATA lt_accountgl TYPE STANDARD TABLE OF bapiacgl08 WITH HEADER LINE.
DATA lt_currencyamount TYPE STANDARD TABLE OF bapiaccr08 WITH HEADER LINE.
DATA lt_extension1 TYPE STANDARD TABLE OF bapiextc WITH HEADER LINE.
DATA lt_return TYPE STANDARD TABLE OF bapiret2 WITH HEADER LINE.
DATA lt_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.

DATABEGIN OF lt_msg_txt OCCURS 1,
      msg_tp TYPE bapiret2-type,
      doc_no TYPE bapiret2-message_v2,
      msg_txt TYPE bapiret2-message,
      END OF lt_msg_txt.

START-OF-SELECTION.
  ls_header-username sy-uname.
  ls_header-comp_code '1000'.
  ls_header-fisc_year sy-datum+0(4).
  ls_header-doc_date sy-datum.
  ls_header-pstng_date sy-datum.
  ls_header-fis_period sy-datum+4(2).
  ls_header-doc_type 'SA'.

  lt_accountgl-itemno_acc '1'.
  lt_accountgl-gl_account '0000060220' .
  lt_accountgl-comp_code '1000'.
  lt_accountgl-pstng_date sy-datum.
  lt_accountgl-doc_type 'SA'.
  lt_accountgl-fisc_year sy-datum+0(4).
  lt_accountgl-fis_period sy-datum+4(2).
  APPEND lt_accountgl.
  CLEAR lt_accountgl.


  lt_accountgl-itemno_acc '2'.
  lt_accountgl-gl_account '0000045010' .
  lt_accountgl-comp_code '1000'.
  lt_accountgl-pstng_date sy-datum.
  lt_accountgl-doc_type 'SA'.
  lt_accountgl-fisc_year sy-datum+0(4).
  lt_accountgl-fis_period sy-datum+4(2).
*  lt_accountgl-costcenter = '13100'.
  APPEND lt_accountgl.
  CLEAR lt_accountgl.

  lt_currencyamount-itemno_acc '1'.
  lt_currencyamount-currency  'USD'.
  lt_currencyamount-amt_doccur 100"( For  Debit / 'S')
  APPEND lt_currencyamount.

  CLEAR lt_currencyamount.

  lt_currencyamount-itemno_acc '2'.
  lt_currencyamount-currency  'USD'.
  lt_currencyamount-amt_doccur =  -100.  "( For credit /'H')
  APPEND lt_currencyamount.

  CLEAR lt_currencyamount.

  lt_extension1-field1 =  'BAPI-PARK'.
  lt_extension1-field2 =   '1'.
  APPEND lt_extension1.

  lt_fieldcat-fieldname 'MSG_TP'.
  lt_fieldcat-seltext_m 'message type'.
  TRANSLATE lt_fieldcat-seltext_m+0(1to UPPER CASE.
  APPEND lt_fieldcat.

  lt_fieldcat-fieldname 'DOC_NO'.
  lt_fieldcat-seltext_m 'document number'.
  TRANSLATE lt_fieldcat-seltext_m+0(1to UPPER CASE.
  APPEND lt_fieldcat.

  lt_fieldcat-fieldname 'MSG_TXT'.
  lt_fieldcat-seltext_m 'message text'.
  TRANSLATE lt_fieldcat-seltext_m+0(1to UPPER CASE.
  APPEND lt_fieldcat.

  CALL FUNCTION 'BAPI_ACC_GL_POSTING_POST'
    EXPORTING
      documentheader ls_header
*  IMPORTING
*    obj_key        = obj_key
    TABLES
      accountgl      lt_accountgl[]
      currencyamount lt_currencyamount[]
      return         lt_return[].
*      extension1     = lt_extension1[].

DELETE lt_return[] WHERE type 'S'.

IF lt_return[] is INITIAL.
  refresh lt_return.
  CALL FUNCTION 'BAPI_ACC_GL_POSTING_POST'
    EXPORTING
      documentheader ls_header
*  IMPORTING
*    obj_key        = obj_key
    TABLES
      accountgl      lt_accountgl[]
      currencyamount lt_currencyamount[]
      return         lt_return[].
*      extension1     = lt_extension1[].


  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      WAIT          'X'.
ENDIF.

  LOOP AT lt_return.
    IF lt_return-type 'S'.
      lt_msg_txt-msg_tp 'S'.
      lt_msg_txt-doc_no lt_return-message_v2+0(10).
      lt_msg_txt-msg_txt 'success'.
    ELSE.
      IF sy-tabix 1.
        lt_msg_txt-msg_tp 'E'.
        lt_msg_txt-doc_no ''.
        lt_msg_txt-msg_txt 'errors in document:'.
      ELSE.
        lt_msg_txt-msg_tp 'E'.
        lt_msg_txt-doc_no ''.
        lt_msg_txt-msg_txt lt_return-message.
      ENDIF.
    ENDIF.
    APPEND lt_msg_txt.
  ENDLOOP.



  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      it_fieldcat lt_fieldcat[]
    TABLES
      t_outtab    lt_msg_txt[].

你可能感兴趣的:(Date,header,extension)