Add Text Lines SBO 2005
Hi there, for a while I guess tha I have found my answer in a similar post, however this refers to SBO 2007, and I need to make this on SBO 2005, anyway ...
I need to add text lines in a purchase order via DI, but I can't find how to make it
Any ideas?
Thanks in advance and best regards
Aristoteles
Wow, bad news for me Eddy anyway I appreciate really your quick answer.
But, do you guess that is there another way to solve this without SpecialLines?
Thanks again
Aristoteles
Edited by: Aristóteles Quintanar Ramos on Jan 30, 2008 2:04 PM
Similar Messages
-
Hi people.
I'm trying to add text lines in a quotation via DI with 2007 SDK but my code doesn't work!
This is:
oOferta.SpecialLines.Add()
If mNumSpLinea > 0 Then
oOferta.SpecialLines.SetCurrentLine(mNumSpLinea)
End If
oOferta.SpecialLines.LineType = SAPbobsCOM.BoDocSpecialLineType.dslt_Text
oOferta.SpecialLines.LineText = xHoja.Range(mCelDes).Value.ToString.Trim
oOferta.SpecialLines.AfterLineNumber = mNumLinea + mNumSpLinea
mNumSpLinea = mNumSpLinea + 1
nNumSpLinea is a text lines counter because with general lines counter (from quotation) doesn't work.
AfterLineNumber doesn't affect. Doesn't work with or without this
I change this code trying to work but I lost!
Any ideas???
Thanks in advance
Juli P.Hi,
I have tested SpecialLines adding in a Quotation and it works fine. I'm testing with PL11.
You have to pay attention and for each SpecialLine to be added you need first to call
Qut.SpecialLines.Add()
If you don't add first the SpecialLine then it will give you errors or ignore the added lines.
Please check the SDK Help File, the following sample is there:
Sub AddSpecialLine()
'Adding special line
'Assume Qut is an existing Quotation Document Object
Qut.SpecialLines.Add()
'Setting the type of special line to be sub total
Qut.SpecialLines.LineType = SAPbobsCOM.BoDocSpecialLineType.dslt_Subtotal
'Setting the after line number
'A number that says after which line the special line will appear
Qut.SpecialLines.AfterLineNumber = 2
'Check for errors
lRetCode = Qut.Update()
If lRetCode <> 0 Then
oCompany.GetLastError(lErrCode, sErrMsg)
MsgBox(lErrCode & " " & sErrMsg) ' Display error message
Else
MsgBox("Special Lines Added")
End If
End Sub
Hope it helps
Trinidad. -
Can i Use Crystal Report Add-on in SBO 2005 B PL 25
Hi all,
I am using SBO 2005 B PL 25, I like to use Crystal Report Add-on with this version and PL.
Can I use It ? From Where I have to download the Add - on ? How to Install ?
Can anybody guide me on this issue ?
With Best Regards,
Chintesh SoniHI ,
Please go through the link.
http://72.14.235.132/search?q=cache:sZ8kQ1GEamMJ:https://www.sdn.sap.com/irj/scn/downloads%3frid%3d/library/uuid/d0a0c14b-0e20-2b10-939b-e93a19f14c12CRYSTALREPORTSINTEGRATIONFORSAPBUSINESS+ONE&hl=en&ct=clnk&cd=1&gl=in
Rgds,
Premraj -
Compile Add-On for SBO 2005 and 2007
Hi All,
I am looking for a document that I downloaded a while ago on steps how to compile add-ons for SBO version 2005 and 2007 on the same machine. I don't want to run both versions (I can be running either) just want to be able to compile add-ons on both version 2005 and version 2007 on my local machine. I also don't want to use virtual machine or something like that.
Thanks for the help,
AdeleHi Adele,
usually it is enough to change the .dll reference in your code and recompile it.
you can also decide which diapi connection you use
when creating the company object
//The object OComp is defined as company object of the selected version
Dim OComp As SAPbobsCOM.Company
Set OComp = New SAPbobsCOM.Company
or
//The object OComp is defined as company object of version 2005
Dim OComp As SAPbobsCOM.Company
Set OComp = CreateObject("SAPbobsCOM.Company.6.8")
// for 2007 it should be
Dim OComp As SAPbobsCOM.Company
Set OComp = CreateObject("SAPbobsCOM.Company.8") -
Text Lines to print on Marketing Documents
How do I get line Types of Text to print on the documents? 2005A, SP1
Hi Kathy,
The exact instructions for this are in SAP Note 918132 on how to add Text lines to your PLD layout. It details 2004 instructions and then 2005 (its easier in 2005). If you do not have access to the note then I can paste it to you in a reply?
Regards,
Adrian -
How to create a subtotal or text line in a service sales order ?
Hi ,
is there a way to add text line in sales order for service ? when we switch from item sales order to service sales order , the "type" column disappear , and we can not create line other than service line . we use B12007A SP01 PL07
i've not seen this limitation in the B1 help . is it a setup problem ? or is it impossible to add those lines to service sales order ?
thanks for help
regardsHi,
This is not setup problem this is limitation you cannot add line as text or subtotal using type option in service order like item type order. If you want to add text for your service line you can do this through linewise udf.
Thanks
Sachin -
Sales order Text Line (Type)
Hi,
How do I add Text Line by selecting the field "Type" in Form Settings in my DI Add-On?
Here is the code for adding a regulare Sales Order line:
CODE
oDocument_SalesOrder.Lines.FreeText = "This is not the Text I want to have...It is a Drop Down List and you can select Regular, text, sun-total in Type Column";
oDocument_SalesOrder.Lines.Add();
Thank you,
RuneRune,
You need to use the Document_SpecialLines Object which is new to SAP Business One 2007A. You can find more detail on this in the 2007A SDK Help Center documentation as well as sample code with the SDK at ...
..\Program Files\SAP\SAP Business One SDK\Samples\COM DI\CSharp\19.SpecialLines
Eddy -
When I copy and paste text in facebook, the text looks fine until I hit 'share' or 'comment' to submit it. Firefox then adds indiscriminate line-feeds within the text and it looks nothing like the original text. It makes it very difficult to read and awful to look at.
This does not happen in Safari.
(Mac OSX 10.6.4 with Firefox 3.6.6).
== URL of affected sites ==
http://Same problem, 3.6.8 and previous recent versions. I never thought to try another browser but I just pasted into IE and it worked fine. I copied from Firefox to IE and it worked as well. It's just when you paste into Firefox that you get the weird line breaks.
-
How to add a line between the two text fields in JTabbed Pane
Hi Friends,
I would like to add a Line between some text fields to seperate them.. I added those text Fields to a tabbed Pane.. Please help me to create a line between the TextFields......http://java.sun.com/docs/books/tutorial/uiswing/components/separator.html
-
HT202879 how do i add a line to the top and bottom of a text box only
i have a text box in my Pages document but i need to be able to add a line tot he top and bottom only to my text box. can i pleae get some help.
Hello alegna23,
To add a line just to the top and bottom of a text box, you will need to add the two lines as shapes. Follow the steps below to add a line to your document:
Add a shape
Click Shape in the toolbar.Click the arrows to see more shape styles.
Select a shape to add it to the page.
In step 2, select a line and use the squares on the end of the line to help resize the line. You can find the full article here:
Pages Help for Mac - Add and edit shapes
http://help.apple.com/pages/mac/5.0/#/tan9ad18c384
Thank you for using Apple Support Communities.
Best,
Sheila M. -
Add/Remove Text Lines FCPX
In FCPX, with the title design called "Winner's Circle" it is set at default to have 5 text lines. I only need 2 text lines for this title. The amount of text lines determines how many times "winner's circle" repeats the animation. It is repeating it's animation 3 times where there is no text content needed. How do I add or Remove a text line? Is this feature possible?
I've attempted cutting and shortening the clip where I want it to stop animating; it'll persist for another 3 times no matter what the duration is.
Option F will not allow me to make a freeze frame of the motion title graphic called "Winner's Circle". Is there another way to make a freeze frame other than taking a screen shot? With this option, I would be able to add another video layer with the freeze frame of "winner's circle" above this same clip while the animation would repeat 3 more times unnecessarily--in order to disguise it...
I've attempted to troubleshoot with keyframes... I need "winner's circle" to cross dissolve with another clip, not gradually fade to black.
Thanks!I'm the one that's sorry! You are a brave soul. Most come here too timid to try most things out - you're already slogging around in the guts of a fairly sophisticated template (difficulty points due to 3D orientation and behavior animation of material.) I guestimated your abilities based on such.
My modified suggestions:
1) you will not need to clone anything [save cloning for another day ]
2) Find the Text Layers Group
3) Delete the 2nd through 5th "INFORMATION" text layers (in order of appearance - top to bottom)
4) Delete the 2nd through 5th Ramp behaviors (at the top of the "folder" -- in order of appearance... etc.)
You should be left with one "INFORMATION" and when played, the wheel should spin and stop with the text in the correct location.
Select the Text "Information" layer and under the canvas in the timeline, click and drag the right edge out all the way to the right. This will keep the text "on" the rest of the length of the template.
Play again and make sure the "Information" stays on screen for the entire length of the template.
Click on the time clock icon under the canvas so that the clock hands read quarter past 12 then double click on the time and type "5." (number 5 plus a period) + enter (set the length of the template to 5 seconds.)
With the Information text layer still selected, Command - D (duplicate the layer - you should now have an INFORMATION copy layer.) [both of these text layers will be independently editable in FCPX (that includes Fonts and size, etc...)
For the duplicate layer:
In the inspector > Properties, try these coordinates to start:
X: 486
Y: -1195
Z: 23
Rotation:
X: 0
Y: 0
Z: 78
Scale:
X: 95
Y: 170
Z: 85
Shear:
X: -24
Y: -9
[You can play with any of these settings to get the "look" you prefer -- I was just trying to "match" the design somewhat -- and it's a bit of a guess...]
Go to the Text > Format inspector. At the bottom of the column to the right of the word "Text" - when you pass the mouse over the region, a disclosure triangle will appear -- click it and select Publish from the dropdown.
To publish colorizing elements:
Select the Gradient > Gradient layer (bottom of the list -- if it looks like two blue squares, open up that group and select the "generator" icon (ultra miniature monitor looking thing with a test pattern). In the Generator inspector > Gradient, right click on the word Gradient (just over the color bar) and select publish from the dropdown.
Right OVER the gradient folder, the bottom item of the Text Layers folder, select "Rectangle" (just under Replicator.) In the Inspector: Shape > Style > Fill section, click on the word gradient just over the color bar (again) and select publish.
One more thing:
Drag the playhead to the 2 second mark under the canvas. Click anywhere in the layer's list that's NOT on any item (that is - deselect any and all items in that list.) Type the tilde key (or accent grave key, however you look at it) -- that will add a marker. Immediately type Command-Option M , which calls up the Edit Marker dialog. In the Type section, select Build In Mandatory... then OK.
Save the project.
You now have a 1 Score (Winner/Loser/Tie) winner's circle template. Use a new instance for each score in the storyline. You can trim the template or drag it out in time in FCPX -- the animation at the beginning will always play with exactly the same speed.
PS - an oddity is occuring with my copy: the lower Information text is ending up under the upper text (like a drop shadow) and repositioning in Motion makes no difference -- if that happens to yours, just double click on the "under" text and "slide it out" to where it belongs (in FCPX).
Anyway, it should look a little like this (at around the 2 second mark):
For completeness: if you need "subtitle" lines, these can be accomplished in FCPX. Type a return at the end of the title and continue with a second line. Select only the second line in the text box (text tab of the inspector) and resize the font (restyle it any way you like actually...) You shouldn't need to add extra lines to what you already have (in the Motion template). Also, if you need to get rid of one or the other -- select the text of it, and type in a space character (why a space? So you have something to double click on in the canvas if you need to find it again.)
HTH -
I need to find all XML elements and add a line break to the text of each of them
I need to find all XML elements and add a line break to the text of each of them.
Is this possible with a script?I need to go from this ...
to this...
but looking for the XML elements (not paragraphs) and then adding text ...
Thanks for your attention !!! -
I have problem to register add-ons to SBO 2004
-. I am using sample HELLO WORLD providing for SDK 2004.
-. I build the installer using packager default of Visual Basic 6.0.
-. i builf file .ard
-. when i register the add-on and restart SBO 2004, the system show the message error:
"Command Line arguments..."
Someone, have a procedure step by step to register add-ons to SBO?
thanksYou need to declare this functions from the SBOAddonReg.dll.
I got this code from SAP, hope this works, it's VB .NET
Also: To use the license key I go to Project/Project properties/Configuration properties/Command line arguments
and I copy the license to this field, and it works.
Did you try from command line something like this?
c:\project.exe license_key
2) Code for a useful application
contact me, if you don't understand the example:
[email protected]
Option Strict Off
Option Explicit On
Friend Class Form1
Inherits System.Windows.Forms.Form
#Region "Windows Form Designer generated code "
Public Sub New()
MyBase.New()
If m_vb6FormDefInstance Is Nothing Then
If m_InitializingDefInstance Then
m_vb6FormDefInstance = Me
Else
Try
'For the start-up form, the first instance created is the default instance.
If System.Reflection.Assembly.GetExecutingAssembly.EntryPoint.DeclaringType Is Me.GetType Then
m_vb6FormDefInstance = Me
End If
Catch
End Try
End If
End If
'This call is required by the Windows Form Designer.
InitializeComponent()
End Sub
'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal Disposing As Boolean)
If Disposing Then
If Not components Is Nothing Then
components.Dispose()
End If
End If
MyBase.Dispose(Disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
Public ToolTip1 As System.Windows.Forms.ToolTip
Public WithEvents CmdUnReg As System.Windows.Forms.Button
Public WithEvents CmdReg As System.Windows.Forms.Button
Public WithEvents CmdExit As System.Windows.Forms.Button
Public WithEvents CmdAddOnStr As System.Windows.Forms.Button
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container
Me.ToolTip1 = New System.Windows.Forms.ToolTip(Me.components)
Me.CmdUnReg = New System.Windows.Forms.Button
Me.CmdReg = New System.Windows.Forms.Button
Me.CmdExit = New System.Windows.Forms.Button
Me.CmdAddOnStr = New System.Windows.Forms.Button
Me.SuspendLayout()
'CmdUnReg
Me.CmdUnReg.BackColor = System.Drawing.SystemColors.Control
Me.CmdUnReg.Cursor = System.Windows.Forms.Cursors.Default
Me.CmdUnReg.Font = New System.Drawing.Font("Arial", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.CmdUnReg.ForeColor = System.Drawing.SystemColors.ControlText
Me.CmdUnReg.Location = New System.Drawing.Point(24, 112)
Me.CmdUnReg.Name = "CmdUnReg"
Me.CmdUnReg.RightToLeft = System.Windows.Forms.RightToLeft.No
Me.CmdUnReg.Size = New System.Drawing.Size(153, 25)
Me.CmdUnReg.TabIndex = 3
Me.CmdUnReg.Text = "UnRegister"
'CmdReg
Me.CmdReg.BackColor = System.Drawing.SystemColors.Control
Me.CmdReg.Cursor = System.Windows.Forms.Cursors.Default
Me.CmdReg.Font = New System.Drawing.Font("Arial", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.CmdReg.ForeColor = System.Drawing.SystemColors.ControlText
Me.CmdReg.Location = New System.Drawing.Point(24, 64)
Me.CmdReg.Name = "CmdReg"
Me.CmdReg.RightToLeft = System.Windows.Forms.RightToLeft.No
Me.CmdReg.Size = New System.Drawing.Size(153, 25)
Me.CmdReg.TabIndex = 2
Me.CmdReg.Text = "Register"
'CmdExit
Me.CmdExit.BackColor = System.Drawing.SystemColors.Control
Me.CmdExit.Cursor = System.Windows.Forms.Cursors.Default
Me.CmdExit.Font = New System.Drawing.Font("Arial", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.CmdExit.ForeColor = System.Drawing.SystemColors.ControlText
Me.CmdExit.Location = New System.Drawing.Point(24, 160)
Me.CmdExit.Name = "CmdExit"
Me.CmdExit.RightToLeft = System.Windows.Forms.RightToLeft.No
Me.CmdExit.Size = New System.Drawing.Size(153, 25)
Me.CmdExit.TabIndex = 1
Me.CmdExit.Text = "Exit"
'CmdAddOnStr
Me.CmdAddOnStr.BackColor = System.Drawing.SystemColors.Control
Me.CmdAddOnStr.Cursor = System.Windows.Forms.Cursors.Default
Me.CmdAddOnStr.Font = New System.Drawing.Font("Arial", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.CmdAddOnStr.ForeColor = System.Drawing.SystemColors.ControlText
Me.CmdAddOnStr.Location = New System.Drawing.Point(24, 16)
Me.CmdAddOnStr.Name = "CmdAddOnStr"
Me.CmdAddOnStr.RightToLeft = System.Windows.Forms.RightToLeft.No
Me.CmdAddOnStr.Size = New System.Drawing.Size(153, 25)
Me.CmdAddOnStr.TabIndex = 0
Me.CmdAddOnStr.Text = "Create AddOn String As File"
'Form1
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.BackColor = System.Drawing.SystemColors.Control
Me.ClientSize = New System.Drawing.Size(202, 206)
Me.Controls.Add(Me.CmdUnReg)
Me.Controls.Add(Me.CmdReg)
Me.Controls.Add(Me.CmdExit)
Me.Controls.Add(Me.CmdAddOnStr)
Me.Cursor = System.Windows.Forms.Cursors.Default
Me.Font = New System.Drawing.Font("Arial", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Location = New System.Drawing.Point(4, 23)
Me.Name = "Form1"
Me.RightToLeft = System.Windows.Forms.RightToLeft.No
Me.Text = "Form1"
Me.ResumeLayout(False)
End Sub
#End Region
#Region "Upgrade Support "
Private Shared m_vb6FormDefInstance As Form1
Private Shared m_InitializingDefInstance As Boolean
Public Shared Property DefInstance() As Form1
Get
If m_vb6FormDefInstance Is Nothing OrElse m_vb6FormDefInstance.IsDisposed Then
m_InitializingDefInstance = True
m_vb6FormDefInstance = New Form1()
m_InitializingDefInstance = False
End If
DefInstance = m_vb6FormDefInstance
End Get
Set
m_vb6FormDefInstance = Value
End Set
End Property
#End Region
'long GetInstallPath(const char *installDataFile,char *outStr,long len);
Private Declare Function GetInstallPath Lib "SBOAddonReg.dll" (ByVal installDataFile As String, ByVal outStr As String, ByRef lLen As Integer) As Integer
'BOOL RegisterAddOn(void);
Private Declare Function RegisterAddOn Lib "SBOAddonReg.dll" () As Boolean
'BOOL UnRegisterAddOn(const TCHAR *installDataFile);
Private Declare Function UnRegisterAddOn Lib "SBOAddonReg.dll" (ByVal installDataFile As String) As Boolean
Private g_sInstallPath As String
Private g_sInstallFullPath As String
Private g_sPreviousDir As String
Private g_sAddOnExeName As String
Private Sub CmdAddOnStr_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles CmdAddOnStr.Click
Shell(VB6.GetPath & "\AddOnRegDataGen.exe", AppWinStyle.NormalFocus)
CmdReg.Enabled = True
End Sub
Private Sub CmdExit_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles CmdExit.Click
End
End Sub
Private Sub CmdReg_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles CmdReg.Click
Dim sPath As String
Dim lLen As Integer
Dim InstallStrFile As String
sPath = Space(1024)
'Getting the sPath where I have to install the addon exe
InstallStrFile = VB6.GetPath & "\SBOAddOnRegData.sld"
lLen = GetInstallPath(InstallStrFile, sPath, Len(sPath))
'Coping the addon exe into the path location I got
MsgBox("Please copy your Addon exe file into: " & Trim(sPath))
'Writing to the registry
If RegisterAddOn = 1 Then
MsgBox("AddOn Was Registered Successfully")
CmdUnReg.Enabled = True
Else
MsgBox("Failed To Register AddOn")
End If
End Sub
Private Sub CmdUnReg_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles CmdUnReg.Click
Dim InstallStrFile As String
InstallStrFile = VB6.GetPath & "\SBOAddOnRegData.sld"
If UnRegisterAddOn(InstallStrFile) = 1 Then
MsgBox("AddOn Was UnRegistered Successfully")
Else
MsgBox("Failed To UnRegister AddOn")
End If
End Sub
End Class -
Need to add extra lines in email generating from oracle
Hi!
I am using Oracle 9i Enterprise Edition 9.2.0.6
I am facing a problem while generating the email from Oracle
Problem is that I want to display the data in following format
Terminal Statistics From: 30-MAR-2008 15:39:00 To: 06-JUN-2008 16:59:00
Containers Examined
Export: 2
Import: 30
but email shows data in following format
Terminal Statistics From: 30-MAR-2008 15:39:00 To: 06-JUN-2008 16:59:00 Containers Examined Export: 2 Import: 30
System combines the all the data in one line, while I have used following function to add new line when and where needed, but unable to get my desired result.
1. utl_tcp.CRLF
2. chr(130) || chr(10)
3. chr(10)
I have used following procedure to generate the email.
PROCEDURE send_html_email(
p_module_name in varchar2,
p_subject in varchar2,
p_text in varchar2 default null,
p_html in varchar2 default null
IS
l_boundary varchar2(32767) default 'a1b2c3d4e3f2g1';
l_connection utl_smtp.connection;
l_body_html clob := empty_clob; --This LOB will be the email message
l_offset number;
l_ammount number;
l_temp varchar2(32767) default null;
l_to varchar2(100);
l_cc varchar2(100);
l_bcc varchar2(100);
t_v_stpt Number:=0;
t_v_endpt Number:=0;
c_v_stpt Number:=0;
c_v_endpt Number:=0;
b_v_stpt Number:=0;
b_v_endpt Number:=0;
l_subject varchar2(255);
BEGIN
/*Function to retrieve the E-mail recipients list according to the Module/application*/
mail_recipient(p_module_name,l_to,l_cc,l_bcc);
l_connection := utl_smtp.open_connection( pk_parameter.setting('MAILSVR'), 25 );
utl_smtp.helo( l_connection, pk_parameter.setting('MAILSVR') );
utl_smtp.mail( l_connection, pk_parameter.setting('MAILFROM') );
l_temp := l_temp || 'MIME-Version: 1.0' || chr(13) || chr(10);
LOOP
t_v_stpt := t_v_stpt + 1;
t_v_endpt := INSTR (l_to, ',', t_v_stpt, 1);
IF l_to is null then
EXIT;
ELSIF t_v_endpt = 0 THEN
UTL_SMTP.rcpt (l_connection, SUBSTR (l_to, t_v_stpt));
EXIT;
ELSE
UTL_SMTP.rcpt (l_connection, SUBSTR (l_to, t_v_stpt, t_v_endpt -t_v_stpt));
END IF;
t_v_stpt := t_v_endpt;
END LOOP;
LOOP
c_v_stpt := c_v_stpt + 1;
c_v_endpt := INSTR (l_cc, ',', c_v_stpt, 1);
IF l_cc is null then
EXIT;
ELSIF c_v_endpt = 0 THEN
UTL_SMTP.rcpt (l_connection, SUBSTR (l_cc, c_v_stpt));
EXIT;
ELSE
UTL_SMTP.rcpt (l_connection, SUBSTR (l_cc, c_v_stpt, c_v_endpt -c_v_stpt));
END IF;
c_v_stpt := c_v_endpt;
END LOOP;
LOOP
b_v_stpt := b_v_stpt + 1;
b_v_endpt := INSTR (l_bcc, ',', b_v_stpt, 1);
IF l_bcc is null then
EXIT;
ELSIF b_v_endpt = 0 THEN
UTL_SMTP.rcpt (l_connection, SUBSTR (l_bcc, b_v_stpt));
EXIT;
ELSE
UTL_SMTP.rcpt (l_connection, SUBSTR (l_bcc, b_v_stpt, b_v_endpt -b_v_stpt));
END IF;
b_v_stpt := b_v_endpt;
END LOOP;
/*Header creation for email.*/
IF l_to is not null or l_cc is not null or l_bcc is not null THEN
l_temp := l_temp || 'To: ' || l_to || chr(13) || chr(10);
l_temp := l_temp || 'CC: ' || l_cc || chr(13) || chr(10);
l_temp := l_temp || 'BCC: ' || l_bcc || chr(13) || chr(10);
l_temp := l_temp || 'From: ' || pk_parameter.setting('MAILFROM') || chr(13) || chr(10);
l_temp := l_temp || 'Subject: ' || p_subject || chr(13) || chr(10);
l_temp := l_temp || 'Reply-To: ' || pk_parameter.setting('MAILFROM') || chr(13) || chr(10);
l_temp := l_temp || 'Content-Type: multipart/alternative; boundary=' ||
chr(34) || l_boundary || chr(34) || chr(13) ||
chr(10);
-- Write the headers
dbms_lob.createtemporary( l_body_html, false, 10 );
dbms_lob.write(l_body_html,length(l_temp),1,l_temp);
-- Write the text boundary
l_offset := dbms_lob.getlength(l_body_html) + 1;
l_temp := '--' || l_boundary || chr(13)||chr(10);
l_temp := l_temp || 'content-type: text/plain; charset=us-ascii' ||
chr(13) || chr(10) || chr(13) || chr(10);
dbms_lob.write(l_body_html,length(l_temp),l_offset,l_temp);
-- Write the plain text portion of the email
l_offset := dbms_lob.getlength(l_body_html) + 1;
dbms_lob.write(l_body_html,length(p_text),l_offset,p_text);
-- Write the HTML boundary
l_temp := chr(13)||chr(10)||chr(13)||chr(10)||'--' || l_boundary ||
chr(13) || chr(10);
l_temp := l_temp || 'content-type: text/html;' ||
chr(13) || chr(10) || chr(13) || chr(10);
l_offset := dbms_lob.getlength(l_body_html) + 1;
dbms_lob.write(l_body_html,length(l_temp),l_offset,l_temp);
-- Write the HTML portion of the message
l_offset := dbms_lob.getlength(l_body_html) + 1;
dbms_lob.write(l_body_html,length(p_html),l_offset,p_html);
-- Write the final html boundary
l_temp := chr(13) || chr(10) || '--' || l_boundary || '--' || chr(13);
l_offset := dbms_lob.getlength(l_body_html) + 1;
dbms_lob.write(l_body_html,length(l_temp),l_offset,l_temp);
-- Send the email in 1900 byte chunks to UTL_SMTP
l_offset := 1;
l_ammount := 32767;
utl_smtp.open_data(l_connection);
while l_offset < dbms_lob.getlength(l_body_html) loop
utl_smtp.write_data(l_connection, dbms_lob.substr(l_body_html,l_ammount,l_offset));
l_offset := l_offset + l_ammount ;
l_ammount := least(32767,dbms_lob.getlength(l_body_html) - l_ammount);
end loop;
utl_smtp.close_data(l_connection);
utl_smtp.quit( l_connection );
dbms_lob.freetemporary(l_body_html);
END IF;
END;
Following procedure calls the above function and generate the email
PROCEDURE generate_statistics
IS
l_minutes NUMBER:=0;
l_sub_type cg_ref_codes.rv_meaning%type;
l_gate_text VARCHAR2(5000);
l_ves_text VARCHAR2(5000);
l_exm_text VARCHAR2(5000);
l_email_text VARCHAR2(5000);
l_gate_tot NUMBER:=0;
l_load_tot NUMBER:=0;
l_discharge NUMBER:=0;
l_exm_tot NUMBER:=0;
/*Declare Cursor to get Examined Containers Summary*/
CURSOR cur_examined_ctrs IS
SELECT decode(eu.category,'I','Import','E','Export') Category, count(*) Total
FROM service_events se, equipment_uses eu
WHERE se.performed BETWEEN round(sysdate-l_minutes/1440,'mi')
AND round(sysdate,'mi')
AND se.tserv_id IN ('EXM')
AND eu.gkey = se.equse_gkey
AND eu.category IN ('I','E')
GROUP BY eu.category;
BEGIN
/*Retrieve parameterized minutes*/
l_minutes := nvl(pk_parameter.setting('STATSGMI'),0);
/*Assign Values to generate email*/
l_email_text := 'Terminal Statistics From: '||
to_char(round(sysdate-l_minutes/1440,'mi'),'DD-MON-RRRR HH24:MI:SS')||
' To: '||to_char(round(sysdate,'mi'),'DD-MON-RRRR HH24:MI:SS')||
chr(13) || chr(10)||chr(13) || chr(10);
l_exm_text := 'Containers Examined'||utl_tcp.CRLF;
FOR rec_examined_ctrs IN cur_examined_ctrs LOOP
/*Generate Text for email - Vessel Activity Crane Wise Starts*/
l_exm_text := l_exm_text ||rec_examined_ctrs.category ||': '||
rec_examined_ctrs.total||utl_tcp.CRLF;
l_exm_tot := l_exm_tot + rec_examined_ctrs.total;
END LOOP;
l_email_text := l_email_text||l_exm_text;
pk_kictl_email.send_html_email('TERM STATISTICS',
'Terminal Statistics Report',
l_email_text,
l_email_text
END;
I have been searching the reason and solution on net since last 2 days but hasn't find it yet.
would anybody plz help me regarding this.
Thanks
HassanI checked your suggestions after week end today and found that
the suggestion of Nalla did not provide the result in my required format
rewrite it as l_email_text := l_email_text||CHR(10)||l_exm_text;
Peter & Krithika:
I used html tag <BR> when and where needed and its gave me result in my required format
e.g.: l_exm_text := l_exm_text ||'<br>'||rec_examined_ctrs.category ||': '||
rec_examined_ctrs.total;
Now I want to know if there any html tag thru which I can define the column number so that my text will start from there.
means any html tag replacement of lpad (oracle funtion):
Thanks
Hassan -
How to put text line just for a moment ?
Hi,
Do you know how to put a text line just for one photo? I mean I have more photos in one portfolio but i need the text line to be seen just for one photo for the others no.
Thank you in advance.You can use composition for this , where you can insert text frame for that specific photo where you want to add some description and for rest dont use text frame.
Thanks,
Sanjit
Maybe you are looking for
-
Hello, I am trying to post a payment to a Vendor and payee is set up different then the supplier. I checked the data - seems to be allright but am not able to post the payment with error 'Payment method not found'. Payment method has been defined
-
Vendor Invoice Without FI Postings / Pro Forma Invoice
Is there any possibility to post vendor invoices without doing the FI postings? Vendor invoices are posted automatically through an interface to a legacy system. Is there any interaction chance, like userexit etc. in posting to avoid FI postings? Tha
-
Storage space - How to save adjustments and economize on storage need
I am workeing in PSE 8. I would like to know how I best save processed images while economizing on personal storage space requirements. I.E. If I save a version of a 15 GB image does this take 30 GB's of storage for the original plus version?
-
When I connect my 3G iphone to my Macbook it does not connect or charge my phone
when I connect my 3G iphone to my Macbook it does not connect or charge my phone
-
Accessing Dynamically Generated Spry Checkboxes
I've got a list with checkboxes that is generated with a data set. When the user checks some boxes and clicks "Assign" I need the assign function to run, serializing the checkbox values and running an ajax update. However, when I run my loop in the f