Top Banner
ABAP Package Concept Use Cases & Best Practices Tobias Trapp, AOK Systems GmbH Enterprise Architect, SAP Mentor
22

Abap package concept

Nov 21, 2014

Download

Technology

Tobias Trapp

My presentation about ABAP Package Concept from SAP Inside Track NL 2011
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Abap package concept

ABAP Package ConceptUse Cases & Best Practices

Tobias Trapp, AOK Systems GmbHEnterprise Architect, SAP Mentor

Page 2: Abap package concept

ABAP Developers and Reuse

„In SAP Business Suite there‘s so much useful stuff.“

„I can save 40 seconds of my life time by using data elements from SAP standard: CHAR04, CHAR130, BEZEI30…“

„And for something more complicated I‘m looking for an function module.“

Page 3: Abap package concept

Is this how we should do reuse?

Do you use a certain data element (BEZEI30) because it is part of SAP data model you want use?

If not: don‘t you want to be able to define your own short and help texts?

How do you know that this certain function module is appropriate? How do you know that it belongs to a public API?

Page 4: Abap package concept

An Architect‘s Answer

Think in terms of applications and APIs - not in terms of data elements and function modules. If you work with a certain SAP data model use the corresponding data elements and domains. In your own applications don‘t be afraid to create your own DDIC elements and local data types. Use DDIC elements, classes… that are exposed in package interfaces. Within SAP Business Suite this is a development guideline. So you can be sure that you use appropriate functions that are stable according to release changes. The local integration engine infrastructure (package SAI) is a good example.

Page 5: Abap package concept

Development Classes vs. Packages

Legacy R/3 consists of 800.000 development objects in 3000 development classes:

Dependecies are not explicit visible Which set of packages build an application?

Naming conventions will fail in the long run What is the API of a package? What is public and what

is private? There are no „borders“ of applications. The system

becomes a monolith - that makes evolution of the system and its applications difficult.

Page 6: Abap package concept

How can the Package Concept help?

Packages can be ordered hierarchically. An application consists of a package hierarchy with a main or structure package on top.

With package interfaces you can define (and document) dependencies between applications in an explicit way.

Using package checks you can check violations of dependencies.

Page 7: Abap package concept

How can the Package Concept help you in Custom Development Projects?

Reduce dependencies: control impact of Ehps / switched Business Functions Use stable APIs Guarantee installability of software components at development time Structure your applications Maintain and evolve applications independently Define stable APIs using interfaces Need for privacy - don‘t expose everything to everyone!

Page 8: Abap package concept

Do you want to use elements of IS-U?

Page 9: Abap package concept

Explain Functionality

Page 10: Abap package concept

Software Components &Structure Packages

Software Components are artefacts from software logistics and no development objects.

Structure packages are development object having dependencies to other structure packages: BASIS, ABA, BS_REUSE, APPL, APPL_TOOLS, FI-CA, …

Dependencies between software components are expressed bydependencies of the structure packages inside.

FS-CD FS-CM

Page 11: Abap package concept

Properties of Structure Packages

There are special types of interfaces: Default-Interfaces Virtual Default Interfaces – a kind of carte blanche Filter Interfaces that restrict Virtual Default Interfaces

to namespaces.

The use access to Filter Interfaces has to be declared only on the level of structure packages.

Page 12: Abap package concept

How to implement ABAP Package Concept

Fight for your rights: BASIS admins have to grant new authorizations:

Developers/Architects have to change package properties to assign use accesses, packages interfaces

To avoid activation errors you need a special authorization S_DEVELOP 94 („Overwrite“) for packages

You have to find software architects who define / control dependencies

Last but not least: explain the package concept to developers

Page 13: Abap package concept

Package Types & Properties

Define Package Properties: structure, main and development packages package checks: client & server

Package Check neither as Server nor as Client will be sufficient at the beginning. Get Experience with Package Check as Server with your own packages.

Page 14: Abap package concept

Declare Use Accesses

Page 15: Abap package concept

Define Package Hierarchies

Page 16: Abap package concept

RESTRICTED vs. R3ENTERPRISE

Modify an entry in table PAKPARAM (OSS 648898 / 792058) as system-wide switch

Use RESTRICTED if you want to check against package interfaces

Use R3ENTERPRISE if you want to control dependencies on the level of structure packages and on package interfaces

Page 17: Abap package concept

Define Interfaces

Package interfaces can contain package interfaces from packages deeper in the hierarchy.

Page 18: Abap package concept

Fill Package Interfaces

Page 19: Abap package concept

Execution of Package Checks

Packages can be executed as part of SLIN using Code Inspector (SCI) using SE80 for all elements in a package (hierarchy) are part of SCI variant for transport

A violation will not prevent you from CTS transportation. This may change but today you have to include the checks as CTSBAdI implementation.

Page 20: Abap package concept

API for package checks as part of ABAP Classification Toolset

DATA lr_obj_badi       TYPE REF TO  pak_object_properties.DATA ls_pak_object_key TYPE         pak_object_key.

GET BADI lr_obj_badi      FILTERS object_type = ls_tpobject-object.

CALL BADI lr_obj_badi->get_object_from_e071_entry  EXPORTING   im_e071    = ls_tpobject  IMPORTING    ex_object  = ls_pak_object_key.

CALL BADI lr_obj_badi->package_check  EXPORTING    im_object         = ls_pak_object_key  IMPORTING    ex_package_errors = lt_errors    ex_severity       = lv_severity.

Page 21: Abap package concept

SAP NetWeaver 7.30

ABAP package concept gets more complex: access control list…

Some interface types will vanish

Migration reports (have a look at OSS): RS_MIGRATE_PACKAGES RS_MIGRATE_PACKAGEINTERFACES SPAK_CREATE_HYBRID_PACK_DATA

Packages checks not (yet) part of ABAP runtime

Page 22: Abap package concept

Questions? Criticism? Comments?

I would like to get into discussion!

I‘ll blog on SCN about this topic.