SAP FICO会计凭证打印
一、表单逻辑






二、表单界面


三、表单代码
*&---------------------------------------------------------------------*
*& 程序名: ZRPFI_003
*&
*&---------------------------------------------------------------------*
*& 创建者(公司)/日期:
*& 程序描述:
*& 1.会计凭证打印功能
*& 2.
*&---------------------------------------------------------------------*
*& 版本/修改者(公司)/日期//修改描述
*&
*&
*&---------------------------------------------------------------------*
REPORT zrpfi_003.
INCLUDE zrpfi_003_top.
INCLUDE zrpfi_003_f01.
AT SELECTION-SCREEN.
PERFORM frm_check_authorization.
START-OF-SELECTION.
IF chk = 'X' AND
( ( pa_bukrs NE '1100' AND pa_bukrs NE '8180' )
OR lines( so_blart[] ) > 1
OR so_blart NE 'IEQRV'
) ." NOT IN 'RV' .
MESSAGE 'RV凭证&香港形式发票连续打印,输入条件有误!' TYPE 'S' DISPLAY LIKE 'E' .
RETURN .
ENDIF.
PERFORM frm_get_data.
PERFORM frm_show_data.
*&---------------------------------------------------------------------*
*& 包含 ZRPFI_003_TOP
*&---------------------------------------------------------------------*
TABLES:acdoca,bkpf.
SELECTION-SCREEN:BEGIN OF BLOCK b01.
PARAMETERS:pa_bukrs TYPE acdoca-rbukrs OBLIGATORY MEMORY ID buk , "DEFAULT '1000',
pa_gjahr TYPE acdoca-gjahr OBLIGATORY MEMORY ID dat , "DEFAULT sy-datum+0(4) ,
pa_poper TYPE acdoca-poper OBLIGATORY MEMORY ID per.
* PA_POPER TYPE ACDOCA-POPER OBLIGATORY DEFAULT SY-DATUM+4(2).
SELECT-OPTIONS:so_rwcur FOR acdoca-rwcur,
so_blart FOR acdoca-blart NO INTERVALS,
so_budat FOR acdoca-budat,
so_belnr FOR acdoca-belnr,
so_xblnr FOR bkpf-xblnr_alt,
so_racct FOR acdoca-racct,
so_usnam FOR acdoca-usnam.
SELECTION-SCREEN:END OF BLOCK b01.
SELECTION-SCREEN SKIP 1.
PARAMETERS: chk AS CHECKBOX DEFAULT ''.
DATA:BEGIN OF gs_out,
zico TYPE c,
rbukrs TYPE acdoca-rbukrs,
gjahr TYPE acdoca-gjahr,
poper TYPE acdoca-poper,
blart TYPE acdoca-blart,
belnr TYPE acdoca-belnr,
xblnr TYPE bkpf-xblnr,
xblnr_alt TYPE bkpf-xblnr_alt,
kursf TYPE zhlei,
sgtxt TYPE acdoca-sgtxt,
drcrk_txt TYPE c,
racct TYPE acdoca-racct,
racct_txt TYPE skat-txt20,
aufnr TYPE acdoca-aufnr,
aufnr_txt TYPE aufk-ktext,
rfarea TYPE acdoca-rfarea,
*>>>-------------------------------------ADD BY JOE 02.09.2022 16:09:54
fkbtx TYPE tfkbt-fkbtx, "功能范围描述
*<<<-------------------------------------END OF ADD 02.09.2022 16:09:54
rwcur TYPE acdoca-rwcur,
wsl TYPE acdoca-wsl,
hsl TYPE acdoca-hsl,
usnam TYPE bkpf-usnam,
budat TYPE acdoca-budat,
rcntr TYPE acdoca-rcntr,
rcntr_txt TYPE cskt-ltext,
prctr TYPE acdoca-prctr,
anln1 TYPE acdoca-anln1,
anln1_txt TYPE anlh-anlhtxt,
kunnr TYPE acdoca-kunnr,
kunnr_txt TYPE kna1-name1,
lifnr TYPE acdoca-lifnr,
lifnr_txt TYPE lfa1-name1,
"不显示字段
docln TYPE acdoca-docln,
butxt TYPE t001-butxt,
color TYPE lvc_t_scol,
awkey TYPE bkpf-awkey,
rhcur TYPE acdoca-rhcur, "20231226 add 公司代码货币
bktxt TYPE bkpf-bktxt,
END OF gs_out.
DATA:gt_out LIKE TABLE OF gs_out.
DATA: gt_fcat TYPE lvc_t_fcat,
gs_fcat TYPE lvc_s_fcat,
gs_layo TYPE lvc_s_layo,
gv_setting TYPE lvc_s_glay.
DEFINE set_field.
CLEAR:gs_fcat.
gs_fcat-fieldname = &1. "字段名
gs_fcat-ref_field = &3.
gs_fcat-ref_table = &2.
gs_fcat-scrtext_s = &4. "字段名文本
gs_fcat-scrtext_m = &4.
gs_fcat-scrtext_l = &4.
gs_fcat-outputlen = &5. "输出长度
gs_fcat-cfieldname = &6. "20231226
* GS_FCAT-JUST = 'C'. "I_JUST. "对齐方式
IF gs_fcat-fieldname = 'ZICO'.
gs_fcat-checkbox = 'X'.
gs_fcat-edit = 'X'.
gs_fcat-hotspot = 'X'.
ENDIF.
IF gs_fcat-fieldname = 'BELNR'.
gs_fcat-hotspot = 'X'.
ENDIF.
APPEND gs_fcat TO gt_fcat.
END-OF-DEFINITION.
*&---------------------------------------------------------------------*
*& 包含 ZRPFI_003_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form FRM_GET_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_get_data .
DATA: BEGIN OF lt_usnam OCCURS 0,
name_last LIKE adrp-name_last,
END OF lt_usnam.
DATA: l_bname LIKE usr21-bname.
DATA: l_username TYPE cdusername.
DATA gh_bapi1093_0 TYPE bapi1093_0.
RANGES: r_usnam FOR usr21-bname.
******************用户名输入中文名转换成账号
CLEAR: r_usnam[].
r_usnam-sign = 'I'.
r_usnam-option = 'EQ'.
LOOP AT so_usnam WHERE low IS NOT INITIAL.
CLEAR: l_bname.
SELECT SINGLE bname INTO l_bname
FROM usr21
WHERE bname = so_usnam-low.
IF sy-subrc NE 0.
SELECT SINGLE a~bname INTO l_bname
FROM usr21 AS a
INNER JOIN adrp AS b
ON a~persnumber = b~persnumber
WHERE b~name_last = so_usnam-low.
IF sy-subrc = 0.
r_usnam-low = l_bname.
COLLECT r_usnam.
ENDIF.
ENDIF.
ENDLOOP.
LOOP AT r_usnam.
COLLECT r_usnam INTO so_usnam.
ENDLOOP.
RANGES:ra_blart FOR acdoca-blart.
DATA:lv_color_flg TYPE c,
lv_color TYPE lvc_t_scol,
ls_s_color TYPE lvc_s_scol,
lt_color1 TYPE lvc_t_scol,
lt_color2 TYPE lvc_t_scol.
CLEAR:ra_blart.
ra_blart-low = 'CO'.
ra_blart-sign = 'E'.
ra_blart-option = 'EQ'.
APPEND ra_blart.
CLEAR:ra_blart.
ra_blart-low = 'W*'.
ra_blart-sign = 'E'.
ra_blart-option = 'CP'.
APPEND ra_blart.
* CLEAR:RA_BLART.
* RA_BLART-LOW = 'Z*'.
* RA_BLART-SIGN = 'E'.
* RA_BLART-OPTION = 'CP'.
* APPEND RA_BLART.
CLEAR:ra_blart. "Z1到Z4类型不显示
ra_blart-low = 'Z1'.
ra_blart-sign = 'E'.
ra_blart-option = 'EQ'.
APPEND ra_blart.
CLEAR:ra_blart.
ra_blart-low = 'Z2'.
ra_blart-sign = 'E'.
ra_blart-option = 'EQ'.
APPEND ra_blart.
CLEAR:ra_blart.
ra_blart-low = 'Z3'.
ra_blart-sign = 'E'.
ra_blart-option = 'EQ'.
APPEND ra_blart.
CLEAR:ra_blart.
ra_blart-low = 'Z4'.
ra_blart-sign = 'E'.
ra_blart-option = 'EQ'.
APPEND ra_blart.
CLEAR:ra_blart.
ra_blart-low = 'UE'.
ra_blart-sign = 'E'.
ra_blart-option = 'EQ'.
APPEND ra_blart.
CLEAR:ra_blart.
ra_blart-low = 'ML'.
ra_blart-sign = 'E'.
ra_blart-option = 'EQ'.
APPEND ra_blart.
CLEAR:ra_blart.
ra_blart-low = 'PR'.
ra_blart-sign = 'E'.
ra_blart-option = 'EQ'.
APPEND ra_blart.
IF so_blart[] IS NOT INITIAL.
ra_blart[] = so_blart[] .
ENDIF.
REFRESH:gt_out.
* SELECT RBUKRS,
* A~GJAHR,
* POPER,
* B~BLART,
* A~BELNR,
* A~DOCLN,
* XBLNR_ALT,
* KURSF,
* SGTXT,
* ( CASE DRCRK WHEN 'S' THEN '借'
* ELSE '贷' END ) AS DRCRK_TXT,
* RACCT,
* C~TXT20 AS RACCT_TXT,
* RFAREA,
* RWCUR,
* WSL,
* HSL,
* B~USNAM,
* A~BUDAT,
* RCNTR,
* D~LTEXT AS RCNTR_TXT,
* A~PRCTR,
* A~AUFNR,
* E~KTEXT AS AUFNR_TXT,
* A~ANLN1,
* F~ANLHTXT AS ANLN1_TXT,
* A~KUNNR,
* G~NAME1 AS KUNNR_TXT,
* A~LIFNR,
* H~NAME1 AS LIFNR_TXT,
* I~BUTXT
*
* INTO CORRESPONDING FIELDS OF TABLE @GT_OUT
* FROM ACDOCA AS A
* INNER JOIN BKPF AS B ON A~RBUKRS = B~BUKRS
* &n
