Change exposure in batch mode
Hello, I'm really new in photoshop and I would like to know how to change exposure settings in jpg images with photoshop.
I have 100 pictures and would like to set exposure to +2,5 i all of them without editting one by one. How can I do that? Thankyou very much!!!
Create an action that applies the exposure correction.
Then use the batch command to open a directory of files, apply the action you just created, and save the files either back to that directory or to a new location.
You'll need to read up on how the batch command works (it has a lot of options).
Similar Messages
-
Download created XML File in batch mode // Parse XML file into single lines
Hello!
I upload a CSV file and based on that CSV file I create an XML "object". First I uploaded and downloaded it via gui frontendclass, but as it has to be run in a batch in the night I need to upload and download the data via OPEN DATASET.
The import and transformation of the CSV file works fine, also the transfer into an itab with the same structure as a CSV line is ok. I also create the XML file, which could be downloaded easily with gui-download but it is not permittet.
Import of data: I scan the folder and get the filenames into a itab, I loop over that itab and read the single files like this:
OPEN DATASET ls_convert_batch FOR INPUT IN TEXT MODE ENCODING DEFAULT.
CLEAR tab.
IF sy-subrc = 0.
DO.
READ DATASET ls_convert_batch INTO line.
IF sy-subrc <> 0.
EXIT.
ELSE.
CLEAR tmptab.
SPLIT line AT ';' INTO tmptab-product
tmptab-contract
tmptab-extagent.
APPEND tmptab TO tab.
ENDIF.
ENDDO.
ENDIF.
The XML file has a strucutre like
<file>
- <file formant_no="1.1" format_date="02.10.2003">
<status>V</status>
<number>001001025</numbner>
<name>Schmeisser,Christof</name>
- <details>
- <detail>
<contract>00000003494</contract>
<name>Schmeisser, Christof</name>
<invoice_no>000000003840</invoice_no>
<due_date>20100601</due_date>
<amount>140,00</amount>
</detail>
- <detail>
<contract>00000003495</contract>
<name>Schmeisser, Christof</name>
<invoice_no>000000003841</invoice_no>
<due_date>20100601</due_date>
<amount>130,00</amount>
</detail>
- </details>
<elements>2</elements>
<amount_overall>270</amount_overall>
</file>
At the moment I download it like this:
CALL METHOD cl_gui_frontend_services=>gui_download
EXPORTING
bin_filesize = l_xml_size
filename = filename
filetype = 'BIN'
* CONFIRM_OVERWRITE = '0'
CHANGING
data_tab = l_xml_table
EXCEPTIONS
OTHERS = 24.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSEIF sy-subrc = 0.
lv_create_counter = lv_create_counter + 1.
ENDIF.
But I need to download it via OPEN TRANSFER CLOSE Dataset as it has to run in batch mode.
Anyone has an idea? I am really desperate here. One idea would be to parse the single lines into a string and then create the XML file line by line as text and save it with ending XML, should work. But I don't know how!
Thank you very much in advance,
kind regards from Tallinn, Estonia,
Christof!
Edited by: Christof Schmeisser on Nov 25, 2010 7:51 PM
I edited the heading, would be too general and missleading!Tipos Pools
TYPE-POOLS: ixml.
CLASS cl_ixml DEFINITION LOAD.
TYPES: BEGIN OF xml_node_type,
node TYPE char50,
vlnode TYPE string,
END OF xml_node_type,
BEGIN OF xml_line_type,
data(256) TYPE x,
END OF xml_line_type.
Tabelas Internas
DATA: ti_xml_node TYPE TABLE OF xml_node_type.
Variáveis TYPE REF
*Type REF para utilizar no XML
DATA: ixml_type TYPE REF TO if_ixml,
streamfactory_type TYPE REF TO if_ixml_stream_factory,
ostream_type TYPE REF TO if_ixml_ostream,
istream_type TYPE REF TO if_ixml_istream,
parser_type TYPE REF TO if_ixml_parser,
renderer_type TYPE REF TO if_ixml_renderer,
document_type TYPE REF TO if_ixml_document,
encoding_type TYPE REF TO if_ixml_encoding,
node_type TYPE REF TO if_ixml_node,
element_dtrans_type TYPE REF TO if_ixml_element,
element_xml_in_type TYPE REF TO if_ixml_element,
element_roteiros_type TYPE REF TO if_ixml_element,
element_roteiro_type TYPE REF TO if_ixml_element,
element_vias_type TYPE REF TO if_ixml_element,
element_via_type TYPE REF TO if_ixml_element,
element_dummy_type TYPE REF TO if_ixml_element,
gw_xml_node TYPE TABLE OF xml_node_type,
gw_xml_node_ret TYPE TABLE OF xml_node_type,
gw_xml_node_err TYPE TABLE OF xml_node_type,
gw_xml_node_xml TYPE TABLE OF xml_node_type,
gw_xml_table TYPE TABLE OF xml_line_type,
gw_xml_table2 TYPE TABLE OF xml_line_type,
gs_xml_node TYPE xml_node_type, "WA para leitura do xml
gs_xml_node_ret TYPE xml_node_type, "WA para leitura do xml retorno
gs_xml_node_err TYPE xml_node_type, "WA para leitura do xml erro
gs_xml_node_xml TYPE xml_node_type, "WA para leitura do xml info sucesso
gs_xml_table2 TYPE xml_line_type. "WA para importar xml
Variáveis do Programa
DATA: l_value TYPE string,
l_rc TYPE i,
l_xml_size TYPE i,
cod_cartaorepom TYPE char20 VALUE '123456789',
v_caminho_exp TYPE string VALUE 'C:TEMP',
v_salvaarquivo TYPE string,
v_nomearquivo TYPE string,
w_nodetext TYPE string,
v_roteiros TYPE string,
v_roteiro TYPE string,
v_roteiro_codigo TYPE string,
v_percurso_codigo TYPE string,
v_percurso_descricao TYPE string,
v_cidade_origem TYPE string,
v_estado_origem TYPE string,
v_cidade_destino TYPE string,
v_estado_destino TYPE string,
v_transporte_tipo TYPE string,
v_cartao_taxa TYPE string,
v_cobra_taxa TYPE string.
Constants
CONSTANTS: cc_39 TYPE string VALUE '39', " Numero 39.
cc_dt_trans TYPE string VALUE 'data_transfer'," document_type(name)
cc_metodo_cod TYPE string VALUE 'metodo_codigo'," document_type(name)
cc_xml_in TYPE string VALUE 'xml_in'," document_type(name)
cc_ct_tx_ativ TYPE string VALUE 'cartao_taxa_ativacao'," document_type(name)
cc_cartao TYPE string VALUE 'cartao', " Parâmetro Perform.
cc_xml TYPE string VALUE '.XML'," extenção
cc_bin TYPE char10 VALUE 'BIN'." filetype
START-OF-SELECTION.
PERFORM yf_inicia_criacao_xml USING cc_39.
element_roteiro_type = document_type->create_simple_element(
name = cc_ct_tx_ativ
parent = element_xml_in_type ).
PERFORM yf_dummy_roteiro USING cod_cartaorepom cc_cartao.
PERFORM yf_finaliza_xml.
PERFORM yf_exporta_xml USING v_caminho_exp.
PERFORM yf_convert_xml_to_itab TABLES gw_xml_node_ret
USING v_salvaarquivo.
END-OF-SELECTION.
*& Form yf_inicia_criacao_xml
text
-->VALUE(P_0783) text
FORM yf_inicia_criacao_xml USING value(p_0783).
DATA: s_encoding_type TYPE string VALUE 'ISO-8859-1'.
Cria o ixml factory
ixml_type = cl_ixml=>create( ).
*Cria o objeto com modelo
document_type = ixml_type->create_document( ).
*Cria o cabeçalho encoding="iso-8859-1"
encoding_type = ixml_type->create_encoding( byte_order = 0
character_set = s_encoding_type ).
*Cria o root "DATA_TRANSFER"
element_dtrans_type = document_type->create_simple_element(
name = cc_dt_trans
parent = document_type ).
*Cria o node "METODO_CODIGO" e preenche com um valor passado no L_VALUE
l_value = p_0783.
CONDENSE l_value.
element_dummy_type = document_type->create_simple_element(
name = cc_metodo_cod
value = l_value
parent = element_dtrans_type ).
*Cria o node "XML_IN"
element_xml_in_type = document_type->create_simple_element(
name = cc_xml_in
parent = element_dtrans_type ).
ENDFORM. " yf_inicia_criacao_xml
*& Form yf_dummy_roteiro
text
-->VALUE(P_0996) text
-->VALUE(P_0997) text
FORM yf_dummy_roteiro USING value(p_0996)
value(p_0997).
l_value = p_0996.
CONDENSE l_value.
element_dummy_type = document_type->create_simple_element(
name = p_0997
value = l_value
parent = element_roteiro_type ).
ENDFORM. " yf_dummy_roteiro
*& Form yf_finaliza_xml
text
FORM yf_finaliza_xml.
*Cria o stream factory
streamfactory_type = ixml_type->create_stream_factory( ).
*Conecta a internal table de XML com o stream factory
ostream_type = streamfactory_type->create_ostream_itable( table = gw_xml_table ).
CALL METHOD ostream_type->set_encoding
EXPORTING
encoding = encoding_type.
*Rendering the document
renderer_type = ixml_type->create_renderer( ostream = ostream_type
document = document_type ).
l_rc = renderer_type->render( ).
*Salva o documento XML
l_xml_size = ostream_type->get_num_written_raw( ).
ENDFORM. " yf_finaliza_xml
*& Form yf_exporta_xml
text
-->VALUE(P_0783) text
FORM yf_exporta_xml USING value(p_0783).
CONCATENATE cod_cartaorepom
sy-datum
sy-uzeit
cc_xml
INTO v_nomearquivo.
CONCATENATE p_0783
v_nomearquivo
INTO v_salvaarquivo.
TRANSLATE v_nomearquivo TO UPPER CASE.
*Exporta o XML
CALL METHOD cl_gui_frontend_services=>gui_download
EXPORTING
bin_filesize = l_xml_size
filename = v_salvaarquivo
filetype = cc_bin
CHANGING
data_tab = gw_xml_table
EXCEPTIONS
OTHERS = 24.
IF sy-subrc = 0.
PERFORM yf_sapgui_progress_indicator USING cc_msg_xml_ok.
ELSE.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " yf_exporta_xml
*& Form yf_convert_xml_to_itab
text
-->P_GW_XML_NODE_RET text
-->P_FILENAME text
FORM yf_convert_xml_to_itab TABLES p_gw_xml_node_ret LIKE gw_xml_node
USING p_filename.
DATA l_count.
ixml_type = cl_ixml=>create( ).
Now Create Stream Factory
streamfactory_type = ixml_type->create_stream_factory( ).
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = p_filename
filetype = cc_bin
IMPORTING
filelength = l_xml_size
CHANGING
data_tab = gw_xml_table2
EXCEPTIONS
OTHERS = 19.
IF sy-subrc = 0.
istream_type = streamfactory_type->create_istream_itable( table = gw_xml_table2
size = l_xml_size ).
document_type = ixml_type->create_document( ).
parser_type = ixml_type->create_parser( stream_factory = streamfactory_type
istream = istream_type
document = document_type ).
IF parser_type->parse( ) NE 0.
IF parser_type->num_errors( ) NE 0.
l_count = parser_type->num_errors( ).
ENDIF.
ENDIF.
CALL METHOD istream_type->close( ).
CLEAR istream_type.
node_type = document_type.
PERFORM yf_get_data USING node_type.
p_gw_xml_node_ret[] = gw_xml_node[].
CLEAR gw_xml_node[].
ENDIF.
ENDFORM. " yf_convert_xml_to_itab
*& Form yf_get_data
text
-->VALUE(X_NODE) text
FORM yf_get_data USING value(x_node) TYPE REF TO if_ixml_node.
DATA: indent TYPE i.
DATA: ptext TYPE REF TO if_ixml_text.
DATA: string TYPE string.
DATA: temp_string(100).
CASE x_node->get_type( ).
WHEN if_ixml_node=>co_node_element.
string = x_node->get_name( ).
w_nodetext = string.
CLEAR string.
string = x_node->get_value( ).
IF NOT w_nodetext IS INITIAL OR
NOT string IS INITIAL.
gs_xml_node-node = w_nodetext.
gs_xml_node-vlnode = string.
IF NOT gs_xml_node-vlnode IS INITIAL.
APPEND gs_xml_node TO gw_xml_node.
CLEAR gs_xml_node.
ENDIF.
ENDIF.
ENDCASE.
Get the next child
x_node = x_node->get_first_child( ).
Recurse
WHILE NOT x_node IS INITIAL.
PERFORM yf_get_data USING x_node.
x_node = x_node->get_next( ).
ENDWHILE.
ENDFORM. "yf_get_data -
Getting a COM error when calling MenuItemExecute in batch mode
I support an internal document management system for our corporate contracts. Among other applications, I have one that runs nightly in batch mode to store new invoices and connect them via bookmarks to their corresponding “parent” contract files. The original program was created in 2005 with Acrobat 7 (later updated to Acrobat 8) and it worked well for several years. However, a few months ago I upgraded the system to Acrobat 9 and since then the program has not run consistently.
The “program” actually consists of a VB application and two plug-ins. The VB application does as much work as it can with IAC and the JSO bridge, but because the files are (owner) password protected one plug-in automatically applies the necessary password using AVDocDidOpen when the VB application opens the AVDoc. The VB application then also calls the other plug-in using MenuItemExecute. The second plug-in is used to create the bookmarks between the two files by grabbing info off bookmark strings and creating the necessary actions. It also applies the password to the files.
Here is brief outline form is how this is all structured:
pdDocParent.Open
pdDocInvoice.Open
avDocParent.Open (This triggers the first plug-in to apply the password)
Create bookmark strings in both files using JSO bridge
MenuItemExecute (To create the bookmark action in the parent)
pdDocParent.Save
avDocParent.Close
avDocInvoice.Open (This triggers the first plug-in to apply the password)
MenuItemExecute (To create the bookmark action in the invoice)
pdDocInvoice.Save
avDocInvoice.Close
pdDocInvoice.Close
pdDocParent.Close
Since the upgrade, I’m getting a COM error [The server threw an exception. (Exception from HRESULT: 0x80010105 (RPC_E_SERVERFAULT))] on a non-consistent basis when the application tries to call MenuItemExecute. When I say “non-consistent” I mean that some days the program will process several hundred files just fine. Other days it won’t process any. Then some days it will not process the first, oh, four files but will process the next 300. Usually it runs fine when started interactively, but even then the error sometimes occurs.
I recompiled both plug-ins and the VB app using the Acrobat 9 SDK (headers for the plug-in and the Acrobat type library for the VB app) but that didn’t make any difference. I added code to check if the MenuItem is available and it is in all cases.
After reviewing this more, I got to thinking that perhaps a race condition was the culprit—that a string hadn’t been completely written before the second plug-in tried to create an action for it. So I added some half-second pauses along the way, but that doesn’t seem to have helped, either.
At this point the only thing I can think of is to rewrite the application as a pure plug-in. But it’s a long and involved application and if I can get the current app to work I’d prefer to do that. I tested it with Acrobat 10.1 and encountered similar problems.
As I said, it’s been working fine up until Acrobat 9. Does anyone know of anything that might have changed with Acrobat 9 that I haven’t considered? Is there anything else I might check? Thanks.Leonard,
I'd be interested in hearing why you think that because others at Adobe have told me it's OK. Acrobat is only being called by one user at a time and we've paid for a full license.
Thanks,
Dick -
Photoshop CS3 Actions Batch mode bug?
I posted this in the Mac forum but received no responses after a couple of days, so I am trying it here.
Photoshop CS3 Actions seem to have a bug such that when used in Automate > Batch mode it will use the name of the first file opened in the batch session for every file processed in that session. Since that name is used in Save step, this means having to deal with the "File Already Exist" dialog for every file in the batch because it is attempting to save at the designated location with the same file name. If the continue option is chosen each time, the final result is one file with the first opened file name, but with the contents of the last processed file.
To confirm that this is a problem particular to the opening step, I have disabled all processing steps as well as the saving step by toggling them in the Actions panel. I then ran the action in batch mode on a folder containing 4 files. This resulted in 4 opened files all with the same name but different image content.
This was with the "Override 'Open' Action Commands" checked/not checked, and the "Suppress File Open Options Dialogs" checked/not checked. The problem described also occurs when using a Droplet.
By comparison, Photoshop CS exhibits the expected behavior: when an action is used in batch mode to process an entire folder of files, the name of each file is retained after opening and used after processing in the save or export step.
The above described behavior of CS3 is a change acquired along the way to the CS3 version (I do not have the CS2 version to test). But more importantly, can someone please report if the CS4 version behaves as I described for CS3, or if it has been returned to the CS behavior?
OS X 10.4.11
G4 800 MHz 2 MB L3/processor 1.25 GB SDRAM
Is this a known bug?
AlHello Miguel,
I was going to come back to post some of my findings, one of which relates to your staement:
"- The open command created by Photoshop 6 doesn't keep the file's name, it is a much simple open command, and so it opens the file with the own file's name."
In my case I found that my CS version of the "same" action worked, while the CS3 version failed, precisely because the earlier one records less detail for the open step.
My need is to convert dozens of Quark pdf files to GIF and JPEG files for the web. What I found after several days of testing is that it is best to record the opening step in CS3 NOT using a pdf file, so that the "Open As Generic Pdf with 'Name____' " would not be coded into the opening step. Instead I recorded the whole action using a PSD file. Then I can proceed to run it in Batch mode choosing a folder of Quark pdf files as the source location with "Override 'Open' Action Commands" checked, and the "Suppress File Open Options Dialogs" checked, and it opens all the pdf files just fine in some background process, not getting stuck in the details of the file name, and proceeds to cary out the flattening, saving, and closing steps to my chosen target location and uses the finder file name of each pdf files in the source folder to save a filename.ext in the Target folder.
Contrary to what I stated in my original post, "Override 'Open' Action Commands" checked/not checked does indeed make a difference. If it is not checked, the files do open in batch mode, but the other steps are not performed. There is much more about this that I would like to know, and this may not be a general solution for all types of files that a user may wish to process in batch mode, but it works for my case. The main trick is to use as simple an opening step as possible when recording the action, and then letting Photoshop use whatever background process it requires to open a particular file type. I tested this by manually saving a pdf file to each of the twenty some odd formats available in the save as dialog to a Source folder, and then proceeded to batch process that folder with the action described above, and it worked for all except one.
So while there may not be a bug involved in this problem, there certainly is a lack of documentation about how the "improvements" in the opening step in newer versions of Photoshop affect using Actions in Batch mode.
Please comment if you can further explain any of the reported results. In particular, what is the situation in CS4?
Thanks,
Al -
RE: Reporting after many forte tasks run in batch mode?
Actually, if you're looking for MAKEAPPDISTRIB (I assume that's how you
create distributable) you can see if the command was succesfull or not.
<<deployrep.js>> This Jscript will look for this string and it will
generate a report based on the next line in the log file.
The script assumes you have an environment variable (DESCARTES_ROOT) that
points to a folder (let's say "D:\TEST"). Under that folder you have a log
folder ("d:\test\log") which holds the deploy.log log file. You can easily
change the script to reflect your systems settings.
The generated report looks like that : <<deployrep.txt>>
Norocel Popa
Forte SysEng
(519)746-8110 x 2292
-----Original Message-----
From: [email protected] [mailto:[email protected]]
Sent: Tuesday, March 16, 1999 11:58 AM
To: Forte-Users (Adresse de messagerie)
Subject: Reporting after many forte tasks run in batch mode ?
Hi,
I would like to know if overnight builds went okay, and therefore need to
parse the log(s).
The issue is that I don't have a proper string to look for (i.e. for
grep).
If I consider 'ERROR", then the following message won't be understandable.
There might a way to cheat with the indentation (i.e. the lines with only
two first blank chars)..
Has anyone experimented such a need ?
J-Paul Gabrielli
DTS
SYSTEM ERROR: Service object MySuperApplicationServer.MySuperMgrSO has
not been partitioned. Therefore, you cannot move it to an existing
partition.
Class: qqsp_UsageException
Error #: [1602, 606]
Detected at: qqcf_StandardConfig::MoveServiceObject at 3
Error Time: Tue Mar 16 17:39:26
Exception occurred (locally) on partition "Fscript_cl9_Client",
(partitionId = B84E6180-D639-11D2-82F2-1863030AAA77:0x244:0x1,
taskId =
[B84E6180-D639-11D2-82F2-1863030AAA77:0x244:0x1.1]) in application
"fscript", pid 22713 on node rambo in environment SuperEnv.Hi,
To trap error message from Forte log, I usually do this
egrep '(EXCEPTION|Exception|exception|ERROR|Error|error)' filename
This takes a regular expression to 'egrep' all occurrences of "exception" or
"error" not matter they are in upper case or lower case.
Hope this help.
Regards,
Peter Sham.
-----Original Message-----
From: [email protected] [SMTP:[email protected]]
Sent: Wednesday, March 17, 1999 12:58 AM
To: Forte-Users (Adresse de messagerie)
Subject: Reporting after many forte tasks run in
batch mode ?
Hi,
I would like to know if overnight builds went okay, and
therefore need to parse the log(s).
The issue is that I don't have a proper string to look for
(i.e. for grep).
If I consider 'ERROR", then the following message won't be
understandable.
There might a way to cheat with the indentation (i.e. the
lines with only two first blank chars)..
Has anyone experimented such a need ?
J-Paul Gabrielli
DTS
SYSTEM ERROR: Service object
MySuperApplicationServer.MySuperMgrSO has
not been partitioned. Therefore, you cannot move it to an
existing partition.
Class: qqsp_UsageException
Error #: [1602, 606]
Detected at: qqcf_StandardConfig::MoveServiceObject at 3
Error Time: Tue Mar 16 17:39:26
Exception occurred (locally) on partition
"Fscript_cl9_Client",
(partitionId =
B84E6180-D639-11D2-82F2-1863030AAA77:0x244:0x1, taskId =
[B84E6180-D639-11D2-82F2-1863030AAA77:0x244:0x1.1]) in
application
"fscript", pid 22713 on node rambo in environment
SuperEnv.
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:<a href=
"http://pinehurst.sageit.com/listarchive/">http://pinehurst.sageit.com/listarchive/</a>> -
How to run a 10g report in quiet\batch mode
Good Afternoon,
Please advise if there is a way to run a 10g report from command line.
We use 6i right now and our job scheduler runs reports using "D:\ORADEV6I\BIN\RWRUN60.EXE ..." executable in batch mode on a separate server. We plan to migrate to 10g Database, Forms, Reports. Is there a way to keep this functionality and create a "command" to request the report server to run a report?
Thank you,
DmitriSo the server (we will call it server1) you have "Redwood Cronacle 6.0.2" installed on has a C: drive and a D: drive. On the D: drive is installed Developer 6i (D:\ORADEV6I). You can install Developer Suite 10g also on the D: drive (D:\ORADEV10G for example). After that, setup Oracle iAS on server2. The good news is you have to change very little code. You can:
Not use the iAS server at all and use the following command (similar to how you are doing it now) in Redwood:
return 'D:\ORADEV10G\BIN\RWRUN.EXE'
||' userid=:USRPWD'
||' module='
||v_path||'\'||p_module
||' batch=yes paramform=no destype=file'
||' desformat=' || v_printer_driver
||' desname=:OUTFILE'
||' cmdfile=:CMDFILE errfile=:LOGFILE';If you want to use the iAS server, you have to consider where the report will physicall exist. You can have it exist on the reports server or you can have it brought back to the client. If you bring it back to the client you will lose the ability to run this asynchronously (or in batch mode). You will have to play with some of these parameters to get it to work perfectly, but this should be a good start. These are examples of have the report results saved locally on server1...not server2:
1. Use rwclient to submit a report request
return 'D:\ORADEV10G\BIN\RWCLIENT.EXE'
||' userid=:USRPWD'
||' module='
||v_path||'\'||p_module
||' paramform=no destype=localfile'
||' desformat=' || v_printer_driver
||' desname=:OUTFILE'
||' cmdfile=:CMDFILE errfile=:LOGFILE'
||' server=server2';2. Use rwservlet to submit a report request
return 'D:\ORADEV10G\BIN\RWSERVLET.EXE'
||' userid=:USRPWD'
||' module='
||v_path||'\'||p_module
||' paramform=no destype=localfile'
||' desformat=' || v_printer_driver
||' desname=:OUTFILE'
||' cmdfile=:CMDFILE errfile=:LOGFILE'
||' server=server2';I would think that Cronacle 6.0.2 can submit a url as a job and wait for the results to be streamed back, so you could look into doing that also, in which case the url you would submit for the job would be something like:
return 'http://server2:7777/reports/rwservlet?'
||' userid=:USRPWD'
||' module='
||v_path||'\'||p_module
||' paramform=no destype=cache'
||' desformat=' || v_printer_driver
||' desname=:OUTFILE'
||' cmdfile=:CMDFILE errfile=:LOGFILE'
||' server=server2'; -
Estimatedrowcount not working in Batch mode
We have a page where we conditionally display navigation buttons based on whether a view's estimated row count is gt 10 rows. This is done via JSTL. Prior to getting to the page, a data-action refreshes the three views. In Batch mode, when we re-enter this screen a second time, all views return the estimated row count of RANGESIZE rows. If we reset the iterator range size to 6 or 7, the second time in, it would return 6 or 7 rows and the buttons would be GONE.
Interestingly enough, the dataaction displays the view object's getEstimatedRowCount(), and it is ALWAYS correct, however the front end does not work.
When we switch to IMMEDIATE mode, it works fine, however IMMEDIATE mode breaks another part of our application, where we attempt to find a row in an iterator inside of a data action. Of course, that section works fine in BATCH mode, but no IMMEDIATE.
We saw a thread out there on Metalink regarding this last issue - that setCurrentRowWIthKey returns a JBO-25020 in 10.1.2 in IMMEDIATE mode, but there was no solution.
Are there some words of advice for this sync mode issue and ways to resolve issues like this?
Again, assistance would be GREATLY appreciated!!!!Are you using the parameter 'INSERT' in 'SAVE_TEXT' FM?
The module can be used to change existing texts and to create new texts. If it is clear that it is a new text, this can be specified via the parameter INSERT. The result is better performance as a test read is not performed. -
Multiple ALV reports not working in batch mode
All,
I have a report that creates a detail and a summary ALV report in one program.
When run in the foreground it works great - runs the ALV detail first and displays it and you arrow back and then the runs the ALV summary report and displays it.
But when run in the background - I get the ALV detail report sent to the spooler but nothing for the ALV summary report. Well I do get a second report sent to the spooler but it does not have any data displayed.
I ran this in debug mode - faking out the program to believe it was in Batch Mode.
Everything appears to look correct when it does the call to ALV - the outtab table has the summary data in it.
Here is the calls to ALV:
Function Module to display report in ALV List Format
IF l_detail = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = l_repid
i_callback_user_command = c_ucomm
i_grid_title = p_title
i_grid_settings = w_alv_grid
is_layout = w_alv_layout
it_fieldcat = w_alv_field
it_sort = w_alv_sort
i_default = 'X'
i_save = ' '
it_events = w_alv_event
is_print = w_alv_print
TABLES
t_outtab = t_detail
EXCEPTIONS
program_error = 1
OTHERS = 2.
ELSEIF l_summry = 'X'.
be sure th file has the new SNO values assigned B4 calling!
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = l_repid
i_callback_user_command = c_ucomm
i_grid_title = p_title
i_grid_settings = w_alv_grid
is_layout = w_alv_layout
it_fieldcat = w_alv_field
it_sort = w_alv_sort
i_default = 'X'
i_save = ' '
it_events = w_alv_event
is_print = w_alv_print
TABLES
t_outtab = t_summry
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDIF.
Maybe there something I should be calling or clearing out in the above parms when trying to create to spoolfiles from ALV in background mode.
Any suggestions are most apprecaited.
Thanks.
Scottbefore calling the ALV create a separate spool for each list.
if sy-batch = 'X'.
get the print parameters with FM GET_PRINT_RARAMETERS
pass the parameters (you can change them if you like) to
NEW-PAGE PRINT ON PARAMETERS your_parameters NO DIALOG
endif. -
ODI Error: java.sql.SQLException: statement is not in batch mode
Greetings Gurus!
Would anybody know why changing a SQL view from
AND hapf.attribute1 LIKE '%Active%'
To
AND (hapf.attribute1 LIKE '%Active%' or hapf.attribute1 = ‘Frozen’)
cause ODI to fail?
This is the error message from ODI:
ODI-1228: Task SrcSet0 (Loading) fails on the target SUNOPSIS_ENGINE connection SUNOPSIS_MEMORY_ENGINE.
Caused By: java.sql.SQLException: statement is not in batch mode
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.Util.sqlExceptionSQL(Unknown Source)
at org.hsqldb.jdbc.JDBCPreparedStatement.executeBatch(Unknown Source)
at oracle.odi.runtime.agent.execution.sql.SQLCommand.end(SQLCommand.java:267)
at oracle.odi.runtime.agent.execution.sql.SQLExecutor.endExecution(SQLExecutor.java:156)
at oracle.odi.runtime.agent.execution.sql.SQLExecutor.endExecution(SQLExecutor.java:1)
at oracle.odi.runtime.agent.execution.DataMovementTaskExecutionHandler.handleTask(DataMovementTaskExecutionHandler.java:113)
at com.sunopsis.dwg.dbobj.SnpSessTaskSql.processTask(SnpSessTaskSql.java:2913)
at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTask(SnpSessTaskSql.java:2625)
at com.sunopsis.dwg.dbobj.SnpSessStep.treatAttachedTasks(SnpSessStep.java:558)
at com.sunopsis.dwg.dbobj.SnpSessStep.treatSessStep(SnpSessStep.java:464)
at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java:2093)
at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$2.doAction(StartSessRequestProcessor.java:366)
at oracle.odi.core.persistence.dwgobject.DwgObjectTemplate.execute(DwgObjectTemplate.java:216)
at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.doProcessStartSessTask(StartSessRequestProcessor.java:300)
at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.access$0(StartSessRequestProcessor.java:292)
at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$StartSessTask.doExecute(StartSessRequestProcessor.java:855)
at oracle.odi.runtime.agent.processor.task.AgentTask.execute(AgentTask.java:126)
at oracle.odi.runtime.agent.support.DefaultAgentTaskExecutor$2.run(DefaultAgentTaskExecutor.java:82)
at java.lang.Thread.run(Thread.java:662)
Caused by: org.hsqldb.HsqlException: statement is not in batch mode
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.error.Error.error(Unknown Source)
... 19 more
Thank you!
RayLooks like the single quotes around Frozen are not ascii single quotes. They seem to be a copy paste job from MSWord.
It should be 'Frozen' and then you shouldnt have that issue
>
AND hapf.attribute1 LIKE '%Active%'
To
AND (hapf.attribute1 LIKE '%Active%' or hapf.attribute1 = ‘Frozen’)
>
Devil is in the details ;) -
Hi
I finished forms compilation in batch mode forgot to ask about reports part.
I want to compile all my reports3.0 to reports 10g in batch mode by executing a batch file, please post the script for the same
ThanksScript for batch compilation of reports in LINUX
This has all
Change the name of reports executable for reports 3 and 10g
Cheers
Priya -
A user has requested a printer change on a batch job (#4807) that only has a single step. I have used ZBMW to access the batch job details, and when I double click on the job step, I am taken to a screen with printing/archiving parameters but the fields are grayed-out and not able to be changed. This happens in both display and maintain mode for both 'active' and 'onice' jobs.
How can I go about making this change? Thanks.What is ZBMW ?
The "normal" way to do that is go to SM37, then choose your job (must be in "Relased" status, then menu Job -> Change.
Then button Step, then select the program and press the change button.
In the next popup, press the "print specifications" button.
(By the way, I think you have posted this message into the wrong section -
T3i Locking Exposure in video mode?
When some one moves an arm on camera I can see the exposure changing on the lcd monitor. Using older lenses I can see exposure changing/flickering as I zoom in or out.
How do you lock exposure in video mode? Even my several year old HV20 had a not-in-the-manual way of locking exposure.
Any video people here? I know how you lock exposure for still photography. I'd think the answer to this would be out there and not something that even stumped my local camera store.http://www.dvinfo.net/forum/canon-eos-crop-sensor-hd/498717-manual-exposure-settings-video-mode.html
John Hoffman
Conway, NH
1D Mark IV, Rebel T5i, Pixma PRO-100, MX472 -
Converting alv list to excel and send to sapoffice or mail in batch mode
Hi every one.
I have the alv list and then I can send to sapoffice or mail in batch mode.
If I open the list in Sapoffice I can save the list in XLS format or if I open the list by mail, I can select all the content (because is a html file), select the copy option and then open EXCEL and paste the content.
Can I use an option to convert the alv list to an excel format and then send to mail or sapconnect in batch mode?if your requirement is to send a Excel sheet by Email then use this sample program.
*& Report ZEMAIL_ATTACH *
*& Example of sending external email via SAPCONNECT *
REPORT ZEMAIL_ATTACH .
TABLES: ekko.
PARAMETERS: p_email TYPE somlreci1-receiver
DEFAULT '[email protected]'.
TYPES: BEGIN OF t_ekpo,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
aedat TYPE ekpo-aedat,
matnr TYPE ekpo-matnr,
END OF t_ekpo.
DATA: it_ekpo TYPE STANDARD TABLE OF t_ekpo INITIAL SIZE 0,
wa_ekpo TYPE t_ekpo.
TYPES: BEGIN OF t_charekpo,
ebeln(10) TYPE c,
ebelp(5) TYPE c,
aedat(8) TYPE c,
matnr(18) TYPE c,
END OF t_charekpo.
DATA: wa_charekpo TYPE t_charekpo.
DATA: it_message TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
WITH HEADER LINE.
DATA: it_attach TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
WITH HEADER LINE.
DATA: t_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
t_contents LIKE solisti1 OCCURS 0 WITH HEADER LINE,
t_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
t_attachment LIKE solisti1 OCCURS 0 WITH HEADER LINE,
t_object_header LIKE solisti1 OCCURS 0 WITH HEADER LINE,
w_cnt TYPE i,
w_sent_all(1) TYPE c,
w_doc_data LIKE sodocchgi1,
gd_error TYPE sy-subrc,
gd_reciever TYPE sy-subrc.
*START_OF_SELECTION
START-OF-SELECTION.
Retrieve sample data from table ekpo
PERFORM data_retrieval.
Populate table with detaisl to be entered into .xls file
PERFORM build_xls_data_table.
*END-OF-SELECTION
END-OF-SELECTION.
Populate message body text
perform populate_email_message_body.
Send file by email as .xls speadsheet
PERFORM send_file_as_email_attachment
tables it_message
it_attach
using p_email
'Example .xls documnet attachment'
'XLS'
'filename'
changing gd_error
gd_reciever.
Instructs mail send program for SAPCONNECT to send email(rsconn01)
PERFORM initiate_mail_execute_program.
*& Form DATA_RETRIEVAL
Retrieve data form EKPO table and populate itab it_ekko
FORM data_retrieval.
SELECT ebeln ebelp aedat matnr
UP TO 10 ROWS
FROM ekpo
INTO TABLE it_ekpo.
ENDFORM. " DATA_RETRIEVAL
*& Form BUILD_XLS_DATA_TABLE
Build data table for .xls document
FORM build_xls_data_table.
CONSTANTS: con_cret TYPE x VALUE '0D', "OK for non Unicode
con_tab TYPE x VALUE '09'. "OK for non Unicode
*If you have Unicode check active in program attributes thnen you will
*need to declare constants as follows
*class cl_abap_char_utilities definition load.
*constants:
con_tab type c value cl_abap_char_utilities=>HORIZONTAL_TAB,
con_cret type c value cl_abap_char_utilities=>CR_LF.
CONCATENATE 'EBELN' 'EBELP' 'AEDAT' 'MATNR'
INTO it_attach SEPARATED BY con_tab.
CONCATENATE con_cret it_attach INTO it_attach.
APPEND it_attach.
LOOP AT it_ekpo INTO wa_charekpo.
CONCATENATE wa_charekpo-ebeln wa_charekpo-ebelp
wa_charekpo-aedat wa_charekpo-matnr
INTO it_attach SEPARATED BY con_tab.
CONCATENATE con_cret it_attach INTO it_attach.
APPEND it_attach.
ENDLOOP.
ENDFORM. " BUILD_XLS_DATA_TABLE
*& Form SEND_FILE_AS_EMAIL_ATTACHMENT
Send email
FORM send_file_as_email_attachment tables pit_message
pit_attach
using p_email
p_mtitle
p_format
p_filename
p_attdescription
p_sender_address
p_sender_addres_type
changing p_error
p_reciever.
DATA: ld_error TYPE sy-subrc,
ld_reciever TYPE sy-subrc,
ld_mtitle LIKE sodocchgi1-obj_descr,
ld_email LIKE somlreci1-receiver,
ld_format TYPE so_obj_tp ,
ld_attdescription TYPE so_obj_nam ,
ld_attfilename TYPE so_obj_des ,
ld_sender_address LIKE soextreci1-receiver,
ld_sender_address_type LIKE soextreci1-adr_typ,
ld_receiver LIKE sy-subrc.
ld_email = p_email.
ld_mtitle = p_mtitle.
ld_format = p_format.
ld_attdescription = p_attdescription.
ld_attfilename = p_filename.
ld_sender_address = p_sender_address.
ld_sender_address_type = p_sender_addres_type.
Fill the document data.
w_doc_data-doc_size = 1.
Populate the subject/generic message attributes
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle .
w_doc_data-sensitivty = 'F'.
Fill the document data and get size of attachment
CLEAR w_doc_data.
READ TABLE it_attach INDEX w_cnt.
w_doc_data-doc_size =
( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle.
w_doc_data-sensitivty = 'F'.
CLEAR t_attachment.
REFRESH t_attachment.
t_attachment[] = pit_attach[].
Describe the body of the message
CLEAR t_packing_list.
REFRESH t_packing_list.
t_packing_list-transf_bin = space.
t_packing_list-head_start = 1.
t_packing_list-head_num = 0.
t_packing_list-body_start = 1.
DESCRIBE TABLE it_message LINES t_packing_list-body_num.
t_packing_list-doc_type = 'RAW'.
APPEND t_packing_list.
Create attachment notification
t_packing_list-transf_bin = 'X'.
t_packing_list-head_start = 1.
t_packing_list-head_num = 1.
t_packing_list-body_start = 1.
DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.
t_packing_list-doc_type = ld_format.
t_packing_list-obj_descr = ld_attdescription.
t_packing_list-obj_name = ld_attfilename.
t_packing_list-doc_size = t_packing_list-body_num * 255.
APPEND t_packing_list.
Add the recipients email address
CLEAR t_receivers.
REFRESH t_receivers.
t_receivers-receiver = ld_email.
t_receivers-rec_type = 'U'.
t_receivers-com_type = 'INT'.
t_receivers-notif_del = 'X'.
t_receivers-notif_ndel = 'X'.
APPEND t_receivers.
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
document_data = w_doc_data
put_in_outbox = 'X'
sender_address = ld_sender_address
sender_address_type = ld_sender_address_type
commit_work = 'X'
IMPORTING
sent_to_all = w_sent_all
TABLES
packing_list = t_packing_list
contents_bin = t_attachment
contents_txt = it_message
receivers = t_receivers
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.
Populate zerror return code
ld_error = sy-subrc.
Populate zreceiver return code
LOOP AT t_receivers.
ld_receiver = t_receivers-retrn_code.
ENDLOOP.
ENDFORM.
*& Form INITIATE_MAIL_EXECUTE_PROGRAM
Instructs mail send program for SAPCONNECT to send email.
FORM initiate_mail_execute_program.
WAIT UP TO 2 SECONDS.
SUBMIT rsconn01 WITH mode = 'INT'
WITH output = 'X'
AND RETURN.
ENDFORM. " INITIATE_MAIL_EXECUTE_PROGRAM
*& Form POPULATE_EMAIL_MESSAGE_BODY
Populate message body text
form populate_email_message_body.
REFRESH it_message.
it_message = 'Please find attached a list test ekpo records'.
APPEND it_message.
endform. " POPULATE_EMAIL_MESSAGE_BODY
- Guru -
Precautions to be taken while changing the Query read mode in PED system
Dear Experts,
I got a task to change the Query Read mode for more No. of queries in Production system directly itself.
Request you to let me what are the steps to be followed/precautions to be taken while changing the Query Read mode in PED.
one more doubt regarding this.....If i plan to change the Read mode of Query say Q1, how can i come to know weather the Q1 is executing or not executing by that time.
Thanks in advance for valuable response.
Thanks & Regards,
Ramesh - KumarHello,
You can change the query read mode in transaction 'RSRT', here are the steps:
1) Access transaction RSRT and enter the query name
2) Select the 'Properties' option
3) Un-check the 'Info provider' setting next to the 'Read mode' --> This enables you to change the read mode of the query --> Execute
4) Choose the option 'Generate Report' to re-generate the query program
Hope this info helps.
Thanks
Bala -
Help needed in consuming BTQueryAUI query in batch mode
Hi Friends,
I am trying to consume BTQueryAUI in a custom function module. I have a requirement where in when i receive a external ref nbr, i need to update the status of crm service request to completed. We have already built logic to store the external nbr info in AET field on Service request and enhance inbox search to take give the results accordingly. now when i try to consume the query service with standard query parameters in batch mode..its not working..
REPORT ZTEST_CSOCRM.
DATA : ob_oref TYPE REF TO zcl_im_z_badi_inbox_search,
C_ITEM_1O TYPE CRMT_AUI_MAP_ITEM_TYPE VALUE 'ONEORDER',
l_param1o_tab TYPE crmt_name_value_pair_tab,
is_name type standard table of CRMT_NAME_VALUE_PAIR,
wa_name like line of is_name,
l_sort_1o_tab TYPE crmtt_aui_sorting,
lv_result_1o TYPE REF TO cl_crm_bol_entity_col.
data QUERY_1O type ref to CL_CRM_BOL_QUERY_SERVICE.
CONSTANTS:
abap_true TYPE abap_bool VALUE 'X',
abap_false TYPE abap_bool VALUE ' '.
data: c_BTQueryAUI TYPE crmt_ext_obj_name
VALUE 'BTQueryAUI',
c_query1o TYPE crmt_ext_obj_name VALUE 'BTQueryAUI',
ob_query TYPE REF TO
cl_crm_bol_query_service,
ob_result TYPE REF TO if_bol_bo_col,
ob_core TYPE REF TO cl_crm_bol_core,
lr_aui_dq TYPE REF TO cl_crm_aui_advquery_service,
lr_aui type ref to cl_crm_aui_query_service.
wa_name-name = 'ASSIGNEDTYPE'.
wa_name-value = '0000'.
append wa_name to is_name.
wa_name-name = 'DATETYPE'.
wa_name-value = '0001'.
append wa_name to is_name.
wa_name-name = 'MAINCATEGORY'.
wa_name-value = 'ZBGW'.
append wa_name to is_name.
wa_name-name = 'SORTEDBY'.
wa_name-value = '0000'.
append wa_name to is_name.
wa_name-name = 'SORTEDBY2'.
wa_name-value = '0000'.
append wa_name to is_name.
wa_name-name = 'TIMEPERIOD'.
wa_name-value = '0000'.
append wa_name to is_name.
wa_name-name = 'ZZFLD000006'.
wa_name-value = '0000012345'.
append wa_name to is_name.
wa_name-name = 'DESCRIPTON'.
wa_name-value = '*test*'.
append wa_name to is_name.
l_param1o_tab = IS_NAME.
ob_core = cl_crm_bol_core=>get_instance( ).
ob_core->start_up( 'ALL' ).
TRY.
query_1o = cl_crm_bol_query_service=>get_instance( c_query1o ).
CATCH: cx_crm_unsupported_object.
ENDTRY.
query_1o->set_query_parameters( EXPORTING it_parameters = l_param1o_tab
iv_convert = abap_false ).
lv_result_1o ?= query_1o->get_query_result( ).
ob_query = cl_crm_bol_query_service=>get_instance( c_BTQueryAUI ).
ob_query->set_query_parameters( EXPORTING it_parameters = l_param1o_tab
iv_convert = abap_false ).
lv_result_1o ?= ob_query->get_query_result( ).Tried obtaining the output using SQL and the result is as follows:
SQL> WITH T AS
2 (
3 SELECT 1 COL1 FROM DUAL
4 UNION
5 SELECT 2 COL1 FROM DUAL
6 UNION
7 SELECT 3 COL1 FROM DUAL
8 UNION
9 SELECT 4 COL1 FROM DUAL
10 UNION
11 SELECT 5 COL1 FROM DUAL
12 UNION
13 SELECT 8 COL1 FROM DUAL
14 UNION
15 SELECT 9 COL1 FROM DUAL
16 UNION
17 SELECT 10 COL1 FROM DUAL
18 UNION
19 SELECT 13 COL1 FROM DUAL
20 UNION
21 SELECT 14 COL1 FROM DUAL
22 UNION
23 SELECT 15 COL1 FROM DUAL
24 UNION
25 SELECT 16 COL1 FROM DUAL
26 UNION
27 SELECT 23 COL1 FROM DUAL
28 UNION
29 SELECT 24 COL1 FROM DUAL
30 )
31 SELECT OUTPUT FROM
32 (
33 SELECT DECODE(COL3,NULL,COL1, COL2) || '-' || LEAD(DECODE(COL3,NULL,COL3, COL1)) OVER (ORDER BY DECODE(COL3,NULL,COL1, COL2)) OUTPUT FROM
34 (
35 SELECT COL1, LEAD(COL1) OVER (ORDER BY COL1) COL2, LAG(COL1) OVER (ORDER BY COL1) COL3 FROM T
36 )
37 WHERE
38 (COL2 - COL1 > 1 OR COL2 IS NULL OR COL3 IS NULL)
39 )
40 WHERE OUTPUT != '-';
OUTPUT
1-5
8-10
13-16
23-24
Maybe you are looking for
-
HP wireless TV connect no longer working after Win 8.1 "upgrade"
Help, my transmitter will not link to the box now that I have upgraded from Windows 8 to Windows8.1. When first plugged in, the Trans light blinks 5 times fast, then no lights. The receiver continually blinks slower and when the trans button is held
-
Can't modify address2, province and country
I tried to modify my user profile. Some columns keep recalling old data or reset to default values when next logon. Those columns are "address2" in company address, "state/province" and "country" in shipping address. For address2, it keeps recalling
-
I have to make provision on the Balance Sheet date and on this provision I have to deduct the TDS. Now at the time of payment we deduct the TDS also, then TDS would be deducted double. Then how this transaction would be happened in SAP.
-
How to make a customised report format for SOD integration business rule
Hi, the current reports outputed in SOD lack details that my colleagues need. How can I make a customized report with the needed details. I need to make sure that this report has fields such as the user id, username, system name, user group, access r
-
I suppose I'm asking ho wto contact Apple for a refund, as suggested by the Apps provider?