Export Idoc as XSD from ABAP
Hi all,
could anybody tell me how it is possible to export an idoc from a sap system as xsd.
I know that transaction WE60 -> Export XSD does exactly the same, so could anybody tell me, how to perform this task with abap coding ?
Thanks in advance!
BR
** IF seddocustr-bassel = 'X'.
** IF NOT seddocustr-idoctyp IS INITIAL.
** idoctyp = seddocustr-idoctyp.
idoctyp = p_idoctp.
control-is_cim = ' '.
CALL FUNCTION 'SDIXML_IDOC_TO_SCHEMA'
EXPORTING
mestyp = mestyp
idoctyp = idoctyp
control = control
IMPORTING
elements = elements
CHANGING
idocdescr = idoctypdescr
document = document
EXCEPTIONS
idoc_not_exists = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
EXIT.
ENDIF.
** ELSE.
** MESSAGE s346(ea).
** EXIT.
** ENDIF.
** ELSEIF seddocustr-cimsel = 'X'.
** IF NOT seddocustr-cimtyp IS INITIAL.
** idoctyp = seddocustr-cimtyp.
** control-is_cim = 'X'.
* CALL FUNCTION 'SDIXML_IDOC_TO_SCHEMA'
* EXPORTING
* mestyp = mestyp
* idoctyp = idoctyp
* control = control
* IMPORTING
* elements = elements
* CHANGING
* idocdescr = idoctypdescr
* document = document
* EXCEPTIONS
* idoc_not_exists = 1
* OTHERS = 2.
* IF sy-subrc <> 0.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
* EXIT.
* ENDIF.
* ELSE.
* MESSAGE s346(ea).
* EXIT.
* ENDIF.
* ELSE. " es muß eins der beiden ausgewählt worden sein
* ENDIF.
Continued.
Similar Messages
-
Sending IDOCS from ABAP Program
hi friends,
can we send IDOC ( of type MATMAS) form ABAP Program. if it possible how can we send, are there any function modules to do so....could any one tell me the procedure to accomplish the task...i have finished the configuration sting in both reciver and sender systems....just need to send material in form of IDOC from abap program.
( Note: not form BD10).
Thanks in advance,
Santosh.Hi,
Follow this code it will help u...
This is for the user created IDOC but as u are making use of ur own basic type i.e., Idoc type MATMAS05
and u can write the code.
*& Report ZZ_Program_To_Create_Idoc
report zz_program_to_create_idoc .
tables: ekko,ekpo.
selection-screen skip 3.
selection-screen begin of block b1 with frame title titl.
selection-screen skip.
select-options s_ebeln for ekko-ebeln.
selection-screen skip.
selection-screen end of block b1.
data: header_segment_name like edidd-segnam value 'Z1EKKO',
item_segment_name like edidd-segnam value 'Z1EKPO',
idoc_name like edidc-idoctp value 'Z19838IDOC1'.
data: header_segment_data like z1ekko,
item_segment_data like z1ekpo.
data: control_record like edidc.
data: messagetyp like edmsg-msgtyp value 'ZZ9838MESG1'.
data: i_communication like edidc occurs 0 with header line,
i_data like edidd occurs 0 with header line.
data: begin of i_ekko occurs 0,
ebeln like ekko-ebeln,
aedat like ekko-aedat,
bukrs like ekko-bukrs,
bsart like ekko-bsart,
lifnr like ekko-lifnr,
end of i_ekko.
data: begin of i_ekpo occurs 0,
ebelp like ekpo-ebelp,
matnr like ekpo-matnr,
menge like ekpo-menge,
meins like ekpo-meins,
netpr like ekpo-netpr,
end of i_ekpo.
start-of-selection.
select ebeln aedat bukrs bsart lifnr from ekko
into table i_ekko where ebeln in s_ebeln.
select ebelp
matnr
menge
meins
netpr
from ekpo
into table i_ekpo
where ebeln in s_ebeln.
control_record-mestyp = messagetyp.
control_record-rcvprt = 'LS'.
control_record-idoctp = idoc_name.
control_record-rcvprn = '0MART800'.
loop at i_ekko.
header_segment_data-ebeln = i_ekko-ebeln.
header_segment_data-aedat = i_ekko-aedat.
header_segment_data-bukrs = i_ekko-bukrs.
header_segment_data-bsart = i_ekko-bsart.
header_segment_data-lifnr = i_ekko-lifnr.
i_data-segnam = header_segment_name.
i_data-sdata = header_segment_data.
append i_data.
select ebelp
matnr
menge
meins
netpr
from ekpo
into table i_ekpo
where ebeln = i_ekko-ebeln.
loop at i_ekpo.
item_segment_data-ebelp = i_ekpo-ebelp.
item_segment_data-matnr = i_ekpo-matnr.
item_segment_data-menge = i_ekpo-menge.
item_segment_data-meins = i_ekpo-meins.
item_segment_data-netpr = i_ekpo-netpr.
i_data-segnam = item_segment_name.
i_data-sdata = item_segment_data.
append i_data.
endloop.
clear i_ekpo.
refresh i_ekpo.
endloop.
call function 'MASTER_IDOC_DISTRIBUTE'
exporting
master_idoc_control = control_record
OBJ_TYPE = ''
CHNUM = ''
tables
communication_idoc_control = i_communication
master_idoc_data = i_data
exceptions
error_in_idoc_control = 1
error_writing_idoc_status = 2
error_in_idoc_data = 3
sending_logical_system_unknown = 4
others = 5
if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
else.
loop at i_communication.
write: 'IDOC GENERATED', i_communication-docnum.
endloop.
commit work.
endif.
initialization.
titl = 'ENTER THE PURCHASE ORDER NUMBER'. -
Error while exporting data from ABAP to Excel
Hello All,
iam trying to download data from ABAP scrn to Excel using I_OI_SPREADSHEET METHODS. I get an error in method 'SET_RANGES_DATA' - 'Memory protection fault occurred in document interface'.
I have pasted my code below. Kindly help me to solve this issue.
Create container ??
CALL METHOD c_oi_container_control_creator=>get_container_control
IMPORTING
control = g_control
error = g_error.
Initialize
CALL METHOD g_control->init_control
EXPORTING
r3_application_name = 'Basis'
parent = g_container
register_on_close_event = c_reg_on_close_event
register_on_custom_event = c_reg_on_custom_event
no_flush = c_no_flush
IMPORTING
error = g_error.
Set Doc type
g_document_type = 'Excel.Sheet'.
Create Proxy
CALL METHOD g_control->get_document_proxy
EXPORTING
document_type = g_document_type
IMPORTING
document_proxy = g_document
error = g_error.
CALL METHOD g_document->create_document
EXPORTING
document_title = 'Excel'. "#EC NOTEXT
CALL METHOD g_document->get_spreadsheet_interface
IMPORTING
sheet_interface = g_handle.
CHECK g_document IS NOT INITIAL.
read selected line data from gtab
READ TABLE g_tab_data INDEX 1 INTO l_wa_pos_trans.
Get Field Descriptions
CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
tabname = 'TRIGS_EXPORT_EXCEL'
langu = sy-langu
TABLES
dfies_tab = lt_dfies
EXCEPTIONS
not_found = 1
internal_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Header for User Data
l_h_cnt = 1.
LOOP AT lt_dfies INTO lwa_dfies.
IF lwa_dfies-fieldname EQ 'USER_ID' OR
lwa_dfies-fieldname EQ 'EXCEL_DATE' OR
lwa_dfies-fieldname EQ 'EXCEL_TIME' OR
lwa_dfies-fieldname EQ 'SECURITY_ACCOUNT' OR
lwa_dfies-fieldname EQ 'SECURITY_ID' OR
lwa_dfies-fieldname EQ 'COMPANY_CODE'.
PERFORM fill_cell USING l_h_cnt 1 1 lwa_dfies-scrtext_m.
l_h_cnt = l_h_cnt + 1.
ENDIF.
ENDLOOP.
Fill Header Values
PERFORM fill_cell USING 1 2 1 sy-uname.
PERFORM fill_cell USING 2 2 1 sy-datum.
PERFORM fill_cell USING 3 2 1 sy-uzeit.
PERFORM fill_cell USING 4 2 1 l_wa_pos_trans-company_code .
PERFORM fill_cell USING 5 2 1 l_wa_pos_trans-security_account.
PERFORM fill_cell USING 6 2 1 l_wa_pos_trans-security_id.
Texts
l_h_cnt = l_h_cnt + 1.
PERFORM fill_cell USING l_h_cnt 1 1 text-011.
PERFORM fill_cell USING l_h_cnt 3 1 text-012.
Range for header
range_item-name = 'RANGE1'.
range_item-rows = '7'.
range_item-columns = '3'.
range_item-code = g_handle->spreadsheet_insertall.
APPEND range_item TO range_list.
CALL METHOD g_handle->set_selection
EXPORTING
left = 1
top = 1
rows = 7
columns = 3
IMPORTING
retcode = retcode.
CALL METHOD g_handle->insert_range
EXPORTING
columns = 3
rows = 7
name = 'RANGE1'
IMPORTING
retcode = retcode.
CALL METHOD g_handle->set_ranges_data
EXPORTING
ranges = range_list
contents = gt_cell_data
IMPORTING
retcode = retcode.
Columns for PC
CLEAR: gt_cell_data[].
l_pc_cnt = l_h_cnt + 1.
LOOP AT lt_dfies INTO lwa_dfies.
IF lwa_dfies-fieldname EQ 'SBWHR' OR
lwa_dfies-fieldname CP '_PC'.
PERFORM fill_cell USING l_pc_cnt 1 0 lwa_dfies-scrtext_m.
l_pc_cnt = l_pc_cnt + 1.
ENDIF.
ENDLOOP.
Pos Curr - Values
PERFORM fill_cell USING 9 2 0 trls_position_value-sbwhr.
PERFORM fill_cell USING 10 2 0 trls_position_value-purch_pc.
PERFORM fill_cell USING 11 2 0 trls_position_value-charge_pc.
PERFORM fill_cell USING 12 2 0 trls_position_value-impmnt_pc.
PERFORM fill_cell USING 13 2 0 trls_position_value-amort_pc.
PERFORM fill_cell USING 14 2 0 trls_position_value-val_ti_pc.
PERFORM fill_cell USING 15 2 0 trls_position_value-val_idx_pc.
PERFORM fill_cell USING 16 2 0 trls_position_value-val_ch_ti_pc.
PERFORM fill_cell USING 17 2 0 trls_position_value-val_ti_npl_pc.
PERFORM fill_cell USING 18 2 0 trls_position_value-val_idx_npl_pc.
PERFORM fill_cell USING 19 2 0 trls_position_value-val_ch_ti_npl_pc.
PERFORM fill_cell USING 20 2 0 trls_position_value-book_val_pc.
Columns for VC
l_vc_cnt = l_h_cnt + 1.
LOOP AT lt_dfies INTO lwa_dfies.
IF lwa_dfies-fieldname EQ 'SBWHR' OR
lwa_dfies-fieldname CP '_VC'.
PERFORM fill_cell USING l_vc_cnt 3 0 lwa_dfies-scrtext_m.
l_vc_cnt = l_vc_cnt + 1.
ENDIF.
ENDLOOP.
Val Curr
PERFORM fill_cell USING 9 4 0 trls_position_value-svwhr.
PERFORM fill_cell USING 10 4 0 trls_position_value-purch_vc.
PERFORM fill_cell USING 11 4 0 trls_position_value-charge_vc.
PERFORM fill_cell USING 12 4 0 trls_position_value-impmnt_vc.
PERFORM fill_cell USING 13 4 0 trls_position_value-amort_vc.
PERFORM fill_cell USING 14 4 0 trls_position_value-val_ti_vc.
PERFORM fill_cell USING 15 4 0 trls_position_value-val_fx_vc.
PERFORM fill_cell USING 16 4 0 trls_position_value-val_idx_vc.
PERFORM fill_cell USING 17 4 0 trls_position_value-val_ch_ti_vc.
PERFORM fill_cell USING 18 4 0 trls_position_value-val_ch_fx_vc.
PERFORM fill_cell USING 19 4 0 trls_position_value-val_fx_npl_vc.
PERFORM fill_cell USING 20 4 0 trls_position_value-val_ti_npl_vc.
PERFORM fill_cell USING 21 4 0 trls_position_value-val_idx_npl_vc.
PERFORM fill_cell USING 22 4 0 trls_position_value-val_ch_ti_npl_vc.
PERFORM fill_cell USING 23 4 0 trls_position_value-val_ch_fx_npl_vc.
PERFORM fill_cell USING 24 4 0 trls_position_value-book_val_vc.
Range for PC and VC
CLEAR: range_list[].
range_item-name = 'RANGE2'.
range_item-rows = '17'.
range_item-columns = '4'.
range_item-code = g_handle->spreadsheet_insertall.
APPEND range_item TO range_list.
CALL METHOD g_handle->set_selection
EXPORTING
left = 1
top = 9
rows = 17
columns = 4
IMPORTING
retcode = retcode.
CALL METHOD g_handle->insert_range
EXPORTING
columns = 4
rows = 17
name = 'RANGE2'
IMPORTING
retcode = retcode.
CALL METHOD g_handle->set_ranges_data
EXPORTING
ranges = range_list
contents = gt_cell_data
IMPORTING
retcode = retcode.
***********************************Form routine****************
FORM fill_cell USING i j bold val.
DATA:
wa_cell_data TYPE soi_generic_item.
wa_cell_data-row = i.
wa_cell_data-column = j.
wa_cell_data-value = val.
APPEND wa_cell_data TO gt_cell_data.
ENDFORM. "FILL_CELLSolved
-
Hi everyone!
Is there a way in ABAP to output XML files? Pls. send code/ function module if any.
From ABAP programs, we are sure that we can output TEXT files, but how about XML files?
The significance of this question is related
Currently we are using XI to interface SAP and AMS, this question for ABAP to produce XML file arose, if for example, the XI server is down and we have to still send data from one system to another. IDocs can also produce XML files, pls confirm. Earlier however, we have preferred XI rather than IDocs to do this. Anyway, any idea regarding this scenario will be greatly appreciated.
Thanks and God bless!
CelesteHi,
Please check this sample codes from other thread.
1. itab --- > xml
xml ---> itab.
2. This program will do both.
(just copy paste in new program)
3.
REPORT abc.
*-------------- DATA
DATA : t001 LIKE TABLE OF t001 WITH HEADER LINE.
DATA : BEGIN OF itab OCCURS 0,
a(100) TYPE c,
END OF itab.
DATA: xml_out TYPE string .
DATA : BEGIN OF upl OCCURS 0,
f(255) TYPE c,
END OF upl.
DATA: xmlupl TYPE string .
******************************* FIRST PHASE
******************************* FIRST PHASE
******************************* FIRST PHASE
*------------------ Fetch Data
SELECT * FROM t001 INTO TABLE t001.
*------------------- XML
CALL TRANSFORMATION ('ID')
SOURCE tab = t001[]
RESULT XML xml_out.
CALL FUNCTION 'SCMS_STRING_TO_FTEXT'
EXPORTING
TEXT = xml_out
* IMPORTING
* LENGTH =
TABLES
FTEXT_TAB = itab.
*-------------- Download
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filetype = 'BIN'
filename = 'd:xx.xml'
TABLES
data_tab = itab.
******************************* SECOND PHASE
******************************* SECOND PHASE
******************************* SECOND PHASE
BREAK-POINT.
REFRESH t001.
CLEAR t001.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = 'D:XX.XML'
filetype = 'BIN'
TABLES
data_tab = upl.
LOOP AT upl.
CONCATENATE xmlupl upl-f INTO xmlupl.
ENDLOOP.
*------------------- XML
CALL TRANSFORMATION ('ID')
SOURCE XML xmlupl
RESULT tab = t001[]
BREAK-POINT.
Regards,
Ferry Lianto -
How to connect external webservice from ABAP
Hi,
Please see code pasted below and tell me what is wrong.
We try to connect external webservice via https. Should I install certificate is SAP for this connection? (if YES, how can I do this?)
Should I configure something else in SAP to connect external webservice via https?
DATA: client type ref to if_http_client,
lv_content type String,
lv_xml_string type string,
lv_length type I,
lv_response type I,
lv_node type ref to IF_IXML_NODE,
lv_xml_doc type ref to cl_xml_document.
****Create the HTTP client
call method cl_http_client=>create_by_url
EXPORTING
url = 'http://services-demo.krd.pl/raina/1.0/KrdAPI.asmx'
IMPORTING
client = client
EXCEPTIONS
others = 1.
CALL METHOD CL_HTTP_CLIENT=>CREATE
EXPORTING
HOST = 'services-demo.krd.pl'
SERVICE = '443'
SCHEME = '2'
PROXY_HOST =
PROXY_SERVICE =
SCHEME = SCHEMETYPE_HTTP
SSL_ID =
SAP_USERNAME =
SAP_CLIENT =
IMPORTING
CLIENT = client.
EXCEPTIONS
ARGUMENT_NOT_FOUND = 1
PLUGIN_NOT_ACTIVE = 2
INTERNAL_ERROR = 3
others = 4
CONCATENATE
'<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'
' xmlns:xsd="http://www.w3.org/2001/XMLSchema" '
'xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:rain="http://raina.krd.pl">'
'<soapenv:Header/>'
'<soapenv:Body>'
'<rain:Login soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">'
'<id xsi:type="xsd:string">B03EB34F02</id>'
'<password xsi:type="xsd:string">Akquinet99</password>'
'<appId xsi:type="xsd:string">test</appId>'
'<appInstId xsi:type="xsd:string">test</appInstId>'
'<custom xsi:type="xsd:string">test</custom>'
'</rain:Login>'
'</soapenv:Body>'
'</soapenv:Envelope>'
INTO lv_content.
CALL METHOD client->request->set_header_field
EXPORTING
name = '~request_method'
value = 'POST'.
CALL METHOD client->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = '~request_uri'
VALUE = '/raina/1.0/KrdAPI.asmx?'.
CALL METHOD client->request->set_header_field
EXPORTING
name = 'Content-Type'
value = 'text/xml; charset=utf-8'.
call method client->request->set_header_field
EXPORTING
name = 'SOAPAction'
value = 'Login'.
lv_length = STRLEN( lv_content ).
call method client->request->set_cdata
EXPORTING
data = lv_content
offset = 0
length = lv_length.
****Make the call
client->send( ).
****Receive the Response Object
call method client->receive
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3
others = 4.
*****Get the response content
client->response->GET_STATUS( IMPORTING CODE = lv_response ).
lv_xml_string = client->response->get_cdata( ).
Regards,
MichalHI ,
Error in accessing External Web Service
Calling a secured external web service from ABAP
Edited by: A kumar on Aug 21, 2008 11:58 AM -
IDOC with extension from external ECC system
Hello experts.
I have a scenario where I need to receive an IDOC with extenstion from an external system.
how can I define the xsd of that IDOC in my PI system?
will I need to receive an xsd file from the external system and import it as an external defenition?
how is it done? (this 3rd party doesn't have a PI system, so they can't export XSD like me)
another option is to build a similar IDOC with extenstion in our SLD, and import it into the PI system... but it seems a bit problematic.
I'll be happy to hear suggestions from people who had to implement a similar scenario.
thanks,
Imanuel Rahamim.Hi,
Three questions:
1. how your external system will send to you the data: by an Idoc-XML file ? or by directly an IDoc (so with an ALE config) ?
if it's ALE config, then you should have also a connexion to this Ext. ECC system, for instance to return back an acknowledgment. And so, if you have a connexion, you can import this IDoc into PI.
If it's a file, they have to provide to you an XSD file, that you can use as External Def, and create a Service Interface. So it will be not really like an IDoc, but like all other message which look like an idoc.
2. with this ext. ECC system, do you have a logon connexion ?
if yes, you can import this IDoc into PI.
3. Do you have to send the same IDoc to your own ECC system ?
if yes, that means the extension has to be developped in also in your own ECC. In that case, you will be able to import it PI and use it for source and target.
> how is it done? (this 3rd party doesn't have a PI system, so they can't export XSD like me)
you can find on SDN, some program to generate an XSD from a DDIC table/structure, but for complete IDoc, I don't know.
Anyway, if it's really an ECC system, the better way to exchange data, it's to do an ALE config from their system to your PI, and no issue to import the IDoc def in PI.
regards.
Mickael -
Calling an existing webservice from ABAP ?
I am trying to call an existing webservice from abap and cannot seem to get it right.
We are on 640.
What are the steps I need to follow ?
The address of the test wsdl is http://obcbox:50000/EMWSApp/DCCGen?wsdl
and http://obcbox:50000/wsnavigator/jsps/explorer.jsp?localWS=RU1XU0FwcC9zYXAuY29tJTJGRU1XU0FwcEVhci9FTVdTYXBwLmphcg%3D%3D
I need to be able to send data to the dccGenerator so it can do its work.
Any help would be greatly appreciated.
Cheers Steve.The following code will call the web service and fill the data into internal table which was received from the Web service. This code will send & Receive the data from ABAP to Webservice.
Change the Header detail as per your Webservice.
REPORT ZWORKORDER.
* Author : Raja T
* Company :******
TYPES: BEGIN OF OUTTAB1 ,
JOBCODE(20),
COMPONENTCODE(20),
ACCURATEHOURS(20),
ACCURATECOST(20),
LENGTH TYPE I,
END OF OUTTAB1 .
DATA: OUTTAB TYPE TABLE OF OUTTAB1.
DATA: TAB TYPE OUTTAB1.
DATA: WF_O LIKE LINE OF OUTTAB .
DATA: XSLT_ERR TYPE REF TO CX_XSLT_EXCEPTION .
DATA: RLENGTH TYPE I,
TXLEN TYPE STRING .
DATA: HTTP_CLIENT TYPE REF TO IF_HTTP_CLIENT .
DATA: WF_STRING TYPE STRING .
DATA: WF_STRING1 TYPE STRING .
DATA: WF_PROXY TYPE STRING ,
WF_PORT TYPE STRING .
CLEAR WF_STRING .
* Form the input string to send the Input Data to Web service.
CONCATENATE
'<?xml version="1.0" encoding="utf-8"?>'
'<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'
' <soap:Body>'
' <GetWorkOrder xmlns="http://*******erica.net/webservices/">'
' <nWorkOrder>2</nWorkOrder>'
' <nDistributorCode>4871</nDistributorCode>'
' <model>HM400</model>'
' <type>1 </type>'
' </GetWorkOrder>'
' </soap:Body>'
'</soap:Envelope>'
INTO WF_STRING .
CLEAR :RLENGTH , TXLEN .
RLENGTH = STRLEN( WF_STRING ) .
MOVE: RLENGTH TO TXLEN .
CLEAR: WF_PROXY, WF_PORT .
CALL METHOD CL_HTTP_CLIENT=>CREATE
EXPORTING
HOST = '192.168.1.41' "'http://****merica.net/webservices'
SERVICE = '8080'
SCHEME = '1'
IMPORTING
CLIENT = HTTP_CLIENT.
HTTP_CLIENT->PROPERTYTYPE_LOGON_POPUP = HTTP_CLIENT->CO_DISABLED.
CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = '~request_method'
VALUE = 'POST'.
CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = '~server_protocol'
VALUE = 'HTTP/1.1'.
CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = '~request_uri'
VALUE = '/service/accurate/workorder.asmx?'.
CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = 'Content-Type'
VALUE = 'text/xml; charset=utf-8'.
CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = 'Content-Length'
VALUE = TXLEN.
CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = 'SOAPAction'
VALUE = 'http://********merica.net/webservices/GetWorkOrder'.
CALL METHOD HTTP_CLIENT->REQUEST->SET_CDATA
EXPORTING
DATA = WF_STRING
OFFSET = 0
LENGTH = RLENGTH.
* Send the Input Data to Web service.
CALL METHOD HTTP_CLIENT->SEND
EXCEPTIONS
HTTP_COMMUNICATION_FAILURE = 1
HTTP_INVALID_STATE = 2.
* Receive the Input from Web Serice.
CALL METHOD HTTP_CLIENT->RECEIVE
EXCEPTIONS
HTTP_COMMUNICATION_FAILURE = 1
HTTP_INVALID_STATE = 2
HTTP_PROCESSING_FAILED = 3.
CLEAR WF_STRING1 .
WF_STRING1 = HTTP_CLIENT->RESPONSE->GET_CDATA( ).
DATA: LENGTH TYPE I.
LENGTH = STRLEN( WF_STRING1 ).
DATA: VALUE_FIELD TYPE NAME_KOMP.
DATA: VALUE TYPE REF TO DATA.
FIELD-SYMBOLS: <FS_CONVERTED_DATA>.
DATA: TAB1 TYPE TABLE OF STRING.
DATA: FROM_LENGTH TYPE I VALUE 1.
DATA: TO_LENGTH TYPE I.
DATA: DIFF TYPE I.
DATA: START TYPE I VALUE 1.
DO.
* JOBCODE.
SEARCH WF_STRING1 FOR 'JobCode=' . "STARTING AT START .
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
FROM_LENGTH = SY-FDPOS .
FROM_LENGTH = FROM_LENGTH + 8.
SEARCH WF_STRING1 FOR 'JobDescription=' ."STARTING AT START ..
TO_LENGTH = SY-FDPOS .
DIFF = TO_LENGTH - FROM_LENGTH .
MOVE WF_STRING1+FROM_LENGTH(DIFF) TO TAB-JOBCODE.
TO_LENGTH = DIFF + TO_LENGTH.
SHIFT WF_STRING1 BY TO_LENGTH PLACES.
* COMPONENT CODE
SEARCH WF_STRING1 FOR 'ComponentCode=' .
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
FROM_LENGTH = SY-FDPOS .
FROM_LENGTH = FROM_LENGTH + 14.
SEARCH WF_STRING1 FOR 'ComponentDescription=' .
TO_LENGTH = SY-FDPOS .
DIFF = TO_LENGTH - FROM_LENGTH .
MOVE WF_STRING1+FROM_LENGTH(DIFF) TO TAB-COMPONENTCODE.
TO_LENGTH = DIFF + TO_LENGTH.
SHIFT WF_STRING1 BY TO_LENGTH PLACES.
* AccurateHours
SEARCH WF_STRING1 FOR 'AccurateHours=' .
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
FROM_LENGTH = SY-FDPOS .
FROM_LENGTH = FROM_LENGTH + 14.
SEARCH WF_STRING1 FOR 'AccurateCost='.
TO_LENGTH = SY-FDPOS .
DIFF = TO_LENGTH - FROM_LENGTH .
MOVE WF_STRING1+FROM_LENGTH(DIFF) TO TAB-ACCURATEHOURS.
TO_LENGTH = DIFF + TO_LENGTH.
* AccurateCost
SEARCH WF_STRING1 FOR 'AccurateCost='.
FROM_LENGTH = SY-FDPOS.
FROM_LENGTH = FROM_LENGTH + 13.
SEARCH WF_STRING1 FOR '/>'.
TO_LENGTH = SY-FDPOS.
DIFF = TO_LENGTH - FROM_LENGTH .
MOVE WF_STRING1+FROM_LENGTH(DIFF) TO TAB-ACCURATECOST.
TO_LENGTH = DIFF + TO_LENGTH.
SHIFT WF_STRING1 BY TO_LENGTH PLACES.
APPEND TAB TO OUTTAB.
ENDDO.
WRITE: (10) 'JOBCODE'.
WRITE (20) 'COMPONENTCODE'.
WRITE (30) 'ACCURATEHOURS'.
WRITE (40) 'ACCURATECOST'.
LOOP AT OUTTAB INTO TAB.
WRITE:/ TAB-JOBCODE .
WRITE (20) TAB-COMPONENTCODE.
WRITE (30) TAB-ACCURATEHOURS.
WRITE (40) TAB-ACCURATECOST.
ENDLOOP .
Message was edited by:
Raja T -
Passing table from ABAP to webservice using SOAP
Hello:
I am trying to pass table data from ABAP code to a webservice using SOAP. I have seen many examples of passing single value parameters such as:
DATA: osoap TYPE REF TO CSoapDocument.
GET REFERENCE OF p_refno INTO dref.
CALL METHOD osoap->add_parameter
EXPORTING
direction = CSoapConstants=>ic_param_in
name = 'ws_ref_no'
value = dref.
CALL METHOD osoap->set_tag_name_format
EXPORTING format = CSoapConstants=>ic_tagfmt_default.
However I cannot find any code examples of passing table data to a webservice. Can anyone provide a sample or documentation for how to pass table data to a webservice?
Thanks,
CraigHi Craig
i just posted this on SAPfans for you too!
if you are not using PI, then follow this....
http://help.sap.com/erp2005_ehp_04/helpdata/EN/bb/ddb33d2ae46b3be10000000a114084/frameset.htm
http://help.sap.com/erp2005_ehp_04/helpdata/EN/9b/dad1ae3908ee44a5caf57e10918be9/frameset.htm
this is converting XSD to ABAP....
http://help.sap.com/erp2005_ehp_04/helpdata/EN/de/705c3c3806af06e10000000a11402f/frameset.htm
i have only used PI to do this via ABAP Proxies.... -
Reading Webservice information from ABAP Program
Hi All,
How to read a webservice information from a ABAP program ?
Are there any webservices available in ABAP which can do this .
Gopal.Hi,
The following code will call the web service and fill the data into internal table which was received from the Web service. This code will send & Receive the data from ABAP to Webservice.
Change the Header detail as per your Webservice.
REPORT ZWORKORDER.
TYPES: BEGIN OF OUTTAB1 ,
JOBCODE(20),
COMPONENTCODE(20),
ACCURATEHOURS(20),
ACCURATECOST(20),
LENGTH TYPE I,
END OF OUTTAB1 .
DATA: OUTTAB TYPE TABLE OF OUTTAB1.
DATA: TAB TYPE OUTTAB1.
DATA: WF_O LIKE LINE OF OUTTAB .
DATA: XSLT_ERR TYPE REF TO CX_XSLT_EXCEPTION .
DATA: RLENGTH TYPE I,
TXLEN TYPE STRING .
DATA: HTTP_CLIENT TYPE REF TO IF_HTTP_CLIENT .
DATA: WF_STRING TYPE STRING .
DATA: WF_STRING1 TYPE STRING .
DATA: WF_PROXY TYPE STRING ,
WF_PORT TYPE STRING .
CLEAR WF_STRING .
Form the input string to send the Input Data to Web service.
CONCATENATE
'<?xml version="1.0" encoding="utf-8"?>'
'<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'
' <soap:Body>'
' <GetWorkOrder xmlns="http://*******erica.net/webservices/">'
' <nWorkOrder>2</nWorkOrder>'
' <nDistributorCode>4871</nDistributorCode>'
' <model>HM400</model>'
' <type>1 </type>'
' </GetWorkOrder>'
' </soap:Body>'
'</soap:Envelope>'
INTO WF_STRING .
CLEAR :RLENGTH , TXLEN .
RLENGTH = STRLEN( WF_STRING ) .
MOVE: RLENGTH TO TXLEN .
CLEAR: WF_PROXY, WF_PORT .
CALL METHOD CL_HTTP_CLIENT=>CREATE
EXPORTING
HOST = '192.168.1.41' "'http://****merica.net/webservices'
SERVICE = '8080'
SCHEME = '1'
IMPORTING
CLIENT = HTTP_CLIENT.
HTTP_CLIENT->PROPERTYTYPE_LOGON_POPUP = HTTP_CLIENT->CO_DISABLED.
CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = '~request_method'
VALUE = 'POST'.
CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = '~server_protocol'
VALUE = 'HTTP/1.1'.
CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = '~request_uri'
VALUE = '/service/accurate/workorder.asmx?'.
CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = 'Content-Type'
VALUE = 'text/xml; charset=utf-8'.
CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = 'Content-Length'
VALUE = TXLEN.
CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = 'SOAPAction'
VALUE = 'http://********merica.net/webservices/GetWorkOrder'.
CALL METHOD HTTP_CLIENT->REQUEST->SET_CDATA
EXPORTING
DATA = WF_STRING
OFFSET = 0
LENGTH = RLENGTH.
Send the Input Data to Web service.
CALL METHOD HTTP_CLIENT->SEND
EXCEPTIONS
HTTP_COMMUNICATION_FAILURE = 1
HTTP_INVALID_STATE = 2.
Receive the Input from Web Serice.
CALL METHOD HTTP_CLIENT->RECEIVE
EXCEPTIONS
HTTP_COMMUNICATION_FAILURE = 1
HTTP_INVALID_STATE = 2
HTTP_PROCESSING_FAILED = 3.
CLEAR WF_STRING1 .
WF_STRING1 = HTTP_CLIENT->RESPONSE->GET_CDATA( ).
DATA: LENGTH TYPE I.
LENGTH = STRLEN( WF_STRING1 ).
DATA: VALUE_FIELD TYPE NAME_KOMP.
DATA: VALUE TYPE REF TO DATA.
FIELD-SYMBOLS: <FS_CONVERTED_DATA>.
DATA: TAB1 TYPE TABLE OF STRING.
DATA: FROM_LENGTH TYPE I VALUE 1.
DATA: TO_LENGTH TYPE I.
DATA: DIFF TYPE I.
DATA: START TYPE I VALUE 1.
DO.
JOBCODE.
SEARCH WF_STRING1 FOR 'JobCode=' . "STARTING AT START .
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
FROM_LENGTH = SY-FDPOS .
FROM_LENGTH = FROM_LENGTH + 8.
SEARCH WF_STRING1 FOR 'JobDescription=' ."STARTING AT START ..
TO_LENGTH = SY-FDPOS .
DIFF = TO_LENGTH - FROM_LENGTH .
MOVE WF_STRING1+FROM_LENGTH(DIFF) TO TAB-JOBCODE.
TO_LENGTH = DIFF + TO_LENGTH.
SHIFT WF_STRING1 BY TO_LENGTH PLACES.
COMPONENT CODE
SEARCH WF_STRING1 FOR 'ComponentCode=' .
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
FROM_LENGTH = SY-FDPOS .
FROM_LENGTH = FROM_LENGTH + 14.
SEARCH WF_STRING1 FOR 'ComponentDescription=' .
TO_LENGTH = SY-FDPOS .
DIFF = TO_LENGTH - FROM_LENGTH .
MOVE WF_STRING1+FROM_LENGTH(DIFF) TO TAB-COMPONENTCODE.
TO_LENGTH = DIFF + TO_LENGTH.
SHIFT WF_STRING1 BY TO_LENGTH PLACES.
AccurateHours
SEARCH WF_STRING1 FOR 'AccurateHours=' .
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
FROM_LENGTH = SY-FDPOS .
FROM_LENGTH = FROM_LENGTH + 14.
SEARCH WF_STRING1 FOR 'AccurateCost='.
TO_LENGTH = SY-FDPOS .
DIFF = TO_LENGTH - FROM_LENGTH .
MOVE WF_STRING1+FROM_LENGTH(DIFF) TO TAB-ACCURATEHOURS.
TO_LENGTH = DIFF + TO_LENGTH.
AccurateCost
SEARCH WF_STRING1 FOR 'AccurateCost='.
FROM_LENGTH = SY-FDPOS.
FROM_LENGTH = FROM_LENGTH + 13.
SEARCH WF_STRING1 FOR '/>'.
TO_LENGTH = SY-FDPOS.
DIFF = TO_LENGTH - FROM_LENGTH .
MOVE WF_STRING1+FROM_LENGTH(DIFF) TO TAB-ACCURATECOST.
TO_LENGTH = DIFF + TO_LENGTH.
SHIFT WF_STRING1 BY TO_LENGTH PLACES.
APPEND TAB TO OUTTAB.
ENDDO.
WRITE: (10) 'JOBCODE'.
WRITE (20) 'COMPONENTCODE'.
WRITE (30) 'ACCURATEHOURS'.
WRITE (40) 'ACCURATECOST'.
LOOP AT OUTTAB INTO TAB.
WRITE:/ TAB-JOBCODE .
WRITE (20) TAB-COMPONENTCODE.
WRITE (30) TAB-ACCURATEHOURS.
WRITE (40) TAB-ACCURATECOST.
ENDLOOP .
It is better to create a proxy, it then puts a level of abstraction between in that coding. All you need to do is then access the proxy class.
Besides that i think you can do it by configuring the ITS and calling the webservice by means of using BSP applications in ABAP
<b>I believe you need to create a proxy in order to consume your web service.
http://help.sap.com/saphelp_nw2004s/helpdata/en/bf/d005244e9d1d4d92b2fe7935556b4c/frameset.htm
Reward points</b>
Regards -
Create XML file from ABAP with SOAP Details
Hi,
I am new to XML and I am not familiar with JAVA or Web Service. I have searched in SDN and googled for a sample program for creating XML document from ABAP with SOAP details. Unfortunately I couldn't find anything.
I have a requirement for creating an XML file from ABAP with SOAP details. I have the data in the internal table. There is a Schema which the client provided and the file generated from SAP should be validating against that Schema. Schema contains SOAP details like Envelope, Header & Body.
My question is can I generate the XML file using CALL TRANSFORMATION in SAP with the SOAP details?
I have tried to create Transformation (Transaction XSLT_TOOL) in SAP with below code. Also in CALL transformation I am not able to change the encoding to UTF-8. It's always show UTF-16.
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" version="1.0">
<xsl:template match="/">
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP:Header>
<CUNS:HeaderInfo>
<CUNS:InterfaceTypeId>10006</InterfaceTypeId>
<CUNS:BusinessPartnerID>11223344</BusinessPartnerID>
<CUNS:SchemaVersion>1.0</SchemaVersion>
<CUNS:DateTime>sy-datum</DateTime>
</CUNS:HeaderInfo>
</SOAP:Header>
<SOAP:Body>
<xsl:copy-of select="*"/>
</SOAP:Body>
</SOAP:Envelope>
</xsl:template>
</xsl:transform>
In ABAP program, I have written below code for calling above Transformation.
call transformation ('Z_ID')
source tab = im_t_output[]
result xml xml_out.
call function 'SCMS_STRING_TO_FTEXT'
exporting
text = xml_out
tables
ftext_tab = ex_t_xml_data.
Please help me how to generate XML file with SOAP details from ABAP. If anybody have a sample program, please share with me.
Is there any easy way to create the XML file in CALL Transformation. Please help.
ThanksTry ABAP forum, as it seems not to be PI related.
-
How to call a sub screen from abap report
Hellow friends,
how to call sub screen 1001 prog name SAPLMGD1
and main program SAPLMGMM screen 4000 of tcode MM02.
i need to call the sub screen from abap reportHi Rajesh,
You can use FM MATERIAL_MAINTAIN_DIALOGUE to go to subcreen MRP1 in MM02.
Please check this sample code from other thread and enter 'MRP 1' for p_dytxt.
REPORT zsritest.
TABLES mara.
DATA: lv_bilds LIKE t133a-bilds,
ls_t130m LIKE t130m,
ls_rmmg1 LIKE rmmg1,
lwa_view TYPE mbildtab,
lwa_auswg TYPE mgauswg,
lt_views TYPE STANDARD TABLE OF mbildtab INITIAL SIZE 0,
lt_auswg TYPE STANDARD TABLE OF mgauswg INITIAL SIZE 0.
PARAMETERS: p_matnr LIKE mara-matnr,
p_werks LIKE marc-werks,
p_dytxt LIKE mbildtab-dytxt.
SELECT SINGLE * FROM mara WHERE matnr EQ p_matnr.
CHECK sy-subrc EQ 0.
CALL FUNCTION 'T130M_SINGLE_READ'
EXPORTING
tcode = 'MM02'
kzrfb = 'X'
IMPORTING
wt130m = ls_t130m
EXCEPTIONS
not_found = 1
wrong_call = 2
OTHERS = 3.
CALL FUNCTION 'BILDSEQUENZ_IDENTIFY'
EXPORTING
branche = mara-mbrsh
materialart = mara-mtart
tcode_ref = ls_t130m-trref
* KZRFB = ' '
IMPORTING
bildsequenz = lv_bilds
* KZ_BILDS_CHANGED =
EXCEPTIONS
wrong_call = 1
not_found = 2
OTHERS = 3.
CALL FUNCTION 'SELECTION_VIEWS_FIND'
EXPORTING
bildsequenz = lv_bilds
pflegestatus = mara-pstat
TABLES
bildtab = lt_views[]
EXCEPTIONS
call_wrong = 1
empty_selection = 2
OTHERS = 3.
ls_rmmg1-matnr = mara-matnr.
ls_rmmg1-werks = p_werks.
READ TABLE lt_views INTO lwa_view WITH KEY dytxt = p_dytxt.
CHECK sy-subrc EQ 0.
lwa_auswg-auswg = lwa_view-auswg.
APPEND lwa_auswg TO lt_auswg.
CALL FUNCTION 'MATERIAL_MAINTAIN_DIALOGUE'
EXPORTING
irmmg1 = ls_rmmg1
* IRMMG1_REF = ' '
KZ_EIN_DARK = 'X'
t_tcode = 'MM02'
* FLG_MATNR_RES = ' '
p_pstat = mara-pstat
* FLG_STAT_ALL = ' '
* CALL_MODE2 = ' '
* IMPORTING
* MATERIAL_NO =
* UPDATE_OK =
TABLES
iauswg = lt_auswg[]
EXCEPTIONS
no_authority = 1
OTHERS = 2.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Regards,
Ferry Lianto -
How to print PDF file content from ABAP in background?
Hi,
Is it possible to print PDF file content from ABAP in background?
I have some PDF content which I need to print it, these PDF files are generated outside the SAP.
Please have you any suggestions?
Thank you
Tomas<b><u>Solution:</u></b><br>
<br>
The target output device must support PDF print, this is only one limitation.<br>
<br>
REPORT z_print_pdf.
TYPE-POOLS: abap, srmgs.
PARAMETERS: p_prnds LIKE tsp01-rqdest OBLIGATORY DEFAULT 'LOCL',
p_fname TYPE file_table-filename OBLIGATORY LOWER CASE,
p_ncopi TYPE rspocopies OBLIGATORY DEFAULT '1',
p_immed AS CHECKBOX.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname.
DATA: lv_rc TYPE i,
lv_filter TYPE string.
DATA: lt_files TYPE filetable.
FIELD-SYMBOLS: <fs_file> LIKE LINE OF lt_files.
CONCATENATE 'PDF (*.pdf)|*.pdf|' cl_gui_frontend_services=>filetype_all INTO lv_filter.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
file_filter = lv_filter
CHANGING
file_table = lt_files
rc = lv_rc
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0 AND lv_rc EQ 0.
MESSAGE 'Error' TYPE 'E' DISPLAY LIKE 'S'.
ENDIF.
READ TABLE lt_files ASSIGNING <fs_file> INDEX 1.
IF sy-subrc EQ 0.
p_fname = <fs_file>-filename.
ENDIF.
AT SELECTION-SCREEN.
DATA: lv_name TYPE string,
lv_result TYPE boolean.
lv_name = p_fname.
CALL METHOD cl_gui_frontend_services=>file_exist
EXPORTING
file = lv_name
RECEIVING
result = lv_result
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0.
MESSAGE 'Bad file!' TYPE 'E' DISPLAY LIKE 'S'.
ENDIF.
IF lv_result NE abap_true.
MESSAGE 'Bad file!' TYPE 'E' DISPLAY LIKE 'S'.
ENDIF.
START-OF-SELECTION.
END-OF-SELECTION.
PERFORM process.
FORM process.
DATA: lv_name TYPE string,
lv_size TYPE i,
lv_data TYPE xstring,
lv_retcode TYPE i.
DATA: lt_file TYPE srmgs_bin_content.
lv_name = p_fname.
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = lv_name
filetype = 'BIN'
IMPORTING
filelength = lv_size
CHANGING
data_tab = lt_file
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0.
MESSAGE 'Read file error!' TYPE 'E' DISPLAY LIKE 'S'.
ENDIF.
CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
EXPORTING
input_length = lv_size
IMPORTING
buffer = lv_data
TABLES
binary_tab = lt_file
EXCEPTIONS
failed = 1
OTHERS = 2.
IF sy-subrc NE 0.
MESSAGE 'Binary conversion error!' TYPE 'E' DISPLAY LIKE 'S'.
ENDIF.
PERFORM print USING p_prnds lv_data CHANGING lv_retcode.
IF lv_retcode EQ 0.
WRITE: / 'Print OK' COLOR COL_POSITIVE.
ELSE.
WRITE: / 'Print ERROR' COLOR COL_NEGATIVE.
ENDIF.
ENDFORM. " PROCESS
FORM print USING iv_prndst TYPE rspopname
iv_content TYPE xstring
CHANGING ev_retcode TYPE i.
DATA: lv_handle TYPE sy-tabix,
lv_spoolid TYPE rspoid,
lv_partname TYPE adspart,
lv_globaldir TYPE text1024,
lv_dstfile TYPE text1024,
lv_filesize TYPE i,
lv_pages TYPE i.
CLEAR: ev_retcode.
CALL FUNCTION 'ADS_SR_OPEN'
EXPORTING
dest = iv_prndst
doctype = 'ADSP'
copies = p_ncopi
immediate_print = p_immed
auto_delete = 'X'
IMPORTING
handle = lv_handle
spoolid = lv_spoolid
partname = lv_partname
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0.
ev_retcode = 4.
RETURN.
ENDIF.
CALL FUNCTION 'ADS_GET_PATH'
IMPORTING
ads_path = lv_globaldir.
CONCATENATE lv_globaldir '/' lv_partname '.pdf' INTO lv_dstfile.
OPEN DATASET lv_dstfile FOR OUTPUT IN BINARY MODE.
IF sy-subrc NE 0.
ev_retcode = 4.
RETURN.
ENDIF.
TRANSFER iv_content TO lv_dstfile.
IF sy-subrc NE 0.
ev_retcode = 4.
RETURN.
ENDIF.
CLOSE DATASET lv_dstfile.
IF sy-subrc NE 0.
ev_retcode = 4.
RETURN.
ENDIF.
CALL FUNCTION 'ZBAP_RM_PDF_GET_PAGES'
EXPORTING
iv_content = iv_content
IMPORTING
ev_pages = lv_pages.
lv_filesize = XSTRLEN( iv_content ).
CALL FUNCTION 'ADS_SR_CONFIRM'
EXPORTING
handle = lv_handle
partname = lv_partname
size = lv_filesize
pages = lv_pages
no_pdf = ' '
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0.
ev_retcode = 4.
RETURN.
ENDIF.
CALL FUNCTION 'ADS_SR_CLOSE'
EXPORTING
handle = lv_handle
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0.
ev_retcode = 4.
RETURN.
ENDIF.
ENDFORM. " PRINT -
Calling a web service from abap
Hi all,
I want to call a webservice from ABAP.
In my report i use the below code .
web_rul =' http://test.asmx'.
CALL METHOD CL_HTTP_CLIENT=>CREATE_BY_URL
EXPORTING
URL = WEB_URL
IMPORTING
CLIENT = CLIENT
EXCEPTIONS
ARGUMENT_NOT_FOUND = 1
PLUGIN_NOT_ACTIVE = 2
INTERNAL_ERROR = 3
OTHERS = 4.
CLIENT->REQUEST->SET_HEADER_FIELD( NAME = '~REQUEST_METHOD' VALUE = 'GET' ).
CLIENT->SEND( ).
CALL METHOD CLIENT->RECEIVE
EXCEPTIONS
HTTP_COMMUNICATION_FAILURE = 1
HTTP_INVALID_STATE = 2
HTTP_PROCESSING_FAILED = 3
OTHERS = 4.
RET_DATA = CLIENT->RESPONSE->GET_CDATA( ).
REPLACE ALL OCCURRENCES OF '<' IN RET_DATA WITH '<' .
REPLACE ALL OCCURRENCES OF '>' IN RET_DATA WITH '>' .
Please correct me if my approach is wrong. when i execute the report the value in ret_Data is
####<html>#### <head><link rel="alternate" type="text/xml" href="test.asmx?disco" />#### <style type="text/css">## ####BODY { color: #000000; background-color: white; font-family: Verdana; margin-left: 0px; margin-top: 0px
what is the mistake in this. how should i call the webservice from abap.
Regards,
SubasreeHi,
Here is a sample code I've been using for CL_HTTP_CLIENT.
PARAMETERS pa_symbl TYPE string.
CONSTANTS:
cv_host TYPE string VALUE 'www.webservicex.net',
cv_host1 TYPE string VALUE 'http://www.webservicex.net:80',
cv_service TYPE string VALUE '80',
cv_soapaction TYPE string VALUE 'http://www.webserviceX.NET/GetQuote'.
DATA: li_client TYPE REF TO if_http_client,
lv_path TYPE string VALUE '/stockquote.asmx/GetQuote?symbol=',
lv_tmp TYPE string.
CL_HTTP_CLIENT=>CREATE(
EXPORTING
HOST = cv_host
SERVICE = cv_service
SCHEME = '1'
IMPORTING
CLIENT = li_client
EXCEPTIONS
ARGUMENT_NOT_FOUND = 1
INTERNAL_ERROR = 2
PLUGIN_NOT_ACTIVE = 3
OTHERS = 4 ).
*CL_HTTP_CLIENT=>CREATE_BY_URL(
* EXPORTING
* URL = cv_host1
* IMPORTING
* CLIENT = li_client
* EXCEPTIONS
* ARGUMENT_NOT_FOUND = 1
* INTERNAL_ERROR = 2
* PLUGIN_NOT_ACTIVE = 3
* OTHERS = 4 ).
CONDENSE pa_symbl.
CONCATENATE lv_path pa_symbl INTO lv_path.
li_client->REQUEST->SET_HEADER_FIELD(
EXPORTING
NAME = '`~request_method'
VALUE = 'GET' ).
li_client->REQUEST->SET_HEADER_FIELD(
EXPORTING
NAME = '~server_protocol'
VALUE = 'HTTP/1.1' ).
li_client->REQUEST->SET_HEADER_FIELD(
EXPORTING
NAME = '~request_uri'
VALUE = lv_path ).
li_client->SEND( "sends the HTTP REQUEST
EXPORTING
TIMEOUT = 300
EXCEPTIONS
HTTP_COMMUNICATION_FAILURE = 1
HTTP_INVALID_STATE = 2
HTTP_PROCESSING_FAILED = 3
OTHERS = 4 ).
li_client->RECEIVE( "receives the HTTP RESPONSE
EXCEPTIONS
HTTP_COMMUNICATION_FAILURE = 1
HTTP_INVALID_STATE = 2
HTTP_PROCESSING_FAILED = 3
OTHERS = 4 ).
lv_tmp = li_client->RESPONSE->GET_CDATA( ).
The code will allow you to call the stockquote webservice using GET
http://www.webservicex.net/stockquote.asmx?op=GetQuote
Your code is missing the request uri which is needed in a GET call.
Hope this helps,
Mark -
Error while calling java program from ABAP
Hi Experts,
We are trying for RFC inbound scenario.
We followed the below blog
/people/gregor.wolf3/blog/2004/08/26/setup-and-test-sap-java-connector-outbound-connection
We are working with SAP JCO 3.0.2
We are getting the error : 'STFC_CONNECTION' could not be found in the server repository.
After I run the Java server program if I execute the RFC destination directly from SM 59 it is showing successful messages.
If I stop the java program then this RFC is failing. Based on this we concluded that RFC to Java connection is working fine.
But as mentioned in blog if we call the RFC Destination from ABAP program it is giving the below error,
'STFC_CONNECTION' could not be found in the server repository.
If we test the RFC destination using RFC_TRUSTED_CHECK standard FM we are getting the below error.
'RFCPING' could not be found in the server repository.
We create the RFC destination of Type : TCP/IP as exactly mention in the blog.
Please help us in resolving this issue.
Thanks
PrincePabi,
Using the RFC connection,we can establish a link between Java and SAP.
Afterwards,hope we can call Java program from ABAP.
Below is the sample piece of code to establish RFC connection(link) between Java and SAP.
DATA: REQUTEXT LIKE SY-LISEL,
RESPTEXT LIKE SY-LISEL,
ECHOTEXT LIKE SY-LISEL.
DATA: RFCDEST like rfcdes-rfcdest VALUE 'NONE'.
DATA: RFC_MESS(128).
REQUTEXT = 'HELLO WORLD'.
RFCDEST = 'JCOSERVER01'. "corresponds to the destination name defined in the SM59
CALL FUNCTION 'STFC_CONNECTION'
DESTINATION RFCDEST
EXPORTING
REQUTEXT = REQUTEXT
IMPORTING
RESPTEXT = RESPTEXT
ECHOTEXT = ECHOTEXT
EXCEPTIONS
SYSTEM_FAILURE = 1 MESSAGE RFC_MESS
COMMUNICATION_FAILURE = 2 MESSAGE RFC_MESS.
IF SY-SUBRC NE 0.
WRITE: / 'Call STFC_CONNECTION SY-SUBRC = ', SY-SUBRC.
WRITE: / RFC_MESS.
ENDIF.
Regards,
Sree -
Hi SDN,
Can anybody guide me to solve this problem.
I have created a custom repository as per the requirement(repository has text fields, taxonomy fields etc). I have created a XSD structure using xomLite from the XML(by exporting from Console).
Now if I open the XSD I am finding only a Category field but the attributes that were created in Datamanager are not present.
I want an XSD with attrbutes , please help me out.
Very urgent.
Regrads,
PramodCreating XSD with attributes:
since attributes are created in Data mgr they are not part of data structure which we define in console hence the xsd from console will not have attributes. you can create an xml file from MDM syndicator with all the attributes and from that xml file convert to XSD using the software.
I want to syndicate all the attributes
since we dont have the xsd while syndicating we need to add all attributes first then do the mapping.how to add fields in the xsd in syndicator Manager pls refer the ref guide for MDM Syndicator.
hope it helps.reward points if suitable
Regards-
Ravi
Maybe you are looking for
-
I really want to tart getting some apps but when I do it's says I have to review my new apple ID to the iTunes and App Store. But I follow the instructions and then it's says I have to enter these billing information, but I don't want to buy anything
-
How to merge text attribute in query designer
Hi, please does anybody know, how to merge, let say, two text attributes of one characteristic into one long text? I know, that it is possible with method, which is finally called in the Web Application Designer. But I need to proceed this on the que
-
How to generate the "validate image" using APEX API ?
I don't konw whether APEX has some API function using to generate image, and draw anything on it freely :-), such as LINE, TEXT or RECTANGLE ?
-
Hey im creating a class as im trying to learn java Ive been following my book word for word on creating classes heres my code which i have finished but it still wont compile /**Person class*/ public class Person private String firstname; pr
-
Imac 2009, 10.7.4, track pad cursor locks up and won't function
My cursor has locked up the past few days. It won't function at all except to move around. I've had to do a hard shutdown and restart to get things working again. Any suggestions?