Smart Form, Data Element and Parameters
1.- I created an Smart Form with an import parameter. The import's parameter type is a data element.
2.- I create an executable to call the Smart Form, I need to declare a parameter of the type of the same data element.
The problem is that when I try to compile I receive an error message:
The deep data type "ZTEXTOLIBRE" is not allowed. not allowed.
The type of the parameter must be of this type because if not, i'd receive an error when i send the parameter to the function that call the Smart Form. Any idea?
Thanx
Hi Jose,
check with this smartform LB_BIL_INVOICE declaration and with the driver program declaration.
like IS_BIL_INVOICE TYPE LBBIL_INVOICE in the form Interface and
like DATA: ls_bil_invoice TYPE lbbil_invoice in the driver program RLB_INVOICE.
Hope this will help.
Thanks,
Vamsi.
Similar Messages
-
Very big problem with JSF about FORM and "id=" for HTML form's elements and
I have discovered a very big problem with JSF about FORM and "id=" for HTML form's elements and java instruction "request.getParameterNames()".
Suppose you have something like this, to render some datas form a Java Beans :
<h:dataTable value="#{TablesDb2Bean.myDataDb2ListSelection}" var="current" border="2" width="50%" cellpadding="2" cellspacing="2" style="text-align: center">
<h:column>
<f:facet name="header">
<h:outputText value="Name"/>
</f:facet>
<h:outputText id="nameTableDb2" value="#{current.db2_name_table}"/>
</h:column>
</h:dataTable>
Everything works fine...
Suppose you want to get the name/value pairs for id="nameTableDb2" and #{current.db2_name_table} to process them in a servlet. Here is the HTML generated :
<td><span <span class="attribute-name">id=<span class="attribute-value">"j_id_jsp_1715189495_22:0:nameTableDb2">my-table-db2-xxxxx</span></td>
You think you can use the java instructions :
Enumeration NamesParam = request.getParameterNames();
while (NomsParam.hasMoreElements()) {
String NameParam = (String) NamesParam.nextElement();
out.println("<h4>"++NameParam+ "+</h4>);
YOU ARE WRONG : request.getParameterNames() wants the syntax *name="nameTableDb2" but JSF must use id="nameTableDb2" for "<h:outputText"... So, you can't process datas in a FORM generated with JSF in a Servlet ! Perhaps I have made an error, but really, I wonder which ?
Edited by: ungars on Jul 18, 2010 12:43 AM
Edited by: ungars on Jul 18, 2010 12:45 AMWhile I certainly appreciate ejb's helpful responses, this thread shows up a difference in perspective between how I read the forum and how others do. Author ejb is correct in advising you to stay inside JSF for form processing if form processing is what you want to do.
However, I detect another aspect to this post which reminds me of something Marc Andreesen once said when he was trying to get Netscape off the ground: "there's no such thing as bad HTML."
In this case, I interpret ungar's request as a new feature request. Can I phrase it like this?
"Wouldn't it be nice if I could render my nice form with JSF but, in certain cases, when I REALLY know what I'm doing" just post out to a separate servlet? I know that in this case I'll be missing out on all the nice validation, conversion, l10n, i18n, ajax, portlet and other features provided by JSF".
If this is the case, because it really misses the point of JSF, we don't allow it, but we do have an issue filed for it
https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=127
If you can't wait for it to be fixed, you could decorate the FormRenderer to fix what you want.
I have an example in my JSF book that shows how to do this decoration. http://bit.ly/edburnsjsf2
Ed -
FM to lock data element and messages
Hi All,
I need a FM to enque data element and messages for translation.
I have found out one FM for ABAP program texts - ENQUEUE_EABAPTEXTE.
Can you please tell me the corresponding ones for data element and messages.
Thank you.
AjithHi Krishna,
Use function modules enqueue_<<lock object>>u2019 and dequeue_<<lock object>>u2019
With Regard's
SHAIK. -
Procedure for creating transparent table, data element and domain
Hi,
Can anybody let me know the procedure for creating transparent table, data element and domain.
Thanks,
MahathiHi
Database table and its components
A database table is the central data structure of the ABAP/4 data dictionary.
The structure of the objects of application development are mapped in tables on the underlying relational database.
The attributes of these objects correspond to fields of the table.
A table consists of columns (fields) and rows (entries). It has a name and different attributes, such as delivery class and maintenance authorization.
A field has a unique name and attributes; for example it can be a key field.
A table has one or more key fields, called the primary key.
The values of these key fields uniquely identify a table entry.
You must specify a reference table for fields containing a currency (data type CURR) or quantity (data type QUAN). It must contain a field (reference field) with the format for currency keys (data type CUKY) or the format for units (data type UNIT). The field is only assigned to the reference field at program runtime.
The basic objects for defining data in the ABAP Dictionary are tables, data elements and domains. The domain is used for the technical definition of a table field (for example field type and length) and the data element is used for the semantic definition (for example short description).
A domain describes the value range of a field. It is defined by its data type and length. The value range can be limited by specifying fixed values.
A data element describes the meaning of a domain in a certain business context. It contains primarily the field help (F1 documentation) and the field labels in the screen.
A field is not an independent object. It is table-dependent and can only be maintained within a table.
You can enter the data type and number of places directly for a field. No data element is required in this case. Instead the data type and number of places is defined by specifying a direct type.
The data type attributes of a data element can also be defined by specifying a built-in type, where the data type and number of places is entered directly.
<b>Two Level Domain Example</b>
A domain defines a field technically and therefore it may
be used at different business levels.
A data element describes the meaning of a domain in a certain business context.
A domain, however, is used for the technical definition of a table field (for example field type and length).
Therefore, although a take-off airport (data element S_FROMAIRP) would have a different business meaning from an airport where a plane lands (data element S_TOAIRP), they could still have the same domain(here S_AIRPID) because technically we could assign the same number of characters whether the airport is a take-off or a landing airport.
<b>Definitions of Table in Database</b>
In SAP R/3 tables are defined as
A) Transparent tables: All of the fields of a dictionary table correspond to a field in the real database table.
B) Pooled tables: Different tables which are not linked to each other with a common key are combined into a TABLE POOL. Several logical tables thus exist as a single real database table.
C) Cluster tables: Several tables linked by a common key may sometimes be combined by the data dictionary and made to exist on the database schema as a single table.
SAP is evolving R/3 tables in transparent tables.
<b>Elaboration on each of the definitions</b>
A transparent table is automatically created on the database when it is activated in the ABAP Dictionary. At this time the database-independent description of the table in the ABAP Dictionary is translated into the language of the database system used.
The database table has the same name as the table in the ABAP Dictionary. The fields also have the same name in both the database and the ABAP Dictionary. The data types in the ABAP Dictionary are converted to the corresponding data types of the database system.
The order of the fields in the ABAP Dictionary can differ from the order of the fields on the database. This permits you to insert new fields without having to convert the table. When a new field is added, the adjustment is made by changing the database catalog (ALTER TABLE). The new field is added to the database table, whatever the position of the new field in the ABAP Dictionary.
Tables can also reside on the database as Pooled tables or cluster tables
Pooled Tables: Different tables which are not linked to each other with a common key can be combined into a Table Pool. The tables contained within this pool are called Pooled Tables. A table pool is stored in the database a simple table. The table's data sets contain, in separate fields, the actual key for the data set to be stored, the name of the pooled table and the contents of the data set to be stored.
Using this schema, several logical tables are combined into a single real database table. Although the data structure of each set is lost during the write to the table pool, it is restored during the read by the ABAP/4 Data Dictionary. The ABAP/4 Data Dictionary utilizes its meta-data to accomplish this.
Since information must be prepared (defined) within the ABAP/4 Data Dictionary when it is read or written to (or accessed), this process itself defines these as not transparent tables
Cluster Tables: Occasionally, several tables may be linked by a common key. The ABAP/4 Data Dictionary can also combine these tables into a single table. Each data set of the real table within the database contains a key and in a single data field, several data sets of the subsequent table for this key.
As mentioned above, these table types require special data handling, therefore they are not transparent tables.
<b>Technical Settings in Dictionary</b>
The data class logically defines the physical area of the database (for ORACLE the table space) in which your table should be created. If you choose the data class correctly, the table will automatically be created in the appropriate area on the database when it is activated in the ABAP Dictionary.
The most important data classes are master data, transaction data, organizational data and system data.
Master data is data that is rarely modified. An example of master data is the data of an address file, for example the name, address and telephone number.
Transaction data is data that is frequently modified. An example is the material stock of a warehouse, which can change after each purchase order.
Organizational data is data that is defined during customizing when the system is installed and that is rarely modified thereafter. The country keys are an example.
System data is data that the R/3 System itself needs. The program sources are an example.
Further data classes, called customer data classes (USER, USER1), are provided for customers. These should be used for customer developments. Special storage areas must be allocated in the database.
The size category describes the expected storage requirements for the table on the database.
An initial extent is reserved when a table is created on the database. The size of the initial extent is identical for all size categories. If the table needs more space for data at a later time, extents are added. These additional extents have a fixed size that is determined by the size category specified in the ABAP Dictionary.
You can choose a size category from 0 to 4. A fixed extent size, which depends on the database system used, is assigned to each category.
Correctly assigning a size category therefore ensures that you do not create a large number of small extents. It also prevents storage space from being wasted when creating extents that are too large.
Modifications to the entries of a table can be recorded and stored using logging.
To activate logging, the corresponding field must be selected in the technical settings. Logging, however, only will take place if the R/3 System was started with a profile containing parameter 'rec/client'. Only selecting the flag in the ABAP Dictionary is not sufficient to trigger logging.
Parameter 'rec/client' can have the following settings:
rec/client = ALL All clients should be logged.
rec/client = 000[...] Only the specified clients should be logged.
rec/client = OFF Logging is not enabled on this system.
The data modifications are logged independently of the update. The logs can be displayed with the Transaction Table History (SCU3).
Logging creates a 'bottleneck' in the system:
Additional write access for each modification to tables being logged.
This can result in lock situations although the users are accessing different application tables!
<b>Create transparent table</b>
Go to transaction SE11. Enter name of table you want to create (beginning with Y or Z) and click on create pushbutton
Enter the delivery class and the table maintenance criteria
The delivery class controls the transport of table data when installing or upgrading, in a client copy and when transporting between customer systems .
The display/maintenance indicator specifies whether it is possible to display/maintain a table/view using the maintenance tools Data Browser (transaction SE16) and table view maintenance (transactions SM30 and SM31).
Enter the name of the table field and the data element. The
System automatically populates the technical details for
existing data elements.
So far as possible it is advisable to use existing data elements which befit the business requirements.
However, we may create data elements if need be. The same is shown in the next slide.
To create a data element simply double click on it.
Alternately create a data element by simply choosing the
data type radio button on SE11 initial screen.
<b>Create data element</b>
The system prompts you to create a new data element.
Choose the Yes pushbutton.
Under the data type tab enter the domain name which
determines the technical characteristics of the field.
Further characteristics tab: Allows you to specify a search help assigned to the data element.
It also allows you to specify a parameter id which helps you populate a field from SAP memory.
Field label: Can be assigned as prefixed text to a screen field referring to the ABAP Dictionary. The text is displayed on the screen in the logon language of the user (if the text was translated into this language).
<b>Create domain</b>
If the domain does not exist in the data dictionary the
system prompts you to create one.
Give the technical characteristics under the definition
tab. Value range allows you value restriction at domain
level.
Value range tab:
As explained in the section Consistency through input checks one can restrict the possible values for a field at domain level itself by either entering fixed values or by specifying a value table under the tab Value range.
<b>Currency/Quantity fields in a table</b>
A currency or a quantity field must be assigned a reference field from a reference table containing applicable qty unit or currency unit.
Field of the reference table, containing the applicable quantity unit or currency
A field containing currency amounts (data type CURR) must be assigned a reference field including the currency key (data type CUKY).
A field containing quantity specifications (data type QUAN) must be assigned a reference field including the associated quantity unit (data type UNIT).
<b>Create transparent table continue</b>
Maintain the technical settings of the table by clicking on the tab -
Download Smart form data for 6000 Invoice documents into Excel
Hi,
Using RSNAST000 program currently we are printing samrtform.
Instead of printing data in smartform i need to write into excel.
Please let me know the logic to do this i need to write 6000 smartforms(Invoice documents) data into Excel.
Thanks
BhuvanaAsk him how he thinks smart forms can be embedded in Excel, and why he wants Excel (for which benefit, for using which functions of Excel?). He has an idea, for sure.
Technical possibilities of Excel to embed graphical documents are very limited, I mean 2 solutions: either storing the whole document as an image (rather easy), or split the document into pieces of text (into cells) and boxes and images (stored as Excel graphical elements) with a rather bad render (highly complex, I mean unfeasible).
- If his idea is to embed them as images (PDFs), then show him the result : 50 kb to 500 kb for each smart form = excel of several mega bytes. He will certainly regret. Moreover I don't see the interest.
On the other way, propose him to store smart forms in a single spool, so he will be able to display (it's then equivalent to preview) all of them at the same time. He'll surely agree that it's the most efficient way.
Propose him proofs of concepts. -
Hi All,
I am new to smartforms.I want to position the date on page top corner of the left side of the form such as day month year(Tuesday,january 01,2008).how to get this formate in smart form?
Thanks & Reagrds
HBHi,
Check this it may be useful to u
Formatting Date Fields: SET DATE MASK
To define the formatting of date fields, use the SET DATE MASK control command. Executing this command causes all subsequent date fields to be printed using the specified format.
Syntax:
/: SET DATE MASK = 'date_mask'
In the date mask, you can use the following codes:
DD: day (two digits)
DDD: day name - abbreviated
DDDD: day name - written out in full
MM: month (two digits)
MMM: month name - abbreviated
MMMM: month name - written out in full
YY: year (two digits)
YYYY: year (four digits)
LD: day (formatted as for the L option)
LM: month (formatted as for the L option)
LY: year (formatted as for the L option)
All other characters found in a date mask are interpreted as simple text and are copied straight into the output.
Assuming the current system date is March 1st, 1997.
/: SET DATE MASK = 'Foster City, MM/DD/YY'
&DATE& -> Foster City, 03/01/97
/: SET DATE MASK = 'MMMM DD, YYYY'
&DATE& -> March 01, 1997
The date mask may be reset to the default setting by using an empty string:
/: SET DATE MASK = ' '
The abbreviated and full forms of the names of the days and months are stored in the language dependent TTDTG table under the following keys:
%%SAPSCRIPT_DDD_dd: abbreviated day name
%%SAPSCRIPT_DDDD_dd: full form of day name
%%SAPSCRIPT_MMM_mm: abbreviated month name
%%SAPSCRIPT_MMMM_mm: full form of month name
dd: day number 01 = Monday,..., 07 = Sunday
mm: month number 01 = January,..., 12 = December
Regards -
Purchase order smart form - Version number and link to RFQ
Hi I am making enhancements to the purchase order smartform and wanted to print the version number (ekko-revno) on the print layout.
The structure for ekko which is being filled in at runtime from print program ZMMS_640FM06P has the field 'revno' blank. It is filling in the rest all fields. When I go into the ekko table I can see a value in this field. Does anyone know why this field is NOT being filled. I do not want to do a select on this field again in my smart form.
I would also like to know if there is a any way you can track back the RFQ number for a particular PO.
Thanks in advance..I hope It wil be there in table, check the entry & check teh work area entry.
Quotation will be available in PO item data. Keep a break point in Table and workarea.
Tx
Parthi
If helpful, reward points. -
Convertion of Smart form to pdf and sending mail to vendor for PO
Hello all,
I have modified a standard PO Smartform and running it through ME23N.
In this i have to convert it to a pdf file and then send it through mail to the vendor.
I have found out FMs'CONVERT_OTF'and
'SO_NEW_DOCUMENT_ATT_SEND_API1'
to convert it and send mail. But can u tell me how to go about using it.
As i am using a standard program do i have to copy this prog to zprog and then call the fm out there. I am not sure.
Thanks
SalilHi,
Here is the sample code.If you find this as useful,kindly reward points by clicking the star on the left of reply.
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,
Work Area declarations
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'
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 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.
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-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-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. -
SMART FORMS- data from internal table issue
Hi ,
I have a smart form in which I have to print three types of materials of Material Types say M1, M2 ,M3.
In the SMART FORM,Main Window, I have created 3 TABLES for 3 types of Materials ie,
TableM1,
TableM2,
TableM3.
The internal tables to populate these TABLES are
( passing from Print program ).
t_M1,
t_M2,
t_M3
The Number of FIELDS vary in all the tables ,thats why I have created 3 internal tables for Diff Material Types.
But only first TABLE is getting printed ie data inside TableM2, TableM3 are not getting printed.
Can any SMARTFORM Gurus please let me know how I can solve this issue.
Regards
AviHi,
Check whether you are mentioning any condition on the data. There are different possibilites of not getting printed. Like the way your displaying, data is in table.
Can you please clearly mention how did you populated the internal table and kept the logic to print the values in the table. So that it problem would be more clearly nown.
Br,
Laxmi -
BeforeReportTrigger , Data Template and Parameters
Hi
I'm new to XML publisher. Things has been going quite smoothly until I started to introduce BeforeReportTriggers and Parameters in my Data Template.
When I go to view the report, I get
"The report cannot be rendered because of an error, please contact the administrator"
Unfortunately, I don't know if there is any log file for further information. I know the package works when I was debugging it.
Please help.
Below is my XML Data Template, the package header and body
XML data template
<dataTemplate name="SCH_A_dt1" description="schedule A database template1" defaultPackage="sch_a_dt1" dataSourceRef="nbdot_zsvm1">
<parameters>
<parameter name="p_COUNTY" dataType="character" defaultValue="GLOUCESTER"/>
</parameters>
<dataQuery>
<sqlStatement name="Q1">
<!-- insert sql statement here-->
<![CDATA[select COUNTY, NETWORK_COMP,SECT_ID,CS_REF,RD_LOC,TYPE_MEANING,TOTAL_KM from sch_A_byCounty_det
where &P_WHERE_CLAUSE]]>
</sqlStatement>
</dataQuery>
<!-- BEFOREREPORT TRIGGER -->
<dataTrigger name="beforeReportTrigger" source="sch_a_dt1.BEFOREREPORTTRIGGER(p_COUNTY)"/>
<!-- DataStructure -->
<dataStructure>
<group name="G_COUNTY" source="Q1">
<element name="COUNTY_NAME" value="COUNTY"/>
<group name="G_NETWORK" source="Q1">
<element name="NETWORK" value="NETWORK_COMP"/>
<element name="SECT_ID" value="SECT_ID"/>
<element name="ROAD_LOCATION" value="RD_LOC"/>
<element name="TYPE_MEANING" value="TYPE_MEANING"/>
<element name="LENGTH" value="TOTAL_KM"/>
</group>
</group>
</dataStructure>
</dataTemplate>
Package header
create or replace package sch_a_dt1
as
p_county varchar2(50);
P_WHERE_CLAUSE VARCHAR2(100);
procedure beforereportTrigger(p_county varchar2);
end;
Package body
CREATE or replace PACKAGE BODY sch_a_dt1
as
procedure beforereportTrigger (p_county varchar2) is
begin
if (p_county) is null then
p_where_clause := '1=1';
elsif (p_county = '*') then
p_where_clause := '1=1';
else
p_where_clause := 'COUNTY in (' ||p_county||')';
end if;
end;
end;
Thanks ZubranThanks Daniel..
You were right! The weird thing is that the XML user guide used a procedure as an example.
Anyway. I wonder if you assist me further. Although I don't get an error, when I try to query on a paramter, I get no data return {ie. only the parameter is shown in result}. However, when I pass in '*' or null as per my function then this return the entire database.
Please can you have a quick at the function and xml data template again.
XML Data Template
<dataTemplate name="SCH_A_dt1" description="schedule A database template1" defaultPackage="sch_a_dt1" dataSourceRef="nbdot_zsvm1">
<parameters>
<parameter name="p_COUNTY" dataType="character" defaultValue="GLOUCESTER"/>
</parameters>
<dataQuery>
<sqlStatement name="Q1">
<!-- insert sql statement here-->
<![CDATA[select COUNTY, NETWORK_COMP,SECT_ID,CS_REF,RD_LOC,TYPE_MEANING,TOTAL_KM from sch_A_byCounty_det
where &P_WHERE_CLAUSE]]>
</sqlStatement>
</dataQuery>
<!-- BEFOREREPORT TRIGGER -->
<dataTrigger name="beforeReportTrigger" source="sch_a_dt1.beforerep(:p_COUNTY)"/>
<!-- DataStructure -->
<dataStructure>
<group name="G_COUNTY" source="Q1">
<element name="COUNTY_NAME" value="COUNTY"/>
<group name="G_NETWORK" source="Q1">
<element name="NETWORK" value="NETWORK_COMP"/>
<element name="SECT_ID" value="SECT_ID"/>
<element name="ROAD_LOCATION" value="RD_LOC"/>
<element name="TYPE_MEANING" value="TYPE_MEANING"/>
<element name="LENGTH" value="TOTAL_KM"/>
</group>
</group>
</dataStructure>
</dataTemplate>
Procedure body
CREATE or replace PACKAGE BODY sch_a_dt1
as
function beforerep (p_county in varchar2) return boolean is
begin
if (p_county) is null then
p_where_clause := '1=1';
return true;
elsif (p_county = '*') then
p_where_clause := '1=1';
return true;
else
p_where_clause := 'COUNTY in (' ||p_county||')';
return true;
end if;
exception
when others then
return false;
end ;
end ;
Header
create or replace package sch_a_dt1
as
p_county varchar2(50);
P_WHERE_CLAUSE VARCHAR2(100);
function beforerep (p_county in varchar2) return boolean;
end;
/ -
Deleting data elements and domains
hi guys,
how do i delete data elements that i had previously created in ztables (they are zelements and zdomains)permanently. thanks in advance.from the same place where u created them ie go to
SE11> Use menu option Dictionary Object> Delete
or
SE80 > Use menu option Workbench>Edit Object>Click the tab Dictionary>use the Delete icon
Regards,
Suresh Datti -
How to find Where does Data Elements and structures are used ?
Hi everyone .
Is there any table which stores data elements/structures and where they are used ?
If not is there any way to find by writing some <b>program</b> where does a data element or a structure is used ? Which tables will require for that ? If any one can give example it will be most helpful .
Thanks and Regards,
Kaushal N. ShahHi Kaushal,
DD04L stores the data elements.
DD02L stores the structures.
So you can query these tables & find them.
Regards,
Chetan.
PS:Reward points if this helps. -
Reporting Services: XML Data Source and Parameters
I’ve created an XML service (asmx) in ASP.Net that I want to use as a data source for an SQL Reporting Services report. The report and service work just fine if I use a Method from the service that does not have parameters. However, if I use a Method that
needs a parameter, the query/report fails. My investigation makes it seem that the parameter is not getting passed to the Method at all. (The parameter is a DateTime and it always ends up uninitialized and the WebMethod throws an exception.)
I’ve exhausted all my TechNet resources and Googled this excessively. It would seem that I am doing this correctly, based on all the examples I’ve seen, but I still can’t get it to work.
I've done a lot of different permutations, but this is where I’m at right now.
(Note: I've changed the Web Method's parameter to be a String instead of a DateTime. I did this as part of my trial-and-error process. Once I get this figured I'll return it to a DateTime.)
I'm trying to include everything here that will help you help me (see attached image). I had to obfuscate a few things (not sure if that is necessary).
See attached image:
Created Shared Data Source in SQL Report Services
Create Report Parameter (matching Web Method parameter)
Created a data set in Report Builder (with Query, and parameter - matching Web Method parameter)
Query in Data Source
<Query>
<Method Name="GetDueDateAging" Namespace="http://zzz.com/vvv">
<Parameters>
<Parameter Name="cutoffDate">
<DefaultValue></DefaultValue>
</Parameter>
</Parameters>
</Method>
<SoapAction>http://zzz.com/vvv/GetDueDateAging</SoapAction>
<ElementPath IgnoreNamespaces="true">*</ElementPath>
</Query>
This is where I needed the most help, and I don't totally understand it. But again, the parameter-less Method worked. I've tried adding different things in the <DefaultValue> tag (like @cuttoffDate and constant values), with no success.
WebMethod Code
[WebMethod]
public List<AgingInvoice> GetDueDateAging(string cutoffDate)
DateTime cd = DateTime.MinValue;
if (!DateTime.TryParse(cutoffDate, out cd))
cd = DateTime.Now;
Shared.DueDateAging aging = new Shared.DueDateAging();
return aging.GetDueDateAging(cd, Settings.Default.ConnectionString);
I've looked at every online resource that I could find, but I'm striking out right now. Any help or hints would be greatly appreciated.
Thanks.
DerrickHi Derrick,
In your case, please refer to the following method to troubleshooting this problem:
We can use Fiddler2 to monitor the HTTP post, and check whether the parameter is being sent. The Fiddler tool can helps us debug web applications by capturing network traffic between the Internet and test computers. If the parameter is being sent, please
debug the web service to ensure the method has values return.
Regards,
Alisa Tang
Alisa Tang
TechNet Community Support -
Hey,
I've started learning xml publisher and I've a litle problem/question. I want do something like that:
Data template:
<dataQuery>
<sqlStatement name="Q1">
<![CDATA[
SELECT
col1,col2
FROM
table
WHERE
col1= :ColumnNo
]]>
</sqlStatement>
</dataQuery>
<parameters>
<parameter id="ColumnNo" dataType="String" defaultValue="something"/>
</parameters>
SQL query in "sqlStatement" don't see parameter "ColumnNo".
It is possibility to solve this problem?Igby,
it's not <parameter id="ColumnNo" ...., it's <parameter name="ColumnNo"...
And move the parameter-definition above the dataquery.
Hope that helps
Rainer -
Convertion of Smart form to pdf and sending mail to vendor for Invoice
Hi All...
now I am getting the output form of Invoice by the T-code VF02
here Im using Zreport & Zform...
my requirment is to convert smartform output to PDF and send as an e-mail attachment on my Existing report
where I use the FM - CONVERT_OTF_2_PDF ..
here my code
REPORT yinvoice_is.
TABLES: vbrk,vbrp, vbak, vbap, vbkd .
DATA : it_vbap TYPE STANDARD TABLE OF vbap WITH HEADER LINE ,
it_vbrk LIKE STANDARD TABLE OF vbrk with header line,
it_vbkd TYPE STANDARD TABLE OF vbkd WITH HEADER LINE ,
it_vbrp TYPE STANDARD TABLE OF vbrp WITH HEADER LINE ,
it_vbrp1 TYPE STANDARD TABLE OF vbrp WITH HEADER LINE ,
it_vbfa TYPE STANDARD TABLE OF vbfa WITH HEADER LINE ,
it_adrc1 TYPE STANDARD TABLE OF adrc WITH HEADER LINE,
it_adrc2 TYPE STANDARD TABLE OF adrc WITH HEADER LINE.
DATA: sum TYPE vbrp-kzwi5.
DATA: v_vkbur TYPE vkbur,
v_adrnr1 TYPE adrnr,
v_adrnr2 TYPE adrnr,
v_vbelv TYPE vbelv,
v_delch TYPE vbeln,
v_bstkd TYPE bstkd,
v_kdmat TYPE kdmat,
v_kwert TYPE kwert.
DATA : fm_name TYPE rs38l_fnam.
PARAMETER p_inv_no LIKE vbrk-vbeln OBLIGATORY .
Selecting Data
SELECT VBELN
ERDAT
VKORG
KUNRG
STCEG
NETWR
MWSBK
KNUMV
KUNAG
REGIO
FROM vbrk
INTO CORRESPONDING FIELDS OF TABLE it_vbrk
WHERE vbeln = p_inv_no .
SELECT matnr
kzwi1
kzwi2
kzwi3
kzwi4
kzwi5
netwr
mwsbp
meins
fklmg
arktx
FROM vbrp
INTO CORRESPONDING FIELDS OF TABLE it_vbrp
WHERE vbeln = p_inv_no .
Selecting Sales Order No.
SELECT SINGLE vbelv
FROM vbfa
INTO v_vbelv
WHERE vbeln = p_inv_no
AND vbtyp_v = 'C'.
IF sy-subrc = 0.
Selecting Delivery Challan...
SELECT SINGLE vbeln
FROM vbfa
INTO v_delch
WHERE vbelv = v_vbelv
AND vbtyp_n = 'J'.
SELECT SINGLE bstkd
FROM vbkd
INTO v_bstkd
WHERE vbeln = v_vbelv .
SELECT matnr kdmat
FROM vbap
INTO CORRESPONDING FIELDS OF TABLE it_vbap
WHERE vbeln = v_vbelv.
ENDIF.
READ TABLE it_vbrk INDEX 1.
IF sy-subrc = 0.
SELECT SINGLE kwert
FROM konv
INTO v_kwert
WHERE knumv = iT_vbrk-knumv
AND kschl = 'HD00'.
ENDIF.
Selecting From Address
SELECT SINGLE vkbur
FROM vbak
INTO v_vkbur
WHERE vbeln = v_vbelv.
IF sy-subrc = 0.
SELECT SINGLE adrnr
FROM tvbur
INTO v_adrnr1
WHERE vkbur = v_vkbur.
IF sy-subrc = 0.
SELECT SINGLE *
FROM adrc
INTO CORRESPONDING FIELDS OF it_adrc1
WHERE addrnumber = v_adrnr1.
APPEND it_adrc1.
ENDIF.
ENDIF.
APPEND it_adrc.
Selecting TO Address
SELECT SINGLE adrnr
FROM vbpa
INTO v_adrnr2
WHERE vbeln = p_inv_no
AND parvw = 'RE'.
IF sy-subrc = 0.
SELECT SINGLE *
FROM adrc
INTO CORRESPONDING FIELDS OF it_adrc2
WHERE addrnumber = v_adrnr2.
APPEND it_adrc2.
ENDIF.
Calling Function Module
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'YINVOICE_IS'
VARIANT = ' '
DIRECT_CALL = ' '
IMPORTING
fm_name = fm_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.
Calling Function Module
CALL FUNCTION fm_name
*'/1BCDWB/SF00000496'
EXPORTING
ARCHIVE_INDEX =
ARCHIVE_INDEX_TAB =
ARCHIVE_PARAMETERS =
CONTROL_PARAMETERS =
MAIL_APPL_OBJ =
MAIL_RECIPIENT =
MAIL_SENDER =
OUTPUT_OPTIONS =
USER_SETTINGS = 'X'
i_vbelv = v_vbelv
i_bstkd = v_bstkd
i_kdmat = v_kdmat
i_kwert = v_kwert
i_delch = v_delch
IMPORTING
DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO =
JOB_OUTPUT_OPTIONS =
TABLES
it_vbrk = it_vbrk
it_vbrp = it_vbrp
it_vbap = it_vbap
it_adrc1 = it_adrc1
it_adrc2 = it_adrc2
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.
ENDFORM. "ENTRYhi,
use this code..
DATA: i_otf TYPE itcoo OCCURS 0 WITH HEADER LINE,
i_tline TYPE TABLE OF tline 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,
Variables declarations
v_len_in LIKE sood-objlen, "#EC NEEDED
v_lines_txt TYPE i,
v_lines_bin TYPE i,
Work Area declarations
w_ctrlop TYPE ssfctrlop,
w_return TYPE ssfcrescl,
w_compop TYPE ssfcompop,
wa_objhead TYPE soli_tab,
wa_doc_chng TYPE sodocchgi1,
wa_buffer TYPE string. "To convert from 132 to 255
Put a IF ELSE condition whether u want form output or E-mail output..
if it is a E-mail.. then call a small Sub-routine within your program..
FORM f_email .
w_ctrlop-getotf = 'X'.
w_ctrlop-no_dialog = 'X'.
w_compop-tdnoprev = 'X'.
CALL FUNCTION fnam
EXPORTING
control_parameters = w_ctrlop
output_options = w_compop
nast = nast
v_tcode = v_tcode
IMPORTING
job_output_info = w_return
TABLES
it_vbdkr = it_tvbdkr[]
it_vbdpr = tvbdpr[]
it_zglentitycode = it_zglentitycode[]
it_vttk = it_vttk[]
it_kna1 = it_kna1[]
it_t005 = it_t005[]
it_adrc = it_adrc[]
it_ekpo = it_ekpo[]
it_ekko = it_ekko[]
it_vbrp = it_vbrp[]
it_mara = it_mara[]
it_vbrk = it_vbrk[]
it_likp = it_likp[]
it_vttp = it_vttp[]
it_t001 = it_t001[]
it_zlogdely = it_zlogdely[]
it_prod = it_prod[]
it_lineitems = it_lineitems[]
it_tvzbt = it_tvzbt[]
it_t173t = it_t173t[]
it_t005t = it_t005t[]
it_zplant = it_zplant[]
it_stxbitmaps = it_stxbitmaps[]
it_prod_desc = it_prod_desc[].
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[].
*Converting the OFT format data to PDf format
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format = 'PDF'
max_linewidth = 132
IMPORTING
bin_filesize = v_len_in
TABLES
otf = i_otf
lines = i_tline.
LOOP AT i_tline.
TRANSLATE i_tline USING '~'.
CONCATENATE wa_buffer i_tline INTO wa_buffer.
ENDLOOP.
TRANSLATE wa_buffer USING '~'.
DO.
i_record = wa_buffer.
APPEND i_record.
SHIFT wa_buffer LEFT BY 255 PLACES.
IF wa_buffer IS INITIAL.
EXIT.
ENDIF.
ENDDO.
Attachment
REFRESH:
i_reclist,
i_objtxt,
i_objbin,
i_objpack.
CLEAR wa_objhead.
i_objbin[] = i_record[].
Create Message Body
Title and Description
i_objtxt = 'COMMERCIAL INVOICE'.
APPEND i_objtxt.
DESCRIBE TABLE i_objtxt LINES v_lines_txt.
READ TABLE i_objtxt INDEX v_lines_txt.
wa_doc_chng-obj_name = 'COMMERCIAL INVOICE'.
wa_doc_chng-expiry_dat = sy-datum + 10.
wa_doc_chng-obj_descr = 'COMMERCIAL INVOICE'.
wa_doc_chng-sensitivty = 'F'.
wa_doc_chng-doc_size = v_lines_txt * 255.
CLEAR i_objpack-transf_bin.
i_objpack-head_start = 1.
i_objpack-head_num = 0.
i_objpack-body_start = 1.
i_objpack-body_num = v_lines_txt.
i_objpack-doc_type = 'RAW'.
APPEND i_objpack.
Attachment
(pdf-Attachment)
i_objpack-transf_bin = 'X'.
i_objpack-head_start = 1.
i_objpack-head_num = 0.
i_objpack-body_start = 1.
DESCRIBE TABLE i_objbin LINES v_lines_bin.
READ TABLE i_objbin INDEX v_lines_bin.
i_objpack-doc_size = v_lines_bin * 255 .
i_objpack-body_num = v_lines_bin.
i_objpack-doc_type = 'PDF'.
i_objpack-obj_name = 'COMMERCIAL INVOICE'.
i_objpack-obj_descr = 'COMMERCIAL INVOICE'.
APPEND i_objpack.
IF it_adr6[] IS NOT INITIAL.
LOOP AT it_adr6 INTO wa_adr6.
CLEAR i_reclist.
i_reclist-receiver = wa_adr6-smtp_addr.
i_reclist-rec_type = 'U'.
i_reclist-com_type = 'INT'.
APPEND i_reclist.
ENDLOOP.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = wa_doc_chng
put_in_outbox = 'X'
TABLES
packing_list = i_objpack
object_header = wa_objhead
contents_bin = i_objbin
contents_txt = i_objtxt
receivers = i_reclist.
ENDIF.
ENDFORM. " f_email
regards
vijay
Maybe you are looking for
-
Keeps asking for password when deleting file ?
I updated to Mac OS Lion and now every time I delete any file it asks me for my password. Any file - be it on the Desktop, in the Downloads folder or in any other place. It asks me for my password every time. That behaviour is annoying. Is it the new
-
Old connections not showing on Discoverer Connections page after a REFRESH
Hello all, I am having a weird issue with Discoverer connections after a recent refresh of our DEV AS environment from TST. Before I proceed further, let me give you some details on our environments. We have recently upgraded our version 9.0.4.1 AS D
-
what are the steps to add image on sap script dynamically?
-
GRN of NLAG materials without reference
Dear Gurus, I have a scenario in which i have a NLAG material, and i want to do GR of this non-stock item without any order reference. i am doing it with 511 mvt type but system asks to enter SLOC since it is a non-stock item. my client only wants to
-
TACACS+ timeout value ignored
I'm running ACS 3.3. I have a bunch of Catalyst 3550 and 3560 switches, some running IOS 12.1(19)EA1c and others running IOS 12.2(20)SE1. All are configured for TACACS+ as follows: aaa new-model aaa authentication login default group tacacs+ line aaa