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 | 汇率 |
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 | 付款方式 |
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 |
|
|
| 汇票出票人 |

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 .
这里特殊声明下:
因为这个demo只涉及特殊总账类型为W的,其他特殊总账不考虑BSED,
这个得根据所在项目业务来确定,如果除了W还有 S或者其他等类型的,再多加个判断即可。

*"----------------------------------------------------------------------
*"*"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