RFC 在OA中创建PR
创建PR:
BAPI_REQUISITION_CREATE
BAPI_PR_CREATE "Create Enjoy Purchase Requisistion(这是新函数)
BAPI_PR_CHANGE
BAPI_PR_CREATE
BAPI_PR_GETDETAIL
相关函数:
函数组 函数组短文本
功能模块名称 函数模块短文本
MEWF 批准的BAPI
BAPI_REQUISITION_RELEASE 批准采购请求
BAPI_REQUISITION_RELEASE_GEN
BAPI_REQUISITION_RESET_RELEASE 取消请购的下达
BAPI_REQUISITION_RESET_REL_GEN
MEWQ
BAPI_REQUISITION_CHANGE
BAPI_REQUISITION_CREATE
BAPI_REQUISITION_DELETE
BAPI_REQUISITION_GETDETAIL
BAPI_REQUISITION_GETITEMS
BAPI_REQUISITION_GETITEMSREL
BAPI_REQUISITION_GETRELINFO
FUNCTION ZRFC_OA_CREATE_PR.
*"----------------------------------------------------------------------
*"*"Local interface:
*" EXPORTING
*" VALUE(EX_RESULT) TYPE CHAR1
*" VALUE(EX_BANFN) TYPE BANFN
*" TABLES
*" DATA_TAB STRUCTURE ZOA_PR01
*" RETURN STRUCTURE BAPIRET2
*" PR_NEW STRUCTURE ZOA_PR02
*"----------------------------------------------------------------------
DATA: GT_DATA TYPE TABLE OF ZOA_PR01 WITH HEADER LINE .
DATA: PR_ITEM LIKE TABLE OF BAPIEBANC WITH HEADER LINE,
PR_ACCOUNT LIKE TABLE OF BAPIEBKN WITH HEADER LINE,
PR_ITEM_ID LIKE TABLE OF BAPIEBANTX WITH HEADER LINE,
PR_RETURN LIKE TABLE OF BAPIRETURN WITH HEADER LINE,
PR_REL LIKE TABLE OF BAPIMMPARA WITH HEADER LINE.
DATA: L_RETURN LIKE PR_RETURN.
DATA: LV_MESSAGE(255).
DATA: PR_NO TYPE BAPIEBANC-PREQ_NO.
DATA: BNFPO TYPE BNFPO.
DATA: PP_FILE TYPE STRING.
RETURN-MESSAGE = '开始调用接口。创建采购申请'.
RETURN-TYPE = 'I'.
APPEND RETURN.
IF DATA_TAB[] IS INITIAL.
RETURN-MESSAGE = '没有可以处理数据'.
RETURN-TYPE = 'E'.
APPEND RETURN.
ENDIF.
LOOP AT DATA_TAB.
MOVE-CORRESPONDING DATA_TAB TO GT_DATA.
DATA: LINE(10) TYPE C.
DATA: LV_DATE TYPE SY-DATUM.
WRITE SY-TABIX TO LINE.
IF DATA_TAB-MATNR IS INITIAL .
CONCATENATE '行 ' LINE ' 请输入物料编号' INTO RETURN-MESSAGE .
APPEND RETURN.
ELSE.
GT_DATA-MATNR = DATA_TAB-MATNR."物料编号
ENDIF.
IF DATA_TAB-MENGE IS INITIAL.
CONCATENATE '行 ' LINE ' 请输入数量' INTO RETURN-MESSAGE .
APPEND RETURN.
ELSE.
GT_DATA-MENGE = DATA_TAB-MENGE."数量
ENDIF.
IF DATA_TAB-MEINS IS INITIAL.
CONCATENATE '行 ' LINE ' 请输入单位' INTO RETURN-MESSAGE .
APPEND RETURN.
ELSE.
GT_DATA-MEINS = DATA_TAB-MEINS."单位
ENDIF.
* GT_DATA-MEINS = 'PCS'. "强制使用PCS
IF DATA_TAB-EEIND IS INITIAL.
CONCATENATE '行 ' LINE ' 请输入交货时间' INTO RETURN-MESSAGE .
APPEND RETURN.
ELSE.
* CONCATENATE DATA_TAB-EEIND+0(4) DATA_TAB-EEIND+5(2) DATA_TAB-EEIND+8(2) INTO LV_DATE.
** gt_data-eeind = data_tab-value_0005."交货时间
* CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
* EXPORTING
* DATE = LV_DATE
* EXCEPTIONS
* PLAUSIBILITY_CHECK_FAILED = 1
* OTHERS = 2.
* IF SY-SUBRC <> 0.
** WRITE : / '请按格式YYYY-MM-DD 输入正确的日期'.
* CONCATENATE '行 ' LINE ' 请按格式YYYY-MM-DD 输入正确的日期' INTO RETURN-MESSAGE .
* APPEND RETURN.
* ELSEIF SY-SUBRC = 0 .
* GT_DATA-EEIND = LV_DATE.
GT_DATA-EEIND = DATA_TAB-EEIND.
* ENDIF.
ENDIF.
GT_DATA-BSART = DATA_TAB-BSART."'NB'. "凭证类型
GT_DATA-WERKS = DATA_TAB-WERKS ."'1000'. "工厂
COLLECT GT_DATA.
CLEAR GT_DATA.
ENDLOOP.
LOOP AT GT_DATA.
BNFPO = GT_DATA-BNFPO.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = BNFPO
IMPORTING
OUTPUT = BNFPO.
PR_ITEM-PREQ_ITEM = BNFPO. "项目
PR_ITEM-MATERIAL = GT_DATA-MATNR.
PR_ITEM-DOC_TYPE = GT_DATA-BSART. "凭证类型
PR_ITEM-ACCTASSCAT = GT_DATA-KNTTP."科目分配类别
PR_ITEM-SHORT_TEXT = GT_DATA-TXZ01."短文本
PR_ITEM-QUANTITY = GT_DATA-MENGE. "数量
PR_ITEM-UNIT = GT_DATA-MEINS."单位
PR_ITEM-DELIV_DATE = GT_DATA-EEIND. "交货日期
PR_ITEM-MAT_GRP = GT_DATA-MATKL. "物料组
PR_ITEM-PLANT = GT_DATA-WERKS."工厂
PR_ITEM-PUR_GROUP = GT_DATA-EKGRP."采购组
PR_ITEM-PREQ_NAME = GT_DATA-AFNAM."申请者
PR_ITEM-TRACKINGNO = GT_DATA-BEDNR."需求跟踪号
PR_ITEM-C_AMT_BAPI = GT_DATA-PREIS."评估价格
PR_ITEM-CURRENCY = GT_DATA-WAERS."货币码
PR_ITEM-PRICE_UNIT = GT_DATA-PEINH."价格单位
PR_ITEM-MRP_CONTR = GT_DATA-DISPO."MRP控制者
PR_ITEM-TRACKINGNO = GT_DATA-BEDNR."跟踪号
PR_ITEM-STORE_LOC = GT_DATA-LGORT."库存
PR_ITEM-VEND_MAT = GT_DATA-IDNLF." OA : ID
PR_ITEM-GR_IND = 'X'."GR
PR_ITEM-IR_IND = 'X'."IR
APPEND PR_ITEM.
CLEAR PR_ITEM.
pr_account-preq_item = bnfpo. "项目
pr_account-g_l_acct = gt_data-sakto. "总帐科目
pr_account-cost_ctr = gt_data-kostl. "成本中心
* pr_account-asset_no = gt_data-anln1. "资产
* pr_account-order_no = gt_data-aufnr. "订单
* pr_account-co_area = 'BELL'.
APPEND pr_account.
CLEAR pr_account.
PR_REL-PO_REL_IND = 'X'.
PR_REL-REL_IND ='X'.
APPEND PR_REL.
*
* pr_item_id-preq_item = bnfpo."项目
* pr_item_id-text_id = 'B03'.
* pr_item_id-text_line = gt_data-str1."行项目文本-传送文本
* APPEND pr_item_id.
* CLEAR pr_item_id.
*
* pr_item_id-preq_item = bnfpo."项目
* pr_item_id-text_id = 'B07'.
* pr_item_id-text_line = gt_data-str2."行项目文本-预算年度
* APPEND pr_item_id.
* CLEAR pr_item_id.
*
* pr_item_id-preq_item = bnfpo."项目
* pr_item_id-text_id = 'B08'.
* pr_item_id-text_line = gt_data-str3."行项目文本-资产类别
* APPEND pr_item_id.
* CLEAR pr_item_id.
*
* AT END OF BEDNR.
*
*
* ENDAT.
ENDLOOP.
CALL FUNCTION 'BAPI_REQUISITION_CREATE'
EXPORTING
AUTOMATIC_SOURCE = ''
SKIP_ITEMS_WITH_ERROR = ''
IMPORTING
NUMBER = PR_NO
TABLES
REQUISITION_ITEMS = PR_ITEM
REQUISITION_ACCOUNT_ASSIGNMENT = pr_account
RETURN = PR_RETURN.
LOOP AT PR_RETURN .
MOVE-CORRESPONDING PR_RETURN TO RETURN.
APPEND RETURN.
ENDLOOP.
* APPEND LINES OF PR_RETURN TO RETURN.
READ TABLE PR_RETURN WITH KEY TYPE = 'E' .
IF SY-SUBRC = 0.
CLEAR: LV_MESSAGE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
LOOP AT PR_RETURN INTO L_RETURN WHERE TYPE = 'E' .
CONCATENATE LV_MESSAGE L_RETURN-MESSAGE ';'
INTO LV_MESSAGE.
ENDLOOP.
CONCATENATE GT_DATA-BEDNR LV_MESSAGE INTO PR_NEW-TEXT.
APPEND PR_NEW.
CLEAR PR_NEW.
EX_RESULT = 'E'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
CONCATENATE PR_NO '创建成功' INTO PR_NEW-TEXT.
PR_NEW-BANFN = PR_NO.
APPEND PR_NEW.
CLEAR PR_NEW.
EX_RESULT = 'S'.
EX_BANFN = PR_NO.
*批准采购申请
WAIT UP TO 5 SECONDS.
PERFORM APPROVE_PR USING PR_NO.
ENDIF.
FREE PR_ITEM.
FREE PR_ACCOUNT.
FREE PR_ITEM_ID.
FREE PR_RETURN.
RETURN-MESSAGE = '结束调用接口。创建采购申请'.
RETURN-TYPE = 'I'.
APPEND RETURN.
ENDFUNCTION.
RFC 在OA中创建PR的更多相关文章
- .net中创建xml文件的两种方法
.net中创建xml文件的两种方法 方法1:根据xml结构一步一步构建xml文档,保存文件(动态方式) 方法2:直接加载xml结构,保存文件(固定方式) 方法1:动态创建xml文档 根据传递的值,构建 ...
- 如何使用 Packer 在 Azure 中创建 Windows 虚拟机映像
Azure 中的每个虚拟机 (VM) 都是基于定义 Windows 分发和操作系统版本的映像创建的. 映像可以包括预安装的应用程序和配置. Azure 应用商店为最常见的操作系统和应用程序环境提供了许 ...
- In-Memory:在内存中创建临时表和表变量
在Disk-Base数据库中,由于临时表和表变量的数据存储在tempdb中,如果系统频繁地创建和更新临时表和表变量,大量的IO操作集中在tempdb中,tempdb很可能成为系统性能的瓶颈.在SQL ...
- 【初学者指南】在ASP.NET MVC 5中创建GridView
介绍 在这篇文章中,我们将会学习如何在 ASP.NET MVC 中创建一个 gridview,就像 ASP.NET Web 表单中的 gridview 一样.服务器端和客户端有许多可用的第三方库,这些 ...
- SQL Server 在多个数据库中创建同一个存储过程(Create Same Stored Procedure in All Databases)
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 遇到的问题(Problems) 实现代码(SQL Codes) 方法一:拼接SQL: 方法二: ...
- SAP CRM 在Web UI中创建搜索帮助
多数情况下,在Web UI为一个特定的字段提供搜索帮助需要在事务SE11中创建搜索帮助. (注:也可以通过在SE24中创建一个类并实现实现IF_BSP_WD_CUSTOM_F4_CALLBACK接口来 ...
- 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器
本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...
- 如何在ARM中创建Express Route
很早之前就想试试Azure的express route,但是一直没有找到合适的机会,正好有个客户需要上express route,所以最近先自己研究研究,防止在做poc的时候耗费更多时间,本次场景我们 ...
- 在powerdesigner中创建物理数据模型
物理数据模型(PDM)是以常用的DBMS(数据库管理系统)理论为基础,将CDM/LDM中所建立的现实世界模型生成相应的DBMS的SQL语言脚本.PDM叙述数据库的物理实现,是对真实数据库的描述 PDM ...
随机推荐
- MySQL账户管理和主从同步
账户管理 在生产环境下操作数据库时,绝对不可以使用root账户连接,而是创建特定的账户,授予这个账户特定 的操作权限,然后连接进行操作,主要的操作就是数据的CRUD(增删改查) MySQL账户体系:根 ...
- [BZOJ 3823]定情信物
题面 定情信物 题解 这题主要考高中物理和数学. 首先定义 \(f[i][j]\) 表示 \(i\) 维超立方体中第 \(j\) 维元素的数量,根据实际意义,我们可以推出递推式: \(f[i][j]= ...
- 准备新的代码迁移到cnblogs
http://www.cnblogs.com/danghuijian/ http://www.cnblogs.com/danghuijian/
- jenkins里跑selenium webdriver,Chrome浏览器不能打开&&unknown error: unable to discover open pages
在windows的cmd里面执行 “python test.py”,毫无问题,浏览器正常打开,测试结果也正常. 问题: 但如果是在jenkins里,选择 “execute windows batch ...
- maven+Spring环境搭建
一,项目结构图 二,applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> &l ...
- python015 Python3 函数
Python3 函数函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可 ...
- Flask设计带认证token的RESTful API接口[翻译]
上一篇文章, 使用python的Flask实现一个RESTful API服务器端 简单地演示了Flask实的现的api服务器,里面提到了因为无状态的原则,没有session cookies,如果访问 ...
- [luoguP1027] Car的旅行路线(Floyd)
传送门 建图麻烦,建完图搞一遍Floyd就好了. ——代码 #include <iostream> #include <cstdio> #include <cmath&g ...
- [bzoj1787][Ahoi2008]Meet 紧急集合(lca)
传送门 可以看出,三个点两两之间的lca会有一对相同,而另一个lca就是聚集点. 然后搞搞就可以求出距离了. ——代码 #include <cstdio> #include <cst ...
- LibreOJ2302 - 「NOI2017」整数
Portal Description 有一个整数\(x=0\),对其进行\(n(n\leq10^6)\)次操作: 给出\(a(|a|\leq10^9),b(b\leq30n)\),将\(x\)加上\( ...