Calling a Browser from ABAP The following function modules can be used to call a browse from ABAP.
WS_EXECUTE
cl_gui_frontend_services=>execute
CALL_BROWSER
Please see the cod below.
REPORT ZBROWSER1 . DATA: BEGIN OF URL_TABLE OCCURS 10, d(50), END OF URL_TABLE. data: d_url1(100), d_url2(100). move: 'http://www.sap.com' to d_url1, 'http://abaplovers.blogspot.com' to d_url2. URL_TABLE-d = 'http://www.abaplovers.blogspot.com'. APPEND URL_TABLE. URL_TABLE-d = d_url1. APPEND URL_TABLE. URL_TABLE-d = d_url2. APPEND URL_TABLE. LOOP AT URL_TABLE. SKIP. FORMAT INTENSIFIED OFF. WRITE: / 'Single click on '. FORMAT HOTSPOT ON.FORMAT INTENSIFIED ON. WRITE: URL_TABLE. HIDE URL_TABLE. FORMAT HOTSPOT OFF.FORMAT INTENSIFIED OFF. WRITE: 'to go to', URL_TABLE. ENDLOOP. CLEAR URL_TABLE. AT LINE-SELECTION. IF NOT URL_TABLE IS INITIAL. CALL FUNCTION 'WS_EXECUTE' EXPORTING program = 'C:\Program Files\Internet Explorer\IEXPLORE.EXE' commandline = URL_TABLE INFORM = '' EXCEPTIONS PROG_NOT_FOUND = 1. IF SY-SUBRC <> 0. WRITE:/ 'Cannot find program to open Internet'. ENDIF. ENDIF.
OLE AUTOMATION PART 3DownLoad PDF In this post we will see the Color code for Excel Cells by using SAP OLE. Color code for ABAP is shown below, please use the numeric value as given in the figure below. For example if you want the interior color of the Excel cell to be of the color Cyan then use the code 8.
DownLoad PDF The following ABAP key words control the applications:
CREATE OBJECT SET PROPERTY GET PROPERTY CALL METHOD FREE OBJECT
The Desktop application serves as the OLE server to the calling ABAP program. For example when the ABAP program makes calls to the OLE application the SAPGUI servers as the client. The create statement generates the object of this class. The following return code values can be encountered.
SY-SUBRC = 0: Object successfully generated.
SY-SUBRC = 1: SAPGUI communication error. SY-SUBRC = 2: SAPGUI function call error. The frontend ports of SAP’s OLE implementation modules are implemented only under Windows and Apple Macintosh. SY-SUBRC = 3: The OLE-API call resulted in an error - possibly a storage space problem. SY-SUBRC = 4: The object is not registered with SAP.
Note that for each OLE object there has to be a variable holding handle data for that object. The type-pool “ole2” defines the handle variable data of the type ole2_object. For all the OLE automation programs “OLE2INCL” include should be used. Please find below some examples of setting the properties of fonts, cell borders and colors. Font Properties. SET PROPERTY OF name_font 'Name' = 'Times New Roman' . SET PROPERTY OF size_font 'Size' = '12' . SET PROPERTY OF bold_font 'Bold' = '0' . "Not bold SET PROPERTY OF Italic_font 'Italic' = '0' . "Not Italic SET PROPERTY OF underline_font 'Underline' = '0' . "Not underlined
Paragraph Formatting SET PROPERTY OF allignment_parformat 'Alignment' = '3' . "Justified
Similarly for EXCEL DATA: d_excel TYPE ole2_object , d_cell1 TYPE ole2_object , d_cell2 TYPE ole2_object , d_cells TYPE ole2_object , d_range TYPE ole2_object , d_font TYPE ole2_object , d_interior TYPE ole2_object , d_columns TYPE ole2_object , d_charts TYPE ole2_object , d_chart TYPE ole2_object , d_charttitle TYPE ole2_object , d_charttitlech TYPE ole2_object , d_chartob TYPE ole2_object . Sample code CREATE OBJECT d_excel 'EXCEL.APPLICATION' . SET PROPERTY OF d_excel 'Visible' = 1 . GET PROPERTY OF d_excel 'Workbooks' = gs_wbooklist . Formatting the Excel Cells GET PROPERTY OF d_cell1 'Font' = d_font . SET PROPERTY OF d_font 'Underline' = 2 . SET PROPERTY OF d_font 'Bold' = 1 . SET PROPERTY OF d_cell1 'HorizontalAlignment' = -4108 . GET PROPERTY OF d_cell1 'Interior' = d_interior . SET PROPERTY OF d_interior 'ColorIndex' = 15 . >>>>>>>>>> Check Ole Automation part 3 SET PROPERTY OF d_interior 'Pattern' = -4124 . SET PROPERTY OF d_interior 'PatternColorIndex' = -4105 . Folor Color Code
Run Transaction OLE the following screen will be displayed.
In the above transaction you can start and stop each application to check if it has been registered.
Run transaction SOLE to get a list of all the OLE applications registered in your system. You can maintain these applications here.
The above applications are stored in the table TOLE.
The following SAP tables are associated with OLE.
TOLE OLE Applications OLELOAD OLE type Information load SWOTOLE Workflow Object Types OLE Applications SWOTTOLE Workflow Object Types Texts OLE Applications TOLET Workflow Object Types Texts OLE Applications
In ABAP you need to display a message on various occasions, for example if the user has input erroneous data then a message needs to be displayed, instructing the user to rectify the error, or after a certain task is accomplished, you may need to display a message.
A message class is used to display messages from the program and the transaction used for this purpose is SE91. The messages are stored in the table T100. Examples of calling a message are shown below.
You may need to create a message class for displaying your message. You need to check if a message class has already been created by other ABAP colleagues. Note that messages classes would already exist in your system, but you may have to create a new class for your programs.
To create a new message class type the name following the naming standards and type the name as shown in the figure below. Alternatively you can goto transaction SE91 to create a new message class.
In this example we will type the name as shown below and double click on the name 'ZEXERCISE1'.
The following prompt will appear. Click on Yes.
Click on Yes again.
Type an appropriate short text.
Create a $tmp object
Type a message that you would like to display. Please note the number associated with the message. In this case the message is '000'.
We have created 3 messages.
We now need to display these messages in our program. We will make changes in the Create Sales order program as shown below.
Some examples of calling a message.
1. MESSAGE xnnn. 2. MESSAGE ID id TYPE mtype NUMBER n. 3. MESSAGE xnnn(mid).
There are six kinds of message type:
A (Abend)
Termination
E (Error)
Error
I (Info)
Information
S (Status)
Status message
W (Warning)
Warning
X (Exit)
Termination with short dump
See the syntax shown below for displaying a message in your programs.
MESSAGE ID id TYPE mtype NUMBER n.
ID
message class in our case ZEXERCISE1 or ZEXERCISE2
TYPE
message type (A,E,I,S,W,X)
NUMBER
message number
Example
MESSAGE ID 'ZEXERCISE' TYPE 'S' NUMBER '000'.
Once the program is run the messages will be displayed as follows. Choose the one that suits your requirement.
The following message is displayed just to show as to how to explicitly call another message class.
We saw in the earlier example as to how to create a sales order from the SE37 interface. Now we need to create a program and call the BAPI to create sales orders. Later we will discuss ways to call a BAPI from a non-sap system.
Given an appropriate name to the program. Please follow the naming conventions as per your company. ABAP programs should always start with a 'Z' or a 'Y'.
Enter suitable description.
Create a $tmp objects or create a transport request. Transport requests would be covered in the later tutorials.
Follow the menu path EDIT----->Pattern
Enter the name of the BAPI as shown below.
The inserted BAPI is shown below.
We now need to get the import parameters, export parameters and the tables. Note: Take care that the data declaration in the program for the above mentioned parameters matches exactly as given in the BAPI. To ensure that please open the BAPI using transaction SE37 and copy the exact names of the parameters from the BAPI structure.
If this is not followed your program will give an 'ABAP DUMP'.
Check the Import parameters
The following figure shows the import parameter BAPISHEAD and we need to declare a structure in our ABAP program as follows.
Data: st_BAPISDHEAD like BAPISDHEAD, " Sales Order Header Data
Similarly for tables pick up the names from the function module.
Data: st_BAPISDHEAD like BAPISDHEAD, " Sales Order Header Data ta_BAPIITEMIN like BAPIITEMIN occurs 0 with header line, " Ln item ta_BAPIPARTNR like BAPIPARTNR occurs 0 with header line, " Partner d_BAPIRETURN1 like BAPIRETURN1, " Bapi return msg d_vbeln like bapivbeln-VBELN. " Sales Order Number
The complete program is given below. Please make sure that you use the data specific to your system. In the following some of the values are hard coded. You need to use variables and pick up the values.
Please note in the following program, sold to party (SP) has been entered as 'AG' and ship to party (SH) as 'RG'.
SP--------AG SH--------RG
Order type 'OR' as 'TA'
Please use TA instead of OR
Also if you set the * CONVERT_PARVW_AUART = 'X' parameter to 'X' you can use sold to party as SP and ship to party as SH. REPORT ZEX_BAPISALESORDCRT .
*-------------------------Data Declaration-----------------------------* Data: st_BAPISDHEAD like BAPISDHEAD, " Sales Order Header Data ta_BAPIITEMIN like BAPIITEMIN occurs 0 with header line, " Ln item ta_BAPIPARTNR like BAPIPARTNR occurs 0 with header line, " Partner d_BAPIRETURN1 like BAPIRETURN1, " Bapi return msg d_vbeln like bapivbeln-VBELN. " Sales Order Number
* Move the data to create sales order in the repective parameters------* move: 'TA' to st_BAPISDHEAD-DOC_TYPE, " Sales document type '15493' to st_BAPISDHEAD-PURCH_NO_C, '00010' to ta_BAPIITEMIN-ITM_NUMBER, 'Y-351' to ta_BAPIITEMIN-MATERIAL, '1100' to ta_BAPIITEMIN-PLANT, '1' to ta_BAPIITEMIN-REQ_QTY, 'AG' to ta_BAPIPARTNR-PARTN_ROLE, " Sold to Party '0000007777' to ta_BAPIPARTNR-PARTN_NUMB. * Append the internal tables-------------------------------------------* append ta_BAPIPARTNR. clear ta_BAPIPARTNR. append ta_BAPIITEMIN. clear ta_BAPIITEMIN. * Move ship to party---------------------------------------------------* move: 'RG' to ta_BAPIPARTNR-PARTN_ROLE, " Ship to party '0000007777' to ta_BAPIPARTNR-PARTN_NUMB. * Append the internal tables-------------------------------------------* append ta_BAPIPARTNR. clear ta_BAPIPARTNR.
We will see the functionality of BAPI_SALESORDER_CREATEFROMDAT1.
As shown below, run transaction SE37.
and enter the name of the BAPI BAPI_SALESORDER_CREATEFROMDAT1.
Press F8 or click on execute. First we need to enter the header data.
Click on the single entry Icon as shown below.
Enter doc type and purchase order number. This will depend on your requirement and the data will vary from system to system.
Order type ---------- 'OR'
Once the header data is entered we need to enter the line item data. Please note that in this example we would be entering minimum data required just to create a sample sales order. In real life scenario you need to enter all the fields as per the companies requirement.
Enter the following fields.
Item Number ---- 000010 Material----------y-351 Plant-------------1100 Required quantity 1 Purchase Order number 15393
Please not that all the above data is system specific and you need to enter the values available in your system. You can refer to an existing sales order with the help of transaction VA03.
Need to enter the Partner Data. Namely Sold to Party and Ship to Party.
Enter Sold to Party indicator 'SP' Ship to Party as 'SH' Enter the sold to and ship to party number as 7777
Go back and Save the data. This will help you to create another sales order just by retrieving the values again by clicking on Test Data button. Or in case you make a mistake then you can just change the erroneous data.
Once you save the data. Press F8 or click on execute. As you can see below. Sales Order 7708 is created. Again this number will be different in your system.
Now you need to check the newly created Sales Order. Type /NVA02 or /NVA03 as the transaction code.
Always use Pretty Printer and Extended Program Check before releasing the code.
Do not leave unused code in the program. Comment the code thoroughly. Align the comments and the Code. Follow the SAP Standards and SAP Best Practices guidelines. It’s a good practice to take a dump of the code on your local drive.