Index the output of a stacked sequence
Hi everyone,
I'm writing some code in which I instantiate many objects when I first start my code and place the objects into an array that is used as a lookup table later on in operation. This takes up a lot of space on the block diagram and makes it difficult to understand for the user that is not familiar with the code. Is it possible to create something like a flat sequence that can have a single indexed output tunnel? I want something like what you would get when having a tunnel out of a for loop I just want each itteration to be unique (unlike the for loop). I've included an image of what my diagram currently looks like for reference. You can see that I create all of the objects with unique information (ID, control reference, etc.) and then build an array with them. I would like to instantiate each of these objects in a frame of a stacked sequence with a single indexed output (if possible).
Thanks for the advice!
-Eric
Solved!
Go to Solution.
Option 1: use a subVI
Option 2: Use a FOR loop as a sequencer. Instead of the stacked (or flat) sequence structure, put a case structure inside of a FOR loop and wire the i to the case selector. Then in each case you can initialize a different class. The output can then be autoindexed.
There are only two ways to tell somebody thanks: Kudos and Marked Solutions
Unofficial Forum Rules and Guidelines
Similar Messages
-
Problem for visualizing a frame of a stacked sequence
When I want to change the frame of a stacked sequence structure, LabView sends me the following error: fatal internal error: datatype.cpp, line 3658. I do not understand because my program works but I can not visualize a frame.
Hi Johan,
If I understand correctly, it's possible to view the diagram and some specific sequence-frame, but when you try to select a different frame, the error occurrs(?) In this case you could try mass-compiling all the VIs associated with the application then try again to view/edit the in-accessable frame. NOTE: when mass compiling, any "broken" VIs will be listed! Alternatively, if you know some or all of the VIs and typedefs in the inaccessable frame(s), try opening them individually, in the hope of narrowing the problem. It's possible that the VI is hopelessly corrupt! fortunately it still works!
... As a last resort, you might try "hiding" all the typedefs associated with this VI before you open it (the VI will open-up broken). It sounds to me like there's some mis-handled typedef descrepancy/ambiguity and you may be able to prevent LabVIEW from trying to resolve the descrepancy by hiding the data-type/typedef. I'd MAKE A BACKUP copy before doing anything!
Good luck!
Message Edited by Dynamik on 12-09-2005 12:30 AM
When they give imbeciles handicap-parking, I won't have so far to walk! -
Need SQL statement to generate a sequence number in the output rows
Hi folks. I need to create an SQL statement that generates a sequence number column in the output rows (records) such that the first returned row has this column set to 1, second returned row has the column set to 2, etc.
For example, consider the query:
SELECT income from employees WHERE income != 20000 ORDER BY income;
If employees.income contains 60,000, 20,000, 35,000, and 19,000 for respective rows, the output would be this:
19,000
35,000
60,000
I would like the SQL to also return a sequence number that is computed across the returned rows, resulting in two output columns:
1 19,000
2 35,000
3 60,000
Is there a simple SQL function that generates the sequence number, in order, and only for the returned rows? Or is there another way?
I'm stumped. Any help is appreciated! Thanks!
- Jack CochraneHi,
Welcome to the forum!
Use ROWNUM, like (example):
Connected to Oracle Database 10g Express Edition Release 10.2.0.1.0
Connected as hr
SQL> select rownum, first_name from (select e.first_name from employees e where e.first_name like 'J%' order by e.first_name);
ROWNUM FIRST_NAME
1 Jack
2 James
3 James
4 Janette
5 Jason
6 Jean
7 Jennifer
8 Jennifer
9 John
10 John
11 John
12 Jonathon
13 Jose Manuel
14 Joshua
15 Julia
16 Julia
16 rows selected
SQL> But rememeber if you want to be sure of unique numbers in certain field is better to use sequences and use seq_name.nextval each time you need.
Regards, -
Remove the stacked sequence structure from LabVIEW.
Remove once and for all the stacked sequence structure from labVIEW
It's an absolute horror.> Sequence locals are sometimes (for very few cases) usefull if you know how to use them properly
What does that even mean????
(.. and you are repeating basically the same statement about four more times as if the use of sequences and sequence locals is an advanced skill, only to be used by LabVIEW masters. Your post is so redundant that it could be condensed to 20% of the size without loss of information).
It is clear that the stacked sequence can never disappear from LabVIEW, because of the need for backward compatibility. (It could be taken out of the palette, but why...).
LabVIEW Champion . Do more with less code and in less time . -
Hi ,
We have a catalog that defines 2 types of products (they have too many different properties), so wanted to keep them on two different MDEX engines and serve the applications requests. Here DB catalog and front end ATG application is same for both the MDEX instances.
Is it possible to have 2 different output config XML files and index the data into 2 endeca apps using the same indexing component ProductCatalogSimpleIndexingAdmin?
Thanks
DevHi, also have had some problem some monthes ago - I created separete component ProductCatalogSimpleIndexingAdminSecond. After that one of my colleage gave me some advice:
The creating separate component like ProductCatalogSimpleIndexingAdmin for the second IOC is possible way for resolving your situation. But I afraid that this way will be required creating mane duplicates for already existed components.
In my opinion the better way is the following:
starting from AssemblerApplicationConfiguration and ApplicationConfiguration component. It contains details for connecting between ATG and Endeca. Of course you should configure different components for different Endeca Apps.
After that:
Find all components that uses AssemblerApplicationConfiguration and ApplicationConfiguration. Customize these components for using one or another *Configuration component depending on what index works. (many variants released it: the most simple global custom component with flag.)
Then customize the existed ProductCatalogSimpleIndexingAdmin. Using one or another IOC and setting the flag in global custom component when index started. You can add some methods into your custom ProductCatalogSimpleIndexingAdmin like:
Execute baseline index for both IOC (one by one)
Execute baseline for IOC 1
Execute baseline for IOC 2.
Note: you should be afraid about incremental (partial) index in this configuration. But resolving conflicts in incremental index should be done after full implementation these changes.
Regards -
Convert the output sequence of complex FFT
I am using complex FFT to do IQ demodulation.
the input X of complex FFT is cos(x)+i*sin(x). abs(FFT(X)) is the frequency response of input X. I need to convert the output sequence the format
FROM: DC f....Nyquist Frequency...–f
TO: -Fre_nyquist ...DC... Fre_nyquist
Is there any function I can use to do this convertion? thanksJust use "rotate array" from the array palette (LabVIEW 7.1 or lower) and rotate by n/2.
If you have LabVIEW 8.0, simply wire a TRUE to the "shift?" input for a DC centered spectrum.
LabVIEW Champion . Do more with less code and in less time . -
Changing print sequence of the output types
Hi Friends,
We are using Z program for issuing output .
In this we are giving input values as Application (ex. V3) and output type (Ex Zx50) to take invoice printouts
At present we are having three output types ZX43 , ZX44 AND ZX45.
For this three output types program name and form name is different .
To take invoice print we are executing this Z program with output types separtely.
Our requirement is
Creating new application ( ex V4 ) AND new outype type (ex ZX46) under this we have to bring this three output types ZX43 , ZX44 AND ZX45.
By giving input as V4 and ZX46 it has to do the same work as it is done separtely
while doing code please give me the suggestion or logic how to combine all these three output types in one
Regards
R.vijayakumarHi,
You can do this in the NACE configuration itself. we can call 5 program and forms for a particular output type.
In the output type processing routine of nace transaction mention the program and form name
Thanks
Arul -
Changing the print sequence of the output types
Hi Friends,
We are using Z program for issuing output .
In this we are giving input values as Application (ex. V3) and output type (Ex Zx50) to take invoice printouts
At present we are having three output types ZX43 , ZX44 AND ZX45.
For this three output types program name and form name is different .
To take invoice print we are executing this Z program with output types separtely.
Our requirement is
Creating new application ( ex V4 ) AND new outype type (ex ZX46) under this we have to bring this three output types ZX43 , ZX44 AND ZX45.
By giving input as V4 and ZX46 it has to do the same work as it is done separtely
while doing code please give me the suggestion or logic how to combine all these three output types in one
Regards
R.vijayakumarHi,
You can do this in the NACE configuration itself. we can call 5 program and forms for a particular output type.
In the output type processing routine of nace transaction mention the program and form name
Thanks
Arul -
Help needed with stack sequence
Hello friends,
I am using my LABVIEW VI with signal express. I have connected all the controls and indicators to the connector pane and has built the source distribtion. I am attaching my VI. You can see while I import my VI in signal express.. in run LABVIEW vi step it does not show all the control and indicators.
Also if you please can go through my Vi you will see that I am using stack sequence. What I observe that variable (arrays) what I am using in the sequences other than the first frame are not getting updated. I am continuously taking data through tektroniks oscilloscope and that data I want to use in my VI. Oscilloscope will continuously be feeding data in. How do I move to the second frame untill first frame is still receiving data? It may be the reason other variables are not getting updated.
Message Edited by 9966658175 on 12-10-2009 04:01 AM
Vipin
Attachments:
LABVIEW_VI.jpg 182 KB
sig_express.jpg 141 KBto Dennnis
First of all thanking you for your response.
Ya, you are right. there is no need for the sequence structure. But still one of the Local variable (MCA Data) is required. But as you are saying that for loop also is not needed, I dont get it. I have to separately access the element of an incoming array. How do i do that? I mean in my case peak detector pallet is sending out data as an array that has to be used as an index to another array. As we all know that index can only be an integer (single element), not an array. How do i do that without using indexing feature of a loop?
Still my second problem is not solved. I want to continuously acquire data from an oscilloscope and then want to do processing on that continuously and show that online output data. I am using Labview VI in signal express. In my case up to peak detector pallet continuous data output is coming. But after that, output is not updating?
Can u help? I am attaching Labview file this time.
Vipin
Attachments:
MCA2.vi 16 KB -
Understand the output of explain plan
I am trying to understand the output of explain plan. I have 2 plans below and don't understand it completely.
In below SQL I would expect optimizer to fetch "ROWNUM < 500" first and then do the outer join. But below explain plan doesn't list it as No. 1. So I don't really understand how to intepret the sequence from the explain plan:
select TASK0_.TASK_ID from
( select TASK0_.TASK_ID from
( select task0_.task_id from task task0_) TASK0_ where ROWNUM < 500 ) TASK0_
left outer join f_message_task task0_1_ on task0_.task_id=task0_1_.task_id
left outer join b_a_task task0_2_ on task0_.task_id=task0_2_.task_id
left outer join i_task task0_3_ on task0_.task_id=task0_3_.task_id
left outer join o_task task0_4_ on task0_.task_id=task0_4_.task_id
left outer join r_transmission_task task0_5_ on task0_.task_id=task0_5_.task_id
left outer join s_error_task task0_6_ on task0_.task_id=task0_6_.task_id
PLAN_TABLE_OUTPUT
Plan hash value: 707970537
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 499 | 19461 | 1042 (6)| 00:00:13 |
|* 1 | HASH JOIN OUTER | | 499 | 19461 | 1042 (6)| 00:00:13 |
|* 2 | HASH JOIN OUTER | | 499 | 16966 | 757 (6)| 00:00:10 |
| 3 | NESTED LOOPS OUTER | | 499 | 14471 | 589 (4)| 00:00:08 |
| 4 | NESTED LOOPS OUTER | | 499 | 12475 | 588 (4)| 00:00:08 |
| 5 | NESTED LOOPS OUTER | | 499 | 10479 | 588 (4)| 00:00:08 |
| 6 | NESTED LOOPS OUTER | | 499 | 8982 | 588 (4)| 00:00:08 |
| 7 | VIEW | | 499 | 2495 | 588 (4)| 00:00:08 |
|* 8 | COUNT STOPKEY | | | | | |
| 9 | INDEX FAST FULL SCAN| PK_TASK | 697K| 3403K| 588 (4)| 00:00:08 |
|* 10 | INDEX UNIQUE SCAN | PK_r_TRANSMISSION | 1 | 13 | 0 (0)| 00:00:01 |
|* 11 | INDEX UNIQUE SCAN | PK_b_a_TASK | 1 | 3 | 0 (0)| 00:00:01 |
|* 12 | INDEX UNIQUE SCAN | PK_s_ERROR_TASK | 1 | 4 | 0 (0)| 00:00:01 |
|* 13 | INDEX UNIQUE SCAN | PK_i_TASK | 1 | 4 | 0 (0)| 00:00:01 |
| 14 | INDEX FAST FULL SCAN | PK_o_TASK | 347K| 1695K| 161 (6)| 00:00:02 |
| 15 | INDEX FAST FULL SCAN | PK_f_MESSAGE | 392K| 1917K| 276 (4)| 00:00:04 |
Predicate Information (identified by operation id):
1 - access("TASK0_"."TASK_ID"="TASK0_1_"."TASK_ID"(+))
2 - access("TASK0_"."TASK_ID"="TASK0_4_"."TASK_ID"(+))
8 - filter(ROWNUM<500)
10 - access("TASK0_"."TASK_ID"="TASK0_5_"."TASK_ID"(+))
11 - access("TASK0_"."TASK_ID"="TASK0_2_"."TASK_ID"(+))
12 - access("TASK0_"."TASK_ID"="TASK0_6_"."TASK_ID"(+))
13 - access("TASK0_"."TASK_ID"="TASK0_3_"."TASK_ID"(+))
In below SQL I expect rownum to be applied at the end but it gets applied first:
select * from ( select TASK0_.TASK_ID from ( select task0_.task_id from task task0_
left outer join f_message_task task0_1_ on task0_.task_id=task0_1_.task_id
left outer join b_a_task task0_2_ on task0_.task_id=task0_2_.task_id
left outer join i_task task0_3_ on task0_.task_id=task0_3_.task_id
left outer join o_task task0_4_ on task0_.task_id=task0_4_.task_id
left outer join r_t_task task0_5_ on task0_.task_id=task0_5_.task_id
left outer join s_error_task task0_6_ on task0_.task_id=task0_6_.task_id
) TASK0_ where ROWNUM < 500 ) TASK0_;
PLAN_TABLE_OUTPUT
Plan hash value: 673345378
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 499 | 6487 | 507 (1)| 00:00:07 |
| 1 | VIEW | | 499 | 6487 | 507 (1)| 00:00:07 |
|* 2 | COUNT STOPKEY | | | | | |
| 3 | NESTED LOOPS OUTER | | 501 | 19539 | 507 (1)| 00:00:07 |
| 4 | NESTED LOOPS OUTER | | 501 | 17034 | 5 (20)| 00:00:01 |
| 5 | NESTED LOOPS OUTER | | 501 | 15030 | 5 (20)| 00:00:01 |
| 6 | NESTED LOOPS OUTER | | 501 | 13026 | 5 (20)| 00:00:01 |
| 7 | NESTED LOOPS OUTER | | 501 | 11523 | 5 (20)| 00:00:01 |
| 8 | NESTED LOOPS OUTER | | 501 | 5010 | 5 (20)| 00:00:01 |
| 9 | INDEX FAST FULL SCAN| PK_TASK | 499 | 2495 | 2 (0)| 00:00:01 |
|* 10 | INDEX UNIQUE SCAN | PK_o_TASK | 1 | 5 | 1 (0)| 00:00:01 |
|* 11 | INDEX UNIQUE SCAN | PK_r_T | 1 | 13 | 0 (0)| 00:00:01 |
|* 12 | INDEX UNIQUE SCAN | PK_b_a_TASK | 1 | 3 | 0 (0)| 00:00:01 |
|* 13 | INDEX UNIQUE SCAN | PK_s_ERROR_TASK | 1 | 4 | 0 (0)| 00:00:01 |
|* 14 | INDEX UNIQUE SCAN | PK_i_TASK | 1 | 4 | 0 (0)| 00:00:01 |
|* 15 | INDEX UNIQUE SCAN | PK_f_MESSAGE | 1 | 5 | 1 (0)| 00:00:01 |
Predicate Information (identified by operation id):
2 - filter(ROWNUM<500)
10 - access("TASK0_"."TASK_ID"="TASK0_4_"."TASK_ID"(+))
11 - access("TASK0_"."TASK_ID"="TASK0_5_"."TASK_ID"(+))
12 - access("TASK0_"."TASK_ID"="TASK0_2_"."TASK_ID"(+))
13 - access("TASK0_"."TASK_ID"="TASK0_6_"."TASK_ID"(+))
14 - access("TASK0_"."TASK_ID"="TASK0_3_"."TASK_ID"(+))
15 - access("TASK0_"."TASK_ID"="TASK0_1_"."TASK_ID"(+))Edited by: user628400 on Feb 20, 2009 12:14 PM
Edited by: user628400 on Feb 20, 2009 12:15 PMPlease read the FAQ: http://forums.oracle.com/forums/help.jspa
And learn how to post code and explain plans using the tags. -
Using same string indicator in different stacked sequences
Hi guys, I want to use the same string indicator in different stacked sequences. I tried to wire the output of every string constant through the sequence to my string indicator outside the sequence block but then I get an 'Wire connected to an undirected tunnel' error. What is the best way to use the same indicator for all the sequences?
Solved!
Go to Solution.GerdW wrote:
GerdW wrote:
@TiTou:
Problems with copy&paste?
not even :-o
GerdW wrote:
@TiTou:
Problems with copy&paste?
not even :-o
see : http://forums.ni.com/t5/Feedback-on-NI-Discussion-Forums/Text-lines-and-images-get-duplicated-when-I...
When my feet touch the ground each morning the devil thinks "bloody hell... He's up again!" -
Hello,
This is what I am trying to do (maybe stacked sequence is not a good option):
1. User enter no of iterations
2. Lets say user enters"2", then i want 2 different plots, 2 different indicators to be displayed
3. If the user enters "3", then i want 3 different plots, 3 different indicators to be displayed
3. Since i want 2 different indicators, I dont wanna use for loop. As for loop will give me an array and I can probably index the array, but then i would have to control the display as well and it is manageable if i have less iterations, however, if i have more iterations then it would be an issue
4. So I was thinking if I can dynamically change the number of sequence in stacked sequence then depending on no of iteration, I would have corresponding sequence with each sequence doing the same thing. The benefit being i dont have to do any post processing
Please let me know if this is the right thought process?
ThanksUse a FOR loop. Wire the i straight into the case structure's selector. Now you basically have your sequence structure, but you can choose how many iterations to have based on N. The sequence structure must run straight through no matter what.
But a state machine is probably really what you want.
There are only two ways to tell somebody thanks: Kudos and Marked Solutions
Unofficial Forum Rules and Guidelines -
hello,
i am trying to clean up my code because i have too many local variables.
i need to make it more easier to read. can someone suggest some ways to get rid of the current stack sequence?
i have some pictures.
thank you for your time.
here is what's in the subvi
Message Edited by krispiekream on 07-08-2008 01:22 PM
Best regards,
Krispiekream
Attachments:
untitled21.PNG 10 KB
untitled5.PNG 9 KB
untitled11.PNG 14 KB
untitled31.PNG 11 KB
untitled41.PNG 62 KBYou don't fax a picture of you to your doctor and expect him to diagnose you. So why attach a picture of your code and expect us to troubleshoot?
If you want help, attach some real code!
Things we cannot tell!
In frame 1, what happens in the TRUE case?
Why do you need to read the "temp target local twice in a row. Is there a chance it will change?
I only see locals. Where are the terminals?
You have 3 subVIs, but you only show us one.
In the subVI, What happens in the other frames?
in the subVI, how many "index array" do you possibly need for the same input? One is typically enough, you can resize it.
(Also keep your images less than about 800pixels wide!)
Message Edited by altenbach on 07-08-2008 11:32 AM
LabVIEW Champion . Do more with less code and in less time . -
Adding Field to the output of the Report
Hello experts
I have a program like following, I would like to add a field (Customer purchase order from order header)vbkd-bstkd to the output, I tried to add some code(check the highlightened portion) but it doesnt work(no values) can anyone help in correcting the code so that i can execute directly,
Iam not full time ABAPer so could you please highlight the code you corrected(added),
Thanks
SP
Global structure of list
TYPE-POOLS: slis.
TABLES: likp,
lips,
vbfa,
kssk,
klah,
ausp,
cabn,
vbak,
mara,
vbrk,
ser01,
vbpa,
vbrp,
nast,
zseri,
ltap,
pa0001,
kna1,
objk,
viqmel,
viqmma.
TYPES: BEGIN OF i_delivery,
vbeln LIKE likp-vbeln,
posnr LIKE lips-posnr,
kunnr LIKE likp-kunnr,
kunag LIKE likp-kunag,
vkorg LIKE vbak-vkorg,
matnr LIKE lips-matnr,
lfart LIKE likp-lfart,
arktx LIKE vbap-arktx,
vgbel LIKE lips-vgbel,
vgpos LIKE lips-vgpos,
pstyv LIKE lips-pstyv,
wadat TYPE likp-wadat_ist,
lfdat TYPE likp-lfdat,
prodh TYPE lips-prodh,
lfimg TYPE lips-lfimg,
vkbur TYPE lips-vkbur,
werks TYPE lips-werks,
vkgrp TYPE lips-vkgrp,
mvgr1 TYPE lips-mvgr1,
sernr LIKE equi-sernr,
sernp LIKE equi-sernr,
equnr LIKE equi-equnr,
kttxt LIKE qpct-kurztext,
fkimg LIKE vbrp-fkimg,
bstnk LIKE vbak-bstnk,
vbelv LIKE lips-vgbel,
posnv LIKE lips-posnv,
uecha LIKE lips-uecha,
ernam LIKE vbak-ernam,
erdat LIKE vbak-erdat,
serail LIKE lips-serail,
anzsn LIKE lips-anzsn,
auart LIKE vbak-auart ,
netwr LIKE vbap-netwr,
fstno LIKE vbpa-pernr,
fstnm LIKE pa0001-ename,
ename LIKE pa0001-ename,
qname LIKE ltap-qname,
name1 LIKE kna1-name1,
name3 LIKE kna1-name2,
pernr LIKE vbpa-pernr,
aufnr LIKE viqmel-aufnr,
qmnum LIKE viqmel-qmnum,
mngrp LIKE viqmma-mngrp,
qmcod LIKE viqmel-qmcod,
qmcol LIKE viqmma-mncod,
cotxt(20),
invvalue LIKE vbrp-netwr,
posnn LIKE vbfa-posnn,
bstkd LIKE vbkd-bstkd,
END OF i_delivery.
Global structure of list
*/ Selection and Input Parameters
SELECTION-SCREEN BEGIN OF BLOCK block2 WITH FRAME TITLE text-003.
SELECT-OPTIONS: s_vkorg FOR likp-vkorg NO INTERVALS.
SELECT-OPTIONS: s_vbeln FOR likp-vbeln,
s_lfart FOR likp-lfart,
s_kunnr FOR likp-kunnr,
s_erdat FOR likp-erdat,
s_wadat FOR likp-wadat_ist,
s_werks FOR lips-werks,
s_matnr FOR lips-matnr,
s_prodh FOR lips-prodh,
s_qmnum FOR viqmel-qmnum.
SELECTION-SCREEN END OF BLOCK block2.
SELECTION-SCREEN BEGIN OF BLOCK block4 WITH FRAME TITLE text-002.
SELECT-OPTIONS: s_vbelv FOR vbak-vbeln,
s_auart FOR vbak-auart.
SELECTION-SCREEN END OF BLOCK block4.
PARAMETERS: p_vari LIKE disvariant-variant.
RANGES: r_vbeln FOR likp-vbeln.
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv.
DATA: gt_outtab TYPE i_delivery OCCURS 0 WITH HEADER LINE,
rt_outtab1 TYPE i_delivery OCCURS 0 WITH HEADER LINE,
i_nast TYPE nast OCCURS 0 WITH HEADER LINE,
gt_list_top_of_page TYPE slis_t_listheader,
gt_events TYPE slis_t_event,
gc_formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.
DATA: g_repid LIKE sy-repid,
g_count LIKE sy-tabix.
DATA: BEGIN OF i_serial OCCURS 0,
obknr TYPE ser01-obknr,
lief_nr TYPE ser01-lief_nr,
posnr TYPE ser01-posnr,
anzsn TYPE ser01-anzsn,
END OF i_serial.
DATA: BEGIN OF i_object_numbers OCCURS 0,
obknr TYPE objk-obknr,
obzae TYPE objk-obzae,
sernr TYPE objk-sernr,
equnr TYPE objk-equnr,
matnr TYPE objk-matnr,
taser TYPE objk-taser,
END OF i_object_numbers.
DATA: g_save(1) TYPE c,
g_default(1) TYPE c,
g_exit(1) TYPE c,
gx_variant LIKE disvariant,
g_variant LIKE disvariant.
DATA: g_mnkat LIKE viqmma-mnkat,
g_mngrp LIKE viqmma-mngrp,
g_atinn LIKE ausp-atinn.
DATA: gt_vbkd TYPE TABLE OF vbkd WITH HEADER LINE.
Initialization fieldcatalog
INITIALIZATION.
g_repid = sy-repid.
PERFORM fieldcat_init USING gt_fieldcat[].
MOVE: 'I' TO s_vkorg-sign,
'EQ' TO s_vkorg-option,
'5090' TO s_vkorg-low.
APPEND s_vkorg.
MOVE: 'I' TO s_lfart-sign,
'EQ' TO s_lfart-option,
'LF' TO s_lfart-low.
APPEND s_lfart.
g_save = 'A'.
PERFORM variant_init.
Get default variant
gx_variant = g_variant.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
i_save = g_save
CHANGING
cs_variant = gx_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 0.
p_vari = gx_variant-variant.
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
PERFORM f4_for_variant.
AT SELECTION-SCREEN.
PERFORM pai_of_selection_screen.
Start of Selection
START-OF-SELECTION.
PERFORM e03_eventtab_build USING gt_events[].
PERFORM select_data TABLES gt_outtab.
Display list
END-OF-SELECTION.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_background_id = 'ALV_BACKGROUND'
i_callback_user_command = 'USER_COMMAND'
is_variant = g_variant
i_save = g_save
i_callback_program = g_repid
it_fieldcat = gt_fieldcat[]
TABLES
t_outtab = gt_outtab.
Forms
Initialization fieldcatalog
FORM fieldcat_init
USING rt_fieldcat TYPE slis_t_fieldcat_alv.
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
DATA: pos TYPE i VALUE 1.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'VBELN'.
ls_fieldcat-seltext_s = 'Delivery'.
ls_fieldcat-seltext_m = 'Delivery'.
ls_fieldcat-key = 'X'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'BSTKD'.
ls_fieldcat-seltext_s = 'PO Number'.
ls_fieldcat-seltext_m = 'PO Number'.
ls_fieldcat-key = 'X'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'POSNR'.
ls_fieldcat-key = 'X'.
ls_fieldcat-seltext_s = 'Item'.
ls_fieldcat-seltext_m = 'Item'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'LFART'.
ls_fieldcat-seltext_s = 'Del Type'.
ls_fieldcat-seltext_m = 'Delivery Type'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'VGBEL'.
ls_fieldcat-seltext_s = 'Source Doc'.
ls_fieldcat-seltext_m = 'Source Doc'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'AUART'.
ls_fieldcat-seltext_s = 'Type'.
ls_fieldcat-seltext_m = 'Type'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'KUNNR'.
ls_fieldcat-seltext_s = 'Customer'.
ls_fieldcat-seltext_m = 'Customer'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'NAME1'.
ls_fieldcat-seltext_s = 'Name'.
ls_fieldcat-seltext_m = 'Name1'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'WERKS'.
ls_fieldcat-seltext_s = 'Plant'.
ls_fieldcat-seltext_m = 'Plant'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'MATNR'.
ls_fieldcat-seltext_s = 'Material'.
ls_fieldcat-seltext_m = 'Material'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'MVGR1'.
ls_fieldcat-seltext_s = 'Speciality'.
ls_fieldcat-seltext_m = 'Speciality'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'PRODH'.
ls_fieldcat-seltext_s = 'Hierarchy'.
ls_fieldcat-seltext_m = 'Prod Hierarchy'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'ARKTX'.
ls_fieldcat-seltext_s = 'Description'.
ls_fieldcat-seltext_m = 'Description'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'ERNAM'.
ls_fieldcat-seltext_s = 'Created By'.
ls_fieldcat-seltext_m = 'Created By'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'ERDAT'.
ls_fieldcat-seltext_s = 'Created On'.
ls_fieldcat-seltext_m = 'Created On'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'WADAT_IST'.
ls_fieldcat-seltext_s = 'GoodsMvt.Date'.
ls_fieldcat-seltext_m = 'Goods Mvt Date'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'SERNR'.
ls_fieldcat-seltext_s = 'Serial Shipped'.
ls_fieldcat-seltext_m = 'Serial Shipped'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'SERNP'.
ls_fieldcat-seltext_s = 'Old Serial'.
ls_fieldcat-seltext_m = 'Old Serial'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'VBELV'.
ls_fieldcat-seltext_s = 'Invoice'.
ls_fieldcat-seltext_m = 'Invoice'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'INVVALUE'.
ls_fieldcat-seltext_s = 'Invoice Amt'.
ls_fieldcat-seltext_m = 'Invoice Value'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'QMNUM'.
ls_fieldcat-seltext_s = 'Notification'.
ls_fieldcat-seltext_m = 'Notification'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'QMCOD'.
ls_fieldcat-seltext_s = 'Rep LevKST'.
ls_fieldcat-seltext_m = 'Repair Level KST'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'COTXT'.
ls_fieldcat-seltext_s = 'CdTXT KST'.
ls_fieldcat-seltext_m = 'Repair Level Text KST'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'QMCOL'.
ls_fieldcat-seltext_s = 'Rep LevKSE'.
ls_fieldcat-seltext_m = 'Repair Level KSE'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'KTTXT'.
ls_fieldcat-seltext_s = 'CdTXT KSE'.
ls_fieldcat-seltext_m = 'Repair Level Text KSE'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
ENDFORM. "fieldcat_init
Data selection
FORM select_data TABLES rt_outtab LIKE gt_outtab[].
CLEAR: r_vbeln[].
Read all Invoices for the Selection
SELECT DISTINCT h~vbeln h~kunnr h~kunag
d~posnr d~matnr d~anzsn
d~serail d~vgbel d~vgpos
d~posnv d~lfimg d~arktx
d~uecha h~lfart h~erdat
h~ernam h~lfdat d~prodh
h~vkorg d~vkbur d~vkgrp
d~mvgr1 h~wadat_ist d~pstyv
d~werks
INTO (rt_outtab-vbeln, rt_outtab-kunnr,
rt_outtab-kunag, rt_outtab-posnr,
rt_outtab-matnr, rt_outtab-anzsn,
rt_outtab-serail, rt_outtab-vgbel,
rt_outtab-vgpos, rt_outtab-posnv,
rt_outtab-lfimg, rt_outtab-arktx,
rt_outtab-uecha, rt_outtab-lfart,
rt_outtab-erdat, rt_outtab-ernam,
rt_outtab-lfdat, rt_outtab-prodh,
rt_outtab-vkorg, rt_outtab-vkbur,
rt_outtab-vkgrp, rt_outtab-mvgr1,
rt_outtab-wadat, rt_outtab-pstyv,
rt_outtab-werks)
FROM likp AS h INNER JOIN lips AS d
ON h~vbeln = d~vbeln
WHERE h~vbeln IN s_vbeln
AND h~vkorg IN s_vkorg
AND h~lfart IN s_lfart
AND h~kunnr IN s_kunnr
AND h~wadat IN s_wadat
AND d~matnr IN s_matnr
AND d~werks IN s_werks
AND d~prodh IN s_prodh
AND d~vgbel IN s_vbelv
AND d~matnr LIKE 'S%'.
SELECT SINGLE * FROM vbak WHERE vbeln = rt_outtab-vgbel.
IF: sy-subrc EQ 0.
MOVE vbak-vbeln TO rt_outtab-vgbel.
MOVE vbak-auart TO rt_outtab-auart.
ENDIF.
SELECT SINGLE * FROM mara WHERE matnr = rt_outtab-matnr
AND mtart EQ 'FERT'.
CHECK sy-subrc EQ 0.
IF NOT rt_outtab-posnv IS INITIAL.
rt_outtab-vgpos = rt_outtab-posnv.
ENDIF.
CLEAR: vbfa.
SELECT SINGLE vbeln posnn rfwrt INTO
(rt_outtab-vbelv, rt_outtab-posnn, rt_outtab-netwr)
FROM vbfa WHERE vbelv EQ rt_outtab-vbeln
AND posnv EQ rt_outtab-posnr
AND vbtyp_n EQ 'M'.
CLEAR : rt_outtab-invvalue.
SELECT SINGLE * FROM vbrp WHERE vbeln = rt_outtab-vbelv
AND posnr = rt_outtab-posnn.
rt_outtab-fkimg = vbrp-fkimg.
IF rt_outtab-fkimg NE 0.
rt_outtab-invvalue = rt_outtab-netwr / rt_outtab-fkimg.
ENDIF.
APPEND rt_outtab.
IF NOT r_vbeln-low IS INITIAL.
IF r_vbeln-low GT rt_outtab-vbeln.
r_vbeln-low = rt_outtab-vbeln.
ENDIF.
IF r_vbeln-high LT rt_outtab-vbeln.
r_vbeln-high = rt_outtab-vbeln.
ENDIF.
ELSE.
r_vbeln-low = rt_outtab-vbeln.
r_vbeln-high = rt_outtab-vbeln.
ENDIF.
CLEAR: rt_outtab.
ENDSELECT.
IF NOT rt_outtab[] IS INITIAL.
SELECT vbeln posnr bstkd INTO CORRESPONDING FIELDS OF TABLE gt_vbkd
FROM vbkd
FOR ALL ENTRIES IN rt_outtab
WHERE vbeln = rt_outtab-vgbel
AND posnr = rt_outtab-vgpos.
IF NOT gt_vbkd[] IS INITIAL.
SORT gt_vbkd BY vbeln posnr.
LOOP AT rt_outtab.
READ TABLE gt_vbkd WITH KEY vbeln = rt_outtab-vgbel
posnr = rt_outtab-vgpos
BINARY SEARCH.
IF sy-subrc = 0.
rt_outtab-bstkd = gt_vbkd-bstkd.
MODIFY rt_outtab.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
*select bstkd INTO CORRESPONDING FIELDS OF TABLE gt_vbkd
from vbkd where vbeln = gt_outtab-vbeln
and posnr = '000000'.
rt_outtab-bstkd = vbkd-bstkd .
<i><b> select single bstkd into gt_vbkd
from vbkd where vbeln = rt_outtab-vbeln
and posnr = '000000'.
rt_outtab-bstkd = gt_vbkd-bstkd.
APPEND rt_outtab .</b></i>
IF NOT r_vbeln IS INITIAL.
MOVE: 'I' TO r_vbeln-sign,
'BT' TO r_vbeln-option.
APPEND r_vbeln.
SELECT * INTO CORRESPONDING FIELDS OF TABLE i_serial
FROM ser01 WHERE lief_nr IN r_vbeln.
ENDIF.
SORT i_serial.
IF NOT i_serial[] IS INITIAL.
SELECT * INTO CORRESPONDING FIELDS OF TABLE i_object_numbers
FROM objk
FOR ALL ENTRIES IN i_serial
WHERE obknr EQ i_serial-obknr
AND taser EQ 'SER01'.
ENDIF.
SORT i_object_numbers BY obknr obzae.
LOOP AT rt_outtab.
CLEAR: rt_outtab-name1, rt_outtab-sernr, rt_outtab-lfimg,
rt_outtab-sernp, rt_outtab-kttxt.
Read the Sold To Name
SELECT SINGLE name1 INTO rt_outtab-name1
FROM kna1 WHERE kunnr EQ rt_outtab-kunnr.
Read Ship-to Customer
CLEAR: objk.
IF NOT rt_outtab-serail IS INITIAL.
READ TABLE i_serial WITH KEY lief_nr = rt_outtab-vbeln
posnr = rt_outtab-posnr.
IF sy-subrc EQ 0.
DO i_serial-anzsn TIMES.
CLEAR: rt_outtab-sernr, rt_outtab-sernp.
READ TABLE i_object_numbers WITH KEY obknr = i_serial-obknr
matnr = rt_outtab-matnr
BINARY SEARCH.
IF sy-subrc EQ 0.
rt_outtab-sernr = i_object_numbers-sernr.
DELETE i_object_numbers INDEX sy-tabix.
MOVE '1' TO rt_outtab-lfimg.
CLEAR: rt_outtab-aufnr, rt_outtab-qmnum,
rt_outtab-equnr, rt_outtab-qmcod, g_mngrp, g_mnkat.
SELECT SINGLE aufnr qmnum equnr qmcod qmgrp qmkat
INTO (rt_outtab-aufnr, rt_outtab-qmnum,
rt_outtab-equnr, rt_outtab-qmcod, g_mngrp, g_mnkat)
FROM viqmel WHERE matnr = rt_outtab-matnr
AND serialnr = rt_outtab-sernr
AND qmart EQ 'S4'
AND qmnum IN s_qmnum.
CLEAR: rt_outtab-cotxt.
SELECT SINGLE kurztext INTO rt_outtab-cotxt
FROM qpct WHERE katalogart EQ g_mnkat
AND codegruppe EQ g_mngrp
AND code EQ rt_outtab-qmcod
AND sprache EQ sy-langu.
Read Serial Number from Name Plate Data.
CLEAR: klah, kssk, ausp, cabn, g_atinn.
SELECT SINGLE atinn INTO (g_atinn) FROM cabn
WHERE atnam = 'SBANK_SERIAL_NUMBER'.
SELECT SINGLE atwrt
INTO (rt_outtab-sernp)
FROM ( klah AS a INNER JOIN kssk AS k
ON aclint = kclint )
JOIN ausp AS p
ON kobjek = pobjek
AND p~atinn = g_atinn
AND pklart = aklart
WHERE a~klart = '002'
AND a~class = 'KSE_SN_ENDOSCOPES'
AND k~objek = rt_outtab-equnr.
*KSE Repair level (activity code text from KSE-SM07 code group)
CLEAR: rt_outtab-qmcol, g_mngrp, g_mnkat.
CLEAR: rt_outtab-qmcol.
CLEAR: g_mnkat, g_mngrp.
SELECT SINGLE mnkat mngrp mncod INTO
(g_mnkat, g_mngrp, rt_outtab-qmcol)
FROM viqmma WHERE qmnum = rt_outtab-qmnum
AND mngrp EQ 'KSE-SM07'
AND kzloesch EQ space.
CLEAR: rt_outtab-kttxt.
SELECT SINGLE kurztext INTO rt_outtab-kttxt
FROM qpct WHERE katalogart EQ g_mnkat
AND codegruppe EQ g_mngrp
AND code EQ rt_outtab-qmcol
AND sprache EQ sy-langu.
rt_outtab1 = rt_outtab.
APPEND rt_outtab1.
ENDIF.
ENDDO.
ENDIF.
ENDIF.
ENDLOOP.
CLEAR: rt_outtab[].
rt_outtab[] = rt_outtab1[].
SORT rt_outtab BY vbeln posnr.
ENDFORM.
FORM get_repname *
--> P_VBELN *
--> P_POSNR *
--> P_PERNR *
--> P_ENAME *
FORM get_repname USING p_vbeln
p_posnr
CHANGING p_pernr
p_ename. "
DATA: i_vbpa LIKE vbpa OCCURS 0 WITH HEADER LINE.
CLEAR: i_vbpa[].
CALL FUNCTION 'Z_DETERMINE_ACTIVE_SALES_REP'
EXPORTING
g_salesdocument = p_vbeln
g_sales_item = p_posnr
TABLES
st_vbpa = i_vbpa.
READ TABLE i_vbpa INDEX 1.
IF sy-subrc = 0.
p_pernr = i_vbpa-pernr.
SELECT SINGLE ename INTO p_ename
FROM pa0001
WHERE pernr = i_vbpa-pernr.
ENDIF.
ENDFORM. " get_repname
FORM E03_EVENTTAB_BUILD *
--> E03_LT_EVENTS *
FORM e03_eventtab_build USING e03_lt_events TYPE slis_t_event.
DATA: ls_event TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = e03_lt_events.
READ TABLE e03_lt_events WITH KEY name = slis_ev_top_of_page
INTO ls_event.
IF sy-subrc = 0.
MOVE gc_formname_top_of_page TO ls_event-form.
APPEND ls_event TO e03_lt_events.
ENDIF.
ENDFORM.
FORM TOP_OF_PAGE *
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = gt_list_top_of_page.
ENDFORM.
*& Form USER_COMMAND
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN '&IC1'.
PERFORM display_delivery USING r_ucomm
rs_selfield.
ENDCASE.
ENDFORM.
*& Form display_delivery
FORM display_delivery
USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE rs_selfield-sel_tab_field.
WHEN '1-VBELN'.
SET PARAMETER ID 'VL' FIELD rs_selfield-value.
CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
WHEN '1-VBELV'.
SET PARAMETER ID 'VF' FIELD rs_selfield-value.
CALL TRANSACTION 'VF03N' AND SKIP FIRST SCREEN.
ENDCASE.
ENDFORM.
*& Form VARIANT_INIT
text
--> p1 text
<-- p2 text
FORM variant_init.
CLEAR g_variant.
g_variant-report = g_repid.
ENDFORM. " VARIANT_INIT
*& Form F4_FOR_VARIANT
text
--> p1 text
<-- p2 text
FORM f4_for_variant.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = g_variant
i_save = g_save
it_default_fieldcat =
IMPORTING
e_exit = g_exit
es_variant = gx_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 2.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
IF g_exit = space.
p_vari = gx_variant-variant.
ENDIF.
ENDIF.
ENDFORM.
*& Form PAI_OF_SELECTION_SCREEN
text
FORM pai_of_selection_screen.
IF NOT p_vari IS INITIAL.
MOVE g_variant TO gx_variant.
MOVE p_vari TO gx_variant-variant.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
i_save = g_save
CHANGING
cs_variant = gx_variant.
g_variant = gx_variant.
ELSE.
PERFORM variant_init.
ENDIF.
ENDFORM.naren this is the program
Global structure of list
TYPE-POOLS: slis.
TABLES: likp,
lips,
vbfa,
kssk,
klah,
ausp,
cabn,
vbak,
mara,
vbrk,
ser01,
vbpa,
vbrp,
nast,
zseri,
ltap,
pa0001,
kna1,
objk,
viqmel,
viqmma.
TYPES: BEGIN OF i_delivery,
vbeln LIKE likp-vbeln,
posnr LIKE lips-posnr,
kunnr LIKE likp-kunnr,
kunag LIKE likp-kunag,
vkorg LIKE vbak-vkorg,
matnr LIKE lips-matnr,
lfart LIKE likp-lfart,
arktx LIKE vbap-arktx,
vgbel LIKE lips-vgbel,
vgpos LIKE lips-vgpos,
pstyv LIKE lips-pstyv,
wadat TYPE likp-wadat_ist,
lfdat TYPE likp-lfdat,
prodh TYPE lips-prodh,
lfimg TYPE lips-lfimg,
vkbur TYPE lips-vkbur,
werks TYPE lips-werks,
vkgrp TYPE lips-vkgrp,
mvgr1 TYPE lips-mvgr1,
sernr LIKE equi-sernr,
sernp LIKE equi-sernr,
equnr LIKE equi-equnr,
kttxt LIKE qpct-kurztext,
fkimg LIKE vbrp-fkimg,
bstnk LIKE vbak-bstnk,
vbelv LIKE lips-vgbel,
posnv LIKE lips-posnv,
uecha LIKE lips-uecha,
ernam LIKE vbak-ernam,
erdat LIKE vbak-erdat,
serail LIKE lips-serail,
anzsn LIKE lips-anzsn,
auart LIKE vbak-auart ,
netwr LIKE vbap-netwr,
fstno LIKE vbpa-pernr,
fstnm LIKE pa0001-ename,
ename LIKE pa0001-ename,
qname LIKE ltap-qname,
name1 LIKE kna1-name1,
name3 LIKE kna1-name2,
pernr LIKE vbpa-pernr,
aufnr LIKE viqmel-aufnr,
qmnum LIKE viqmel-qmnum,
mngrp LIKE viqmma-mngrp,
qmcod LIKE viqmel-qmcod,
qmcol LIKE viqmma-mncod,
cotxt(20),
invvalue LIKE vbrp-netwr,
posnn LIKE vbfa-posnn,
bstkd LIKE vbkd-bstkd,
END OF i_delivery.
Global structure of list
*/ Selection and Input Parameters
SELECTION-SCREEN BEGIN OF BLOCK block2 WITH FRAME TITLE text-003.
SELECT-OPTIONS: s_vkorg FOR likp-vkorg NO INTERVALS.
SELECT-OPTIONS: s_vbeln FOR likp-vbeln,
s_lfart FOR likp-lfart,
s_kunnr FOR likp-kunnr,
s_erdat FOR likp-erdat,
s_wadat FOR likp-wadat_ist,
s_werks FOR lips-werks,
s_matnr FOR lips-matnr,
s_prodh FOR lips-prodh,
s_qmnum FOR viqmel-qmnum.
SELECTION-SCREEN END OF BLOCK block2.
SELECTION-SCREEN BEGIN OF BLOCK block4 WITH FRAME TITLE text-002.
SELECT-OPTIONS: s_vbelv FOR vbak-vbeln,
s_auart FOR vbak-auart.
SELECTION-SCREEN END OF BLOCK block4.
PARAMETERS: p_vari LIKE disvariant-variant.
RANGES: r_vbeln FOR likp-vbeln.
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv.
DATA: gt_outtab TYPE i_delivery OCCURS 0 WITH HEADER LINE,
rt_outtab1 TYPE i_delivery OCCURS 0 WITH HEADER LINE,
i_nast TYPE nast OCCURS 0 WITH HEADER LINE,
gt_list_top_of_page TYPE slis_t_listheader,
gt_events TYPE slis_t_event,
gc_formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.
DATA: g_repid LIKE sy-repid,
g_count LIKE sy-tabix.
DATA: BEGIN OF i_serial OCCURS 0,
obknr TYPE ser01-obknr,
lief_nr TYPE ser01-lief_nr,
posnr TYPE ser01-posnr,
anzsn TYPE ser01-anzsn,
END OF i_serial.
DATA: BEGIN OF i_object_numbers OCCURS 0,
obknr TYPE objk-obknr,
obzae TYPE objk-obzae,
sernr TYPE objk-sernr,
equnr TYPE objk-equnr,
matnr TYPE objk-matnr,
taser TYPE objk-taser,
END OF i_object_numbers.
DATA: g_save(1) TYPE c,
g_default(1) TYPE c,
g_exit(1) TYPE c,
gx_variant LIKE disvariant,
g_variant LIKE disvariant.
DATA: g_mnkat LIKE viqmma-mnkat,
g_mngrp LIKE viqmma-mngrp,
g_atinn LIKE ausp-atinn.
DATA: gt_vbkd TYPE TABLE OF vbkd WITH HEADER LINE.
Initialization fieldcatalog
INITIALIZATION.
g_repid = sy-repid.
PERFORM fieldcat_init USING gt_fieldcat[].
MOVE: 'I' TO s_vkorg-sign,
'EQ' TO s_vkorg-option,
'5090' TO s_vkorg-low.
APPEND s_vkorg.
MOVE: 'I' TO s_lfart-sign,
'EQ' TO s_lfart-option,
'LF' TO s_lfart-low.
APPEND s_lfart.
g_save = 'A'.
PERFORM variant_init.
Get default variant
gx_variant = g_variant.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
i_save = g_save
CHANGING
cs_variant = gx_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 0.
p_vari = gx_variant-variant.
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
PERFORM f4_for_variant.
AT SELECTION-SCREEN.
PERFORM pai_of_selection_screen.
Start of Selection
START-OF-SELECTION.
PERFORM e03_eventtab_build USING gt_events[].
PERFORM select_data TABLES gt_outtab.
Display list
END-OF-SELECTION.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_background_id = 'ALV_BACKGROUND'
i_callback_user_command = 'USER_COMMAND'
is_variant = g_variant
i_save = g_save
i_callback_program = g_repid
it_fieldcat = gt_fieldcat[]
TABLES
t_outtab = gt_outtab.
Forms
Initialization fieldcatalog
FORM fieldcat_init
USING rt_fieldcat TYPE slis_t_fieldcat_alv.
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
DATA: pos TYPE i VALUE 1.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'VBELN'.
ls_fieldcat-seltext_s = 'Delivery'.
ls_fieldcat-seltext_m = 'Delivery'.
ls_fieldcat-key = 'X'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'BSTKD'.
ls_fieldcat-seltext_s = 'PO Number'.
ls_fieldcat-seltext_m = 'PO Number'.
ls_fieldcat-key = 'X'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'POSNR'.
ls_fieldcat-key = 'X'.
ls_fieldcat-seltext_s = 'Item'.
ls_fieldcat-seltext_m = 'Item'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'LFART'.
ls_fieldcat-seltext_s = 'Del Type'.
ls_fieldcat-seltext_m = 'Delivery Type'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'VGBEL'.
ls_fieldcat-seltext_s = 'Source Doc'.
ls_fieldcat-seltext_m = 'Source Doc'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'AUART'.
ls_fieldcat-seltext_s = 'Type'.
ls_fieldcat-seltext_m = 'Type'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'KUNNR'.
ls_fieldcat-seltext_s = 'Customer'.
ls_fieldcat-seltext_m = 'Customer'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'NAME1'.
ls_fieldcat-seltext_s = 'Name'.
ls_fieldcat-seltext_m = 'Name1'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'WERKS'.
ls_fieldcat-seltext_s = 'Plant'.
ls_fieldcat-seltext_m = 'Plant'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'MATNR'.
ls_fieldcat-seltext_s = 'Material'.
ls_fieldcat-seltext_m = 'Material'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'MVGR1'.
ls_fieldcat-seltext_s = 'Speciality'.
ls_fieldcat-seltext_m = 'Speciality'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'PRODH'.
ls_fieldcat-seltext_s = 'Hierarchy'.
ls_fieldcat-seltext_m = 'Prod Hierarchy'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'ARKTX'.
ls_fieldcat-seltext_s = 'Description'.
ls_fieldcat-seltext_m = 'Description'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'ERNAM'.
ls_fieldcat-seltext_s = 'Created By'.
ls_fieldcat-seltext_m = 'Created By'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'ERDAT'.
ls_fieldcat-seltext_s = 'Created On'.
ls_fieldcat-seltext_m = 'Created On'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'WADAT_IST'.
ls_fieldcat-seltext_s = 'GoodsMvt.Date'.
ls_fieldcat-seltext_m = 'Goods Mvt Date'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'SERNR'.
ls_fieldcat-seltext_s = 'Serial Shipped'.
ls_fieldcat-seltext_m = 'Serial Shipped'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'SERNP'.
ls_fieldcat-seltext_s = 'Old Serial'.
ls_fieldcat-seltext_m = 'Old Serial'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'VBELV'.
ls_fieldcat-seltext_s = 'Invoice'.
ls_fieldcat-seltext_m = 'Invoice'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'INVVALUE'.
ls_fieldcat-seltext_s = 'Invoice Amt'.
ls_fieldcat-seltext_m = 'Invoice Value'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'QMNUM'.
ls_fieldcat-seltext_s = 'Notification'.
ls_fieldcat-seltext_m = 'Notification'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'QMCOD'.
ls_fieldcat-seltext_s = 'Rep LevKST'.
ls_fieldcat-seltext_m = 'Repair Level KST'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'COTXT'.
ls_fieldcat-seltext_s = 'CdTXT KST'.
ls_fieldcat-seltext_m = 'Repair Level Text KST'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'QMCOL'.
ls_fieldcat-seltext_s = 'Rep LevKSE'.
ls_fieldcat-seltext_m = 'Repair Level KSE'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'KTTXT'.
ls_fieldcat-seltext_s = 'CdTXT KSE'.
ls_fieldcat-seltext_m = 'Repair Level Text KSE'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
ENDFORM. "fieldcat_init
Data selection
FORM select_data TABLES rt_outtab LIKE gt_outtab[].
CLEAR: r_vbeln[].
Read all Invoices for the Selection
SELECT DISTINCT h~vbeln h~kunnr h~kunag
d~posnr d~matnr d~anzsn
d~serail d~vgbel d~vgpos
d~posnv d~lfimg d~arktx
d~uecha h~lfart h~erdat
h~ernam h~lfdat d~prodh
h~vkorg d~vkbur d~vkgrp
d~mvgr1 h~wadat_ist d~pstyv
d~werks
INTO (rt_outtab-vbeln, rt_outtab-kunnr,
rt_outtab-kunag, rt_outtab-posnr,
rt_outtab-matnr, rt_outtab-anzsn,
rt_outtab-serail, rt_outtab-vgbel,
rt_outtab-vgpos, rt_outtab-posnv,
rt_outtab-lfimg, rt_outtab-arktx,
rt_outtab-uecha, rt_outtab-lfart,
rt_outtab-erdat, rt_outtab-ernam,
rt_outtab-lfdat, rt_outtab-prodh,
rt_outtab-vkorg, rt_outtab-vkbur,
rt_outtab-vkgrp, rt_outtab-mvgr1,
rt_outtab-wadat, rt_outtab-pstyv,
rt_outtab-werks)
FROM likp AS h INNER JOIN lips AS d
ON h~vbeln = d~vbeln
WHERE h~vbeln IN s_vbeln
AND h~vkorg IN s_vkorg
AND h~lfart IN s_lfart
AND h~kunnr IN s_kunnr
AND h~wadat IN s_wadat
AND d~matnr IN s_matnr
AND d~werks IN s_werks
AND d~prodh IN s_prodh
AND d~vgbel IN s_vbelv
AND d~matnr LIKE 'S%'.
SELECT SINGLE * FROM vbak WHERE vbeln = rt_outtab-vgbel.
IF: sy-subrc EQ 0.
MOVE vbak-vbeln TO rt_outtab-vgbel.
MOVE vbak-auart TO rt_outtab-auart.
ENDIF.
SELECT SINGLE * FROM mara WHERE matnr = rt_outtab-matnr
AND mtart EQ 'FERT'.
CHECK sy-subrc EQ 0.
IF NOT rt_outtab-posnv IS INITIAL.
rt_outtab-vgpos = rt_outtab-posnv.
ENDIF.
CLEAR: vbfa.
SELECT SINGLE vbeln posnn rfwrt INTO
(rt_outtab-vbelv, rt_outtab-posnn, rt_outtab-netwr)
FROM vbfa WHERE vbelv EQ rt_outtab-vbeln
AND posnv EQ rt_outtab-posnr
AND vbtyp_n EQ 'M'.
CLEAR : rt_outtab-invvalue.
SELECT SINGLE * FROM vbrp WHERE vbeln = rt_outtab-vbelv
AND posnr = rt_outtab-posnn.
rt_outtab-fkimg = vbrp-fkimg.
IF rt_outtab-fkimg NE 0.
rt_outtab-invvalue = rt_outtab-netwr / rt_outtab-fkimg.
ENDIF.
APPEND rt_outtab.
IF NOT r_vbeln-low IS INITIAL.
IF r_vbeln-low GT rt_outtab-vbeln.
r_vbeln-low = rt_outtab-vbeln.
ENDIF.
IF r_vbeln-high LT rt_outtab-vbeln.
r_vbeln-high = rt_outtab-vbeln.
ENDIF.
ELSE.
r_vbeln-low = rt_outtab-vbeln.
r_vbeln-high = rt_outtab-vbeln.
ENDIF.
CLEAR: rt_outtab.
ENDSELECT.
IF NOT rt_outtab[] IS INITIAL.
SELECT vbeln posnr bstkd INTO CORRESPONDING FIELDS OF TABLE gt_vbkd
FROM vbkd
FOR ALL ENTRIES IN rt_outtab
WHERE vbeln = rt_outtab-vgbel
AND posnr = rt_outtab-vgpos.
IF NOT gt_vbkd[] IS INITIAL.
SORT gt_vbkd BY vbeln posnr.
LOOP AT rt_outtab.
READ TABLE gt_vbkd WITH KEY vbeln = rt_outtab-vgbel
posnr = rt_outtab-vgpos
BINARY SEARCH.
IF sy-subrc = 0.
rt_outtab-bstkd = gt_vbkd-bstkd.
MODIFY rt_outtab.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
*select bstkd INTO CORRESPONDING FIELDS OF TABLE gt_vbkd
from vbkd where vbeln = gt_outtab-vbeln
and posnr = '000000'.
rt_outtab-bstkd = vbkd-bstkd .
SELECT single bstkd INTO CORRESPONDING FIELDS OF gt_vbkd
FROM vbkd WHERE vbeln = gt_vbkd-vbeln
AND posnr = '000000'.
rt_outtab-bstkd = gt_vbkd-bstkd.
APPEND rt_outtab.
IF NOT r_vbeln IS INITIAL.
MOVE: 'I' TO r_vbeln-sign,
'BT' TO r_vbeln-option.
APPEND r_vbeln.
SELECT * INTO CORRESPONDING FIELDS OF TABLE i_serial
FROM ser01 WHERE lief_nr IN r_vbeln.
ENDIF.
SORT i_serial.
IF NOT i_serial[] IS INITIAL.
SELECT * INTO CORRESPONDING FIELDS OF TABLE i_object_numbers
FROM objk
FOR ALL ENTRIES IN i_serial
WHERE obknr EQ i_serial-obknr
AND taser EQ 'SER01'.
ENDIF.
SORT i_object_numbers BY obknr obzae.
LOOP AT rt_outtab.
CLEAR: rt_outtab-name1, rt_outtab-sernr, rt_outtab-lfimg,
rt_outtab-sernp, rt_outtab-kttxt.
Read the Sold To Name
SELECT SINGLE name1 INTO rt_outtab-name1
FROM kna1 WHERE kunnr EQ rt_outtab-kunnr.
Read Ship-to Customer
CLEAR: objk.
IF NOT rt_outtab-serail IS INITIAL.
READ TABLE i_serial WITH KEY lief_nr = rt_outtab-vbeln
posnr = rt_outtab-posnr.
IF sy-subrc EQ 0.
DO i_serial-anzsn TIMES.
CLEAR: rt_outtab-sernr, rt_outtab-sernp.
READ TABLE i_object_numbers WITH KEY obknr = i_serial-obknr
matnr = rt_outtab-matnr
BINARY SEARCH.
IF sy-subrc EQ 0.
rt_outtab-sernr = i_object_numbers-sernr.
DELETE i_object_numbers INDEX sy-tabix.
MOVE '1' TO rt_outtab-lfimg.
CLEAR: rt_outtab-aufnr, rt_outtab-qmnum,
rt_outtab-equnr, rt_outtab-qmcod, g_mngrp, g_mnkat.
SELECT SINGLE aufnr qmnum equnr qmcod qmgrp qmkat
INTO (rt_outtab-aufnr, rt_outtab-qmnum,
rt_outtab-equnr, rt_outtab-qmcod, g_mngrp, g_mnkat)
FROM viqmel WHERE matnr = rt_outtab-matnr
AND serialnr = rt_outtab-sernr
AND qmart EQ 'S4'
AND qmnum IN s_qmnum.
CLEAR: rt_outtab-cotxt.
SELECT SINGLE kurztext INTO rt_outtab-cotxt
FROM qpct WHERE katalogart EQ g_mnkat
AND codegruppe EQ g_mngrp
AND code EQ rt_outtab-qmcod
AND sprache EQ sy-langu.
Read Serial Number from Name Plate Data.
CLEAR: klah, kssk, ausp, cabn, g_atinn.
SELECT SINGLE atinn INTO (g_atinn) FROM cabn
WHERE atnam = 'SBANK_SERIAL_NUMBER'.
SELECT SINGLE atwrt
INTO (rt_outtab-sernp)
FROM ( klah AS a INNER JOIN kssk AS k
ON aclint = kclint )
JOIN ausp AS p
ON kobjek = pobjek
AND p~atinn = g_atinn
AND pklart = aklart
WHERE a~klart = '002'
AND a~class = 'KSE_SN_ENDOSCOPES'
AND k~objek = rt_outtab-equnr.
*KSE Repair level (activity code text from KSE-SM07 code group)
CLEAR: rt_outtab-qmcol, g_mngrp, g_mnkat.
CLEAR: rt_outtab-qmcol.
CLEAR: g_mnkat, g_mngrp.
SELECT SINGLE mnkat mngrp mncod INTO
(g_mnkat, g_mngrp, rt_outtab-qmcol)
FROM viqmma WHERE qmnum = rt_outtab-qmnum
AND mngrp EQ 'KSE-SM07'
AND kzloesch EQ space.
CLEAR: rt_outtab-kttxt.
SELECT SINGLE kurztext INTO rt_outtab-kttxt
FROM qpct WHERE katalogart EQ g_mnkat
AND codegruppe EQ g_mngrp
AND code EQ rt_outtab-qmcol
AND sprache EQ sy-langu.
rt_outtab1 = rt_outtab.
APPEND rt_outtab1.
ENDIF.
ENDDO.
ENDIF.
ENDIF.
ENDLOOP.
CLEAR: rt_outtab[].
rt_outtab[] = rt_outtab1[].
SORT rt_outtab BY vbeln posnr.
ENDFORM.
FORM get_repname *
--> P_VBELN *
--> P_POSNR *
--> P_PERNR *
--> P_ENAME *
FORM get_repname USING p_vbeln
p_posnr
CHANGING p_pernr
p_ename. "
DATA: i_vbpa LIKE vbpa OCCURS 0 WITH HEADER LINE.
CLEAR: i_vbpa[].
CALL FUNCTION 'Z_DETERMINE_ACTIVE_SALES_REP'
EXPORTING
g_salesdocument = p_vbeln
g_sales_item = p_posnr
TABLES
st_vbpa = i_vbpa.
READ TABLE i_vbpa INDEX 1.
IF sy-subrc = 0.
p_pernr = i_vbpa-pernr.
SELECT SINGLE ename INTO p_ename
FROM pa0001
WHERE pernr = i_vbpa-pernr.
ENDIF.
ENDFORM. " get_repname
FORM E03_EVENTTAB_BUILD *
--> E03_LT_EVENTS *
FORM e03_eventtab_build USING e03_lt_events TYPE slis_t_event.
DATA: ls_event TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = e03_lt_events.
READ TABLE e03_lt_events WITH KEY name = slis_ev_top_of_page
INTO ls_event.
IF sy-subrc = 0.
MOVE gc_formname_top_of_page TO ls_event-form.
APPEND ls_event TO e03_lt_events.
ENDIF.
ENDFORM.
FORM TOP_OF_PAGE *
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = gt_list_top_of_page.
ENDFORM.
*& Form USER_COMMAND
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN '&IC1'.
PERFORM display_delivery USING r_ucomm
rs_selfield.
ENDCASE.
ENDFORM.
*& Form display_delivery
FORM display_delivery
USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE rs_selfield-sel_tab_field.
WHEN '1-VBELN'.
SET PARAMETER ID 'VL' FIELD rs_selfield-value.
CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
WHEN '1-VBELV'.
SET PARAMETER ID 'VF' FIELD rs_selfield-value.
CALL TRANSACTION 'VF03N' AND SKIP FIRST SCREEN.
ENDCASE.
ENDFORM.
*& Form VARIANT_INIT
text
--> p1 text
<-- p2 text
FORM variant_init.
CLEAR g_variant.
g_variant-report = g_repid.
ENDFORM. " VARIANT_INIT
*& Form F4_FOR_VARIANT
text
--> p1 text
<-- p2 text
FORM f4_for_variant.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = g_variant
i_save = g_save
it_default_fieldcat =
IMPORTING
e_exit = g_exit
es_variant = gx_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 2.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
IF g_exit = space.
p_vari = gx_variant-variant.
ENDIF.
ENDIF.
ENDFORM.
*& Form PAI_OF_SELECTION_SCREEN
text
FORM pai_of_selection_screen.
IF NOT p_vari IS INITIAL.
MOVE g_variant TO gx_variant.
MOVE p_vari TO gx_variant-variant.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
i_save = g_save
CHANGING
cs_variant = gx_variant.
g_variant = gx_variant.
ELSE.
PERFORM variant_init.
ENDIF.
ENDFORM. -
Advice on breaking up Stacked Sequences in 6.1?
I've dived right into an old but functional
test system ~300 VI's. Flow and structure is pretty hard to follow and
I'm thinking of breaking it up into state machines.
Any ideas on how to approach a stacked sequence beast in 6.1? Flat sequence seems crucial to the method described here.
Rough layout of main vi attached:
Attachments:
main.PNG 46 KBOpen your VI in LV 8.x and use the method described in your linked thread ;-)
You can copy the sequence and remove it while displaying frame 0 in the original and frame 1 in the copy. If you have controls/indicators they will be duplicated. Also, wire connections via sequence locals will be lost. So you will have to rewire and clean up your code. But I think there's no straightforward solution because flat sequences didn't exist in 6.1.
Maybe you are looking for
-
Between my daughter and I, we have 6 devices, can they all share the same itunes account and have two separate icloud accounts? My itunes account ID is different from my apple ID and my daughter's apple ID. Is it ok that they are all different. If
-
Link a Form Field to new Text Field
PDF - form field Looking for a code to link a form field(text_1, on page #5) to another, new form field(text_2, on pages 2-4). Maybe a "Page Properties" action (i.e., Page Open: field text_2 = field text_1) ~~ Why.... busy but here's why In the PDF,
-
Change of Encoding in Sender JMS Adapter
Hi, My scenario is like that:- FTP->MQ Queue->JMS Queue->XI->R/3 From JMS Queue IDOC xml is coming in UTF-8 encoding to XI. In that IDOC xml certain special characters are there, say, some Latin or European character. But for the scenario XI->R/3,
-
We are getting an error on all four SharePoint front-end servers several hundred times per day. It looks like it is user initiated. In other words, it looks like it happens when a user tries to do something rather than when the system tries to do s
-
I've got problem in using CASE statetement Expression (OWB 9.0.4) Here's my code : CASE INGRP1.PARVW when 'RG' then '1' when 'WE' then '2' end then result is "Invalid relational operator" ??? What does it means ? Please send me the correct syntax for