VF01 BAPI :BAPI_BILLINGDOC_CREATEMULTIPLE
需求:合并开票
同一种发票类型的开在一张发票上,不同类型的发票类型开在不同发票上;
即:同一客户、销售组织、开票类型的结算单,开在同一张发票上。
也可以通过 VF04 合并开票。
如若通过BAPI,则可以通过 BAPI_BILLINGDOC_CREATEMULTIPLE 开票:
Data:
gt_vbak TYPE TABLE OF vbak WITH HEADER LINE,
gt_vbap TYPE TABLE OF vbap WITH HEADER LINE,
Data:
gt_billingdatain TYPE TABLE OF bapivbrk WITH HEADER LINE,
gt_conditiondatain TYPE TABLE OF bapikomv WITH HEADER LINE,
gt_errors TYPE TABLE OF bapivbrkerrors WITH HEADER LINE.
*-------------------------------------------------------------------------
* BAPI 赋值
*-------------------------------------------------------------------------
FORM frm_ready_billing .
DATA: lv_message TYPE bapi_msg.
REFRESH:gt_vbfa[],gt_likp[].
* "找交货单号
SELECT *
FROM vbfa
INTO CORRESPONDING FIELDS OF TABLE gt_vbfa
FOR ALL ENTRIES IN gt_alv
WHERE vbelv = gt_alv-vbeln
AND vbtyp_n = 'J'.
IF gt_vbfa[] IS NOT INITIAL.
SELECT *
FROM likp
INTO CORRESPONDING FIELDS OF TABLE gt_likp
FOR ALL ENTRIES IN gt_vbfa
WHERE vbeln = gt_vbfa-vbeln.
ENDIF.
SORT gt_alv BY fkara vkorg kunnr. "同一销售组织、开票类型、客户,统一开票
LOOP AT gt_alv INTO gw_alv.
READ TABLE gt_vbfa WITH KEY vbelv = gw_alv-vbeln.
IF sy-subrc = 0.
LOOP AT gt_vbfa WHERE vbelv = gw_alv-vbeln.
gv_count = gv_count + 1.
gt_billingdatain-ref_doc = gt_vbfa-vbelv. "凭证号
gt_billingdatain-ref_item = gt_vbfa-posnv.
gt_billingdatain-doc_number = gt_vbfa-vbeln. "交货单号
gt_billingdatain-itm_number = gt_vbfa-posnn. "
gt_billingdatain-doc_type = gw_alv-auart. "销售凭证类型
gt_billingdatain-ref_doc_ca = 'C'. "SD 凭证类别
gt_billingdatain-ordbilltyp = gw_alv-fkara. "开票类型
gt_billingdatain-salesorg = gw_alv-vkorg. "销售组织
READ TABLE gt_vbak WITH KEY vbeln = gw_alv-vbeln.
IF sy-subrc = 0.
gt_billingdatain-distr_chan = gt_vbak-vtweg. "分销渠道
gt_billingdatain-division = gt_vbak-spart. "产品组
LOOP AT gt_konv WHERE knumv = gt_vbak-knumv.
gt_conditiondatain-data_index = gv_count.
gt_conditiondatain-cond_curr = gt_konv-waers.
APPEND gt_conditiondatain.
ENDLOOP.
ENDIF.
gt_billingdatain-ship_to = gw_alv-kunnr. "客户
gt_billingdatain-sold_to = gt_billingdatain-ship_to. "售达方
gt_billingdatain-bill_to = gt_billingdatain-ship_to. "开票方
gt_billingdatain-payer = gt_billingdatain-ship_to. "付款方
READ TABLE gt_vbkd WITH KEY vbeln = gw_alv-vbeln.
IF sy-subrc = 0.
gt_billingdatain-payment_terms = gt_vbkd-zterm. "付款方式
gt_billingdatain-incoterms1 = gt_vbkd-inco1. "国际贸易条款1
gt_billingdatain-incoterms2 = gt_vbkd-inco2. "国际贸易条款2
ENDIF.
READ TABLE gt_vbap WITH KEY vbeln = gw_alv-vbeln.
IF sy-subrc = 0.
gt_billingdatain-plant = gt_vbap-werks. "工厂
gt_billingdatain-material = gt_vbap-matnr. "物料
gt_billingdatain-currency = gt_vbap-waerk. "currency
ENDIF.
gt_billingdatain-req_qty = abs( gt_vbfa-rfmng ). "数量
gt_billingdatain-sales_unit = gt_vbfa-meins. "单位
gt_billingdatain-bill_date = pr_sdate. "开票日期
gt_billingdatain-price_date = pr_sdate. "开票日期
APPEND gt_billingdatain.
ENDLOOP.
ELSE.
CLEAR gt_vbap.
" vbap
READ TABLE gt_vbap WITH KEY vbeln = gw_alv-vbeln.
IF sy-subrc = 0.
CLEAR gt_vbap.
LOOP AT gt_vbap WHERE vbeln = gw_alv-vbeln.
gv_count = gv_count + 1.
gt_billingdatain-ref_doc = gt_vbap-vbeln. "凭证号
gt_billingdatain-ref_item = gt_vbap-posnr.
gt_billingdatain-doc_number = gt_vbap-vbeln. "交货单号
gt_billingdatain-itm_number = gt_vbap-posnr.
gt_billingdatain-doc_type = gw_alv-auart. "销售凭证类型
gt_billingdatain-ref_doc_ca = 'C'. "SD 凭证类别
gt_billingdatain-ordbilltyp = gw_alv-fkara. "开票类型
gt_billingdatain-salesorg = gw_alv-vkorg. "销售组织
READ TABLE gt_vbak WITH KEY vbeln = gw_alv-vbeln.
IF sy-subrc = 0.
gt_billingdatain-distr_chan = gt_vbak-vtweg. "分销渠道
gt_billingdatain-division = gt_vbak-spart. "产品组
LOOP AT gt_konv WHERE knumv = gt_vbak-knumv.
gt_conditiondatain-data_index = gv_count.
gt_conditiondatain-cond_curr = gt_konv-waers.
APPEND gt_conditiondatain.
ENDLOOP.
ENDIF.
gt_billingdatain-ship_to = gw_alv-kunnr. "客户
gt_billingdatain-sold_to = gt_billingdatain-ship_to. "售达方
gt_billingdatain-bill_to = gt_billingdatain-ship_to. "开票方
gt_billingdatain-payer = gt_billingdatain-ship_to. "付款方
READ TABLE gt_vbkd WITH KEY vbeln = gw_alv-vbeln.
IF sy-subrc = 0.
gt_billingdatain-payment_terms = gt_vbkd-zterm. "付款方式
gt_billingdatain-incoterms1 = gt_vbkd-inco1. "国际贸易条款1
gt_billingdatain-incoterms2 = gt_vbkd-inco2. "国际贸易条款2
ENDIF.
READ TABLE gt_vbap WITH KEY vbeln = gw_alv-vbeln.
IF sy-subrc = 0.
gt_billingdatain-plant = gt_vbap-werks. "工厂
gt_billingdatain-material = gt_vbap-matnr. "物料
gt_billingdatain-currency = gt_vbap-waerk. "currency
ENDIF.
gt_billingdatain-req_qty = abs( gt_vbap-zmeng ). "数量
gt_billingdatain-sales_unit = gt_vbap-zieme. "单位
gt_billingdatain-bill_date = pr_sdate. "开票日期
gt_billingdatain-price_date = pr_sdate. "开票日期
APPEND gt_billingdatain.
ENDLOOP.
ENDIF.
ENDIF.
AT END OF kunnr. "同一销售组织、单据类型、客户,统一开票
PERFORM frm_order_billing CHANGING lv_message. "开票
CLEAR gt_billingdatain[].
CLEAR gv_count.
gv_item = 10.
ENDAT.
ENDLOOP.
* 开票异常
IF NOT gv_flagx IS INITIAL.
* MESSAGE s285 DISPLAY LIKE cn_fail.
CONCATENATE '错误:开票失败,' lv_message INTO lv_message.
MESSAGE lv_message TYPE cn_fail.
* 开票成功
ELSEIF gv_flagw = space AND gv_flagx = space.
MESSAGE s284 DISPLAY LIKE cn_succ.
* 开票出现错误,但可开票,出警告
ELSEIF NOT gv_flagw IS INITIAL AND gv_flagx = space.
CONCATENATE '警告:开票成功,' lv_message INTO lv_message.
MESSAGE lv_message TYPE cn_warn.
ENDIF.
ENDFORM. " FRM_READY_BILLING
*-------------------------------------------------------------------------
* CALL BAPI
*-------------------------------------------------------------------------
FORM frm_order_billing CHANGING pv_message.
DATA: lt_success TYPE TABLE OF bapivbrksuccess WITH HEADER LINE,
lt_return TYPE TABLE OF bapiret1 WITH HEADER LINE.
SORT gt_billingdatain BY ref_doc.
REFRESH: lt_return[],lt_success[],gt_errors[].
* Test Run
CALL FUNCTION 'BAPI_BILLINGDOC_CREATEMULTIPLE'
EXPORTING
* CREATORDATAIN =
testrun = 'X'
* posting = 'X'
TABLES
billingdatain = gt_billingdatain
conditiondatain = gt_conditiondatain
* CCARDDATAIN =
* TEXTDATAIN =
errors = gt_errors
return = lt_return
success = lt_success.
IF NOT gt_errors[] IS INITIAL.
gv_flagx = cn_flagx.
ENDIF.
IF NOT lt_return[] IS INITIAL.
LOOP AT lt_return WHERE type = 'E'.
CONCATENATE lt_return-message ' ' INTO pv_message.
ENDLOOP.
gv_flagw = cn_flagx.
ENDIF.
IF gv_flagx IS INITIAL.
* Post Run
CALL FUNCTION 'BAPI_BILLINGDOC_CREATEMULTIPLE'
EXPORTING
* CREATORDATAIN =
testrun = ''
* posting = 'X'
TABLES
billingdatain = gt_billingdatain
conditiondatain = gt_conditiondatain
* CCARDDATAIN =
* TEXTDATAIN =
errors = gt_errors
return = lt_return
success = lt_success.
IF NOT lt_success[] IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ENDIF.
ENDIF.
ENDFORM. " FRM_ORDER_BILLING
VF01 BAPI :BAPI_BILLINGDOC_CREATEMULTIPLE相关推荐
- VF01 BAPI :BAPI_BILLINGDOC_CREATEMULTIPLE
需求:合并开票 同一种发票类型的开在一张发票上,不同类型的发票类型开在不同发票上: 即:同一客户.销售组织.开票类型的结算单,开在同一张发票上. 也可以通过 VF04 合并开票. 如若通过BAPI,则 ...
- 【修正】销售开票BAPI实例:BAPI_BILLINGDOC_CREATEMULTIPLE
FORM FRM_GENERATE_BILLING . *----------------------------------------------------------------------- ...
- SAP VF01销售开票:BAPI_BILLINGDOC_CREATEMULTIPLE
VF01的界面是这样的: 界面可以看出,需要传的主要的参数有这么几个,这里的凭证用的是交货单号. 据我了解,销售开票之前的流程是这样的: 生成销售单->销售单生成交货单->交货单过账-&g ...
- abap 发票冲销VF11的BAPI:BAPI_BILLINGDOC_CANCEL1
发票冲销VF11的BAPI:BAPI_BILLINGDOC_CANCEL1 更多请加群:455101474
- SAP 固定资产调拨BAPI:BAPI_FIXEDASSET_CHANGE
固定资产调拨 BAPI:BAPI_FIXEDASSET_CHANGE 以下代码供参考: "BAPI导入参数DATA: LV_COMPANYCODE LIKE BAPI1022_1-COMP_ ...
- PP报工确认bapi:BAPI_PRODORDCONF_CREATE_TT
主要实现代码: DATA: *BAPI相关定义timetickets LIKE bapi_pp_timeticket OCCURS 0 WITH HEADER LINE,return_detail L ...
- MIGO相关bapi:BAPI_GOODSMVT_CREATE 移动类型314 E
主要实现代码: DATA: goodsmvt_header LIKE bapi2017_gm_head_01, itab TYPE TABLE OF bap ...
- ABAP BAPI:BAPI_PR_CHANGE批量修改采购申请审批状态等
更改PR:BAPI_PR_CHANGE 审批 BAPI_REQUISITION_RELEASE 取消审批 BAPI_REQUISITION_RESET_RELEASE 获取审批策略,审批组 IF lt ...
- VA05批量更新BAPI:SD_BULK_CHANGE
碰到一个需求,需要实现VA05批量更新定价的功能,前台VA05可以对销售订单进行批量更新工厂,物料,定价,货币,DEBUG了一下发现底层调用的函数为SD_BULK_CHANGE. 其实批量更新销售订单 ...
最新文章
- 华为SDSec分为几层
- 深度学习——你需要了解的八大开源框架
- CISS.SideMenu的bug
- Zookeeper的作用
- 前端状态机系列:SCXML与XState对应关系
- 前端学习(3151):react-hello-react之DoM的diff算法
- 原生ajax请求的五个步骤
- MSDN宇宙版到货!
- spring mvc 对象型参数的传递(遇到坑了)
- QString字符串中双引号的梗
- 求助ET服装打版软件
- 1.59TB《全球 12.5 米高程DEM for WeServer》发布
- 数字图像处理课程作业1-大米检测
- RGB-D相机原理与选型
- 3dmax三点照明法场景照明的方法和技巧
- Codeforces 1156B
- xpage 传参_一个轻量级的Android路由框架,基于ARouter上进行改良,优化Fragment的使用,可结合XPage使用。...
- 什么是最优化问题(Optimization Problem)?
- 计算机图像处理的未来发展,探讨计算机图像处理技术的发展趋势与展望
- python爬虫拉勾网职位信息