会计凭证过账demo_SAP刘梦_新浪博客

本文详细解析了SAP财务会计模块中用于处理凭证的多种结构,包括ZS_POST_HEADER、ZS_post_item及zs_post_exten,涵盖公司代码、凭证类型、日期、文本、参考凭证、货币、汇率等核心字段,并深入讨论了借方/贷方标识、科目类型、记帐代码等会计特定信息。同时,介绍了如何通过增强结构进行数据的扩展处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结构定义: ZS_POST_HEADER

BUKRS

BUKRS

CHAR

4

0

公司代

NUMPG

J_1ANOPG

NUMC

3

0

发票的页数

BLART

BLART

CHAR

2

0

凭证类

BLDAT

BLDAT

DATS

8

0

凭证中的凭证日

BUDAT

BUDAT

DATS

8

0

凭证中的过帐日

BKTXT

BKTXT

CHAR

25

0

凭证抬头文

XBLNR

XBLNR

CHAR

16

0

参考凭证编号

WAERS

WAERS

CUKY

5

0

货币码

KURSF

KURSF

DEC

9

5



结构定义:ZS_post_item

SHKZG

SHKZG

CHAR

1

0

借方/贷方标识

KOART

KOART

CHAR

1

0

科目类型

BSCHL

BSCHL

CHAR

2

0

记帐代码

HKONT

HKONT

CHAR

10

0

总分类帐帐目

KUNNR

KUNNR

CHAR

10

0

客户编号

LIFNR

LIFNR

CHAR

10

0

供应商或债权人的帐号

UMSKZ

UMSKZ

CHAR

1

0

特殊总帐标识

KOSTL

KOSTL

CHAR

10

0

成本中心

PRCTR

PRCTR

CHAR

10

0

利润中心

DMBTR

DMBTR

CURR

13

2

按本位币计的金额

ZUONR

DZUONR

CHAR

18

0

分配编号

SGTXT

SGTXT

CHAR

50

0

项目文本

RSTGR

RSTGR

CHAR

3

0

现金流量事务代码

ZFBDT

ZFBDT

DATS

8

0

到期日

WDATE

WDATE

DATS

8

0

汇票签发日

WBANK

WBANK

CHAR

60

0

票据号

WLZBP

WLZBP

CHAR

60

0

出票行

XNEGP

XNEGP

CHAR

1

0

标识: 反记帐

KKBER

KKBER

CHAR

4

0

信贷控制范围

ZLSCH

SCHZW_BSEG

CHAR

1

0

付款方式


增强结构定义  zs_post_exten

POSNR

POSNR_ACC

NUMC

10

0

会计凭证行项目编号

BSCHL

BSCHL

CHAR

2

0

记帐代码

SHKZG

SHKZG

CHAR

1

0

借方/贷方标识

NUMPG

J_1ANOPG

NUMC

3

0

发票的页数

RSTGR

RSTGR

CHAR

3

0

现金流量事务代码

WDATE

WDATE

DATS

8

0

汇票签发日

WBANK

WBANK

CHAR

60

0

票据号

WLZBP

WLZBP

CHAR

60

0

出票行

XNEGP

XNEGP

CHAR

1

0

标识: 反记帐

KKBER

KKBER

CHAR

4

0

信贷控制范围

ZLSCH

SCHZW_BSEG

CHAR

1

0

付款方式

WNAME

WNAME

 

 

 

汇票受票人的名字

WBZOG

WBZOG

 

 

 

汇票出票人


增强1:

BADI  ACC_DOCUMENT里赋值
会计凭证过账demo

会计凭证过账demo

这里建议加上增强结构名称的校验,防止影响别人

而且直接这么move 可能会出现空值覆盖原来的值的情况,建议判断非空再复制

或者参考一个工具代码
会计凭证过账demo
FUNCTION  zfm_move_value .
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     VALUE(IS_INPUT)
*"     VALUE(IV_STRUCTURE)
*"     VALUE(CV_STRUCTURE)
*"  CHANGING
*"     VALUE(CS_INPUT) OPTIONAL
*"----------------------------------------------------------------------


   FIELD-SYMBOLS :
          TYPE  any ,                                  "从工作区结构
        TYPE  any .                                  "到工作区结构
*
   DATA  lt_idetails  TYPE  abap_compdescr_tab  WITH  HEADER  LINE .
   DATA  lr_ref_table_des  TYPE  REF  TO  cl_abap_structdescr .

   DATA  ct_idetails  TYPE  abap_compdescr_tab  WITH  HEADER  LINE .
   DATA  cr_ref_table_des  TYPE  REF  TO  cl_abap_structdescr .


  lr_ref_table_des ?=
        cl_abap_typedescr => describe_by_name iv_structure  ) .

   CLEAR  lt_idetails[] .
  lt_idetails[]  lr_ref_table_des -> components[] .

  cr_ref_table_des ?=
        cl_abap_typedescr => describe_by_name cv_structure  ) .

   CLEAR  ct_idetails[] .
  ct_idetails[]  cr_ref_table_des -> components[] .

   "循环判断结构每个字段
   LOOP  AT  lt_idetails .
     ASSIGN  COMPONENT  lt_idetails - name  OF  STRUCTURE  is_input  TO    .
     CHECK  sy - subrc  .

     READ  TABLE  ct_idetails  WITH  KEY  name  lt_idetails - name .
     CHECK  sy - subrc  0 .
     ASSIGN  COMPONENT  ct_idetails - name  OF  STRUCTURE  cs_input  TO  .
     CHECK  sy - subrc  0 .

     IF    IS  NOT  INITIAL .
        =   .
     ENDIF .
   ENDLOOP .


ENDFUNCTION .

增强2  隐士增强

增强位置1:  FI_DOCUMENT_CHECK

一进来,先检查是否是W类型特殊总账(用get函数获取,set操作在 调用bapi的时候 赋值)
如果是,把char_w 改为U

 

会计凭证过账demo

在函数最后,改回去
会计凭证过账demo

增强位置2: LFACIF5D 
form最后的地方
把exten 数据传过来,传给bsed数据

 这里特殊声明下:

因为这个demo只涉及特殊总账类型为W的,其他特殊总账不考虑BSED,

这个得根据所在项目业务来确定,如果除了W还有 S或者其他等类型的,再多加个判断即可。

会计凭证过账demo


FUNCTION zfm_ac_post  .
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     REFERENCE(IS_HEADER) TYPE  ZS_POST_HEADER
*"  EXPORTING
*"     VALUE(EV_BELNR) TYPE  BELNR_D
*"     VALUE(EV_MSG) TYPE  STRING
*"  TABLES
*"      IT_ITEM STRUCTURE  ZS_POST_ITEM
*"      RETURN STRUCTURE  BAPIRET2
*"----------------------------------------------------------------------

     DATA : gs_bkpf  TYPE bapiache09 ,
         gt_account  TYPE  TABLE  OF bapiacgl09 , "总帐
         gs_account  TYPE bapiacgl09 ,
         gt_customer  TYPE  TABLE  OF bapiacar09 , "客户
         gs_customer  TYPE  bapiacar09 ,
         gt_vendor  TYPE  TABLE  OF bapiacap09 , "供应商
         gs_vendor  TYPE bapiacap09 ,
         gt_currency  TYPE  TABLE  OF bapiaccr09 , "货币
         gs_currency  TYPE bapiaccr09 ,
         gt_etx  TYPE  TABLE  OF bapiparex , "扩展结构
         gs_etx  TYPE  bapiparex ,
         gt_etxend  TYPE  TABLE  OF zs_post_exten , "扩展结构
         gs_etxend  TYPE zs_post_exten ,
         gt_return  TYPE  TABLE  OF bapiret2   WITH  HEADER  LINE .

   DATA : l_itemno  TYPE posnr_acc . "行项目编号
   DATA : lv_number1  TYPE  i .
   DATA : lv_flag_w  TYPE flag .       "W 类型特殊总账


   DATA :ls_item  LIKE  LINE  OF it_item .

*header
   CLEAR gs_bkpf .
  gs_bkpf -comp_code   = is_header -bukrs .
  gs_bkpf -doc_type    = is_header -blart .
  gs_bkpf -doc_date    = is_header -bldat .
  gs_bkpf -pstng_date  = is_header -budat .
  gs_bkpf -header_txt  = is_header -bktxt .
  gs_bkpf -ref_doc_no  = is_header -xblnr .
  gs_bkpf -username    = sy -uname .

*item
   REFRESH :gt_account ,gt_customer ,gt_vendor ,gt_currency ,gt_etxend ,gt_etx ,gt_return .
   CLEAR : gs_account ,gs_customer ,gs_vendor ,gs_currency ,gs_etxend ,gs_etx .

   CLEAR ls_item .

  l_itemno  =  '0000000000' .            "行项目编号
   LOOP  AT it_item  INTO ls_item .


**    gs_bkpf-neg_postng = ls_item-xnegp." header 的,但是为啥到了item

     CALL  FUNCTION  'CONVERSION_EXIT_ALPHA_INPUT'
       EXPORTING
         input   = ls_item -kunnr
       IMPORTING
         output  = ls_item -kunnr .
     CALL  FUNCTION  'CONVERSION_EXIT_ALPHA_INPUT'
       EXPORTING
         input   = ls_item -lifnr
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值