[FI] F-65 生成预制凭证 、FBV0 过账 bapi、删除预制凭证 、取消过账详解编程语言
编程语言 详解 删除 生成 取消 Fi BAPI 凭证
2023-06-13 09:11:51 时间
** Check the Document
CALL FUNCTION BAPI_ACC_DOCUMENT_CHECK
**Create the Document
CALL FUNCTION BAPI_ACC_DOCUMENT_POST
在使用这个BAPI的时候需要注意原因代码等字段需要通过扩展去传输,这里就需要去使用SE19增强
参考实施是 ACC_DOCUMENT,我这里定义了一个 ZACC_DOCUMENT在他的CHANGE方法里面我们需要去写入如下代码:
DATA:ls_exte TYPE bapiparex. "用于生成预制凭证bapi设定 DATA: wa_extension TYPE bapiparex, ext_value(960) TYPE c, wa_accit TYPE accit, l_ref TYPE REF TO data. FIELD-SYMBOLS: l_struc TYPE any, l_field TYPE any. SORT c_extension2 BY structure. LOOP AT c_extension2 INTO wa_extension. AT NEW structure. CREATE DATA l_ref TYPE (wa_extension-structure). ASSIGN l_ref- * TO l_struc . ENDAT. CONCATENATE wa_extension-valuepart1 wa_extension-valuepart2 wa_extension-valuepart3 wa_extension-valuepart4 INTO ext_value. MOVE ext_value TO l_struc . ASSIGN COMPONENT POSNR OF STRUCTURE l_struc TO l_field . READ TABLE c_accit WITH KEY posnr = l_field INTO wa_accit. IF sy-subrc IS INITIAL. MOVE-CORRESPONDING l_struc TO wa_accit. MODIFY c_accit FROM wa_accit INDEX sy-tabix. ENDIF. ENDLOOP. "如下计算税额字段也需要在扩展里面去定义才能传输 LOOP AT c_extension2 INTO wa_extension WHERE structure = ZSEXTEN. IF wa_extension-valuepart2 = XMWST. LOOP AT c_accit INTO wa_accit . wa_accit-xmwst = X. MODIFY c_accit FROM wa_accit INDEX sy-tabix TRANSPORTING xmwst. ENDLOOP. ENDIF. ENDLOOP. ”需要注意SET status为2才能生成预制凭证 READ TABLE c_extension2 INTO ls_exte WITH KEY structure = ZSEXTEN. IF sy-subrc = 0. MOVE 2 TO c_acchd-status_new. DELETE c_extension2 INDEX sy-tabix. ENDIF.
遇到问题2是header_txt文本传输不进去,解决方法如下
使用SE24:IF_EX_AC_DOCUMENT,去调整他的方法 CHANGE_INITIAL ,CHANGE_AFTER_CHECK
在上面两个方法里面添加如下代码:
*----------------------------------------------------------------------------------------------------- *about field "HEADER_TXT" in structure "BAPIACHE09" not transferred to field "BKTXT" in table "BKPF" *Add by Torrance 20200330 *--------------------------------------------------------------------------------------------------- DATA: wa_header TYPE acchd. IF sy-xprog NE SAPMSSY1. *--- SAPLBPFC is for Posting with BAPI: BAPI_ACC_DOCUMENT_POST *--- SAPCNVE is for Posting(Tax) with BAPI: BAPI_ACC_DOCUMENT_POST *--- SAPMSSY1 is for Test(Check) with BAPI: BAPI_ACC_DOCUMENT_CHECK CLEAR wa_header. wa_header = im_document-header. ex_document-header-bktxt = wa_header-bktxt. CLEAR wa_header. ENDIF.
2、FBV0过账
*check document data
CALL FUNCTION ZPRELIMINARY_POSTING_CHECK_ALL
*post document data
CALL FUNCTION ZPRELIMINARY_POSTING_POST_ALL
原本应该使用PRELIMINARY_POSTING_CHECK_ALL和PRELIMINARY_POSTING_POST_ALL,但是这两个方法在显示界面的时候会去display log,如果在循环里面展现给用户的结果就不友好,所以我复制了这两个标准的function,然后在里面做变更,当我的程序call的时候就不display log
3、删除预制凭证
这里使用了录制BDC的方式
PERFORM bdc_dynpro USING SAPMF05V 0100. PERFORM bdc_field USING BDC_OKCODE /00. PERFORM bdc_field USING BDC_CURSOR RF05V-GJAHR. PERFORM bdc_field USING RF05V-BUKRS SR00. PERFORM bdc_field USING RF05V-BELNR p_belnr. PERFORM bdc_field USING RF05V-GJAHR p_gjahr. PERFORM bdc_dynpro USING SAPLF040 0700. PERFORM bdc_field USING BDC_CURSOR BKPF-XBLNR. PERFORM bdc_field USING BDC_OKCODE BL. PERFORM bdc_dynpro USING SAPLSPO1 0200. PERFORM bdc_field USING BDC_CURSOR SPOP-OPTION1. "Button YES PERFORM bdc_field USING BDC_OKCODE YES. PERFORM bdc_field USING BDC_OKCODE ENTER. CALL TRANSACTION FBV0 USING bdcdata MODE mode UPDATE S.
19617.html
cjava
相关文章
- 为什么用 Java:一个 Python 程序员告诉你详解编程语言
- js数组删除,新增,元素删除,事件绑定详解编程语言
- C#应用Newtonsoft.Json操作json详解编程语言
- Python基础之第一篇详解编程语言
- python基础4之递归、lambda、深浅copy详解编程语言
- Go语言圣经-基于select的多路复用习题详解编程语言
- Android学习路线图详解编程语言
- js保存,获取,删除cookie的操作详解编程语言
- 算法-删除链表中重复的结点详解编程语言
- restTemplate设置访问超时详解编程语言
- Java之创建对象>5.Avoid creating unnecessary objects详解编程语言
- Java服务器工程师任职资格详解编程语言
- Spring Boot 的 10 个核心模块详解编程语言
- Java实现文本创建、删除、编辑内容详解编程语言
- 删除项目中所有的__pycache__ 文件详解编程语言
- python中*和**的打包和解包详解编程语言
- Js删除字符串中的指定字符串详解编程语言
- java 下载文件中文名称转码详解编程语言
- BAPI_PO_CHANGE设置PO行项目状态:删除、冻结时,TABLES参数POITEM设置详解编程语言
- 读取销售订单用户状态(user status)/系统状态(system status)-STATUS_TEXT_EDIT详解编程语言
- 如何删除或更改已经释放的TR详解编程语言
- 【Java】使用socket实现控制台多线程聊天室详解编程语言
- java 通过sftp服务器上传下载删除文件详解编程语言
- java IO流文件的读写具体实例详解编程语言