ABAP-创建凭证
【摘要】 FUNCTION zfII009.*"----------------------------------------------------------------------*"*"本地接口:*" IMPORTING*" VALUE(I_VBRK) LIKE VBRK STRUCTURE VBRK*" EXPORTING*" VALUE(E_TYPE) TYPE ...
FUNCTION zfII009.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(I_VBRK) LIKE VBRK STRUCTURE VBRK
*" EXPORTING
*" VALUE(E_TYPE) TYPE CHAR1
*"----------------------------------------------------------------------
DATA:gs_doc_header TYPE bapiache09, "抬头表
gs_acc_gl TYPE bapiacgl09, "总帐科目项
gt_acc_gl TYPE TABLE OF bapiacgl09, "总帐科目项
gs_acc_cus TYPE bapiacar09, "客户科目项
gt_acc_cus TYPE TABLE OF bapiacar09, "客户科目项
gt_acc_ven TYPE TABLE OF bapiacap09, "供应商科目项
gs_acc_cur TYPE bapiaccr09, "货币项目
gt_acc_cur TYPE TABLE OF bapiaccr09, "货币项目
gs_extension2 TYPE bapiparex, "附加字段
gt_extension2 TYPE TABLE OF bapiparex. "附加字段
DATA:gs_exten TYPE zsaccit, "增强结构
lt_return TYPE TABLE OF bapiret2,
ls_return TYPE bapiret2,
l_obj_key LIKE bapiache09-obj_key,
l_error_msg TYPE string.
SELECT COUNT(*)
FROM bkpf
WHERE xblnr EQ i_vbrk-vbeln
AND blart EQ 'SA'
AND stblg EQ ''
AND stjah EQ '0000'.
IF sy-subrc NE 0.
DATA(l_name) = |转款(应收账款转其他应收款)|.
"头
PERFORM frm_set_header USING i_vbrk CHANGING gs_doc_header.
"行
PERFORM frm_set_item USING i_vbrk 1 l_name CHANGING gs_acc_cus gs_acc_cur gs_extension2."gs_acc_gl
APPEND gs_acc_cus TO gt_acc_cus.
APPEND gs_acc_cur TO gt_acc_cur.
APPEND gs_extension2 TO gt_extension2.
CLEAR:gs_acc_cus,gs_acc_cur,gs_extension2.
PERFORM frm_set_item USING i_vbrk 2 l_name CHANGING gs_acc_cus gs_acc_cur gs_extension2."gs_acc_gl
APPEND gs_acc_cus TO gt_acc_cus.
APPEND gs_acc_cur TO gt_acc_cur.
APPEND gs_extension2 TO gt_extension2.
CLEAR:gs_acc_cus,gs_acc_cur,gs_extension2.
CALL FUNCTION 'BAPI_ACC_DOCUMENT_CHECK'
EXPORTING
documentheader = gs_doc_header
TABLES
accountgl = gt_acc_gl
accountreceivable = gt_acc_cus
accountpayable = gt_acc_ven
currencyamount = gt_acc_cur
extension2 = gt_extension2
return = lt_return.
LOOP AT lt_return INTO ls_return WHERE type CA 'EAX'.
IF l_error_msg IS INITIAL.
l_error_msg = ls_return-message.
ENDIF.
ENDLOOP.
IF NOT l_error_msg IS INITIAL.
e_type = 'E'.
ELSE.
CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
EXPORTING
documentheader = gs_doc_header
IMPORTING
obj_key = l_obj_key
TABLES
accountgl = gt_acc_gl
accountreceivable = gt_acc_cus
accountpayable = gt_acc_ven
currencyamount = gt_acc_cur
extension2 = gt_extension2
return = lt_return.
LOOP AT lt_return INTO ls_return WHERE type CA 'EAX'.
IF l_error_msg IS INITIAL.
l_error_msg = ls_return-message.
ENDIF.
ENDLOOP.
IF NOT l_error_msg IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
e_type = 'E'.
ELSE.
ENDIF.
ENDIF.
ENDIF.
ENDFUNCTION.
*&---------------------------------------------------------------------*
*& Form FRM_SET_HEADER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_I_VBRK text
* <--P_GS_DOC_HEADER text
*----------------------------------------------------------------------*
FORM frm_set_header USING is_data TYPE vbrk
CHANGING cs_doc_header TYPE bapiache09.
"抬头表数据
CLEAR:cs_doc_header.
cs_doc_header-username = sy-uname. "录入人
cs_doc_header-comp_code = is_data-bukrs. "公司代码
cs_doc_header-doc_date = sy-datum. "凭证日期
cs_doc_header-doc_type = 'SA'. "凭证类型
cs_doc_header-ref_doc_no = is_data-vbeln.
cs_doc_header-obj_key = is_data-vbeln.
cs_doc_header-obj_key_r = is_data-vbeln.
cs_doc_header-pstng_date = is_data-fkdat.
cs_doc_header-fis_period = is_data-fkdat+4(2) . "记账期间
cs_doc_header-header_txt = '转款(应收账款转其他应收款)'."抬头文本
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SET_ITEM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_set_item USING is_data TYPE vbrk iv_index p_name
CHANGING gs_acc_cus TYPE bapiacar09
cs_acc_cur TYPE bapiaccr09
cs_acc_ex TYPE bapiparex.
DATA:ls_exten TYPE zsaccit,
l_dmbtr TYPE tslvt12.
l_dmbtr = is_data-netwr + is_data-mwsbk.
gs_acc_cus-itemno_acc = iv_index.
gs_acc_cus-item_text = p_name.
gs_acc_cus-customer = is_data-kunag."客户
gs_acc_cus-profit_ctr = '0010200000'."利润中心
gs_acc_cus-alloc_nmbr = is_data-vbeln."
gs_acc_cus-bline_date = is_data-fkdat.
cs_acc_cur-itemno_acc = iv_index.
cs_acc_cur-currency = is_data-waerk.
cs_acc_cur-amt_doccur = abs( l_dmbtr )."金额
ls_exten-posnr = iv_index.
ls_exten-vbeln = is_data-vbeln.
IF iv_index = 1.
ls_exten-bschl = '01' ."记账码
IF is_data-vtweg = '30'.
gs_acc_cus-gl_account = '1122020300'."科目
ELSEIF is_data-vtweg = '10'.
gs_acc_cus-gl_account = '1122020301'."科目
ENDIF.
ELSEIF iv_index = 2.
ls_exten-bschl = '11' ."记账码
gs_acc_cus-gl_account = '1221200200'."科目
cs_acc_cur-amt_doccur = cs_acc_cur-amt_doccur * -1.
ENDIF.
cs_acc_ex-structure ='ZSACCIT'.
cs_acc_ex-valuepart1 = ls_exten.
ENDFORM.
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)