SAP F-44供应商部分清账BDC示例

本文提供了一个SAP中针对供应商部分清账的BDC(Batch Data Communication)代码示例,详细展示了如何通过编程方式执行F-44事务代码进行供应商账项的清理。
摘要由CSDN通过智能技术生成

1. 代码

1

FUNCTION z_fi_invoice_post_cleaning.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     REFERENCE(IS_INPUT) TYPE  ZSIF_FI_I003_REQ_0003
*"     REFERENCE(IV_BELNR) TYPE  BELNR_D
*"  EXPORTING
*"     REFERENCE(ES_OUTPUT) TYPE  ZSIF_FI_I003_RES_0003
*"  RAISING
*"      CX_INVALID_DATE
*"----------------------------------------------------------------------

  DATA: lt_bdcdata    TYPE TABLE OF bdcdata,
        lt_message    TYPE TABLE OF bdcmsgcoll,
        lv_clean_date TYPE dats.

  DATA: lv_count     TYPE i.

  DATA: lv_perpay_amount TYPE bdc_fval,
        lv_msgtext       TYPE string,
        lv_mode          TYPE rfpdo-allgazmd.

  DATA: lo_invalid_date TYPE REF TO cx_invalid_date,
        lv_belnr        TYPE char30.

  DATA: lv_bukrs TYPE bseg-bukrs,
        lv_gjahr TYPE bseg-gjahr.

  FIELD-SYMBOLS: <fs_message>          TYPE bdcmsgcoll,
                 <fs_prepayment_lines> TYPE ty_prepayment_lines.


  DATA(ls_ctu_params) = VALUE ctu_params( dismode = 'N' updmode = 'S' nobinpt = 'X' cattmode = 'A' ).

  TRY.
      lv_clean_date = zcl_abap_comm=>convert_date_to_internal( is_input-header-invoice_date ).  "清账日期
    CATCH cx_invalid_date INTO lo_invalid_date.
      es_output-zpost_type = 'E'.
      es_output-zpost_message = lo_invalid_date->get_text( ).
      RETURN.
  ENDTRY.

  PERFORM frm_screen_line TABLES lt_bdcdata USING 'SAPMF05A' '0131'.
  PERFORM frm_field_line TABLES lt_bdcdata USING 'BDC_OKCODE' '/05'.


  lv_bukrs = |{ CONV bukrs( is_input-header-company_code ) ALPHA = IN } |.
  PERFORM frm_field_line TABLES lt_bdcdata USING 'RF05A-AGKON' is_input-header-vendor_num.  "供应商编码
  PERFORM frm_field_line TABLES lt_bdcdata USING 'BKPF-BUDAT' lv_clean_date.                "清账日期
  PERFORM frm_field_line TABLES lt_bdcdata USING 'BKPF-MONAT' lv_clean_date+4(2).           "清账期间
  PERFORM frm_field_line TABLES lt_bdcdata USING 'BKPF-BUKRS' lv_bukrs. "清账公司
  PERFORM frm_field_line TABLES lt_bdcdata USING 'BKPF-WAERS' is_input-header-currency_code."货币
  PERFORM frm_field_line TABLES lt_bdcdata USING 'RF05A-AGUMS' 'Z'.                         "特别总账标识
  PERFORM frm_field_line TABLES lt_bdcdata USING 'RF05A-XNOPS' 'X'.
  PERFORM frm_field_line TABLES lt_bdcdata USING 'RF05A-XPOS1(01)' ''.
  PERFORM frm_field_line TABLES lt_bdcdata USING 'RF05A-XPOS1(03)' 'X'.


  LOOP AT gt_prepayment_lines ASSIGNING <fs_prepayment_lines>.
    lv_belnr = <fs_prepayment_lines>-zprepay_doc && lv_clean_date+0(4) && <fs_prepayment_lines>-buzei.
    PERFORM frm_screen_line TABLES lt_bdcdata USING 'SAPMF05A' '0733'.
    PERFORM frm_field_line TABLES lt_bdcdata USING 'BDC_CURSOR' 'RF05A-SEL01(01)'.
    PERFORM frm_field_line TABLES lt_bdcdata USING 'RF05A-FELDN(01)' 'BELNR'.
    PERFORM frm_field_line TABLES lt_bdcdata USING 'BDC_OKCODE' '/00'.
    PERFORM frm_field_line TABLES lt_bdcdata USING 'RF05A-SEL01(01)' lv_belnr.
    "多敲一个回车
*    PERFORM frm_screen_line TABLES lt_bdcdata USING 'SAPMF05A' '0733'.
*    PERFORM frm_field_line TABLES lt_bdcdata USING 'BDC_CURSOR' 'RF05A-SEL01(01)'.
    PERFORM frm_field_line TABLES lt_bdcdata USING 'BDC_OKCODE' '/00'.
  ENDLOOP.

  "MIRO发票对应财务凭证加入到清单
  lv_bukrs = |{ CONV bukrs( is_input-header-company_code ) ALPHA = IN } |.
  lv_gjahr = is_input-header-invoice_date+0(4).
  SELECT SINGLE concat( a~belnr,concat( a~gjahr,a~buzei ) ) AS belnr_ref
    FROM bseg AS a
    WHERE bukrs = @lv_bukrs
    AND belnr = @iv_belnr
    AND gjahr = @lv_gjahr
    AND koart = 'K'
    INTO @lv_belnr.
  PERFORM frm_screen_line TABLES lt_bdcdata USING 'SAPMF05A' '0733'.
  PERFORM frm_field_line TABLES lt_bdcdata USING 'BDC_CURSOR' 'RF05A-SEL01(01)'.
  PERFORM frm_field_line TABLES lt_bdcdata USING 'RF05A-FELDN(01)' 'BELNR'.
  PERFORM frm_field_line TABLES lt_bdcdata USING 'BDC_OKCODE' '/00'.
  PERFORM frm_field_line TABLES lt_bdcdata USING 'RF05A-SEL01(01)' lv_belnr.

  "点击按钮处理未清项
  PERFORM frm_screen_line TABLES lt_bdcdata USING 'SAPMF05A' '0733'.
  PERFORM frm_field_line TABLES lt_bdcdata USING 'BDC_CURSOR' 'RF0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值