1. 代码
DATA: lt_bdcdata TYPE TABLE OF bdcdata,
lt_message TYPE TABLE OF bdcmsgcoll,
lv_date TYPE dats.
DATA: lv_perpay_amount TYPE pszah,
lv_msgtext TYPE string.
DATA: lo_invalid_date TYPE REF TO cx_invalid_date,
lv_belnr TYPE char30.
FIELD-SYMBOLS: <fs_message> TYPE bdcmsgcoll.
DATA(ls_ctu_params) = VALUE ctu_params( dismode = 'N' updmode = 'S' nobinpt = 'X' cattmode = 'A' ).
TRY.
lv_date = zcl_abap_comm=>convert_date_to_internal( is_actual_payment-actual_pay_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' '0103'.
PERFORM frm_field_line TABLES lt_bdcdata USING 'BDC_OKCODE' '/05'.
PERFORM frm_field_line TABLES lt_bdcdata USING 'BKPF-BLDAT' lv_date.
PERFORM frm_field_line TABLES lt_bdcdata USING 'BKPF-BUDAT' lv_date.
PERFORM frm_field_line TABLES lt_bdcdata USING 'BKPF-MONAT' lv_date+4(2).
PERFORM frm_field_line TABLES lt_bdcdata USING 'BKPF-BUKRS' is_input-header-company_code. "清账公司
PERFORM frm_field_line TABLES lt_bdcdata USING 'BKPF-WAERS' is_input-header-currency_code."货币
PERFORM frm_field_line TABLES lt_bdcdata USING 'RF05A-KONTO' '9200018'.
PERFORM frm_field_line TABLES lt_bdcdata USING 'BSEG-WRBTR' is_actual_payment-amount.
PERFORM frm_field_line TABLES lt_bdcdata USING 'RF05A-AGKON' is_input-header-vendor_num.
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'.
SELECT SINGLE concat( a~belnr,concat( a~gjahr,a~buzei ) ) AS belnr_ref
FROM bseg AS a
WHERE bukrs = @is_bkpf-bukrs
AND belnr = @is_bkpf-belnr
AND gjahr = @is_bkpf-gjahr
AND koart = 'K'
AND umskz NE 'Z'
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' 'RF05A-FELDN(01)'.
PERFORM frm_field_line TABLES lt_bdcdata USING 'BDC_OKCODE' '=PA'.
* PERFORM frm_screen_line TABLES lt_bdcdata USING 'SAPMF05A' '0731'.
* PERFORM frm_field_line TABLES lt_bdcdata USING 'BDC_CURSOR' 'RF05A-SEL01(01)'.
* PERFORM frm_field_line TABLES lt_bdcdata USING 'BDC_OKCODE' '=PA'.
* PERFORM frm_field_line TABLES lt_bdcdata USING 'RF05A-SEL01(01)' is_bkpf-belnr.
PERFORM frm_screen_line TABLES lt_bdcdata USING 'SAPDF05X' '3100'.
PERFORM frm_field_line TABLES lt_bdcdata USING 'BDC_OKCODE' '=PART'.
PERFORM frm_screen_line TABLES lt_bdcdata USING 'SAPDF05X' '3100'.
PERFORM frm_field_line TABLES lt_bdcdata USING 'BDC_CURSOR' 'DF05B-PSZAH(01)'.
PERFORM frm_field_line TABLES lt_bdcdata USING 'DF05B-PSZAH(01)' is_actual_payment-amount.
PERFORM frm_screen_line TABLES lt_bdcdata USING 'SAPDF05X' '3100'.
PERFORM frm_field_line TABLES lt_bdcdata USING 'BDC_OKCODE' '=BU'.
PERFORM frm_field_line TABLES lt_bdcdata USING 'BDC_CURSOR' 'DF05B-PSZAH(01)'.
PERFORM frm_field_line TABLES lt_bdcdata USING '