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
*                         

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
山楂口红的头像 - 鹿快
评论 抢沙发

请登录后发表评论

    暂无评论内容