The document provides information about Business Application Programming Interfaces (BAPIs) in SAP systems. It describes that BAPIs provide precise access to processes and data in SAP applications. It lists benefits of BAPIs such as being usable in different languages and platforms with reduced development and maintenance costs. It also provides steps to create and implement a BAPI, including defining structures, writing a function module, generating an API method, and configuring Apache Tomcat.
Vladimir Ulogov - Beyond the Loadable ModuleZabbix
Zabbix loadable module provides a great way to extend capabilities of your Zabbix implementation, but knowing how to integrate your favorite interpreter with Zabbix, will bring you further than just creating the loadable module itself.
Using Python interpreter as an example, I will review the process of such integration, point on possible pitfalls, explain on how to debug your scrips and give you more ideas on how to organize distributed data collection, using Python-Zabbix modules.
Zabbix Conference 2015
Hacking the Explored App by Adding Custom Code (UI5con 2016)Nabi Zamani
The Explored App has become an essential source of easy to reuse code. But how can it be extended with own examples, i.e. for sharing with colleagues or with the community? In this talk we will hack the Explored App and see how to add own snippets that illustrate our own showcases.
To view the recording of this webinar please use the below URL:
http://wso2.com/library/webinars/2015/03/wso2-product-release-webinar-wso2-app-factory-2.1.0/
In this webinar, Manjula Rathnayaka, associate technical lead, and Kasun De Silva, software engineer at WSO2, will present the following new features and improvements to App Factory 2.1:
Adding new application types by including an archive
Ability to add runtime externally
Puppet scripts for App Factory deployments
WSO2 BAM integration for user activity
Custom URL improvements
A presentation form Integration Stockholm where we shared our collected thoughts on how to implement Continuous Delivery in mainly Enterprise organisations. What has worked for us and what did not work and how to approach CI/CD and succeed...
Maarten Balliauw "Indexing and searching NuGet.org with Azure Functions and S...Fwdays
Which NuGet package was that type in again? In this session, let's build a "reverse package search" that helps to find the correct NuGet package based on a public type name.
Together, we will create a highly-scalable serverless search engine using Azure Functions and Azure Search that performs 3 tasks: listening for new packages on NuGet.org (using a custom binding), indexing packages in a distributed way, and exposing an API that accepts queries and gives our clients the best result. Expect code, insights into the service design process, and more!
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfPeter Spielvogel
Building better applications for business users with SAP Fiori.
• What is SAP Fiori and why it matters to you
• How a better user experience drives measurable business benefits
• How to get started with SAP Fiori today
• How SAP Fiori elements accelerates application development
• How SAP Build Code includes SAP Fiori tools and other generative artificial intelligence capabilities
• How SAP Fiori paves the way for using AI in SAP apps
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
Communications Mining Series - Zero to Hero - Session 1DianaGray10
This session provides introduction to UiPath Communication Mining, importance and platform overview. You will acquire a good understand of the phases in Communication Mining as we go over the platform with you. Topics covered:
• Communication Mining Overview
• Why is it important?
• How can it help today’s business and the benefits
• Phases in Communication Mining
• Demo on Platform overview
• Q/A
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
GridMate - End to end testing is a critical piece to ensure quality and avoid...ThomasParaiso2
End to end testing is a critical piece to ensure quality and avoid regressions. In this session, we share our journey building an E2E testing pipeline for GridMate components (LWC and Aura) using Cypress, JSForce, FakerJS…
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
2. What is BAPI
A Business Application Programming Interface is a
precisely defined interface providing access process
and data in Business Applications Systems Such as
SAP R/3
Compiled by Y R Nagesh 2
3. Benefits of BAPI
Can be used in diverse languages / Development Environments
(ABAP, Visual Basic, Java, C++, etc.)
Can be called from diverse platforms (COM, CORBA, Unix)
Reduced development cost
Reduced maintenance cost
“Best-of-both-worlds” approach
Rich functionality of the R/3 system
User-specific front-ends
Compiled by Y R Nagesh 3
5. Return Code Information
Usually a structure, sometimes a table
Data dictionary structures used
BAPIRETURN
BAPIRETURN1
BAPIRET1
BAPIRET2
Compiled by Y R Nagesh 5
6. BAPI Return Structure
Type Message type
blank or "S"=Success
"E"=Error
"W"=Warning
"I"=Information
"A"=Abort
Message Message text
Log_No Application Log Number
Log_Msg_No Application Log Message Serial Number
Message_V1 - V4 Message variables
Compiled by Y R Nagesh 6
7. SAP transactions
BAPI Business Object Browser (BAPIs only)
SWO1 Business Object Builder (all objects)
SWO2 Business Object Browser (all objects)
SE11 Data Dictionary
SE37 Function Builder
Compiled by Y R Nagesh 7
8. JCO Overview
High-performance JNI-based middleware
Support R/3 3.1H and higher.
Supports inbound and outbound calls.
Supports client pooling.
Supports desktop and web/application server applications.
Multi-platform
Complete and correct code page handling
Easy to install and deploy
Compiled by Y R Nagesh 8
9. Installation and Deployment
Required files in WINNTsystem32:
librfc32.dll (at least 46D, build 263)
jRFC11.dll (JDK 1.1)
jRFC12.dll (JDK 1.2 and 1.3)
Required files in Java class path:
jCO.jar
Compiled by Y R Nagesh 9
10. BAPI step by step procedure
STEP 1 - Define Structure For The BAPI
STEP 2 - Write Function Module
STEP 3 - Create the API Method Using The BAPI WIZARD
STEP 4 – Final Steps
Compiled by Y R Nagesh 10
11. About the Example
About the Example:
Front End : Java Servlets (Web Application)
Web Server : Apache Tomcat
The Servlet takes Vendor number and passes it to the BAPI which
in turn fetches the Vendor information from the LFA1 table and
returns it in BAPIRET2 format to the servlet, the servlet fetches the
data from return structure and displays it.
Compiled by Y R Nagesh 11
12. Step 1 : Define a Structure for BAPI
In this step structures for the parameters and tables of the
function module used for the BAPI are defined.
USE TCODE : SE11 then Data type -> Structure
Define the structure Name : Ex: ZVEND
Important note: You will have to define a structure for
every parameter in the BAPI. You cannot use the same
structures used in existing applications because BAPI
structures are frozen when BAPIs are released and then
there are restrictions on changing them.
Compiled by Y R Nagesh 12
13. Creating a Structure
Enter the
Structure
name
Click on Create
Compiled by Y R Nagesh
Button 13
14. Creating a Structure
Select
Structure
Click on
Check Button
Compiled by Y R Nagesh 14
16. Step 2 : Write Function Module
Each BAPI must have its own function group.
Under the attributes tab remember to select Processing Type Remote
Enabled module, otherwise the function module cannot be invoked via
RFC and used as a BAPI
Import/Export parameters can only be BY VALUE for an RFC enabled
function module
Compiled by Y R Nagesh 16
26. Step 2 : Create the API Method Using
The BAPI WIZARD
BAPI wizard is used to expose the remote function module as a BAPI
Wizard will generate some additional code, so the function module is a valid
method of the BOR. This allows the BAPI to be called as a workflow method
in addition to be called by an outside program.
Each function module corresponds to a method in the BOR
Go to the Business Object Builder SWO1.
You can either create the new Object type as a subtype of an existing business
object or create a new business object from scratch..
Compiled by Y R Nagesh 26
27. Create new BAPI Object
USE TCODE
SWO1
Supertype not
required as we are
creating a new Object
* for Cross
Apps
Compiled by Y R Nagesh 27
28. Create new BAPI Object
Note that when you create the business object a standard
interface, an attribute ObjectType and the methods
ExistenceCheck and Display are automatically generated.
These cannot be changed !
Compiled by Y R Nagesh 28
40. Configuring Apache Tomcat
Directory Structure
Jakarta-tomcat-4.1.31
Webapps
<User Folder> (Vendor)
WEB-INF
classes
lib
Web.xml
Index.html
Compiled by Y R Nagesh 40
41. Configuring Apache Tomcat
classes
This folder contains all the class files created for successful execution
of the servlet.
lib
This folder contains all the library files required i.e
sapjco.jar
servlet.jar
Note: While compiling the java code make sure that the Classpath is set to the above to .jar files
Compiled by Y R Nagesh 41
42. Configuring Apache Tomcat
Web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee“
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd“ version="2.4">
<servlet>
<servlet-name>Some internal name</servlet-name>
<servlet-class>display_vend</servlet-class>
</servlet>
<servlet-mapping> Servlet name
<servlet-name>Some internal name</servlet-name>
<url-pattern>/NameSeenByUser.do</url-pattern>
</servlet-mapping>
</web-app> Compiled by Y R Nagesh 42
43. Servlet Program
import statements required
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import com.sap.mw.jco.*;
Compiled by Y R Nagesh 43
44. Servlet Program
public class display_vend extends HttpServlet
{
PrintWriter pw;
public void doPost(HttpServletRequest req, HttpServletResponse res)
{ int num = Integer.parseInt(req.getParameter("rand"));
String no,name,city,district,po,tele,fax; Unique name for
connection pool each
String SID = "R"+num;
time connection is
String vendno = req.getParameter("vendno"); established random
number is generated in
IRepository repository; // The repository we will be using the index.html i.e
starting page and
try { value is passed to
servlet
// Add a connection pool to the specified system
JCO.addClientPool(SID, 100, "800", "hari", "sapnjoy", "EN", "sapides", "00” );
// Alias for this pool , Max. number of connections , SAP client , userid
// password , language , host name
Compiled by Y R Nagesh 44
45. Servlet Program
repository = JCO.createRepository("MYRepository", SID); // Create a new repository
// Get a function template from the repository
IFunctionTemplate ftemplate = repository.getFunctionTemplate("ZVENDFUN");
// Create a function from the template
JCO.Function function = new JCO.Function(ftemplate);
JCO.Client client = JCO.getClient(SID); // Get a client from the pool
JCO.ParameterList input = function.getImportParameterList(); // Fill in input parameters
input.setValue(vendno, "LIFNR" );
client.execute(function); // Call the remote system
JCO.Structure ret = function.getExportParameterList().getStructure("RETURN");
pw = res.getWriter();
pw.println("<html><body bgcolor=#eeeff8><center><hr><h1>Customer Details</h1><hr>");
// Get table containing the data
JCO.Table vend = function.getTableParameterList().getTable("ITAB");
Compiled by Y R Nagesh 45
46. Servlet Program
for (int i = 0; i < vend.getNumRows(); i++)
{
vend.setRow(i);
no = vend.getString("LIFNR");
name = vend.getString("NAME1");
city = vend.getString("ORT01") ;
district = vend.getString("ORT02") ;
po = vend.getString("PFACH") ;
tele = vend.getString("TELF1") ;
fax = vend.getString("TELFX") ;
// Fetching data from SAP database and storing in local variables
Compiled by Y R Nagesh 46