SAPGUI Scripting Developer needed
I need someone capable of doing some VB coding for me related to SAPGUI scripting.....I need tight login scripts covering every scenario (user already logged on, max # of sessions, single-signon, etc.) and I need help with the systemfocus statements and understanding how it actually works (see my other post).
I am developing a commercial program and need it to behave as such, and unfortunately my scripting skills and programming skills in general are lacking.
Thanks,
Mike
Standard Excel VBA uses UCASE to convert text to upper case.
Similar Messages
-
Is it possible to execute SAPGUI scripts from java program?
Hi everyone..
I need to develop an java applications that executes the SAPGUI script or any technique that execute set of transaction as client.
Is it possible to execute SAPGUI scripts from java program? if so, how it can be achieved? is there any other technique to achieve above mention scenario?.
it will be more helpful, if docs related to that are shared..
Thanks in advanceOh, bummer. Would be much more convenient if I could just use iTunes for everything. Can't stand WMP. I wonder if WinAmp might be a good compromise?
Thanks for this answer . . .
Sharon -
SAPGUI scripting via. Excel
We have a inhouse SAPGUI scripting tool (not really sure if it is Inhouse or SAP delivered it) that we currently use to perform Mass updates via. Excel. The person who created this has left the company but now we have a need to update this. I have no idea of how it was developed. It just seems like it was customized from available scripting functions alread yavalable. This was created in 2003 and obviously it is outdated.
How it works:
We install this tool/plugin, and it creates a menu item in the Excel called SAP Scripting and it has Connect to SAP, Play, Record, Stop, Generate Input Sheet as options. Wehn you click connect to SAP, it brings up the Logon pad and allows the user to select a system and logon. Then yo ucan click Record and it will capture all the transcations and when you hit stop and click generate input sheet, the script is ready. The script looks something like the below but below is not complete.
Issue:
The script is converting all the Input Values to UpperCase but when we use this to populate some paramets which are case sensitive, we are having issues. We need to figure out a way so that the script doesn't convert the input values to UpperCase.
have nayone seen this type os scripting tool? Any advice?
IsInput ID ScriptCode
START 001
002 MySession.findById("wnd[0]").resizeWorkingPane 95,25,false
003 MySession.findById("wnd[0]/tbar[0]/okcd").text = "/nsu01"
004 MySession.findById("wnd[0]/tbar[0]/btn[0]").press
X 005 MySession.findById("wnd[0]/usr/ctxtUSR02-BNAME").text =
006 MySession.findById("wnd[0]/usr/ctxtUSR02-BNAME").caretPosition = 6
007 MySession.findById("wnd[0]/tbar[1]/btn[7]").press
008 MySession.findById("wnd[0]/usr/tabsTABSTRIP1/tabpLOGO").select
009 MySession.findById("wnd[0]/usr/tabsTABSTRIP1/tabpSNC").select
010 MySession.findById("wnd[0]/tbar[1]/btn[19]").press
X 011 MySession.findById("wnd[0]/usr/tabsTABSTRIP1/tabpSNC/ssubMAINAREA:SAPLSNCB:1002/txtUSRACL-PNAME").text =
012 MySession.findById("wnd[0]/usr/tabsTABSTRIP1/tabpSNC/ssubMAINAREA:SAPLSNCB:1002/txtUSRACL-PNAME").caretPosition = 21
013 MySession.findById("wnd[0]/tbar[0]/btn[11]").press
STOP 014Standard Excel VBA uses UCASE to convert text to upper case.
-
SAPGUI Scripting - What is required?
We are just starting to used SAP R/3 4.6C. Is SAPGUI Scripting an application/development add on to be installed in addition to the SAP GUI client ?. I try the script examples (....GetObject("SAPGUI")...etc) but Visual Basic raise the infamous "cannot create object error" which I understand that I dont have the ActiveX needed installed in my PC. (I check saplogon.exe and I dont have it on my PC). What do I need to installed and from where I can get it ?
Hello Victor,
SAP GUI Scripting is a subcomponent of the SAP GUI installation that you have to select during the installation process (or during the definition phase of your packages if you are using an installation server). It is part of SAP GUI as of release 6.20 so you need at least this release (but all the older releases are no longer supported anyway).
In the SAP system itself note 480149 has to be applied. You need a minimum level of SAP Kernel.
Here is the text of the note:
Symptom
The sapgui/user_scripting parameter is imported again. If this parameter
is set to TRUE, the scripting functions can be used with a GUI as of
version 6.20 on the front end.
The default value of the parameter is FALSE so that scripting to the
system is not possible.
Note that you must enter the values in upper case;
There are 2 options for setting the parameter: In transaction rz11 and
in the server profile. If the parameter is only set in rz11, the change
is lost when you restart the server.
Setting the parameter in the SAP system
===============================================
If possible, dynamic setting of the parameter is executed using
transaction rz11. Specify the parameter name sapgui/user_scripting and
select 'Display'.
Provided that the current value is set to FALSE, select the 'Change
value' button in the toolbar. A window now appears, in which you can
enter the new value TRUE. When you save the change, the window closes
and the current value of the parameter changes to TRUE. This change only
becomes effective when you log onto the system again.
If the parameter is not found, you must import the relevant Support
Package in accordance with the list below.
If the current value does not change accordingly after you have saved
the change, it means that the kernel is too old. In this case, import
the required kernel patch, as specified below.
Setting the parameter in the server profile
======================================
If you have not imported the Support Package, you can switch the
scripting on if you set the parameter in the profile file of the
application server with the following line:
sapgui/user_scripting = TRUE
This procedure only requires the specified kernel patch level, however,
you must restart the application server.
Other terms
Reason and Prerequisites
Solution
The parameter is delivered with the following kernel patches:
o 6.10: 360
o 4.6D: 948
o 4.5B: 753
o 4.0B: 903
o 3.1I: 650
The parameter can be dynamically activated in the following kernel
versions, that is, without having to restart the application server:
o 6.20 Release 6.20 and subsequent versions
o 6.10 Release 6.10 as of patch 391
o Release 4.6D as of patch 972
Best regards,
Frank -
EEM: SAPGUI scripting not enabled on server
Hi Gurus,
I have setup SAPGUI EEM monitoring via SOLMAN 7.1 but after deployment there's an error message "SAPGUI scripting not enabled on server()-214722150:disabledByServer=True". I already checked the backend system, and the paramater of sapgui/user_scripting is set to TRUE.
Please advise what else do I need to check in order for the SAPGUI scripting to be working in EEM? Is there any additional parameter that I need to change in the backend system?
Thanks,
VirgilioHi Virgilio,
See this link is usefully
Security for the Use of SAP GUI Scripting - eCATT Security Guide - SAP Library
Regards,
Deva -
Happy to meet Mr Cohr here.
Let me tell you some comments on Sapgui scripting.
a) The code generated is really different depending if your are using a slow or a regular lan connection. It is not that fun, I made some developments to use indexed fields instead of using names.
schnick.schnack.scnock
/1/2/0
where schnick was the second control available
schnack the third son of schnick
schnock the first son of schnack
it remains valid in any case.
b) the management of session number and connnection is not easy.
how do you do that on your own?
regards
DidierHi Didier,
the problem with the low-speed-connection is a documented 'feature'. Unfortunately during a low-speed- connection the server does not send us the field names that we use to identify objects. I think according to the documentation Scripting doesn't work at all in low-speed-connection. As you noticed it's not quite that bad. The Scripting will work, but you get different Ids for your elements. These Ids follow the same concept as your solution: We use an index to identify objects on the same level of the hierarchy.
Session and connection numbers are meaningless most of the time. They depend so much on what else you are or were doing in SAP GUI that a script relying on them will fail most of the time.
The sample recorder generates code that will always access the first session of the first connection using app.children(0).children(0). All Ids in the scripts are then relative to this session and do not contain a session or connection number. That's ok if you work with one open session most of the time.
We also have a property app.ActiveSession, which will return the session that is currently the topmost.
If you need to access several sessions then it becomes difficult. You can distinguish sessions by checking the connection information in session.info or the window title, but that requires some code writing.
Best regards,
Christian -
SAPGUI Scripting - Connection in Delphi/Lazarus
Hi,
i tried to convert my autoitscript projects to Delphi/Lazarus because i need a few things autoit can´t offer. I have a few scripts written that interact with the SAP GUI that work quite well, e.g. Excel data import, specific label printing (p-touch) automated data change/correction etc.
I thought the simple connection to the SAP-GUI scripting wouldn´t be that difficult to migrate but in fact i´m not able to just do the simple task to connect to the running SAP session in Delphi/Lazarus.
Perhaps anyone has already done this and could share the code in Delphi/Lazarus that does the following that works perfectly well in Visual Studio VBA:
Dim sapgui, sapapp, sap_connection, sap_session As Object
sapgui = GetObject("SAPGUI")
sapapp = sapgui.GetScriptingEngine
sap_connection = sapapp.Children(0)
sap_session = sap_connection.Children(0)
MsgBox(sap_session.findById("wnd[0]").Text)
I tried a few things in Lazarus but it always sticks at the "Children(0)" connection with a ole type error
Thanks
ThomasHopefully i found the answer
i just referenced the activex file "SAPFEWINSE.OCX" which is part of the SAPGUI Scripting API project SAPFEWINSELIB
feel free to comment if u have better ideas -
Ihave created a script, i need to email in pdf format.
Hi Experts,
There are 2 criterias...
1. criteria
I have created a script, i need to mail it. Please give me a step by step guide to perform it .. . Please give the comments in all the functional module to be used.
Do we have to write a separate program to send email or in the same program. i'll post my program along with this mail. I'm using this program to display report after delivery on that particular date.
REPORT ZREPORTTOEMAIL LINE-SIZE 400.
data : count, i type i.
TABLES : VBFA, "Sales Document Flow
VBAK,
KNA1,
VBKD,
VBAP,
LIPS,
LIKP,
KONP,
KOMK,
KOMP,
zkna1,
konv.
data : l_vbeln like vbfa-vbeln,
l_posnr like vbfa-posnn,
l_KNUMV like vbak-KNUMV,
L_BILL_ITEM LIKE vbfa-posnn ,
l_netwr like vbrp-netwr,
l_MWSBP like vbrp-mwsbp.
DATA: BEGIN OF TKOMV OCCURS 50.
INCLUDE STRUCTURE KOMV.
DATA: END OF TKOMV.
DATA: BEGIN OF TKOMVD OCCURS 50.
INCLUDE STRUCTURE KOMVD.
DATA: END OF TKOMVD.
TYPE-POOLS: SLIS.
DATA: FIELDTAB TYPE SLIS_T_FIELDCAT_ALV,
HEADING TYPE SLIS_T_LISTHEADER,
LAYOUT TYPE SLIS_LAYOUT_ALV,
EVENTS TYPE SLIS_T_EVENT,
REPNAME LIKE SY-REPID,
F2CODE LIKE SY-UCOMM VALUE '&ETA',
G_SAVE(1) TYPE C,
G_EXIT(1) TYPE C,
G_VARIANT LIKE DISVARIANT,
GX_VARIANT LIKE DISVARIANT.
DATA: GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
CONSTANTS: FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.
DATA: BEGIN OF itab occurs 0,
kunnr like likp-kunnr, "ship to party
NAME2 LIKE KNA1-NAME1, "text
ORT01 LIKE KNA1-ORT01, "City
BSTNK LIKE VBAK-BSTNK, "customer P O
BSTDK LIKE VBAK-BSTDK, "date
vbeln like likp-vbeln, "delivery
ernam like likp-ernam, "person
vstel like likp-vstel, "shipping point
vkorg like likp-vkorg, "sales org
lfdat like likp-lfdat, "delivery date
kunag like likp-kunag, "sold to party
NAME1 LIKE KNA1-NAME1, "text
bil_to like VBAK-KUNNR,
name3 like kna1-name1,
traid like likp-traid, "transport/vehicle no
BOLNR LIKE LIKP-BOLNR,
wadat_ist like likp-wadat_ist, "good mov. date
posnr like lips-posnr, "item
matnr like lips-matnr, "material
arktx like lips-arktx, "item text
matkl like lips-matkl, "mat group
werks like lips-werks, "plant
lgort like lips-lgort, "stoage location
lfimg like lips-lfimg, "del qty
MEINS LIKE LIPS-MEINS,
vrkme like lips-vrkme, "sales unit
UMVKZ LIKE LIPS-UMVKZ,
UMVKN LIKE LIPS-UMVKN,
charg like lips-charg, "batch
vgbel like lips-vgbel, "reference doc
mtart like lips-mtart, "mat type
vkbur like lips-vkbur, "sales office
vkgrp like lips-vkgrp, "sales group
vtweg like lips-vtweg, "Distribution Channel
spart like lips-spart, "division
billno like vbak-vbeln,
basic like komvd-kwert,
budat like bkpf-budat,
fin_amt like vbrp-NETWR,
END OF itab.
data : begin of jtab occurs 0,
kunnr like likp-kunnr,
name2 like kna1-name2,
vbeln like likp-vbeln,
zkunnr like zkna1-zkunnr,
zname like zkna1-zname,
end of jtab.
SELECTION-SCREEN SKIP 1 .
SELECTION-SCREEN BEGIN OF BLOCK BLOCK1 WITH FRAME TITLE TEXT-003.
SELECT-OPTIONS : ABC FOR LIKP-WADAT_IST DEFAULT SY-DATUM
NO INTERVALS .
SELECT-OPTIONS : S_MATNR FOR LIPS-MATNR NO INTERVALS .
SELECT-OPTIONS : S_VKORG FOR LIKP-VKORG NO INTERVALS.
SELECT-OPTIONS : S_VSTEL FOR LIKP-VSTEL NO INTERVALS.
SELECT-OPTIONS : S_VKBUR FOR LIKP-VKBUR NO INTERVALS.
SELECT-OPTIONS : S_VKGRP FOR LIPS-VKGRP.
SELECT-OPTIONS : S_SPART FOR LIPS-SPART.
SELECT-OPTIONS : S_VBELN3 FOR LIKP-VBELN.
SELECT-OPTIONS : S_MATKL FOR LIPS-MATKL NO INTERVALS,
S_KUNAG FOR LIKP-KUNAG.
SELECTION-SCREEN END OF BLOCK BLOCK1.
select * from likp into corresponding fields of itab
WHERE WADAT_IST IN ABC
AND VBELN IN S_VBELN3
AND VKORG IN S_VKORG
and VSTEL in S_VSTEL
AND VKBUR IN S_VKBUR
and lfart like 'Z%'
AND VBTYP = 'J'
AND KUNAG IN S_KUNAG.
select * from lips into corresponding fields of itab
WHERE VBELN = ITAB-VBELN
AND MATNR IN S_MATNR
AND MATKL IN S_MATKL
AND VKBUR IN S_VKBUR
AND VKGRP IN S_VKGRP
AND SPART IN S_SPART.
IF ITAB-VRKME = 'RM' AND ITAB-MEINS = 'KG'.
ITAB-LFIMG = ITAB-LFIMG * ( ITAB-UMVKZ / ITAB-UMVKN ).
ITAB-VRKME = 'KG'.
ENDIF.
SELECT SINGLE BSTNK BSTDK INTO (ITAB-BSTNK,ITAB-BSTDK) FROM VBAK
WHERE VBELN = ITAB-VGBEL.
SELECT SINGLE NAME1 ORT01 FROM KNA1 INTO (ITAB-NAME2,ITAB-ORT01)
WHERE KUNNR = ITAB-KUNNR.
SELECT SINGLE NAME1 FROM KNA1 INTO ITAB-NAME1
WHERE KUNNR = ITAB-KUNAG.
*select single vbeln POSNN into (itab-billno,L_BILL_ITEM) from vbfa where VBELV = itab-vbeln
*and POSNV = itab-posnr and VBTYP_N in ('M','U').
select vbeln POSNN from vbfa up to 1 rows into (itab-billno,L_BILL_ITEM) where VBELV = itab-vbeln
and POSNV = itab-posnr and VBTYP_N in ('M','U') order by vbeln DESCENDING .
endselect.
select single * from vbfa where vbelv = itab-billno and posnv = l_bill_item and
vbtyp_n = 'N'.
if sy-subrc = 0.
clear : itab-billno, l_bill_item.
endif.
select single budat from bkpf into itab-budat where xblnr = itab-billno and
blart = 'RV'.
select single NETWR MWSBP into (l_netwr, l_MWSBP) from vbrp where vbeln = itab-billno
and posnr = l_bill_item.
itab-fin_amt = l_netwr + l_MWSBP.
clear : l_netwr, l_MWSBP.
select single kunnr from vbpa into itab-bil_to where
vbeln = itab-BILLNO and PARVW = 'RE'.
select single name1 into itab-name3 from kna1
where kunnr = itab-bil_to.
*select single VBELV POSNV from vbfa into (l_vbeln,l_posnr)
*where VBELN = itab-vbeln and
*POSNN = itab-posnr and VBTYP_N = 'J'.
*select single VBELN POSNN from vbfa into (l_vbeln,l_posnr)
*where VBELV = itab-vbeln and
*POSNV = itab-posnr and VBTYP_N = 'M'.
select VBELN POSNN from vbfa up to 1 rows into (l_vbeln,l_posnr)
where VBELV = itab-vbeln and
POSNV = itab-posnr and VBTYP_N = 'M' order by vbeln DESCENDING.
endselect.
select single * from vbfa where vbelv = l_vbeln and posnv = l_posnr and
vbtyp_n = 'N'.
if sy-subrc = 0.
clear : l_vbeln, l_posnr.
endif.
if sy-subrc = 0.
*select single KNUMv into l_KNUMv from vbak where vbeln = l_vbeln
select single KNUMv into l_KNUMv from vbRk where vbeln = l_vbeln
select * from konv where knumv = l_knumv and kposn = l_posnr and
kschl in ('ZR00','ZR01','ZR02','ZOBC').
itab-basic = itab-basic + KONV-KBETR.
ENDSELECT.
else.
*select single KNUMv into l_KNUMv from ekko where ebeln = itab-vgbel.
*select single KBETR from konv into itab-basic where knumv = l_knumv
*and kposn = itab-posnr and kschl = 'P101'.
select single KNUMv into l_KNUMv from VBRK where VBELN = itab-BILLNO.
select * from konv where knumv = l_knumv and kposn = l_BILL_ITEM AND
kschl in ('ZR00','ZR01','ZR02','ZOBC').
itab-basic = itab-basic + KONV-KBETR.
ENDSELECT.
*zkna1-zkunnr = itab-kunnr.
*insert zkna1.
endif.
clear : l_vbeln, L_BILL_ITEM, L_POSNR.
APPEND ITAB.
clear : itab-basic, itab-lfimg.
ENDSELECT.
clear : itab.
ENDSELECT.
<b>perform zscript.</b>
*& Form zscript
text
--> p1 text
<-- p2 text
FORM zscript .
CALL FUNCTION 'OPEN_FORM'
EXPORTING
APPLICATION = 'TX'
ARCHIVE_INDEX =
ARCHIVE_PARAMS =
DEVICE = 'PRINTER'
DIALOG = 'X'
FORM = 'ZREPORT2EMAIL'
LANGUAGE = SY-LANGU
OPTIONS =
MAIL_SENDER =
MAIL_RECIPIENT =
MAIL_APPL_OBJECT =
RAW_DATA_INTERFACE = '*'
SPONUMIV =
IMPORTING
LANGUAGE =
NEW_ARCHIVE_PARAMS =
RESULT =
EXCEPTIONS
CANCELED = 1
DEVICE = 2
FORM = 3
OPTIONS = 4
UNCLOSED = 5
MAIL_OPTIONS = 6
ARCHIVE_ERROR = 7
INVALID_FAX_NUMBER = 8
MORE_PARAMS_NEEDED_IN_BATCH = 9
SPOOL_ERROR = 10
CODEPAGE = 11
OTHERS = 12
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LOOP AT ITAB.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'MANU'
FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'MAIN'
IMPORTING
PENDING_LINES =
EXCEPTIONS
ELEMENT = 1
FUNCTION = 2
TYPE = 3
UNOPENED = 4
UNSTARTED = 5
WINDOW = 6
BAD_PAGEFORMAT_FOR_PRINT = 7
SPOOL_ERROR = 8
CODEPAGE = 9
OTHERS = 10
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDLOOP.
CALL FUNCTION 'CLOSE_FORM'
IMPORTING
RESULT =
RDI_RESULT =
TABLES
OTFDATA =
EXCEPTIONS
UNOPENED = 1
BAD_PAGEFORMAT_FOR_PRINT = 2
SEND_ERROR = 3
SPOOL_ERROR = 4
CODEPAGE = 5
OTHERS = 6
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " zscript
The above one is first criteria just to understand how to send mail to the customers.
<b>Second criteria</b> is i have to send the mail to the particular customer with only their details, the process should continue until it sends to all the customers with their details for that particular date.
Please help me out.
I have seen so many posts in the sdn but not able to understand the functional modules, how they declare that and how does it works...
Please provide me a good material to understand the functional module and to declare them.
Please solve this query i'll reward them with very good points.
Thanks in advance.
A.Rafique.Hi babar haroon,
Thanks for the link.....
I went through that link, i created smart form but i was not able to get the results because the pgm gets terminated after executing. I'll show u the code, the code is active. Please check out and tell me if i have missed anything in the code...
*& Report ZZZ_TEST3
REPORT ZZZ_TEST3.
*internal table declarations
data: i_otf type itcoo occurs 0 with header line,
i_tline type table of tline with header line,
i_receivers type table of somlreci1 with header line,
i_record like solisti1 occurs 0 with header line,
*Objects to send mail.
i_objpack like sopcklsti1 occurs 0 with header line,
i_objtxt like solisti1 occurs 0 with header line,
i_objbin like solisti1 occurs 0 with header line,
i_reclist like somlreci1 occurs 0 with header line,
*workarea declaration.
w_objhead TYPE soli_tab,
w_ctrlop TYPE ssfctrlop,
w_compop TYPE ssfcompop,
w_return TYPE ssfcrescl,
w_doc_chng typE sodocchgi1,
w_data TYPE sodocchgi1,
w_buffer TYPE string,"To convert from 132 to 255
Variables declarations
v_form_name TYPE rs38l_fnam,
v_len_in LIKE sood-objlen,
v_len_out LIKE sood-objlen,
v_len_outn TYPE i,
v_lines_txt TYPE i,
v_lines_bin TYPE i.
call function 'SSF_FUNCTION_MODULE_NAME'
*call function '/1BCDWB/SF00000105'
exporting
formname = 'ZZZ_TEST2'
importing
fm_name = v_form_name
exceptions
no_form = 1
no_function_module = 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.
w_ctrlop-getotf = 'X'.
w_ctrlop-no_dialog = 'X'.
w_compop-tdnoprev = 'X'.
CALL FUNCTION '/1BCDWB/SF00000105'
EXPORTING
ARCHIVE_INDEX =
ARCHIVE_INDEX_TAB = itab1
ARCHIVE_PARAMETERS =
CONTROL_PARAMETERS =
MAIL_APPL_OBJ =
MAIL_RECIPIENT =
MAIL_SENDER =
OUTPUT_OPTIONS =
USER_SETTINGS = 'X'
IMPORTING
DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO = wa
JOB_OUTPUT_OPTIONS =
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 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.
ENDIF.
CALL FUNCTION v_form_name
EXPORTING
control_parameters = w_ctrlop
output_options = w_compop
user_settings = 'X'
IMPORTING
job_output_info = w_return
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 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.
ENDIF.
i_otf[] = w_return-otfdata[].
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format = 'PDF'
max_linewidth = 132
IMPORTING
bin_filesize = v_len_in
TABLES
otf = i_otf
lines = i_tline
EXCEPTIONS
err_max_linewidth = 1
err_format = 2
err_conv_not_possible = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Convert PDF from 132 to 255.
LOOP AT i_tline.
Replacing space by ~
TRANSLATE i_tline USING '~'.
CONCATENATE w_buffer i_tline INTO w_buffer.
ENDLOOP.
Replacing ~ by space
TRANSLATE w_buffer USING '~'.
DO.
i_record = w_buffer.
Appending 255 characters as a record
APPEND i_record.
SHIFT w_buffer LEFT BY 255 PLACES.
IF w_buffer IS INITIAL.
EXIT.
ENDIF.
ENDDO.
Refresh: i_reclist,
i_objtxt,
i_objbin,
i_objpack.
clear w_objhead.
Object with PDF.
i_objbin[] = i_record[].
DESCRIBE TABLE i_objbin LINES v_lines_bin.
Object with main text of the mail.
i_objtxt = 'Find attached the output of the smart form.'.
APPEND i_objtxt.
DESCRIBE TABLE i_objbin LINES v_lines_txt.
i_objtxt = 'Regards,'.
APPEND i_objtxt.
i_objtxt = 'J.Jayanthi'.
APPEND i_objtxt.
DESCRIBE TABLE i_objtxt LINES v_lines_txt.
Document information.
w_doc_chng-obj_name = 'Smartform'.
w_doc_chng-expiry_dat = sy-datum + 10.
w_doc_chng-obj_descr = 'Smart form output'.
w_doc_chng-sensitivty = 'F'. "Functional object
w_doc_chng-doc_size = v_lines_txt * 255.
Pack to main body as RAW.
Obj. to be transported not in binary form
CLEAR i_objpack-transf_bin.
Start line of object header in transport packet
i_objpack-head_start = 1.
Number of lines of an object header in object packet
i_objpack-head_num = 0.
Start line of object contents in an object packet
i_objpack-body_start = 1.
Number of lines of the object contents in an object packet
i_objpack-body_num = v_lines_txt.
Code for document class
i_objpack-doc_type = 'RAW'.
APPEND i_objpack.
Packing as PDF.
i_objpack-transf_bin = 'X'.
i_objpack-head_start = 1.
i_objpack-head_num = 1.
i_objpack-head_num = 0.
i_objpack-body_start = 1.
i_objpack-body_num = v_lines_bin.
i_objpack-doc_type = 'PDF'.
i_objpack-obj_name = 'Smartform'.
CONCATENATE 'Smartform_output' '.pdf'
INTO i_objpack-obj_descr.
i_objpack-doc_size = v_lines_bin * 255.
APPEND i_objpack.
Document information.
CLEAR i_reclist.
e-mail receivers.
i_reclist-receiver = '[email protected]'.
i_reclist-receiver = '[email protected]'.
i_reclist-express = 'X'.
i_reclist-rec_type = 'U'. "Internet address
APPEND i_reclist.
Sending mail.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = w_doc_chng
put_in_outbox = 'X'
TABLES
packing_list = i_objpack
object_header = w_objhead
contents_hex = i_objbin
contents_txt = i_objtxt
receivers = i_reclist
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Please reply me back, it is very urgent..
Thanks and regards.
A.Rafique -
Web Developer Needed for a Hawaii Real Estate Agency
Web Developer Needed for a Hawaii Real Estate Agency
(Telecommuting OK. No Relocation)
We are an innovative, technology oriented, real estate agency
searching for an excellent web developer to continue to improve and
grow our 40 agents business. This is a full-time telecommuting
position (although we would love for you to physically be in our
office in Kailua-Kona, Hawaii, we do not pay for relocation
expenses)
The ideal candidate should possess the following skills:
Required skills:
* 5+ years experience in building web applications
* Mastery of ColdFusion MX 6/7 (at least 2 years working
intensively with Coldfusion)
* SQL Server 2000 - Building normalized and optimized
databases, Creating Data Transformation Service packages (DTS),
Import/Export Data, Stored Procedures
* Mastery of: XML, JavaScript, CSS, HTML, Dreamweaver (or
other IDE), Photoshop, some Flash
* Experience with Fusebox 4 methodology
* Excellent communication skills
* Salary commensurate with experience
Additional preferred skills:
* Goldmine 6.7 (a big plus)
* Crystal Reports (or equivalent reporting tool)
* Web (graphic) design skills
Primary Duties:
* Maintain and improve existing Coldfusion/Fusebox 4 web
applications
* Design and build new real estate related tools and
applications
* Create an application to process and consolidate multiple
MLS feeds in various formats into a single database.
* Integrate between websites and CRM system
* Create automation processes in various areas
* Administer Goldmine
* Write procedures and documentations
Interested candidates should email their resume to
[email protected] Only serious candidates please.Hi,
Is this still available? Current location Captain Cook -
S.Kona. 8 yrs CF/SQL etc.
Thanks -
PythonWin and SAPGUI Scripting
I was hoping that somebody else might have posted some examples of SAPGUI scripting and Python(Win) - but I couldn't find any.
Here is a very small example of SAPGUI Scripting with PythonWin. It might serve as a quick start for others who might also share an interest in Python and GUIscripting.
In short - I've got so far as to get basic manipulation working.
import win32com.client
False, True = 0 , -1
app = win32com.client.Dispatch("Sapgui.ScriptingCtrl.1")
conn = app.OpenConnection("D47", True)
At this point the SAPGUI opens with the initial logon screen of the system. A connection has been created. I enter my user ID and password
>>> print conn.Id
returns /app/con[0]
>>> ses = app.FindById("ses[0]")
>>> ses.CreateSession() "opens up a new session Good!
>>> ses.SendCommand(Command="/nIW31") "starts Tx IW31
>>> ses.StartTransaction(Transaction="IW31") "start IW31 also
>>> window = ses.activeWindow
>>> print window.Id
/app/con[0]/ses[0]/wnd[0]
start SE38...
>>> field = window.FindByName(Name="RS38M-PROGRAMM", Type="GuiCTextField")
>>> print field.Id
/app/con[0]/ses[0]/wnd[0]/usr/ctxtRS38M-PROGRAMM
So - it seems that basic manipulation works OK
Next step is to try some useful...
I'll let you know how it goes..
Andrew
Message was edited by: Andrew Barnard
Incorporated successful code and removed some questions which I've now solved myself. (The successful code covers the questions!).Further to the above, I've now been able to translate and run VBS recordings within Python with only a few minor changes:
Here is the approach I've taken:
"// Some introductory setup..
import win32com.client
False, True = 0, -1
app = win32com.client.Dispatch("Sapgui.ScriptingCtrl.1")
con = app.OpenConnection("D47", True)
session = app.FindById("ses[0]")
"// Some input steps (reading from CSV files or other sources...
"// Then the actual GUI scripting steps..
Some "translation" hints:
(1) A VBS recording writes session.findById. In Python it is more accurately written as session.FindById
(2) A VBS statement such as session.findById("wnd[0]").resizeWorkingPane 132,25,false
would be written as session.FindById("wnd[0]").resizeWorkingPane( 132, 25, False)
similarly:
session.findById("wnd[0]").sendVKey 0 from VBS would be written session.FindById("wnd[0]").sendVKey( 0 )
Other than that - all seems pretty straight forward.. -
SAP Script Development ( Merlin )
Dear All,
We can see the ID of any SAP Screen or field by Switching On SAP Script Development.
The "Merlin" which comes on Screen, gives an option to copy ID and then we can see the SAP Screen / Field / Tab... etc ID.
Just I wanted to know, how does this "Merlin" works and from where does "Merlin" gets this Id.
Debugging is also not working, while trying to figure out this stuff.
Any one having any idea about this, please help.
Thanking You All.Hi cvrian
The "wizard" gets the ID's from The SAP-Controls.
Each Control is like a "Window" (in Windows every Conrtol has a unic ID and identifier.
The Wizard just "looksup" in the App and the loaded Controls.
If you want to go "deeper" you can google für Mouse n Enum or the Microsoft Spy++
There you can find more details about that "Merlin"
Hope this Explanation helps...
Greetings
Thomas Br -
Syslinux Installer / Update Script - Testers Needed
For those who don't follow the ML that closely....
Hello Community,
Over the last few weeks I have been working on Syslinux support for the installer. With the help Thomas and Dieter I am nearing the completion of this project. As part of this project, I have written a script that will help install and update Syslinux (similar to that of grub-install).
Some key features of the script: syslinux-install_update.sh
* Install Syslinux to the FS + Partition Boot Loader (extlinux --install /boot/syslinux)
* Install Syslinux MBR
* Detect and optionally set the boot flag on the boot partition
* Update Syslinux – copy files and execute (extilnux --update /boot/syslinux)
* Support for GPT disks
* Support for RAID configurations
The goal is to include this script in the official Syslinux package. Therefore we need your help to test it.
syslinux-install_update.sh -i -a -m ..... install Syslinux, set the boot flag (if needed), and install the MBR
We need tests for the following setups:
/ + /boot on the *same* partition
/ + /boot on the *same* partition - RAID
/boot + root on *separate* partition
/boot + root on *separate* partition - RAID
All of the above using but using the GPT partition layout
NOTE: This is an alpha/beta stage script. The script modifies the first 440 bytes of the disk (using dd) and the partition table (using either sfdisk or sgdisk). Although the script should be safe to run, I am not responsible for any data loss that may occur.
Let us know the following:
* Did the script work for you?
* What was your partition setup? (see above)
* What version did you use?
* If the script did not work, please provide as much information as possible
Get the script here: https://gist.github.com/772138
Syslinux Sample Config File: http://projects.archlinux.org/svntogit/ … slinux.cfg
The Syslinux package in testing includes the above configuration file.
Cheers,
pytherAs Thomas puts it:
Thomas wrote:Syslinux is way more flexible and extensible than grub or lilo, actively developped (by someone who knows what he is doing and is always willing to fix bugs like yours) and feature-rich.
http://mailman.archlinux.org/pipermail/ … 17368.html
In regards to bootloaders in core
Pierre wrote:
ATM. we have grub1 in core/base and install that by default. The problem is that this project is virtually dead for a long time now and also not available on x86_64. Technically it has to be in the multilib repo.
Grub2 is currently in extra. Upstream development is still in flux. Imho its quite heavy and complex. An alternative successor would be extlinux from the syslinux package. It's very simple, easy to configure, actively maintained and reliable. Sure, it only supports booting from ext* and btrfs afaik but to be honest, if you use any other FS you should have a separate /boot even when using grub.
http://mailman.archlinux.org/pipermail/ … 18445.html
Why I like it:
* It is simple and easy to understand (see https://wiki.archlinux.org/index.php/Sy … t_Process)
* The devs are willing to help you out (they have helped me understand the Syslinux boot process and write this script)
* It is modular in nature and the Hardware Detection Tool (HDT) com32 module is cool
* Configuration is simple
* KISS (IMHO)
* GPT Support
Disadvantages:
* Can't boot from LVM volumes
* only ext2/3/4, btrfs, vfat file systems supported
Last edited by pyther (2011-01-16 21:56:41) -
Oracle SQL Developer needs some work
I just downloaded a copy today (1557) for Oracle 9.2i / Windows XP Pro
Oracle SQL Developer has a few glitches...
A compiled and working package (compiled in SQL*Plus and TOAD) opens and shows 2 errors in a SQL Query involving a CASE statement. Invalid CASE clause on an ELSE and unexpected token on an alias at the end of the case.
Compiling a package should display a message saying successfully compiled and the state of a package should always be on display!
Opened an SQL script but could not execute it as the icon's didn't become active.
Couldn't then run the script.
These basic problems would put any serious developer off using Oracle SQL Developer.
Also background color scheme should be gray and NOT white. White is hard on the eyes. This is just basic UI stuff.
Oracle, you need more senoir developers!Justified to the top left of the sql window, you see the execute buttons. On the top right, you will see a drop down list box. After opening a file, this drop down list box is not selected. Select your connection and the execute buttons on the top left will enable.
For PL/SQL use a slash / at the end for it to execute. -
Oracle developer needs Java help
I develop applications in Oracle 8i on NT4. As part of a trigger, I need to perform an update to an extremely large table which takes many minutes. Because it's tied to a web page, I can't wait for the update to complete. Oracle natively doesn't support system calls -- I use the Shell() command in VB -- but Oracle DOES support Java stored procedures. I'm hoping that a Java stored procedure will be able to spawn/execute a new process/program specified by a command line instruction (ie: "C:\SQLPLUS.EXE SCOTT/TIGER @update.sql") and return immediately - without waiting for the process to complete. There doesn't need to be any handle for or call back from the process - just fire and forget. Can anyone provide me some direction, or better some existing Java code that does this? THANKS!
Hi "todmcg",
I'm not sure that I have understood your question correctly, but here goes anyway...
Yes you can create a java stored procedure and have a trigger execute that procedure. In order to execute system commands in java, you usually use the "exec()" method of class "java.lang.Runtime". It is also easy to spawn new threads using java. So yes, you can have your java stored procedure execute a system command in a background thread.
In my opinion, the Oracle documentation explains very well how to create a java stored procedure. The documentation is available from:
http://tahiti.oracle.com
Also, examples of how to call system commands from java stored procedures are available at this Web site:
http://asktom.oracle.com
You may also find relevant information at:
http://metalink.oracle.com
and
http://technet.oracle.com
Of-course, you can also use JDBC from your java stored procedure to execute your "update.sql" script -- without the need to execute a system command.
Basic code skeleton:
[NOTE: Untested and may contain syntax errors.]
public class SystemCommand implements Runnable {
private static String cmd;
public void run() {
Runtime runtime = Runtime.getRuntime();
runtime.exec(cmd);
public static void execCommand(String cmd) {
this.cmd = cmd;
new Thread(new SystemCommand()).start();
}Hope this helps you.
Good Luck,
Avi. -
Adobe LiveCycle Developer- Needed ASAP- Timonium, MD
Hello,
I have the following position available. This is an urgent need If you or anyone you know is interested please email resume to Lisa Green: [email protected]
OVERVIEW: The LiveCycle Developer is responsible for providing administration, technical support, forms and application design, workflow design, and end-to-end client application support for the development and implementation of forms and other business processes on the Adobe Lifecycle suite of products. The LiveCycle Developer must have demonstrated in-depth knowledge and understanding of the Adobe LiveCycle suite of products, strong analysis skills, experience in designing, developing, implementing, testing, and modifying Adobe based business applications.
RESPONSIBILITIES AND EXPECTATIONS:
Develop interactive forms, documents, templates and workflows in an integrated environment
Create dynamic XML templates to be rendered as HTML or PDF file format and implement document security using digital signatures
Other duties as assigned
QUALIFICATIONS:
Bachelor's degree and 1+ year experience or Associate’s degree and 3+ years experience or 5+ years experience in lieu of degree
1+ years experience as an Application Developer in an enterprise level environment
24+ months experience using Adobe LiveCycle suite
Knowledge of and experience with Adobe Acrobat Professional Software and Adobe Acrobat Reader Software
Development experience using Java/J2EE, XML/XBRL, SQL 2005, JavaScript, VB.Net or C#.Net is desiredHi ,
I am Prince Edward with Millennium Consultants . We are an information technology firm that offers consulting and system integration services, as well as products and business solutions, tailored to client's needs. Millennium is a proud supporter of Green computing technologies and products. Please visit www.millenniumci.com to know more about us.
I have an immediate opening for you as a Adobe Live Cycle Developer and the requirement is given below:
Location: Montvale, NJ
Duration: Long _ Term
Required Skills:
Experience using Adobe Lifecycle suite. This should include the following.
Lifecycle Forms.
Lifecycle Designer with experience in XDP forms and scripting.
Lifecycle Content Service.
Must be able to develop interactive forms, documents, document templates and workflows in an integrated environment.
Must be able to create dynamic XML templates to be rendered as HTML or PDF file format and implement document security using digital signatures.
Strong knowledge and experience in Adobe Acrobat Professional Software and Adobe Reader Software knowledge and experience.
Looking forward to hear from you.
Regards,
Prince
(An ISO 9001:2000 Certified Company)
100 Wood Avenue South Suite # 205
Iselin, NJ 08830
Tel: 732-562-0200 x: 278
Fax: 732-562-8500
www.millenniumci.com
Maybe you are looking for
-
Solaris 8 installation problem on an Intel base PC
I'm quite new with Solaris. I got stuck in Solaris 8 installation just at almost the very beginning. After booting up the system from floppy and conituing pressing F2 and selecting booting from CD, I got an error message like: cannot mount on pci@0;
-
I updated iTunes and when I try to open it I get the following error message: This copy of iTunes is corrupted or is not installed correctly. Please reinstall iTunes. (-42404) I have uninstalled iTunes and reinstalled again and get the same message.
-
[AS] How to create an anchored rectangle in CS3 ?
Hi all, I'm unable to create an anchored rectangle in CS3 using AppleScript. I tried this: tell insertion point 1 of text frame 1 make rectangle with properties {stroke weight:0, geometric bounds:{0, 0, 20, 20}} end tell Any help?
-
Iphone 6 speaker having echoes! And camera keep freezing. Help!
My one month old iPhone 6 having some problem. First the camera tends to lag or sometimes blackout when I want to take photo. Secondly, the speaker has echoes. Please assist. Am I eligible to exchange for a new unit?
-
I have a standard definition video I put into iMovie and set it to "Fit" so that it did not cutoff the top and bottom. Now I have black bars on each side. I am going to create an image, or two if need be, to cover those black edges. I cannot figure o