ABAP OO & Overloading
Hi,
I am trying to write a class in ABAP. And I need to overload my constructor. I have tried this overloading operation by SE80 transaction. But ABAP says "There is already a constructor". Is it not possible to overload a method/constructor in ABAP?
Thanks.
Hi,
ABAP does not provide overloading of methods/constructors in a way we know from other OO languages (eg. Java). You cannot write a method with the same name but different signature. You can only override methods in subclass using REDEFIITION key word but signature must stay the same.
You can also provide a different constructor in sub class but the first statement in this constructor must be a call to constructor of super-class. But only one constructor can exist.
Here is an example:
*& Report ZCL_OVR *
REPORT zcl_ovr .
* CLASS lcl_a DEFINITION
CLASS lcl_a DEFINITION.
PUBLIC SECTION.
METHODS:
constructor,
do_sth IMPORTING iv_a TYPE i
RETURNING value(ov_b) TYPE i.
ENDCLASS. "lcl_a DEFINITION
* CLASS lcl_a IMPLEMENTATION
CLASS lcl_a IMPLEMENTATION.
METHOD constructor.
ENDMETHOD. "constructor
METHOD do_sth.
ov_b = 2 * iv_a.
ENDMETHOD. "do_sth
ENDCLASS. "lcl_a IMPLEMENTATION
* CLASS lcl_b DEFINITION
CLASS lcl_b DEFINITION INHERITING FROM lcl_a.
PUBLIC SECTION.
METHODS:
constructor IMPORTING iv_a TYPE i,
do_sth REDEFINITION.
PRIVATE SECTION.
DATA lv_c TYPE i.
ENDCLASS. "lcl_b DEFINITION
* CLASS lcl_b IMPLEMENTATION
CLASS lcl_b IMPLEMENTATION.
METHOD constructor.
CALL METHOD super->constructor.
me->lv_c = iv_a.
ENDMETHOD. "constructor
METHOD do_sth.
ov_b = 2 * iv_a + lv_c.
ENDMETHOD. "do_sth
ENDCLASS. "lcl_b IMPLEMENTATION
Similar Messages
-
Hi All,
In ABAP objects, is it possible to use same method name with different signature
in the same class. In Se24, i have build a class xyz and a method A. The method A has a string as importing parameter. I have to use the same method A with an internal table as importing parameter. Any code samples and replies would be really appreciated.
Thanks,
RickyIn abap objects overloding(we can change the signature ) is possible only with construcor.
It is not possible with methods and the signatures can not be changed.
*& Report ZTEST_TWO *
REPORT ZTEST_TWO .
class c_base definition.
public section.
methods: constructor importing value(p_name) type string,
m_show1,
m_show2.
private section.
data a_name type string.
endclass.
class c_derived definition inheriting from c_base.
public section.
methods: constructor importing value(p_name1) type string
value(p_name2) type string,
m_show1 redefinition.
private section.
data a_name type string.
endclass.
class c_base implementation.
method constructor.
a_name = p_name.
endmethod.
method m_show1.
write: / 'Show1 :', a_name.
endmethod.
method m_show2.
write: / 'Show2 :', a_name.
endmethod.
endclass.
class c_derived implementation.
method constructor.
call method: super->constructor exporting p_name = p_name1.
a_name = p_name2.
endmethod.
method m_show1.
write: / 'Show1_r:', a_name.
endmethod.
endclass.
data o type ref to c_derived.
start-of-selection.
create object o exporting p_name1 = 'Base...' p_name2 = 'Derived...'.
call method: o->m_show1,
o->m_show2. -
Overloading+ Abap objects
Hello
Is overloading possible in abap objects. if so can u pls help me with the sample code.
regards!
arunhi arun ,
overloading is not possible in abap objects . Some other object-oriented programming languages permit the overloading offunctions or methods. This means that a separate, changed parameter interface
can be defined for an overwritten or redefined method. ABAP Objects does not currently support this mechanism.
Thanks
chinnaiya -
Can we use overload and overwrite concept in OO-abap
hi
can we use overload and overwrite concept in OO-abapHi
CLASS zl_lcl_vehicle DEFINITION.
PUBLIC SECTION.
Signature of method
METHODS: set_make
IMPORTING value(im_make) TYPE string " Pass by value
im_model TYPE string," Pass by reference
ENDCLASS. "zl_lcl_vehicle DEFINITION
CLASS zl_lcl_vehicle IMPLEMENTATION.
Implementation of method.
METHOD set_make.
IF im_make IS NOT INITIAL
AND im_model IS NOT INITIAL.
gv_make = im_make.
gv_model = im_model.
ENDIF.
ENDMETHOD. "set_make
ENDCLASS. "zl_lcl_vehicle
Overloading means changing signature as well as implementation of a method.
Overriding is changing only implementation of method with signature unchanged.
From ABAP perspective, only the CONSTRUCTOR method can be overloaded in a subclass i.e both the signature and implementation can be adapted in subclass.
Any other method can't be overloaded. It can only be redefined/overridden i.e implementation changed with signature unchanged.
In ABAP there is something called a redefinition.
When you inherit a class from a super class, you can redifne a method. You cannot chnage the signature( Interface) of the method. It will remain the same as that of the super class.You must redefine a method in the same visibility section in which it appears in the superclass.
Eg.
CLASS C_SUPER_CLASS DEFINITION .
PUBLIC SECTION.
METHODS: DRIVE ,
STOP.
PROTECTED SECTION.
DATA SPEED TYPE I.
ENDCLASS.
CLASS C_SUPER_CLASS IMPLEMENTATION.
METHOD DRIVE.
SPEED = 0.
WRITE: / 'Bike speed =', SPEED.
ENDMETHOD.
ENDCLASS.
CLASS C_SUB_CLASS DEFINITION INHERITING FROM C_SUPER_CLASS.
PUBLIC SECTION.
METHODS DRIVE REDEFINITION.
ENDCLASS
CLASS C_SUB_CLASS IMPLEMENTATION.
METHOD DRIVE.
SPEED = SPEED + 10.
WRITE: / 'Bicycle speed =', SPEED.
ENDMETHOD.
ENDCLASS.
Regards
Vasu -
hi friends
kindly send me ABAP-HR REAL TIME QUESTION to my mail [email protected]
Thanks&Regards
babasishHi
Logical database
A logical database is a special ABAP/4 program which combines the contents of certain database tables. Using logical databases facilitates the process of reading database tables.
HR Logical Database is PNP
Main Functions of the logical database PNP:
Standard Selection screen
Data Retrieval
Authorization check
To use logical database PNP in your program, specify in your program attributes.
Standard Selection Screen
Date selection
Date selection delimits the time period for which data is evaluated. GET PERNR retrieves all records of the relevant infotypes from the database. When you enter a date selection period, the PROVIDE loop retrieves the infotype records whose validity period overlaps with at least one day of this period.
Person selection
Person selection is the 'true' selection of choosing a group of employees for whom the report is to run.
Sorting Data
· The standard sort sequence lists personnel numbers in ascending order.
· SORT function allows you to sort the report data otherwise. All the sorting fields are from infotype 0001.
Report Class
· You can suppress input fields which are not used on the selection screen by assigning a report class to your program.
· If SAP standard delivered report classes do not satisfy your requirements, you can create your own report class through the IMG.
Data Retrieval from LDB
1. Create data structures for infotypes.
INFOTYPES: 0001, "ORG ASSIGNMENT
0002, "PERSONAL DATA
0008. "BASIC PAY
2. Fill data structures with the infotype records.
Start-of-selection.
GET PERNR.
End-0f-selection.
Read Master Data
Infotype structures (after GET PERNR) are internal tables loaded with data.
The infotype records (selected within the period) are processed sequentially by the PROVIDE - ENDPROVIDE loop.
GET PERNR.
PROVIDE * FROM Pnnnn BETWEEN PN/BEGDA AND PN/ENDDA
If Pnnnn-XXXX = ' '. write:/ Pnnnn-XXXX. endif.
ENDPROVIDE.
Period-Related Data
All infotype records are time stamped.
IT0006 (Address infotype)
01/01/1990 12/31/9999 present
Which record to be read depends on the date selection period specified on the
selection screen. PN/BEGDA PN/ENDDA.
Current Data
IT0006 Address - 01/01/1990 12/31/9999 present
RP-PROVIDE-FROM-LAST retrieves the record which is valid in the data selection period.
For example, pn/begda = '19990931' pn/endda = '99991231'
IT0006 subtype 1 is resident address
RP-PROVIDE-FROM-LAST P0006 1 PN/BEGDA PN/ENDDA.
Process Infotypes
RMAC Modules - RMAC module as referred to Macro, is a special construct of ABAP/4 codes. Normally, the program code of these modules is stored in table 'TRMAC'. The table key combines the program code under a given name. It can also be defined in programs.The RMAC defined in the TRMAC can be used in all Reports. When an RMAC is changed, the report has to be regenerated manually to reflect the change.
Reading Infotypes - by using RMAC (macro) RP-READ-INFOTYPE
REPORT ZHR00001.
INFOTYPE: 0002.
PARAMETERS: PERNR LIKE P0002-PERNR.
RP-READ-INFOTYPE PERNR 0002 P0002 .
PROVIDE * FROM P0002
if ... then ...endif.
ENDPROVIDE.
Changing Infotypes - by using RMAC (macro) RP-READ-INFOTYPE.
· Three steps are involved in changing infotypes:
1. Select the infotype records to be changed;
2. Make the required changes and store the records in an alternative table;
3. Save this table to the database;
The RP-UPDATE macro updates the database. The parameters of this macro are the OLD internal table containing the unchanged records and the NEW internal table containing the changed records. You cannot create or delete data. Only modification is possible.
INFOTYPES: Pnnnn NAME OLD,
Pnnnn NAME NEW.
GET PERNR.
PROVIDE * FROM OLD
WHERE .... = ... "Change old record
*Save old record in alternate table
NEW = OLD.
ENDPROVIDE.
RP-UPDATE OLD NEW. "Update changed record
Infotype with repeat structures
· How to identify repeat structures.
a. On infotype entry screen, data is entered in table form.
IT0005, IT0008, IT0041, etc.
b. In the infotype structure, fields are grouped by the same name followed by sequence number.
P0005-UARnn P0005-UANnn P0005-UBEnn
P0005-UENnn P0005-UABnn
Repeat Structures
· Data is entered on the infotype screen in table format but stored on the database in a linear
structure.
· Each row of the table is stored in the same record on the database.
· When evaluating a repeat structure, you must define the starting point, the increment and the
work area which contains the complete field group definition.
Repeat Structures Evaluation (I)
· To evaluate the repeat structures
a. Define work area.
The work area is a field string. Its structure is identical to that of the field group.
b. Use a DO LOOP to divide the repeat structure into segments and make it available for
processing in the work area, one field group (block) at a time.
Repeat Structures Evaluation(II)
Define work area
DATA: BEGIN OF VACATION,
UAR LIKE P0005-UAR01, "Leave type
UAN LIKE P0005-UAN01, "Leave entitlement
UBE LIKE P0005-UBE01, "Start date
UEN LIKE P0005-UEN01, "End date
UAB LIKE P0005-UAB01, "Leave accounted
END OF VACATION.
GET PERNR.
RP-PROVIDE-FROM-LAST P0005 SPACE PN/BEGDA PN/ENDDA.
DO 6 TIMES VARYING VACATION
FROM P0005-UAR01 "Starting point
NEXT P0005-UAR02. "Increment
If p0005-xyz then ... endif.
ENDDO.
Processing 'Time Data'.
· Dependence of time data on validity period
· Importing time data
· Processing time data using internal tables
Time Data and Validity Period
· Time data always applies to a specific validity period.
· The validity periods of different types of time data are not always the same as the date selection period specified in the selection screen.
Date selection period |----
|
Leave |----
|
· PROVIDE in this case is therefore not used for time infotypes.
Importing Time Data
· GET PERNR reads all time infotypes from the lowest to highest system data, not only those within the date selection period.
· To prevent memory overload, add MODE N to the infotype declaration. This prevents the logical database from importing all data into infotype tables at GET PERNR.
· Use macro RP-READ-ALL-TIME-ITY to fill infotype table.
INFOTYPES: 2001 MODE N.
GET PERNR.
RP-READ-ALL-TIME-ITY PN/BEGDA PN/ENDDA.
LOOP AT P0021.
If P0021-XYZ = ' '. A=B. Endif.
ENDLOOP.
Processing Time Data
· Once data is imported into infotype tables, you can use an internal table to process the interested data.
DATA: BEGIN OF ITAB OCCURS 0,
BUKRS LIKE P0001-BUKRS, "COMPANY
WERKS LIKE P0001-WERKS, "PERSONNEL AREA
AWART LIKE P2001-AWART, "ABS./ATTEND. TYPE
ASWTG LIKE P2001-ASWTG, "ABS./ATTEND. DAYS
END OF ITAB.
GET PERNR.
RP-PROVIDE-FROM-LAST P0001 SAPCE PN/BEGDA PN/ENDDA.
CLEAR ITAB.
ITAB-BUKRS = P0001-BURKS. ITAB-WERKS = P0001-WERKS.
RP-READ-ALL-TIME-ITY PN/BEGDA PN/ENDDA.
LOOP AT P2001.
ITAB-AWART = P2001-AWART. ITAB-ASWTG = P2001-ASWTG.
COLLECT ITAB. (OR: APPEND ITAB.)
ENDLOOP.
Database Tables in HR
· Personnel Administration (PA) - master and time data infotype tables (transparent tables).
PAnnnn: e.g. PA0001 for infotype 0001
· Personnel Development (PD) - Org Unit, Job, Position, etc. (transparent tables).
HRPnnnn: e.g. HRP1000 for infotype 1000
· Time/Travel expense/Payroll/Applicant Tracking data/HR work areas/Documents (cluster
PCLn: e.g. PCL2 for time/payroll results.
Cluster Table
· Cluster tables combine the data from several tables with identical (or almost identical) keys
into one physical record on the database.
. Data is written to a database in compressed form.
· Retrieval of data is very fast if the primary key is known.
· Cluster tables are defined in the data dictionary as transparent tables.
· External programs can NOT interpret the data in a cluster table.
· Special language elements EXPORT TO DATABASE, IMPORT TO DATABASE and DELETE
FROM DATABASE are used to process data in the cluster tables.
PCL1 - Database for HR work area;
PCL2 - Accounting Results (time, travel expense and payroll);
PCL3 - Applicant tracking data;
PCL4 - Documents, Payroll year-end Tax data
Database Tables PCLn
· PCLn database tables are divided into subareas known as data clusters.
· Data Clusters are identified by a two-character code. e.g RU for US payroll result, B2 for
time evaluation result...
· Each HR subarea has its own cluster.
· Each subarea has its own key.
Database Table PCL1
· The database table PCL1 contains the following data areas:
B1 time events/PDC
G1 group incentive wages
L1 individual incentive wages
PC personal calendar
TE travel expenses/payroll results
TS travel expenses/master data
TX infotype texts
ZI PDC interface -> cost account
Database Table PCL2
· The database table PCL2 contains the following data areas:
B2 time accounting results
CD cluster directory of the CD manager
PS generated schemas
PT texts for generated schemas
RX payroll accounting results/international
Rn payroll accounting results/country-specific ( n = HR country indicator )
ZL personal work schedule
Database Table PCL3
· The database table PCL3 contains the following data areas:
AP action log / time schedule
TY texts for applicant data infotypes
Data Management of PCLn
· The ABAP commands IMPORT and EXPORT are used for management of read/write to
database tables PCLn.
· A unique key has to be used when reading data from or writing data to the PCLn.
Field Name KEY Length Text
MANDT X 3 Client
RELID X 2 Relation ID (RU,B2..)
SRTFD X 40 Work Area Key
SRTF2 X 4 Sort key for dup. key
Cluster Definition
· The data definition of a work area for PCLn is specified in separate programs which comply
with fixed naming conventions.
· They are defined as INCLUDE programs (RPCnxxy0). The following naming convention applies:
n = 1 or 2 (PCL1 or PCL2)
xx = Relation ID (e.g. RX)
y = 0 for international clusters or country indicator (T500L) for different country cluster
Exporting Data (I)
· The EXPORT command causes one or more 'xy' KEY data objects to be written to cluster xy.
· The cluster definition is integrated with the INCLUDE statement.
REPORT ZHREXPRT.
TABLES: PCLn.
INCLUDE: RPCnxxy0. "Cluster definition
Fill cluster KEY
xy-key-field = .
Fill data object
Export record
EXPORT TABLE1 TO DATABASE PCLn(xy) ID xy-KEY.
IF SY-SUBRC EQ 0.
WRITE: / 'Update successful'.
ENDIF.
Exporting Data (II)
. Export data using macro RP-EXP-Cn-xy.
· When data records are exported using macro, they are not written to the database but to a
main memory buffer.
· To save data, use the PREPARE_UPDATE routine with the USING parameter 'V'.
REPORT ZHREXPRT.
*Buffer definition
INCLUDE RPPPXD00. INCLUDE RPPPXM00. "Buffer management
DATA: BEGIN OF COMMON PART 'BUFFER'.
INCLUDE RPPPXD10.
DATA: END OF COMMON PART 'BUFFER'.
RP-EXP-Cn-xy.
IF SY-SUBRC EQ 0.
PERFORM PREPARE_UPDATE USING 'V'..
ENDIF.
Importing Data (I)
· The IMPORT command causes data objects with the specified key values to be read from
PCLn.
· If the import is successful, SY-SUBRC is 0; if not, it is 4.
REPORT RPIMPORT.
TABLES: PCLn.
INCLUDE RPCnxxy0. "Cluster definition
Fill cluster Key
Import record
IMPORT TABLE1 FROM DATABASE PCLn(xy) ID xy-KEY.
IF SY-SUBRC EQ 0.
Display data object
ENDIF.
Importing data (II)
· Import data using macro RP-IMP-Cn-xy.
· Check return code SY-SUBRC. If 0, it is successful. If 4, error.
· Need include buffer management routines RPPPXM00
REPORT RPIMPORT.
*Buffer definition
INCLUDE RPPPXD00.
DATA: BEGIN OF COMMON PART 'BUFFER'.
INCLUDE RPPPXD10.
DATA: END OF COMMON PART 'BUFFER'.
*import data to buffer
RP-IMP-Cn-xy.
*Buffer management routines
INCLUDE RPPPXM00.
Cluster Authorization
· Simple EXPORT/IMPORT statement does not check for cluster authorization.
· Use EXPORT/IMPORT via buffer, the buffer management routines check for cluster
authorization.
Payroll Results (I)
· Payroll results are stored in cluster Rn of PCL2 as field string and internal tables.
n - country identifier.
· Standard reports read the results from cluster Rn. Report RPCLSTRn lists all payroll results;
report RPCEDTn0 lists the results on a payroll form.
Payroll Results (II)
· The cluster definition of payroll results is stored in two INLCUDE reports:
include: rpc2rx09. "Definition Cluster Ru (I)
include: rpc2ruu0. "Definition Cluster Ru (II)
The first INCLUDE defines the country-independent part; The second INCLUDE defines the country-specific part (US).
· The cluster key is stored in the field string RX-KEY.
Payroll Results (III)
· All the field string and internal tables stored in PCL2 are defined in the ABAP/4 dictionary. This
allows you to use the same structures in different definitions and nonetheless maintain data
consistency.
· The structures for cluster definition comply with the name convention PCnnn. Unfortunately,
'nnn' can be any set of alphanumeric characters.
*Key definition
DATA: BEGIN OF RX-KEY.
INCLUDE STRUCTURE PC200.
DATA: END OF RX-KEY.
*Payroll directory
DATA: BEGIN OF RGDIR OCCURS 100.
INCLUDE STRUCTURE PC261.
DATA: END OF RGDIR.
Payroll Cluster Directory
· To read payroll results, you need two keys: pernr and seqno
. You can get SEQNO by importing the cluster directory (CD) first.
REPORT ZHRIMPRT.
TABLES: PERNR, PCL1, PCL2.
INLCUDE: rpc2cd09. "definition cluster CD
PARAMETERS: PERSON LIKE PERNR-PERNR.
RP-INIT-BUFFER.
*Import cluster Directory
CD-KEY-PERNR = PERNR-PERNR.
RP-IMP-C2-CU.
CHECK SY-SUBRC = 0.
LOOP AT RGDIR.
RX-KEY-PERNR = PERSON.
UNPACK RGDIR-SEQNR TO RX-KEY-SEQNO.
*Import data from PCL2
RP-IMP-C2-RU.
INLCUDE: RPPPXM00. "PCL1/PCL2 BUFFER HANDLING
Function Module (I)
CD_EVALUATION_PERIODS
· After importing the payroll directory, which record to read is up to the programmer.
· Each payroll result has a status.
'P' - previous result
'A' - current (actual) result
'O' - old result
· Function module CD_EVALUATION_PERIODS will restore the payroll result status for a period
when that payroll is initially run. It also will select all the relevant periods to be evaluated.
Function Module (II)
CD_EVALUATION_PERIODS
call function 'CD_EVALUATION_PERIODS'
exporting
bonus_date = ref_periods-bondt
inper_modif = pn-permo
inper = ref_periods-inper
pay_type = ref_periods-payty
pay_ident = ref_periods-payid
tables
rgdir = rgdir
evpdir = evp
iabkrs = pnpabkrs
exceptions
no_record_found = 1.
Authorization Check
Authorization for Persons
· In the authorization check for persons, the system determines whether the user has the
authorizations required for the organizational features of the employees selected with
GET PERNR.
· Employees for which the user has no authorization are skipped and appear in a list at the end
of the report.
· Authorization object: 'HR: Master data'
Authorization for Data
· In the authorization check for data, the system determines whether the user is authorized to
read the infotypes specified in the report.
· If the authorization for a particular infotype is missing, the evaluation is terminated and an error
message is displayed.
Deactivating the Authorization Check
· In certain reports, it may be useful to deactivate the authorization check in order to improve
performance. (e.g. when running payroll)
· You can store this information in the object 'HR: Reporting'.
these are the main areas they ask q? -
Hi all,
I am working on ABAP client proxy to SOAP Asynchronous scenario. when iam sending the data from r/3 system data sent to webservice.
but PI sending this same data 3 more to the third parth system. when i checked in runtime workbench it is showing number of retrys 3
how to resolve this issue. please explain in detail
Thanks
AnilAnil,
That's the default setting for Async SOAP communication...this can occur if the receiver is overloaded and cannot take any more feed and sometimes time out in the middle of the hand off...this would lead to re-try in PI...so you would see 3 entries of same data...refresh or clear the data from the receiver could solve the issue...
Thanks,
Srini
Edited by: Srinivas Davuluri on Sep 9, 2010 1:51 PM -
In Java it is simple to extend a class and override a method - the whole idea of polymorphism. In abap, I'm attempting to do the same, but don't know quite how. I've created as a demo a zclass and made a sap standard class its superclass in properties. How do I override a protected method from here?
Marcin says:
Unfortunatelly overriding is not possible in ABAP, only redefinition is allowed. The method singature must stay the same in all subsequent classes.
I guess,
Overriding - Redefinition of the implementation of inherited method. This is possible by addition REDEFINITION to the method.
Overloading - Changing the method parameters of inherited method
Regards,
Naimesh Patel -
Server Proxy in back ground mode in ABAP?
Hi,
I would like to schedule server proxy in back ground mode using ABAP report. I already have the payload available in XSTRING(binary) saved in Z table. I know how to convert binary string to XML (using FMs - SCMS_BINARY_TO_STRING).
However, is there any way to pass binaryXML(XSTRING) to server proxy (without converting the paylolad to XML and use SAX/DOM parser to populate proxy input structure ) ?
Not sure, if SET_XML(IF_WS_PAYLOAD) method can be used.
Thank you,
MallikHi Malik,
I would like to schedule server proxy in back ground mode using ABAP report. I already have the payload available in XSTRING(binary) saved in Z table. I know how to convert binary string to XML (using FMs - SCMS_BINARY_TO_STRING).
If you think about this, it hasnt sense, a server always need to be alive wainting a communication. If you want to stop the server reception, the middleware system (in this case PI) would need to store the messages for a future server availability, then this would work only with async messages. I dont see right now the utility of this, may be don't overload the ECC system in a work hours, is this the problem?
However, is there any way to pass binaryXML(XSTRING) to server proxy (without converting the paylolad to XML and use SAX/DOM parser to populate proxy input structure ) ?
Are you talking about to do this conversion in a java mapping inside the PI? aren't you?
Regards. -
Hello!
How can I start (=call) a java program from ABAP? I have only .class and .java files.
Thanks!Hi,
Using the SAP Java Connector
SAPu2019s new Java middleware, the SAP Java Connector (JCO) allows customers and partners to easily build SAP-enabled components in Java. JCO supports both inbound (Java calls ABAP) and outbound (ABAP calls Java) calls in desktop and server applications.
Sample program
Import statements: Any program using JCO should contain the following import statement:
import com.sap.mw.jco.*;
Otherwise, you have to fully qualify each class and interface which is very inconvenient.
Connecting to SAP
JCO.Client mConnection;
A connection (or session) with SAP is handled by class JCO.Client
try {
mConnection =
JCO.createClient("400", // SAP client
"c3026902", // userid
"********", // password
"EN", // language
"iwdf5020", // host name
"00"); // system number
mConnection.connect();
catch (Exception ex) {
ex.printStackTrace();
System.exit(1);
"A Client object is created via a call to createClient(). You can use a specific application server (as in the above code) or a server group (load balancing)." REFER the JCO Javadoc for the overloaded createClient() method for the latter possibility.
"The Client class's connect () method tries to log on to SAP. If that fails for any reason, an exception is thrown. If the call succeeds, we can now stay connected for as long as we like. When we are done, we can call disconnect () to explicitly log off."
Hope this sample would help you..
Regards
Narin Nandivada -
ABAP Runtime error MESSAGE_TYPE_X in process chain
in our daily load process chain we have a level where datas are getting loaded in to a cube from 4 dso thru dtp. in this level the DTP fails approximately twice in a week. the DTP is shown in red in the log view. when we check the message its showin MESSAGE_TYPE_X ABAP runtime error.
if we give repeat it runs sucessfully and the following process are going well.
do u ppl have any ideas abt this.Hi,
This failure would happen for many reasons, like,
Source system connection failure
Short dump.
System overload
Non availability od work processes as a reasonthe load would have been timed out.
Locked due to another load.
That is the reason as to which the load when repeated is successful, as by then,
The source connection would have been restored
there would be free processes available
The other load would have completed.
Regards,
Savitha -
Hi , friends pls explain abap mapping and message mapping
1) pls explain abap mapping and message mapping
send me screen shorts also.Hi
Mapping Techniques
XI provides 3 standard ways of interface mapping between source and target.
Graphical mapping
Java Mapping
XSLT Mapping
Two more additional mapping types can be activated in XI by making changes to the exchange profile. Those two mappings are
ABAP mapping
XSLT mapping with ABAP Extensions
Graphical Mapping
Graphical mapping is a common approach followed by everyone for generating desired target structure. It involves simple drag-n-drop to correlate respective nodes (fields) from source and target structure. It hardly involves coding. (Exception - User defined functions). But sometimes with graphical mapping it is difficult to produce required output. For example ... text/html output, namespace change, sorting or grouping of records etc.
ABAP Mapping
A person comfortable with Object Oriented ABAP can go for ABAP mapping instead.
Java Mapping
Java Mapping uses 2 types of parsers. DOM and SAX. DOM is easier to use with lots of classes to help you create nodes and elements, but , DOM is very processor intensive.
SAX parser is something that parses your XML one after the other, and so is not processor intensive. But, it is not exaclty easy to develop either.
XSLT Mapping
One can also think of Java mapping as another option but it is a bit complex and required knowledge of Java. In such cases, XSLT mapping can be the best approach to meet the requirements.
A few example cases in which an XSLT mapping can be used:-
When the required output is other than XML like Text, Html or XHTML (html displayed as XML)
When default namespace coming from graphical mapping is not required or is to be changed as per requirements.
When data is to be filtered based on certain fields (considering File as source)
When data is to be sorted based on certain field (considering File as source)
When data is to be grouped based on certain field (considering File as source)\
Advantages of using XSLT mapping
XSLT program itself defines its own target structure.
XSLT programs can be imported into SAP XI. Message mapping step can be avoided. One can directly go for interface mapping once message interfaces are created and mapping is imported.
XSLT provides use of number of standard XPath functions that can replaces graphical mapping involving user defined java functions easily.
File content conversion at receiver side can be avoided in case of text or html output.
Multiple occurrences of node within tree (source XML) can be handled easily.
XSLT can be used in combination with graphical mapping.
Multi-mapping is also possible using xslt.
XSLT can be used with ABAP and JAVA Extensions.
Disadvantages of using XSLT mapping
Resultant XML payload can not be viewed in SXMB_MONI if not in XML format (for service packs < SP14).
Interface mapping testing does not show proper error description. So errors in XSLT programs are difficult to trace in XI but can be easily identified outside XI using browser.
XSLT mapping requires more memory than mapping classes generated in Java.
XSLT program become lengthier as source structure fields grows in numbers.
XSLT program sometimes become complex to meet desired functionality.
Some XSL functions are dependent on version of browser.
Different types of Mappings
MAPPING SUPPORTED BY XI
Message Mapping -> Graphical Design and testing environment. Default Provided By XI. Queue based modelling allow handling or large documents. Extensible via user defined functions
XSLT Mapping - > Based on openstandard, Portable across application platform, Extensible using user defined functions kewl but disadvantage is Memory overload while handling large documents.
SAX -> Simple Api For XML. -> Allows you to parse through a XML document. Doesn't consume any memory. But the message can be parsed only once from top to bottom. It Has evolved by contributions made by group of ppl itz a open architecture.
DOM -> Document Object Model -> Itz designed by W3C. Consumes Memory as the message will be loaded. Allows parsing of document in both way top down and bottom up.
Send me your email id.Shall send you very good docs for both ABAP Mapping and message mapping.
Thanks -
Object-oriented + ABAP Objects
Hello friends,
I would like to know, is it possible in ABAP Objects to do the followings:
Single Inheritance
Multiple Inheritance
Polymorphism
Data Abstration
Method Overloading, and method Overriding
Inner Classes ?
Would be nice if some one highlights some of the features of ABAP Objects, in comparision or in regards to JAVA or so...
Many thanks in advance...Hi,
In ABAP : We do have final concept!
There are differencies between 'Local Classes' created in abap wihtin One program : for example Handler for ALV Grid
And Repository classes : Created in the repository available for any program!
Multi threading can be done via asynchronous Function module or with event!
greetz!
<b>Thanks for small-> Big reward!</b> -
Q: ABAP code from db to memory decreases performance?
Hi Gurus,
We have a problem with some ABAP code (a start routine in a BI load). Basically the situation is: we had some code that builds a hierarchy (and inserts into hierarchy table) based on an attribute load, which worked fine but was to slow.
As we do not need the hierarchy anymore we changed the code to only build the hierarchy in memory (the reason why we need it at all is because building this is the only way we can ensure to load the right records in the attribute load) and now, it is sloweru2026.which we do not understand.
In general we have replaced:
SELECT SINGLE * FROM /BIC/HZTVFKORG INTO nodelast
WHERE nodeid = lastnode2.
With:
READ TABLE VirtHierarchy INTO nodelast
WITH KEY nodeid = lastnode2.
And replaced:
UPDATE /BIC/HZTVFKORG FROM nodelast.
With:
MODIFY TABLE VirtHierarchy FROM nodelast.
And replaced:
INSERT INTO /BIC/HZTVFKORG VALUES node.
With:
APPEND node TO VirtHierarchy.
As we see it, this should increase the performance of the start routine and the load (it takes several hours for just 50000 records), but it is actually running slower now...
Does anybody have any idea about why this is not improving performance?
Thank you in advance,
MikaelDear Mikael Kilaker,
There are few reason:
1. Data overload in memory.
, if you try to execute
SELECT SINGLE * FROM /BIC/HZTVFKORG INTO nodelast
WHERE nodeid = lastnode2.
With:
READ TABLE VirtHierarchy INTO nodelast
WITH KEY nodeid = lastnode2.
And replaced:
UPDATE /BIC/HZTVFKORG FROM nodelast.
With:
MODIFY TABLE VirtHierarchy FROM nodelast.
And replaced:
INSERT INTO /BIC/HZTVFKORG VALUES node.
With:
APPEND node TO VirtHierarchy.
inside any loop conditions, this approach will make the system slow because it will load entire table into memory then system still need to cater space for selected value thus make system not really effective when you execute large volume of data.
2. Unsorted data.
It is really great practice if you sort nodelast. It is extra steps but the effect greatly decreased response time when system manipulating sorted data in the internal table.
3. Use binary search in READ table.
Try to use this code
READ TABLE VirtHierarchy INTO nodelast
WITH KEY nodeid = lastnode2 BINARY SEARCH.
this practice also will increase performance when you execute large data inside internal table.
Do reward points if this helps you -
Server proxy in background mode using abap?
Hi,
I would like to schedule server proxy in back ground mode using ABAP report. I already have the payload available in XSTRING(binary) saved in Z table. I know how to convert binary string to XML (using FMs - SCMS_BINARY_TO_STRING).
However, is there any way to pass binaryXML(XSTRING) to server proxy (without converting the paylolad to XML and use SAX/DOM parser to populate proxy input structure ) ?
Not sure, if SET_XML(IF_WS_PAYLOAD) method can be used.
Thank you,
MallikHi Malik,
I would like to schedule server proxy in back ground mode using ABAP report. I already have the payload available in XSTRING(binary) saved in Z table. I know how to convert binary string to XML (using FMs - SCMS_BINARY_TO_STRING).
If you think about this, it hasnt sense, a server always need to be alive wainting a communication. If you want to stop the server reception, the middleware system (in this case PI) would need to store the messages for a future server availability, then this would work only with async messages. I dont see right now the utility of this, may be don't overload the ECC system in a work hours, is this the problem?
However, is there any way to pass binaryXML(XSTRING) to server proxy (without converting the paylolad to XML and use SAX/DOM parser to populate proxy input structure ) ?
Are you talking about to do this conversion in a java mapping inside the PI? aren't you?
Regards. -
Issue in Creation of XML file from ABAP data
Hi,
I need to create a XML file, but am not facing some issues in creation of XML file, the in the required format.
The required format is
-<Header1 1st field= u201CValueu201D 2nd field= u201CValueu201D>
- <Header2 1st field= u201CValueu201D 2nd field= u201CValueu201Du2026u2026. Upto 10 fields>
<Header3 1st field= u201CValueu201D 2nd field= u201CValueu201Du2026u2026. Upto 6 fields/>
<Header4 1st field= u201CValueu201D 2nd field= u201CValueu201Du2026u2026. Upto 4 fields/.>
<Header5 1st field= u201CValueu201D 2nd field= u201CValueu201Du2026u2026. Upto 6 fields/>
</Header2>
</Header1>
Iu2019m using the call transformation to convert ABAP data to XML file.
So please anybody can help how to define XML structure in transaction XSLT_TOOL.
And one more thing, here I need to put the condition to display the Header 3, Header 4, Header 5 values. If there is no record for a particular line item in header 3, 4 & 5, I donu2019t want to display full line items; this is only for Header 3, 4 & 5.
Please help me in this to get it resolved.Hello,
you can use CALL TRANSFORMATION id, which will create a exact "print" of the ABAP data into the XML.
If you need to change the structure of XML, you can alter your ABAP structure to match the requirements.
Of course you can create your own XSLT but that is not that easy to describe and nobody will do that for you around here. If you would like to start with XSLT, you´d better start the search.
Regards Otto
Maybe you are looking for
-
2 iPhones, 3 PC's, 1 iTunes Account?
We've got two iPhones, 3 computers (1 is wife's work), and one iTunes account. My iphone will be synced only on my pc, my wife's will be synced on all three. She would like to get rid of my calendar which is already on her phone. We haven't figured o
-
Ipod cannot update. The required file cannot be found?? Any help please.
Hi, I like many others have major problems with my Ipod, we downloaded the Itunes 6 , removed it, went back to 4.9, connected the Ipod, everything got erased. ( but it was still on the computer thank goodness, anyway now I can't put anything back on
-
1.1.4 won't finish
Right now i am trying to update my iphones software. i downloaded the 1.1.4, it says preparing iphone for software update, but it hasn't done anything for an hour. an suggestions?
-
Dynamic roles in Agent Assignment
Dear All I have a requirement of assigning dynamic roles which is stored in container element. When i select the role in the agent assignment of the task all the system roles come in the drop down. How to assign the role stored in the container eleme
-
Hi, the align tool (i mean the submenu in ,object) is not behaving properly, for me. As I say align left edges it does not, it only moves the rightish to to left a bit, if I click the same submenu again abit more to the left, but it never aligns any