Sample Encoder with BNC2120 & PCI 6122
I have an angle encoder and I am trying to sample the output TTL signal (0-5V). I want to count the steps, considering that after every step (0.1 deg) the signal switches from high to low or viceversa.
The encoder cabling is correct.
1) Where should I put the wire on the BNC 2120? On the counter pin CTR? If yes, I have different CTR counter pins: gate, source, output (if I am not wrong). On which one I have to connect it?
2) How should I set the DAQ-MX express VI for acquiring the signal?
Thank you very much for your answers, consider that I am not very expert with electronic and programming.
Hi,
you have to connect the ttl signal to the source of CTR (PFI8).
Take a look to the example at the link
http://zone.ni.com/devzone/cda/epd/p/id/2641.
Hope this helps.
Clara
AE Manager
NI Italy
Similar Messages
-
Hi,
I would like to use comedi with the PCI-6122 board. I know a driver has been written for the PCI-6143 and I was wondering if anyone know if the registers were the same or if it would be possible to get a listing of the registers so I can write the driver?
CheersHello,
There are some differences between the 6122 and the 6143. Because of these differences we do not have any RLP documentation ready for the public.
Is there a specific feature of the PCI-6122 that you are using that makes the other boards unusable for our application? If not you could use one of the boards that are fully documented in the DDK or one that is supported by comedi.
Thanks,
Steven T. -
Simultaneous sampling with a PCI-MIO-16XE-10 board
Hello,
I am using LabView with a PCI-MIO-16XE-10 board. I would like to make simultaneous sampling in multi channels. How can I do?
Thank you for your help.Your question should be posted under "Measurement Devices >> Multifunction I/O" instead of "Real-Time DAQ" because the PCI-MIO-16XE-10 board is not a real-time device. The category "Real-Time DAQ" is reserved for 7030 real-time devices.
The PCI-MIO-16XE-10 multiplexes channels across one amp and one A/D converter; therefore, it cannot perform true simultaneous sampling. Consider using the SC-2040 accessory, which has 8 simultaneously sampling differential amplifiers. Alternately, you can purchase a different board like the PCI-6110, which can perform true simultaneous sampling because it has individual A/D converters and amps for each channel. -
Quadrature encoder interface to PCI-6229
Using PCI-6229 with LV7.1.
I need to connect an incremental quadrature encoder ( A,B and Z )
signals directly to the card and use the CTR0 to give me the angular
position information. Encoder is a 2500ppr type.
As per the specification summary of the PCI-6229 card, this is
possible. If so which terminals to use ? ( I have also posted a
similiar query in the other hardware forum )
can someone help me out in this ?
Thanks
Raghunathan
Raghunathan
LV2012 to Automate Hydraulic Test rigs.Dear David,
the search terms that you gave helped a lot also. I could get sample code for checkout of an encoder with LV7.1. Good.
I am not sur eif you have actually worked with the encoder + LV
combination. Normally any optical encoder will produce high
frequency jitter if it happens to stop just at the point of transition
of either the A or B channel . I do suppose that the DAQmx VI
will handle this and not produce spurious counts - or do I need to
configure a filter for the relevant PFI lines ?
Thanks
Raghunathan
Raghunathan
LV2012 to Automate Hydraulic Test rigs. -
How to do a single channel DAQ using NI-DAQ driver software with a PCI-MIO-16XE-10 card
Hi,
I would like to find out how I could do a simple one channel Data Acquisition from a signal generator using the NI-DAQ driver software with a PCI-MIO-16XE-10 card.
I have written some test problem but even when the signal generator is turned on/off I get back some weird values.
Here is my code.
CString sFunctionName("");
double volt[OUTPUT_POINTS*2];
double out[OUTPUT_POINTS*2];
short timebase, ready, code, stopped;
unsigned short sampleInterval;
int i, status, count=0;
unsigned long update, points;
short* ai_buffer;
short output_ch_vector[16];
int local_ITERATIONS = 2;
SAFEARRAYBOUND bound[1];
double dataItem = 9.9;
long j;
long k;
double* pTheValues;
LPTSTR lpsz_ErrMsg;
// Initialise device
status = Init_DA_Brds (deviceNumber, deviceNumberCode)
Initializes the hardware and software states of a National Instruments
DAQ device to its default state and returns a numeric device code that
corresponds to the type of device initialized
Init_DA_Brds(DEVICE, &code);
// Check return code from Init_DA_Brds
Code return should be 204: PCI-MIO-16XE-10.
if (code < 0)
CString sError;
sError.Format("Code error: %d", code);
if (code == -1)
sError = sError + ": No device found";
LPTSTR lpsz = new TCHAR[sError.GetLength()+1];
_tcscpy(lpsz, sError);
AfxMessageBox(lpsz);
delete lpsz;
return S_FALSE;
// Allocate memory for analog output and input arrays
//ao_buffer = new short[OUTPUT_POINTS*2];
ai_buffer = new short[OUTPUT_POINTS];
// Set double-buffering
status = DAQ_DB_Config (deviceNumber, DBmode)
Enables or disables double-buffered DAQ operations.
status = DAQ_DB_Config(DEVICE, 1);
if (status < 0 )
sFunctionName = "DAQ_DB_Config";
goto TidyUp;
// Get the rate parameters
status = DAQ_Rate (rate, units, timebase, sampleInterval)
Converts a DAQ rate into the timebase and sample-interval
values needed to produce the rate you want.
status = DAQ_Rate(RATE, 0, &timebase, &sampleInterval);
if (status < 0 )
sFunctionName = "DAQ_Rate";
goto TidyUp;
// Setup scan
status = SCAN_Setup (deviceNumber, numChans, chanVector, gainVector)
Initializes circuitry for a scanned data acquisition operation.
Initialization includes storing a table of the channel sequence
and gain setting for each channel to be digitized
status = SCAN_Setup(DEVICE, 1, ai_channels, gain);
if (status < 0 )
sFunctionName = "SCAN_Setup";
goto TidyUp;
status = SCAN_Start (deviceNumber, buffer, count, sampTimebase,
sampInterval, scanTimebase, scanInterval)
Initiates a multiple-channel scanned data acquisition operation,
with or without interval scanning, and stores its input in an array
status = SCAN_Start(DEVICE, ai_buffer, OUTPUT_POINTS, timebase, sampleInterval, timebase, 1000);
if (status < 0 )
sFunctionName = "SCAN_Start";
goto TidyUp;
while(count < local_ITERATIONS)
// Check whether we are ready to input another half-buffer
status = DAQ_DB_HalfReady(DEVICE, &ready, &stopped);
if (status < 0 )
sFunctionName = "DAQ_DB_HalfReady";
goto TidyUp;
if (ready == 1)
status = DAQ_DB_Transfer(DEVICE, ai_buffer, &points, &stopped);
if (status < 0 )
sFunctionName = "DAQ_DB_Transfer";
goto TidyUp;
count++;
// Clear the analog input
status = DAQ_Clear (deviceNumber)
Cancels the current DAQ operation
(both single-channel and multiple-channel scanned) and reinitializes the DAQ circuitry.
status = DAQ_Clear(DEVICE);
if (status < 0 )
sFunctionName = "DAQ_Clear";
goto TidyUp;
status = SCAN_Demux (buffer, count, numChans, numMuxBrds)
Rearranges, or demultiplexes, data acquired by a SCAN operation
into row-major order, that is, each row of the array holding the
data corresponds to a scanned channel
status = SCAN_Demux(ai_buffer, OUTPUT_POINTS * 2, 2, 0);
if (status < 0 )
sFunctionName = "SCAN_Demux";
goto TidyUp;
//Convert binary values to voltages (Doesn't actually take a reading from board)
status = DAQ_VScale (deviceNumber, chan, gain, gainAdjust, offset, count, binArray, voltArray)
Converts the values of an array of acquired binary data and the gain setting for that data
to actual input voltages measured.
status = DAQ_VScale (1, 0, 1, 1.0, 0.0, OUTPUT_POINTS , ai_buffer, volt);
if (status < 0 )
sFunctionName = "DAQ_VScale";
goto TidyUp;Hello,
Please take a look at lots of examples available at :
1. www.ni.com >> NI Developer Zone >> Development Library >> Measurement Hardware
2. C:\program files\national instruments\ni-daq\examples\visualc
Sincerely,
Sastry V.
Applications Engineer
National Instruments -
Using an internal sample clock with a digital input
I am using an encoder to measure angle and velocity. The example that I have started with is here. https://decibel.ni.com/content/docs/DOC-6834. The problem I am having is with the Sample clock, I get a timeout at the DAQmx read. If I remove the sample clock the VI runs fine, but I have no idea of my sample rate. Below is the the problem setup with the Sample clock inline.
Attachments:
encoder with timer.JPG 50 KBHi there, a couple suggestions: first , this is a post that it is suppose to be on the DAQ board. Second, you are not being clear about the error, try to include the error code, description and its location, is it coming out of the channel node or the timing VI? Also what hardware are you using?
Now, If you open the example called "Measure Angular Position.vi" from the NI example finder, drill the DAQmx Create Channel, you will see that you are missing a couple terminals for the task configuration, I wonder if this is part of the error.
Alejandro | Academic Program Engineer | National Instruments -
Reading simulated encoder with 6602
Hello!
I'm trying to read quadrature encoder (to be more specific this is an output of the pulse train generator that simulates the encoder).
In the attached picture you can see how the signal that i'm trying to read.
I need an advise about the correct filter settings.
Please also see the attached vi.
Usefull data:
Labview 8.2.1
Capturing device PXI-6602.
The Encoder is 16384 pulses. (If the reading is x4, i should get 2^16 - 65536 ticks).
The Encoder has differential outputs, but i've connected only A,B and Z.
The rotating speed is up to 5000 rpm. You can see in on the picture. (16384*(5000/60)=1,365,333MHz).
There is no problem to read the encoder with another devices, i have a motion analyzer from Control&Robotics solution and it works great.
Thank you.
Elman Izia.
001.jpg (78 kb)
Position capture.vi (171 kb)Hi Elman,
The filter clock is used to make sure that your signal has
integrity and eliminates glitches. In
order for signal to be counted, it must remain high for two consecutive periods
of your filter clock. There are five
time bases (5us, 1us, 500ns, 100ns and programmed) that can be used as your
filter clock. The programmed clock can
be created by another counter and this setting will let a signal be counted if
it is at least twice times the filter period.
This is a great method to help eliminate errors that can be
introduced by noise, crosstalk or transmission line effects.
The TimebaseSrc property is going to select a clock to be
used as the source. In your example that
property is correct, you would want to use the 80MHz clock. The TimebaseRate property is going to be used
to divide the clock down to specific frequency.
It will divide the master clock down by an integer value and round it to
get a rate that is as close to the value entered. I would recommend leaving this number as
80MHz.
The MinPulseWidth property is going to determine the clock
of the filter clock. This property is
going to use the TimebaseRate property to create the predefined filter clock
settings. If your signal stays high for
two consecutive periods of the minimum pulse width, then it will be counted.
You need to determine the minimum pulse width that is
acceptable for your application. Since
your signal has a pulse width of about 360ns, you might want to use the
predefined filter clock of 100ns.
In short, you are creating a digital filter that will only allow
a signal to be recognized if it remains high for two consecutive pulses.
For further explanation, refer to the PCI/PXI–6602 User
Manual page 3-20.
http://www.ni.com/pdf/manuals/322137a.pdf
Respectfully,
Rob F
Test Engineer
Condition Measurements
National Instruments -
Payload type of wav files encoded with gms codec
Hello everybody,
I have an application which receives and plays alaw formated wav files using JMF(with the help of some additional libraries) . I want to use lower bandwidth for my application. A quick google search indicated that i can do this by using gsm format.
I have 2 questions:
1-) what are the differences between .gsm files and .wav files which are encoded with gsm codecs? Which one's quality is better? which one's compression ratio is better?
2-) which payload type should i use for wav files which are encoded with gsm codecs?
In [Rtp Payload list|http://www.iana.org/assignments/rtp-parameters] page, there is a gsm entry whose payload is 3. I suppose that is for files with gsm extension. I tried it but it didn't work with my wav sample (as u can guess it was encoded with gsm 6.10 codec)
Any suggestion is appreciated. If you have a comment about the main problem (which is using lower bandwidth for sending audio data) i would also like to hear it
Thanks in advance
btw i also tried this [gsm sample|http://www.nch.com.au/acm/sample.gsm] with payload 3.At first it worked but then strangely it played just static. In Sun's page it says gsm format is supported. I played both ulaw and alaw succesfully so i wonder what i am doing wrong. Do we need to tell the player that it is going to receive data in gsm format? I didnt do such a thing for u-law and a-law formats...
Edited by: Bugra.Hasbek on Nov 10, 2008 1:18 AMBugra.Hasbek wrote:
Hello everybody,
I have an application which receives and plays alaw formated wav files using JMF(with the help of some additional libraries) . I want to use lower bandwidth for my application. A quick google search indicated that i can do this by using gsm format.
I have 2 questions:
1-) what are the differences between .gsm files and .wav files which are encoded with gsm codecs? Which one's quality is better? which one's compression ratio is better?I would imagine they are the same...
2-) which payload type should i use for wav files which are encoded with gsm codecs?I would imagine 3...
In [Rtp Payload list|http://www.iana.org/assignments/rtp-parameters] page, there is a gsm entry whose payload is 3. I suppose that is for files with gsm extension. I tried it but it didn't work with my wav sample (as u can guess it was encoded with gsm 6.10 codec)
Any suggestion is appreciated. If you have a comment about the main problem (which is using lower bandwidth for sending audio data) i would also like to hear itMy suggestion would be not to worry about so much stuff. JMF does all of this for you automaticlly.
On the sender side, make your processor take in whatever kind of supported file you want. Set the processor to output your GSM mono, and then you can just use a Player to play it on the other side. It's really not very different than the examples...
[http://java.sun.com/javase/technologies/desktop/media/jmf/2.1.1/solutions/AVTransmit.html]
When you're programming the tracks, and you're calling "setFormat" on them, just set their format to be gsm.
[http://java.sun.com/javase/technologies/desktop/media/jmf/2.1.1/solutions/AVReceive.html] should be able to play this out of the box... -
Jerky encoding with UscreenCapture
I have Abobie Flash Encoder 2 and have jerky video on all
encoding. I use UscreenCapture as a capture device. I can run up
the stream to 1000kbps and still have jerks on pans. This renders
all videos unusable.
This may be a problem with UscreenCapture but I have smoth
playback on the output window.
I have changed settings to best framerate.
MAchine Windows Xp 3.2 ghz with 1 gig ram nvidia 7300
sample here www.whatsignal.com/flash/flvplayer.html
I don't know how to fix it unless maybe I need a different
screen capture utility.Well I find this filter is quite good in 'masking' block artifact that codec like xvid, or other low compression codec have. I only apply it if I find the block artifact is too much and I find this filter is less offending to my eyes than the block artifact.
In manual it said that if you have noisy video and want to lower the size then you can use this filter. It also blur the video a bit. But I suspect it is more than blur as I try gaussian blur in time line and the result is not as good. You can see the result as well. There is the tab between source and target and you can compare the result by togling between source and target tab.
BTW, anyone with 1 core, dual, or quad core, can you tried to encode with it? Just cancel it after few minutes as I want to see what is your processor utilization with this filter on. Also you can see how long does it take to process this video from the 'estimation time left'. -
How do I import files encoded with FFV1 into Premier CS5?
Sorry if I get things a little mixed up here, but I'm still a relative editing newbie and some terms are confusing to me, but here goes!
I've been given a bunch of short video clips that I need to import into Premier CS5. Trouble is, they have been (I am told) encoded with the FFV1 codec, and when I import them into Premier all I can see is the audio track and no video. Other than asking my friend to re-encode the files (over 200) in a different way, is there some workaround to get these files working in Premier?
Thanks for reading.Thanks for all the useful info everyone. Here is the info that Mediainfo generated:
General
Complete name : F:\rufus.avi
Format : AVI
Format/Info : Audio Video Interleave
File size : 194 MiB
Duration : 55s 798ms
Overall bit rate : 29.2 Mbps
Writing application : Lavf52.23.1
Video
ID : 0
Format : FFV1
Codec ID : FFV1
Duration : 55s 680ms
Bit rate : 29.1 Mbps
Width : 384 pixels
Height : 272 pixels
Display aspect ratio : 1.412
Frame rate : 50.000 fps
Compression mode : Lossless
Bits/(Pixel*Frame) : 5.580
Stream size : 193 MiB (99%)
Audio
ID : 1
Format : MPEG Audio
Format version : Version 1
Format profile : Layer 3
Codec ID : 55
Codec ID/Hint : MP3
Duration : 55s 798ms
Bit rate mode : Constant
Bit rate : 128 Kbps
Channel(s) : 1 channel
Sampling rate : 44.1 KHz
Compression mode : Lossy
Stream size : 871 KiB (0%)
Alignment : Aligned on interleaves
Interleave, duration : 26 ms (1.30 video frame) -
Max. sample frequency with "Modulus Breakpoint (on-board re-enable).vi"
Hi all,
I'm using the PCI-7344 board and I'd like to trigger an external device. The trigger frequency should be very high (> 4 kHz).
Is it possible to realize such a sample rate with breakpoints and an onboard program like: "Modulus Breakpoint (on-board re-enable).vi".
I don't need a visual indicator and so I don't need the 10 ms delay in the second part.
What is the timeout in the first part for?
Thanks in advance for your help.
Best regards
Attachments:
Modulus_Breakpoint_(on-board_re-enable).vi 114 KBDepending on the movement of a xy - stage (controlled by the motion controller) I'd like to trigger a pulsed laser. Maybe every 2 µm I need a short TTL pulse to release a laser pulse.
I tried a software based solution as well as a on-board solution. Both ways are working well but unfortunately the software based solution is limited to 20 Hz and the on-bord solution is limited to 50 Hz.
Because of that I have to decrease Vmax in my application to 100µm/s.
Well , it would be much easier to trigger the laser with an adjusted frequency. The problem is the acceleration and deceleration of the stage. Because of that the pulses will overlap much more at the edges and that's the fact I wanna avoid.
Thanks for your help. Best regards -
Sample Project with ni hardware using NI-DAQmx Driver
hi, i need a Sample Project with NIi hardware using NI-DAQmx Driver
Please stick to one thread. You've created several that are asking the same thing and the answer remains the same - Help> Find Examples if using LabVIEW. Other programming languages come with their own set of examples.
-
File encoded with x264 takes forever to load in Encore CS 5.5
I use Encore mostly because it takes h.264 video encoded with the x264 compressor, which provides much higher quality than any other compressor. The problem is that these files take forever to load. For example, right now I'm trying to load a video that is about 1 hour and 20 minutes long, encoded at 38 Mbps, and the file is 20.9 GBytes. Now it's 3 PM and I imported this file along with the AC3 file over an hour ago. The Encore process shows as not responding, but when I open the Windows 7 Resource Monitor, in the disk tab it shows that it's reading the video file at a rate of about 45 MB/s, so I didn't kill the Encore process. I know eventually it's going to stop and load the file, but I don't understand why it takes so long. The encoding parameters that I used in x264 are these:
x264 --level 4.1 --bluray-compat --preset slow --bitrate 38000 --keyint 30 --min-keyint 2 --open-gop --weightp 0 --slices 4 --vbv-bufsize 30000 --vbv-maxrate 40000 --rc-lookahead 40 --tff --output "output" "input"
This comes from a family video that is 1080 59.94i. This time these two parameters appeared because I selected Blu-ray as the target: --bluray-compat and --open-gop, which I don't normally use, but still, even when I don't use them, video encoded with x264 takes forever to load. Does anybody here know what could be the problem?What's weird is last year I encoded a file that was almost two hours long and Encore took it without trouble, although it was CS5, not 5.5. Since I had kept the avs and bat files, and also the x264.exe from that encode, I brought them into the current working folder and I just modified the file names in the avs and bat files to point to the new avi and encode to the new h264 file. So I encoded this file, I imported it into Encore, and it still hangs. Maybe it was a change from CS5 to 5.1 that introduced a problem. x264 has been certified to be Blu-ray compliant since over a year ago, and I already put this file to a Blu-ray with TSMuxer, since it was a family video and I didn't really need menus, and it plays perfectly fine in my Blu-ray player.
But I'm sure there must be something, one or two parameters that would make it compatible. For example, after encoding the file again the last time, now I can import it into Encore, and it doesn't stay frozen forever, but it doesn't show me the video and as soon as I try to move the timeline cursor it freezes and doesn't let me do anything for several minutes. So still it's not usable. But it's a change from the first encode where the progress dialog would be there for several hours and do nothing at all. -
Need sample code with RV_INVOICE_CREATE used
Hi everybody!
I need sample code with RV_INVOICE_CREATE or similar FMs used.
The thing is that I do not know how to populate parametres of this and other invoicing FMs....
For example, there are some tables to be passed to RV_INVOICE_CREATE
TABLES
XKOMFK = XKOMFK
XKOMV = XKOMV
XTHEAD = XTHEAD
XVBFS = XVBFS
XVBPA = XVBPA
XVBRK = XVBRK
XVBRP = XVBRP
XVBSS = XVBSS
How to populate them? I mean how to fill them with needed values?
Useful answers will be awarded.
Kind regards, M.RV_INVOICE_CREATE is the function module to create invoice based on delivery .
when you pass delivery number ,it will create invoice ,see the invoice number in vf02,vf03 transaction. and also see the data vbrk,vbrp tables
I have done this development and i have cancelled invoice,reverse goods issue,updated the delivery and again i am createing invoice..see the below progrm to get better understanding.
REPORT ZWM_OVERWEIGHT_FIX no standard page heading
message-id zwm.
======================================================================
Program Name : ZWM_OVERWEIGHT_FIX *
Description : Tool to fix Overweight in delivery line item, *
Used All Function module to cancel invoice , *
Reverse the goods issue ,Update Delivery qty,Create *
invoice *
Author : Seshu *
Date : 05/08/2007 *
MODIFICATION HISTORY *
DATE | AUTHOR | CHANGE # | DESCRIPTION OF MODIFICATION *
--|||--
05/08/07| Seshu | DEVK921979 | Initial *
D A T A - D E C L A R A T I O N *******************
Tables
Tables : vbak,
vbap,
vbfa,
likp,
lips,
vbrk,
vbrp.
Internal Tables
data : i_lips like lips occurs 0 with header line,
i_vbap like vbap occurs 0 with header line.
Variables
data : v_deliv like vbfa-vbelv,
v_invoic like vbfa-vbelv.
Data Declaration Part for Post Goods Issue
DATA: l_vbeln LIKE likp-vbeln,
l_vbkok LIKE vbkok,
i_prot LIKE prott OCCURS 0 WITH HEADER LINE,
ef_error_any_0 TYPE c,
ef_error_in_item_deletion_0 TYPE c,
ef_error_in_pod_update_0 TYPE c,
ef_error_in_interface_0 TYPE c,
ef_error_in_goods_issue_0 TYPE c,
ef_error_in_final_check_0 TYPE c,
d_return LIKE bapireturn1.
Internal tables for BAPI Function Module
data : i_cret like BAPIRETURN1 occurs 0 with header line,
i_csucess like BAPIVBRKSUCcESS occurs 0 with header line,
i_ret2 like bapiret2 ,
flag type c,
i_mesg like mesg occurs 0 with header line.
Data Declaration for Invoice Creation
DATA: VBSK_I LIKE VBSK.
data: d_success type c.
DATA: XKOMFK LIKE KOMFK OCCURS 0 WITH HEADER LINE,
XKOMV LIKE KOMV OCCURS 0 WITH HEADER LINE,
XTHEAD LIKE THEADVB OCCURS 0 WITH HEADER LINE,
XVBFS LIKE VBFS OCCURS 0 WITH HEADER LINE,
XVBPA LIKE VBPAVB OCCURS 0 WITH HEADER LINE,
XVBRK LIKE VBRKVB OCCURS 0 WITH HEADER LINE,
XVBRP LIKE VBRPVB OCCURS 0 WITH HEADER LINE,
XVBSS LIKE VBSS OCCURS 0 WITH HEADER LINE,
XKOMFKGN LIKE KOMFKGN OCCURS 0 WITH HEADER LINE.
S E L E C T I O N - S C R E E N ******************
Selection-screen
Selection-screen : begin of block blk with frame title text-001.
parameters : p_vbeln like vbak-vbeln obligatory.
selection-screen : end of block blk.
A T - S E L E C T I O N - S C R E E N ***************
Validation on Sales order
at selection-screen on p_vbeln.
Check the data on VBAK Table
select single vbeln from vbak into vbak-vbeln
where vbeln = p_vbeln.
if sy-subrc ne 0.
message e006 with p_vbeln.
endif.
S T A R T - O F - S E L E C T I O N *******************
Start-of-selection.
break sreddy.
Get the Invoice Number corresponding Sales Order Number
perform get_invoice.
Step 1.
Cancel the Invoice - Transaction VF11
perform cancel_invoice.
Reverse the goods issue
perform reverse_goodsissue.
Get the Order and Delivery Items
perform get_sales_deliv.
Delivery Change
perform Delivery_change.
Create Invoice document
perform invoice_create.
E N D - O F - S E L E C T I O N *******************
end-of-selection.
if flag = 'X'.
message i012 with p_vbeln.
endif.
*& Form get_invoice
Get Invoice Number
FORM get_invoice.
Clear Variables
clear : v_deliv,
v_invoic,
flag.
Get the Delivery Number First
select single vbeln from vbfa into v_deliv
where vbelv = p_vbeln
and vbtyp_n = 'J'.
if sy-subrc ne 0.
message i004 with p_vbeln.
stop.
endif.
Get the Invoice Number
select single vbeln from vbfa into v_invoic
where vbelv = p_vbeln
and vbtyp_n = 'M'.
if sy-subrc ne 0.
message i003 with p_vbeln.
stop.
endif.
ENDFORM. " get_invoice
*& Form cancel_invoice
Cancel the Invoice
FORM cancel_invoice.
clear : i_ret2,
i_cret,
i_csucess.
refresh : i_cret,
i_csucess.
CALL FUNCTION 'BAPI_BILLINGDOC_CANCEL1'
EXPORTING
BILLINGDOCUMENT = v_invoic
TESTRUN =
NO_COMMIT =
BILLINGDATE =
TABLES
RETURN = i_cret
SUCCESS = i_csucess
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = space
IMPORTING
RETURN = i_ret2.
read table i_cret with key type = 'E'.
if sy-subrc ne 0.
message i005 with v_invoic.
stop.
endif.
ENDFORM. " cancel_invoice
*& Form reverse_goodsissue
Reverse the goods Issue
FORM reverse_goodsissue.
Local Variable
data : lv_vbtyp like likp-vbtyp.
clear : i_mesg,
lv_vbtyp.
refresh : i_mesg.
select single vbtyp from likp into lv_vbtyp
where vbeln = v_deliv.
CALL FUNCTION 'WS_REVERSE_GOODS_ISSUE'
EXPORTING
I_VBELN = v_deliv
I_BUDAT = sy-datum
I_COUNT =
I_MBLNR =
I_TCODE =
I_VBTYP = lv_vbtyp
TABLES
T_MESG = i_mesg
EXCEPTIONS
ERROR_REVERSE_GOODS_ISSUE = 1
OTHERS = 2
if sy-subrc ne 0.
message i007 with v_deliv.
endif.
ENDFORM. " reverse_goodsissue
*& Form get_sales_deliv
Get the Sales order and Deliv Items
FORM get_sales_deliv.
Local Variables
data : lv_kwmeng like vbap-kwmeng.
clear : i_lips,
i_vbap.
refresh : i_lips,
i_vbap.
Select the data from LIPS
select * from lips into table i_lips
where vbeln = v_deliv.
if sy-subrc ne 0.
message i008 with v_deliv.
stop.
endif.
sort i_lips by vbeln posnr.
Get the Sales order Item Data.
select * from vbap into table i_vbap
where vbeln = p_vbeln.
if sy-subrc ne 0.
message i006 with p_vbeln.
stop.
endif.
sort i_vbap by vbeln posnr.
Compare delivery Item and Order Items
loop at i_lips.
clear lv_kwmeng.
read table i_vbap with key posnr = i_lips-posnr.
if sy-subrc eq 0.
lv_kwmeng = i_vbap-kwmeng * 2.
if lv_kwmeng >= i_lips-lfimg.
i_lips-lfimg = i_vbap-kwmeng.
modify i_lips.
endif.
endif.
endloop.
ENDFORM. " get_sales_deliv
*& Form Delivery_change
Delivery Update
FORM Delivery_change.
Clear : i_prot.
refresh : i_prot.
Delivery Update
CALL FUNCTION 'LE_MOB_DELIVERY_UPDATE'
EXPORTING
do_commit = 'X'
TABLES
t_delivery_items = i_lips
prot = i_prot
EXCEPTIONS
conversion_overflow = 1
essential_data_missing = 2
error = 3
nothing_to_update = 4
lock_after_update_failed = 5
error_in_delivery_update = 6
OTHERS = 7.
COMMIT WORK.
IF sy-subrc <> 0.
MESSAGE i009 with v_deliv.
endif.
Post Goods Issue
CLEAR: d_return,
i_prot,
l_vbeln,
l_vbkok.
REFRESH i_prot.
CLEAR: ef_error_in_item_deletion_0 ,
ef_error_in_pod_update_0 ,
ef_error_in_interface_0 ,
ef_error_in_goods_issue_0 ,
ef_error_in_final_check_0 .
carry out goods issue
l_vbeln = v_deliv.
l_vbkok-vbeln_vl = l_vbeln.
l_vbkok-wabuc = 'X'.
carry out goods issue
l_vbeln = v_deliv.
l_vbkok-vbeln_vl = l_vbeln.
l_vbkok-wabuc = 'X'.
SET UPDATE TASK LOCAL.
CALL FUNCTION 'WS_DELIVERY_UPDATE'
EXPORTING
vbkok_wa = l_vbkok
synchron = 'X'
no_messages_update = ' '
update_picking = 'X'
commit = 'X'
delivery = l_vbeln
nicht_sperren = 'X'
if_error_messages_send_0 = space
IMPORTING
ef_error_any_0 = ef_error_any_0
ef_error_in_item_deletion_0 = ef_error_in_item_deletion_0
ef_error_in_pod_update_0 = ef_error_in_pod_update_0
ef_error_in_interface_0 = ef_error_in_interface_0
ef_error_in_goods_issue_0 = ef_error_in_goods_issue_0
ef_error_in_final_check_0 = ef_error_in_final_check_0
TABLES
prot = i_prot
EXCEPTIONS
error_message = 1
OTHERS = 2.
if sy-subrc ne 0.
message i010 with v_deliv.
else.
COMMIT WORK .
endif.
ENDFORM. " Delivery_change
*& Form invoice_create
Invoice Creation
FORM invoice_create.
refresh: XKOMFK, XKOMV,
XTHEAD, XVBFS,
XVBPA, XVBRK,
XVBRP, XVBSS.
clear : XKOMFK, XKOMV,
XTHEAD, XVBFS,
XVBPA, XVBRK,
XVBRP, XVBSS,
VBSK_I.
VBSK_I-SMART = 'F'.
XKOMFK-VBELN = v_deliv.
XKOMFK-VBTYP = 'J'.
APPEND XKOMFK.
CALL FUNCTION 'RV_INVOICE_CREATE'
EXPORTING
VBSK_I = VBSK_I
WITH_POSTING = 'C'
TABLES
XKOMFK = XKOMFK
XKOMV = XKOMV
XTHEAD = XTHEAD
XVBFS = XVBFS
XVBPA = XVBPA
XVBRK = XVBRK
XVBRP = XVBRP
XVBSS = XVBSS.
if sy-subrc eq 0.
COMMIT WORK.
flag = 'X'.
else.
message i011 with p_vbeln.
endif.
ENDFORM. " invoice_create
Reward Points if it is helpful
Thanks
Seshu -
Steps to UTF-8 Encoding with Oracle 8i and Weblogic 6.1SP1
What are the Steps to UTF-8 Encoding with Oracle 8i and Weblogic
6.1SP1?
I have:
- Oracle 8.1.5 database created with character set=UTF8 and national
character set=UTF8
- Weblogic 6.1SP1 without any encoding mechanism set
(though I did play with
<jsp-param><param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</jsp-param>
in the weblogic.xml for a while though it seemed not to make a
difference)
- JSP pages set to content='text/html; charset=UTF-8'
- JSP form POSTs set to enctype="UTF-8"
I can copy and paste Chinese Kanji from a UTF8 encoded web page into
form text boxes but when I post the data it comes back as different
Kanji. Then once it is posted the Kanji stays the same on repeated
posts. The same Kanji text also looks different when viewed in a form
text box than when viewed as straight text on the page.
Is there anything else? Or am I already encoding characters twice?
Please help!
Mel Christie
Hi Experts,
Please correct me if am asking you the question in wrong way.
I have ARCGIS with oracle database 10gr2 in production server.
My work is to connect AUTOCAD S/W (client computer which is connected in LAN) to ARCGIS in order to access the toposheets available in SDE user.
When iam trying to connect iam getting this error:The specified credentials are not valid or provider is not able to establish a connection.
I checked the path to production server by pinging and user/passcode too but not helpful.
Please help me in this , very urgent.
Thanks.
Edited by: user13355644 on Jul 3, 2010 3:53 AM
Edited by: user13355644 on Jul 22, 2011 2:55 AM
Maybe you are looking for
-
OAF - Values not getting displayed in Search Page
Hi all, I have developed a search page with the search citeria mapped to the search panel. I have created VO for this attribute and selected the value from View in this VO(Viewobject). I have created the Query region and set the property of Construct
-
I'm trying to get a new desktop pc up and running with all of my old files. OS = Windows 7 Copied my music files Installed iTunes When I try to run iTunes I get the error message ... The file "itunes library.itl" cannot be read because it was created
-
Will Adobe Premiere Pro support Olympus E-P1 videos and when?
Premiere Pro does not support Olympus PEN E-P1 videos. Will this be supported and any indication of when? Thanks John
-
[SOLVED] Terminal fonts not working properly?
I just recently finished a fresh install on my new Thinkpad x220, but noticed a peculiar trait about the install. I can not change the size of my fonts, and the only font that I can choose from is clear. This is because every other font previews as H
-
Premiere Elements 8: Audio sync problem when exporting to Quicktime H.264
Program plays back fine on the timeline also when saved as a mpeg file. QT file audio sync is off. Using QT player to play back. Any thoughts?