创建服务类PO
转载:https://blogs.sap.com/2014/03/04/creating-a-simple-service-po-using-bapipocreate1bapipochange/
Creating a Simple Service PO using BAPI_PO_CREATE1(BAPI_PO_CHANGE)
March 4, 2014 | 224 Views |
Introduction:
For creating a PO we have BAPI’s like BAPI_PO_CREATE1 and BAPI_PO_CREATE, for amending a PO we have BAPI_PO_CHANGE.
For these BAPI’s to work the minimum required data has to be provided.
It is pretty simple to create a normal PO, but little complexity comes in while creating a Simple Services(Services) PO. In this document I would like to deal majorly with creating and amending a services PO, what are the tables that has to be filled, what data that has to be passed to these fileds, where to get this data from and how, so that the BAPI works smooth as honey.
This task has been taken up by me as I see lot of posts on the titled text unanswered or not completely answered.
How to acheive it:
The tables highlighted in the below image are the ones that carry the services information to the BAPI. The information we fill in these tables are crucial (we are taking a scenario where a services PO has to be created from a services PR).
The services line item information should be filled in the POSERVICES table and the accounting information of the service line should be filled in the table POSRVACCESSVALUES.
Filling the POSERVICES table:
Every service line will have a package number assigned to it and every package number has a sub-package number assigned to it.
It is the subpackage number that will have all the service line item information filled in it (like unit price,value,material group etc,) so filling this is very important.
ESLL is the table where all the package realted data is saved for services. It will have service line item related details.
As we are using the scenario where a PO is created from PR,for filling the the table POSERVICES we can use the ESLL entries of the PR. First get the package number of the PR line item(this information is available in EBAN table eban-packno). Pass this package number to ESLL table and get the corresponding sub-package number.
Pass this sub-package number to package number field of ESLL and get all the service line item details like unit price,value,material group etc.
Fill the above obtained data to the POSERVICES table as below.
Every service line item should have two entries in this table, 1 for package number and 2 for subpackage number
1’st entry:
poservices–pckg_no = esll–packno. “Package number
poservices–line_no = esll–introw. “Package Line number
poservices–outl_ind = esll–package. “If this is X then it is a service line( because limits also have package numbers, this will act as differentiator)
poservices-subpckg_no = esll–sub_packno. “Sub-Package number
2nd entry:
poservices–pckg_no = esll–sub_packno. “Sub-Package number
poservices–line_no = esll–introw. “Sub-Package line number
poservices–quantity = pass quantity(can use esll entry) “PO service quantity
poservices–base_uom = pass UOM(can use esll entry) “Unit of measure
poservices–price_unit = pass Unit Price(can use esll entry) “Unit Price
poservices–gr_price = pass Net Value(can use esll entry) “Net value
poservices–short_text = esll–ktext1. “Short text
poservices–matl_group = esll–matkl. “Material Group
poservices–pln_pckg = esll–sub_packno “Sub-Package number
poservices–pln_line = esll–introw. “Sub-Package line number
The above mentioned are the minimum required fields that has to be passed.
Q: Why poservices–pln_pckg and poservices–pln_line has to be passed ?
A: When a Shopping cart is created in portal a PR will be created in ECC corresponding to it. When a PO is created in ECC refering to this PR, in the Shopping cart also this PO number should be update in the related documents tab.
Only when you pass the above two fields this will happen.
Filling the POSRVACCESSVALUES table:
As mentioned above this table will have the acounting information of the service line. This table will have only one entry corresponding to the service line.
The accounting information of a service line is stored in the table ESKL with reference to sub-package number of the above service line item.
So take the above sub-package number, pass it to the package number field of the ESKL table and get the accounting details.
Fill the above obtained data to the POSRVACCESSVALUES table as below.
posrvaccessvalues–pckg_no = eskl–packno. “Sub-Package number of ESLL entry
posrvaccessvalues–line_no = eskl–introw. “Line number of eskl
posrvaccessvalues–serno_line = eskl–numkn. “Seq. Number of Acc. Assignment Specification: Service Line
posrvaccessvalues–serial_no = eskl–zekkn. “Sequential Number of Account Assignment in ESKN
posrvaccessvalues–quantity = pass quantity(can use eskl entry) “PO service quantity
This way both the services tables should be filled and passed to BAPI.
*Note: Along with these tables all the required tables as shown in the above screen shot are also to be filled for the BAPI to work. Here we only covered service realted data.
5 Comments
You must be Logged on to comment or reply to a post.
- Shashikant WadhavaneJanuary 29, 2015 at 12:49 pm
Hi Pavan ,
I am passing the pack_no from ESLL to POSERVICES structure . PO creation is successful but its giving update termination error message as it tries to insert new entry in ESLH table for same package number.
When I hardcoded package and subpackage number to 000000001 and 000000002 , PO created successfully and these packages are created and updated in ESLH/ ESLL. But when running second time… getting same termination message.
Does these packages get newly created or is it just reference of package BAPI uses ?
like (0)- Pavan Kumar Raju Sagiraju Post authorJanuary 29, 2015 at 2:35 pm
What is the scenario….yor are trying to create a simple service scenario or complex service scenario(Limits)??
A new package number will be created for PO. If you are trying to change the PO data, it is this package number you need to mention.
like (0)- Shashikant WadhavaneJanuary 30, 2015 at 5:18 am
This is simple service scenario where I need to get services details from central contract (ME33K) and use this to create work order (ME23N).
I am not populating POSRVACCESSVALUES as no entries present in ESKL for contract’s package no. ( This should not be an issue).
Main concern is , if I pass some random number to PACK_NO , system creates this package automatically. My program will be running daily , so I cant hard code anything.
Is there any way , so that package number (internal number) will be created by SAP and I don’t need to mention any value. But in this case , how to map
poservices–pckg_no to poitem-pack_no.
like (0)- Shashikant WadhavaneJuly 25, 2016 at 8:53 am
This is to provide update, When we approched SAP they suggested us few SAP notes and asked one program to run which resolves the number range problem and creates number assignment for PO service lines by itself. So to conclude, pass package and subpackage number as 000000001 and 000000002 respectively to BAPI and SAP should generate new number for package and subpackage. If its not th case, do not waste much time and raise it to SAP.
like (0)
- Shashikant WadhavaneJuly 25, 2016 at 8:53 am
- Shashikant WadhavaneJanuary 30, 2015 at 5:18 am
- Pavan Kumar Raju Sagiraju Post authorJanuary 29, 2015 at 2:35 pm
- Rene Maldonado FimbresJuly 4, 2016 at 7:38 pm
Just an addition to use it with Purchase Requuest.
On the POITEM table, fill PREQ_NO and PREQ_ITEM
like (0)
创建服务类PO的更多相关文章
- Android 服务类Service 的详细学习
http://blog.csdn.net/vipzjyno1/article/details/26004831 Android服务类Service学习四大组建 目录(?)[+] 什么是服务 服务有 ...
- Android 服务类Service 的具体学习
上一篇说到了通知栏Notification,提起通知栏,不得让人想到Service以及BroadcastReceive,作为android的4大组建的2个重要成员,我们没少和它们打交道.它们能够在无形 ...
- 关于使用Topshelf创建服务
目录 0. 背景说明 1. 使用Topshelf组件创建Windows服务 1.1 依赖Quartz.net实现定时任务 1.2 依赖于Topshelf创建服务类 1.3 log4net的配置文件lo ...
- vs里根据json快速创建对应类的方法
有时候,我们在调用别人接口的时候,服务端返回了一个json格式的字符串,我们要获取json里面的数据的话一般有两种方式: 1.通过正则 2.反序列化成一个对象 第一种方式这里不再多说,主要说一下第二种 ...
- C#创建服务及使用程序自动安装服务,.NET创建一个即是可执行程序又是Windows服务的exe
不得不说,.NET中安装服务很麻烦,即要创建Service,又要创建ServiceInstall,最后还要弄一堆命令来安装和卸载. 今天给大家提供一种方式,直接使用我们的程序来安装/卸载服务,并且可以 ...
- [转]C#创建服务及使用程序自动安装服务,.NET创建一个即是可执行程序又是Windows服务的exe
写在前面 原文地址:C#创建服务及使用程序自动安装服务,.NET创建一个即是可执行程序又是Windows服务的exe 这篇文章躺在我的收藏夹中有很长一段时间了,今天闲着没事,就自己动手实践了一下.感觉 ...
- Spring AOP 创建增强类
AOP联盟为增强定义了org.aopalliance.aop.Advice接口,Spring支持5种类型的增强: 1)前置增强:org.springframework.aop.BeforeAd ...
- 一种从JSON数据创建Java类的高效办法
<一种从JSON数据创建Java类的高效办法> 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs JSON格式的数据经常会遇到,比如调用Web服 ...
- C#创建服务及使用程序自动安装服务
.NET创建一个即是可执行程序又是Windows服务的exe 不得不说,.NET中安装服务很麻烦,即要创建Service,又要创建ServiceInstall,最后还要弄一堆命令来安装和卸载. 今天给 ...
随机推荐
- Laravel 5.1 ACL权限控制 二 之策略类
随着应用逻辑越来越复杂,要处理的权限越来越多,将所有权限定义在AuthServiceProvider显然不是一个明智的做法,因此Laravel引入了策略类,策略类是一些原生的PHP类,和控制器基于资源 ...
- Week15(12月19日):授课综述2
Part I:提问 =========================== 1.为了编辑应用程序的统一布局,可打开位于Views\Shared子目录中的( )文件. A.MasterPage.h ...
- 解决sqlite删除数据后,文件大小不变问题(VACUUM)
删除表格的全部数据: DELETE FROM [Name] 当在sqlite中删除了大量数据后,数据库文件的大小还是那样,没有变.原因是:从Sqlite删除数据后,未使用的磁盘空间被添加到一个内在的” ...
- cocos2d-x游戏开发系列教程-超级玛丽09-怪物激活与移动
在游戏中,很多怪物本身是会移动的,这里主要有蘑菇怪,乌龟等. 说起怪物的移动,首先在游戏里先要考虑怪物的抽象和设计. 在CMMonster.h中,有个类CMMonsterBasic,这个类抽象了所有的 ...
- cocos2dx进阶学习之CCTMXLayer
继承关系 CCTMXLayer -> CCSpriteBatchNode CCTMXLayer是在瓦片地图中,抽象一个层的类,它继承自CCSpriteBatchNode,也就是说它抽象了一批相同 ...
- POJ 2050 Searching the Web
题意简述:做一个极其简单的搜索系统,对以下四种输入进行分析与搜索: 1. 只有一个单词:如 term, 只需找到含有这个单词的document,然后把这个document的含有这个单词term的那些行 ...
- 首届全球RTB(实时竞价)广告DSP算法大赛
首届全球RTB(实时竞价)广告DSP算法大赛 竞赛指南 RTB (Real Time Bidding, 实时竞价) 是近年来计算广告领域最激动人心的进展之一. 它增加了展示广告的透明度与效率, ...
- 百度——地图API——IOS v2.0.2—入门篇
建议高手飘过------ 本以为一个地图的helloworld很简单.实际使用却不是那么回事.就想把地图的头文件和静态库添加到文件中.应该就能用了. baidu提供的xcode工程是支持ios4.3的 ...
- stm32之中断系统
概述: 提供中断控制器,用于总体管理异常,称之为“嵌套向量中断控制器:Nested Vectored Interrupt Controller (NVIC) VIC:中断管理器: NVIC:内嵌中断管 ...
- 【Eclipse】Failed to load JavaHL Library
1.选择window--->preferences->Team->SVN->SVN接口 2.选择SVNKit (Pure Java) xxxxxx 如下图所示 : 选择之后, ...