0
点赞
收藏
分享

微信扫一扫

会计凭证过账demo_


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__python

​​





​​

会计凭证过账demo__java_02

​​​



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





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





或者参考一个工具代码



​​

会计凭证过账demo__python_03

​​​
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  =  0  .

     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__python_04

​​





在函数最后,改回去



​​

会计凭证过账demo__vue_05

​​​

增强位置2: LFACIF5D 



form最后的地方



把exten 数据传过来,传给bsed数据

 这里特殊声明下:

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

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


​​

会计凭证过账demo__mysql_06

​​​






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

      

举报

相关推荐

0 条评论