ABAP使用BDC录屏实现供应商付款功能(F-02)
功能需求为实现一个接口,进行供应商付款业务。要求可使用现金、银行存款、汇票等过账方式,本想用BDC录屏实现事务码F-02,结果测试时发现有些过账码内容不能同时使用,现记录下来,抛砖引玉,如有大神知道怎么改,请多指教,后期将另一篇文章中用bapi实现此业务。话不多说,先上代码:
FUNCTION ZFI_OA_SUPLIER_SPECEIL_PAY.
*"----------------------------------------------------------------------
"“本地接口:
*” IMPORTING
*" REFERENCE(BUKRS) TYPE BUKRS DEFAULT ‘1000’
*" REFERENCE(BLART) TYPE BLART DEFAULT ‘SA’
*" REFERENCE(BLDAT) TYPE BLDAT DEFAULT SY-DATUM
*" REFERENCE(BUDAT) TYPE BUDAT DEFAULT SY-DATUM
*" REFERENCE(XBLNR) TYPE XBLNR OPTIONAL
*" REFERENCE(KURSF) TYPE KURSF OPTIONAL
*" REFERENCE(WAERS) TYPE WAERS
*" REFERENCE(BKTXT) TYPE BKTXT
*" EXPORTING
*" REFERENCE(RTYPE) TYPE BAPI_MTYPE
*" REFERENCE(RTMSG) TYPE BAPI_MSG
*" REFERENCE(BELNR) TYPE BELNR_D
*" REFERENCE(GJAHR) TYPE GJAHR
*" TABLES
*" IT_ITEM STRUCTURE ZF02ITEM
*"----------------------------------------------------------------------
DATA BEGIN OF ITAB OCCURS 0.
INCLUDE TYPE ZF02ITEM.
DATA:NUM TYPE SY-TABIX,
END OF ITAB,
WA LIKE LINE OF ITAB,
WRBTR1 TYPE CHAR23,
WRBTR2 TYPE CHAR23,
MONAT TYPE CHAR2,
KURSFC TYPE CHAR9.
DATA:BDCMSG LIKE ARRANG_ERR,
MSG TYPE BAPI_MSG.
IF IT_ITEM[] IS NOT INITIAL.
CLEAR:BDCDATA[],MESSTAB[],BELNR,GJAHR,RTMSG,RTYPE.
MONAT = BUDAT+4(2).
APPEND LINES OF IT_ITEM TO ITAB.PERFORM BDC_DYNPRON USING 'SAPMF05A' '0100'."头数据录入
PERFORM BDC_FIELDN USING 'BDC_CURSOR''RF05A-NEWKO'.
PERFORM BDC_FIELDN USING 'BDC_OKCODE''/00'.
PERFORM BDC_FIELDN USING 'BKPF-BLDAT' BLDAT ."凭证日期
PERFORM BDC_FIELDN USING 'BKPF-BLART' BLART."凭证类型 总账科目凭证 默认SA
PERFORM BDC_FIELDN USING 'BKPF-BUKRS' BUKRS. "公司代码 默认1000
PERFORM BDC_FIELDN USING 'BKPF-BUDAT' BUDAT. "过账日期
PERFORM BDC_FIELDN USING 'BKPF-MONAT' MONAT."记账期间
PERFORM BDC_FIELDN USING 'BKPF-WAERS' WAERS."货币 默认CNY
PERFORM BDC_FIELDN USING 'BKPF-BKTXT' BKTXT."抬头文本
PERFORM BDC_FIELDN USING 'FS006-DOCID' '*' .
IF KURSF IS NOT INITIAL.PERFORM BDC_FIELDN USING 'BKPF-KURSF' KURSF. "汇率
ENDIF.
LOOP AT ITAB.WRBTR1 = ITAB-WRBTR.CONDENSE WRBTR1 NO-GAPS.IF ITAB-NEWUM EQ 'W'.PERFORM BDC_FIELDN USING 'RF05A-NEWBS' ITAB-BSCHL."过账码PERFORM BDC_FIELDN USING 'RF05A-NEWKO' ITAB-HKONT. "科目PERFORM BDC_FIELDN USING 'RF05A-NEWUM' ITAB-NEWUM."特别总账标识PERFORM BDC_DYNPRON USING 'SAPMF05A' '0320'.PERFORM BDC_FIELDN USING 'BDC_CURSOR''RF05A-NEWBS'.PERFORM BDC_FIELDN USING 'BDC_OKCODE''=BU'.PERFORM BDC_FIELDN USING 'BSEG-WRBTR' WRBTR1 . "金额PERFORM BDC_FIELDN USING 'BSEG-ZFBDT' ITAB-ZFBDT. "汇票到期日期PERFORM BDC_FIELDN USING 'BSED-WNAME' ITAB-WNAME. "收款人名字
PERFORM BDC_FIELD USING 'BSED-WORT1' ."收款人城市
PERFORM BDC_FIELD USING 'BSED-REGIO' ."收款人城市码PERFORM BDC_FIELDN USING 'BSED-WBZOG' ITAB-WBZOG."付款人
PERFORM BDC_FIELD USING 'BSED-WORT2' . "付款人城市PERFORM BDC_FIELDN USING 'BSEG-ZUONR' ITAB-ZUONR."分配PERFORM BDC_FIELDN USING 'BSEG-SGTXT' ITAB-SGTXT."文本PERFORM BDC_FIELDN USING 'BSED-WBANK' ITAB-WBANK."指定支付地点PERFORM BDC_FIELDN USING 'BSED-WLZBP' ITAB-WLZBP."中央银行位置PERFORM BDC_FIELDN USING 'BSED-BOENO' ITAB-BOENO."Check Number ELSE .PERFORM BDC_FIELDN USING 'RF05A-NEWBS' ITAB-BSCHL."过账码PERFORM BDC_FIELDN USING 'RF05A-NEWKO' ITAB-HKONT. "科目 IF ITAB-BSCHL EQ '50'.PERFORM BDC_DYNPRON USING 'SAPMF05A' '0300'.PERFORM BDC_FIELDN USING 'BDC_OKCODE' '/00'.PERFORM BDC_FIELDN USING 'BSEG-WRBTR' WRBTR1 . "金额PERFORM BDC_FIELDN USING 'BSEG-ZUONR' ITAB-ZUONR."分配PERFORM BDC_FIELDN USING 'BSEG-SGTXT' ITAB-SGTXT."文本PERFORM BDC_FIELDN USING 'BDC_OKCODE' '/00'.PERFORM BDC_DYNPRON USING 'SAPLKACB' '0002'.PERFORM BDC_DYNPRON USING 'SAPMF05A' '0330'.PERFORM BDC_FIELDN USING 'BSEG-RSTGR' ITAB-RSTGR."原因码PERFORM BDC_FIELDN USING 'BDC_OKCODE' '/00'.ELSE .PERFORM BDC_DYNPRON USING 'SAPMF05A' '0302'.PERFORM BDC_FIELDN USING 'BDC_OKCODE' '/00'.PERFORM BDC_FIELDN USING 'BSEG-WRBTR' WRBTR1 . "金额PERFORM BDC_FIELDN USING 'BSEG-MWSKZ' '**'."税码PERFORM BDC_FIELDN USING 'BSEG-ZFBDT' ITAB-ZFBDT. "付款起算日期PERFORM BDC_FIELDN USING 'BSEG-ZUONR' ITAB-ZUONR."分配PERFORM BDC_FIELDN USING 'BSEG-SGTXT' ITAB-SGTXT."文本PERFORM BDC_FIELDN USING 'BDC_OKCODE' '/00'.ENDIF. ENDIF. CLEAR ITAB.
ENDLOOP.
PERFORM BDCFM TABLES BDCDATA MESSTAB USING ‘F-02’ ‘N’.
READ TABLE MESSTAB WITH KEY MSGTYP = ‘E’.
IF SY-SUBRC = 0.
PERFORM BDCMSG TABLES MESSTAB CHANGING RTMSG.
RTYPE = ‘E’.
ELSE.
RTMSG = ‘警告,未执行完’.
RTYPE = ‘W’.
READ TABLE MESSTAB WITH KEY MSGTYP = ‘S’ MSGID = ‘F5’ MSGNR = ‘312’ .
IF SY-SUBRC = 0.
BELNR = MESSTAB-MSGV1.
GJAHR = BUDAT+0(4).
RTMSG = ‘成功’.
RTYPE = ‘S’.
ELSE.
RTMSG = ‘警告,执行完,但未生成记录’.
RTYPE = ‘W’.
ENDIF.ENDIF .
ENDIF .
ENDFUNCTION.
以下为数据结构====================
有些字段未放入录屏中,如有需求可自行添加。
ABAP使用BDC录屏实现供应商付款功能(F-02)相关推荐
- BDC录屏 EPIC_PROC,银企直连
目的:用户希望用BDC实现,自动创建EPIC_PROC银企直连的"付款建议"按钮功能 (本想实现以下步骤,创建付款状态,但无法实现) 难点:EPIC_PROC事务码直接录屏没办法捕 ...
- 测试手机视频录屏并转GIF功能
完美录屏大师配合抠抠视频秀,测试录制效果,还不错,找了好久~~~
- 录录(高清录屏) - Video321 剪辑功能介绍
大家好,今天我们录录录屏又和大家见面啦- 之前已经跟大家介绍过录录录屏-Video321是一款通过视频录制.视频分享的方式提高办公效率的SaaS型产品.通过使用"录录录屏-Video321& ...
- 安卓10自带录屏_谷歌终于在Android 11版里原生支持屏幕录像功能(即录屏)和长截图功能...
在谷歌面向开发者们推出 Android 11 开发者预览版后,关于新版本的越来越多的新增功能正在被逐渐发掘出来. 例如最新被发掘出来的新功能是谷歌终于添加所有用户期待已久的屏幕录像功能,同时还支持进行 ...
- abap如何找屏幕增强_因增强导致BDC录屏执行异常的梗
最近呀,写一个使用BDC批量导入数据到MIRO的程序,遇到一个很有意思的问题,愣是折腾了半天才找到原因,具体是啥问题呢,且听我细细道来.Debug的时候发现,执行完CALLTRANSACTION 'M ...
- 因增强导致BDC录屏执行异常的梗
最近呀,写一个使用BDC批量导入数据到MIRO的程序,遇到一个很有意思的问题,愣是折腾了半天才找到原因,具体是啥问题呢,且听我细细道来. Debug的时候发现,执行完CALLTRANSACTION ' ...
- Camtasia2021下载屏幕录屏记录视频软件功能教程
Camtasia 2021使在Windows和Mac上录制和创建专业外观的视频变得简单.超过3600万人使用Camtasia制作视频,教程.演示.培训视频等你做!Camtasia学得快,不需要很大的预 ...
- 使用BDC进行Miro录屏时的公司代码弹窗问题
最近这几个月手边头繁琐的事情比较多,所以在公众号推文方面有所懈怠.今天是21年的第一天,带孩子出去了一天,这阵找点时间来写一篇,鞭策自己新的一年努力努力再努力. 01 - 简要介绍 我们知道,有些事务 ...
- BDC 弹窗录屏解决办法(ABUMN)
导语:最近在做一个资产价值转移的程序,没有找到合适的函数,就用了BDC,但是有个问题是,ABUMN这个事务码,第一次进入会弹窗让输入公司代码,第二次就不会了,会有参数ID的默认,这样没办法控制. 解决 ...
最新文章
- 大规模服务设计部署经验谈
- 五个运动员参加比赛根据他们说的话判断结果
- 谈谈java面向对象思想_对于Java面向对象思想的理解
- QEMU 1.3 发布,模拟处理器
- wxWidgets:wxMenuItem类用法
- 一个非常简单的滚动代码
- TCP/UDP网络编程入门教程之二:TCP Server端——socket与文件描述符
- {转}maven+continuum安装与配置
- 关于cookie使用的几个方法
- python条形图的动画显示水能时钟_[宜配屋]听图阁
- 实验7 OpenGL光照
- python语言里数字包括_Python 学习 第一篇:数据类型(数字,布尔类型,操作符)...
- html实现圆形计时器特效,js css3圆形的时分秒计时器动画特效
- ssh 遍历IPS 进行连接
- EXCEL多项式曲线拟合很好实际验算误差大的解决办法
- xss.haozi.me弹窗练习0x00-0x10
- 年轻时欠下风流情债的十大男女明星(组图)
- 从host端对Windows虚机进行内存dump和分析
- jcp jsr_JCP专家组成员拒绝社交媒体API引发了关于创新的辩论
- 好不容易找到的一篇dva教程