Transfer line selection from crosstab to variable in planning sequence
Dear all,
We do have a small planning application with one table and one planning sequence.
To run the sequence, we want one line in the table to be selected and hand over the values of the selected month and year to the variables used in the sequence.
we tried the command:
PS_1.setVariableValue("MyVar", CROSSTAB_1, getSelectedmember("PCRMBERJR"));
but we get the error message
Cannot convert from "Member" to "VariableValue"
The info object PCRMBERJR is referencing to 0CALYEAR and is not compounded.
The Design Studio release is 1.4 SP1
The BW release is 7.3 SP8
Do you have any ideas about this error and how to hand over the row selection to a variable?
thanks
Cornelia
hi Cornelia,
in your script you reference
CROSSTAB_1, getSelectedmember("PCRMBERJR"))
for the value you want to pass.
however this is a object with several properties.
you still have to state the kind of value, internal key or external key, text, compounded etc.
I think if you choose internalkey, you should be ok.
best regards,
Jeroen
Similar Messages
-
MySQL: SELECT * FROM with a Variable from an HTML form
Hello,
I would like to insert the variable "find" from the HTML form below in the MySQL "SELECT * FROM" query beneath it. In other words, where the word "santafe" appears below, I would like to insert the variable "$find." But I can't quite get it to work. How do I do it?
Thanks in advance,
John
<form action="tsearch11.php" method="post">
<label>Enter Topic:
<input type="text" name="find" size="55"/>
<input type="hidden" name="searching" value="yes" />
<input type="submit" name="search" value="Search" />
</label>
</form>
Then, on tsearch11.php:
<?
mysql_connect("mysqlv3", "username", "password") or die(mysql_error());
mysql_select_db("sand2") or die(mysql_error());
$find = strip_tags($find);
$find = trim ($find);
$t = "SELECT * FROM santafe";
$y = mysql_query($t);
?>Putting a form variable in a SQL query to look for table or column names requires an extra level of security. You need to create an array of the valid names, and check that the form variable is in that array.
$find = get_magic_quotes_gpc() ? stripslashes($_POST['find']) : $_POST['find'];
$find = mysql_real_escape_string(trim($find));
// create an array of valid table names
$tables = array('santafe', 'sanfernando', 'guadalupe');
// check that the variable is in the permitted array
if (in_array($find, $tables)) {
$t = "SELECT * FROM $find";
$y = mysql_query($t);
} else {
$error = 'Sorry, you selected an invalid table.';
In the page itself, check whether $y exists before using it. Otherwise display the error:
if (isset($y)) {
// display the results
} elseif (isset($error)) {
echo $error; -
Copy Input Ready Query Variables into Planning Sequence
Hi all,
We have the following scenario. We developed a model using Web Template. The model has an input ready query and a Panning sequence associated with it. Both of them using the same Planning Filter that has a input variable for Profit Center (say ZPCTR). If I run this model in Portal the planning sequence automatically takes the variable given for the input ready query and the sequence runs without any problem.
We were asked to implement the same model in BEx as the users felt more comfortable using Excel when working on this model. When we assinged the planning sequence to a button and after we run the input ready query and then click on the button to run the planning sequence, we get an error message saying "You have to enter values before you execute". The Planning sequence is not taking the values we enter for the input ready query automatically.
I read through the forums on the same issue and saw that most of them reported about the same but could not find a conclusive answer. I tried the following options.
1) Enter the expected values in the excel in one location and gave the address in the "Command Range" of the planning sequence. Still it does not work.
2) Tried SAP suggested method as given in http://help.sap.com/saphelp_nw70/helpdata/en/45/e301089d574a88e10000000a155369/frameset.htm It also does not work
3) Couple of them suggested to use a different variable for Profit Center in the filter of Planning sequence (say ZPCTR_EXIT) and populate this variable. I wrote an exit for this variable and populated a fixed value say '100' into it. The sequence runs as expected. But I do not want use a constant, I want to store the value entered in ZPCTR into ZPCTR_EXIT.
when I use the regular logic "LOOP AT i_t_var_range INTO var_inpiut WHERE vnam = 'ZPCTR' ", it does not work. the exit variable works if I store some constant values, not variable values.
Can you please suggest how can I work with this. Is there any table from which I can read the profit center value the users enters into the Exit variable.
Thanks for your time,
Ram.This error generally comes when we use some user input variable in the sequence which is not restricted in the query. Even though you are using the same filter for both planning sequence and query, check the planning functions inside the sequence which might read an user input variable which is not available in the query so that it is not appearing in the query selection screen. Like in FOX reading a variable using VARV or a variable restricted in the field for condition of planning function etc. Make sure that all the variables used in the sequence (planning functions) are kept in query restrictions if they are of type ready for user input so that they will appear in the selection screen.
-
How do you transfer line art from Illustrator to Photoshop?
I created a set of icons in illustrator and would like to move them to photoshop as shape layers. The icons are created from the strokes of shapes, and when I paste them into photoshop, the shape fills in and I lose the stroke. I could add a stroke in photoshop, but it misses any internal strokes that I have drawn. I could plate them as smart objects, but I would prefer them to be shape layers. How can I get these icons into photoshop?
Dear vbach: If by "Line art" you mean Line art in the original sense, i.e., black lines on a white background, I've been doing it for twenty-odd years, copying from AI to PS. It's gotten better lately with the shaped lines now available in AI. I don't have to outline anything. Select lines in Illustrator, copy, switch to PS, and paste into a new or existing file. See attached half-size jpeg. Is this what you mean?
-
Date range selection from session/server variables - possible solution
I've recently been creating some reports who'se selection is based on the contents of a session variable, using this against a date field. Thought I'd share with everyone how I did it.
1/ Create a server/static variable called DATE_FORMAT who'se contents are 'dd/mm/yy' . Note, should include the single quotes.
2/ Create 2 session variables that represent the beginning/end date range for your selection you are after - in my case, it was the first & last date of the previous month, PREVIOUS_PERIOD_FROM and PREVIOUS_PERIOD_TO
3/ In the selection, add a filter on the date field in question, set the Operator as "is between".
4/ for each of the 2 valaues, select Add->SQL expression and enter:
EVALUATE('TO_DATE(%1,%2)',VALUEOF(NQ_SESSION."PREVIOUS_PERIOD_FROM"),VALUEOF("DATE_FORMAT"))
and
EVALUATE('TO_DATE(%1,%2)',VALUEOF(NQ_SESSION."PREVIOUS_PERIOD_TO"),VALUEOF("DATE_FORMAT"))HI,
U can check the Select Quert by using IN s_option.
Like eg:--
Select * form Zemp where empno in s_empno.
Hope this example will help u...
here Zemp is a table...... empno is a field s_empno is a Select-option.
Thanks and rEgards
Suraj S Nair -
Select more value of variable in planning folder
hi gurus,
I'm using planning folder.
In planning folder there is a variable that contain many value, for example 0COSTCENTER that contain 10 singles values. (from 1 to 10)
User wants to select some values contained in variable.
For example 2 and 5, even if it is authorized on all the cost center contained in variable.
In this moment it selects one to the time.
how I can make to resolve this problem?
Thanks
DavideDavide,
sorry to say that, that'z the way BPS works.
it's one of the BPSlimitation & many people are asking for an answer from SAP.
as a workaround, you can do following things.
1. user can select variable range, for example 2 to 5.
2. create a variable with properties "user specific values" & fill in required cost centers for each user & don't check the flag "input allowed by user".
in the 2nd option, you can assingn multiple single values to USER1.
if u assign, cost center 2 & 5 to USER1, USER1 gets ability to plan on both 2 & 5 without even selectiing cost centers.
3. you can even look into authorization variables & user-exit variables if they meet your requirements.
hope it helps. -
Hello All..
1. I have created one basic list, now if i double click on any record then it should call another transaction... this is to be done using LIST PROCESSING. i need to write code in 'At Line Selection' but where to code this at line selection.
2. Also while designing selection screen i've created execute icon using
SET PF-STATUS.. but this is also appearing when basic list is being displayed.. i dont ant this to appear... no other buttons i.e.., back button, cancel are working...
Regards,
Radhi..Hi
Sample program for At Line-Selection
*& Report ZHC010F_CONFIRMATION_COMPACT *
Module PP - PRODUCTION PLANNING
REPORT ZHC010F_CONFIRMATION_COMPACT LINE-SIZE 275 LINE-COUNT 50 NO STANDARD PAGE HEADING.
TABLES : ZHT010_FORGE,
MARC.
TYPES : BEGIN OF I_CONFIRM,
ZBUDAT TYPE ZHT010_FORGE-ZBUDAT,
MATNR TYPE ZHT010_FORGE-MATNR,
PLWRK TYPE ZHT010_FORGE-PLWRK,
ZSHIFT TYPE ZHT010_FORGE-ZSHIFT,
ZWRKCE TYPE ZHT010_FORGE-ZWRKCE,
ZWIRECD TYPE ZHT010_FORGE-ZWIRECD,
ZACQTY TYPE ZHT010_FORGE-ZACQTY,
ZREQTY TYPE ZHT010_FORGE-ZREQTY,
ZSCQTY TYPE ZHT010_FORGE-ZSCQTY,
ZSEQTY TYPE ZHT010_FORGE-ZSEQTY,
ENDBIT TYPE ZHT010_FORGE-ENDBIT,
ENDBIT2 TYPE ZHT010_FORGE-ENDBIT2,
TIMLO TYPE ZHT010_FORGE-TIMLO,
ZCONFIRM TYPE ZHT010_FORGE-ZCONFIRM,
ZCONFIRMREJ TYPE ZHT010_FORGE-ZCONFIRM,
ZCONFIRMSC TYPE ZHT010_FORGE-ZCONFIRM,
ZCONFIRMSE TYPE ZHT010_FORGE-ZCONFIRM,
ZCONFIRMBIT TYPE ZHT010_FORGE-ZCONFIRM,
ZCONFIRMBIT2 TYPE ZHT010_FORGE-ZCONFIRM,
ZCONFIRMBUR TYPE ZHT010_FORGE-ZCONFIRMBUR,
TOKEN TYPE ZHT010_FORGE-TOKEN,
JONUMBER TYPE ZHT010_FORGE-JONUMBER,
CHARG TYPE ZHT010_FORGE-CHARG,
ZACCISSQTY TYPE ZHT010_FORGE-ZACCISSQTY,
ZREJISSQTY TYPE ZHT010_FORGE-ZREJISSQTY,
ZSCMISSQTY TYPE ZHT010_FORGE-ZSCMISSQTY,
ZSEMISSQTY TYPE ZHT010_FORGE-ZSEMISSQTY,
VERID TYPE ZHT010_FORGE-VERID,
MARK(1),
DELETE(1),
END OF I_CONFIRM.
TYPES: BEGIN OF TAB_TYPE,
FCODE LIKE RSMPE-FUNC,
END OF TAB_TYPE.
TYPES : BEGIN OF STR_BACKFLUSH,
MATNR LIKE ZHT010_FORGE-MATNR,
PLWRK LIKE ZHT010_FORGE-PLWRK,
GSMNG LIKE PLAF-GSMNG,
ZWRKCE LIKE ZHT010_FORGE-ZWRKCE,
ZBUDAT LIKE ZHT010_FORGE-ZBUDAT,
ZSHIFT LIKE ZHT010_FORGE-ZSHIFT,
TIMLO LIKE ZHT010_FORGE-TIMLO,
ZWIRECD LIKE ZHT010_FORGE-ZWIRECD,
ZACQTY LIKE ZHT010_FORGE-ZACQTY,
ZREQTY LIKE ZHT010_FORGE-ZREQTY,
ZSCQTY LIKE ZHT010_FORGE-ZSCQTY,
ZSEQTY LIKE ZHT010_FORGE-ZSEQTY,
ENDBIT LIKE ZHT010_FORGE-ENDBIT,
ENDBIT2 LIKE ZHT010_FORGE-ENDBIT2,
BURSLG LIKE ZHT010_FORGE-BURSLG,
TOKEN LIKE ZHT010_FORGE-TOKEN,
JONUMBER LIKE ZHT010_FORGE-JONUMBER,
CHARG LIKE ZHT010_FORGE-CHARG,
MARK ,
VERID LIKE MKAL-VERID,
END OF STR_BACKFLUSH.
DATA : REM TYPE I,
W_COUNT TYPE I VALUE 4,
WA(200),
W_ZACQTY(15),
W_ZREQTY(15),
W_ZSCQTY(15),
W_ZSEQTY(15),
W_ENDBIT(15),
W_ENDBIT2(15),
W_ACCISSQTY(15),
W_REJISSQTY(15),
W_SCMISSQTY(15),
W_SEMISSQTY(15),
W_CONFIRM,
W_CONFIRMREJ,
W_CONFIRMSC,
W_CONFIRMSE,
W_VERID LIKE ZHT010_FORGE-VERID,
W_START_LINE TYPE I,
W_END_LINE TYPE I,
W_START_COUNT TYPE I,
W_END_COUNT TYPE I,
W_LINES TYPE I ,
W_TAB TYPE TAB_TYPE,
W_MOD TYPE I,
W_SPC(15),
W_MATNR TYPE MARA-MATNR,
W_CHARG TYPE ZHT010_FORGE-CHARG,
W_TIMLO TYPE ZHT010_FORGE-TIMLO,
W_WIRECD TYPE MARA-MATNR,
W_JONO TYPE ZHT010_FORGE-JONUMBER,
W_MACHINE TYPE ZHT010_FORGE-ZWRKCE,
W_LBKUM TYPE MBEW-LBKUM,
ZWCD TYPE ZHT010_FORGE-ZWIRECD,
W_BI TYPE C,
W_LINECOUNT TYPE I,
W_MAKTX LIKE MAKT-MAKTX,
W_STLAL LIKE STKO-STLAL.
TYPES : BEGIN OF I_ST,
MATNR TYPE MARA-MATNR,
WIRECD TYPE MARA-MATNR, "Entered in ZHC018
UOM TYPE MARA-MEINS,
RMCODE TYPE MARA-MATNR, "Actual RM by BOM Explosion
MEINS TYPE MARA-MEINS, "Actual meins of RM by BOM
SPC TYPE MBEW-LBKUM,
END OF I_ST.
TYPES :BEGIN OF STR_BATCH ,
MARK(1),
MATNR LIKE MARA-MATNR,
WIRECD LIKE MARA-MATNR,
CHARG LIKE MCHB-CHARG,
CLABS LIKE MCHB-CLABS,
QTY LIKE MSEG-ERFMG,
UOM LIKE MSEG-ERFME,
SCRPQTY LIKE MSEG-MENGE,
MEINS LIKE MSEG-ERFME,
PENQTY LIKE MCHB-CLABS,
POSSQTY LIKE MCHB-CLABS,
TOPOST LIKE MCHB-CLABS,
REQTY LIKE MCHB-CLABS,
TIMLO LIKE ZHT010_FORGE-TIMLO,
END OF STR_BATCH.
DATA: IT_CONFIRM TYPE STANDARD TABLE OF I_CONFIRM WITH HEADER LINE,
IT_BACKFLUSH TYPE STANDARD TABLE OF STR_BACKFLUSH WITH HEADER LINE
TAB TYPE STANDARD TABLE OF TAB_TYPE WITH NON-UNIQUE DEFAULT KEY
INITIAL SIZE 10,
IT_STBD_SCRP TYPE CSXDOC OCCURS 0 WITH HEADER LINE,
IT_STBE_SCRP TYPE CSXEQUI OCCURS 0 WITH HEADER LINE,
IT_STBK_SCRP TYPE CSXKLA OCCURS 0 WITH HEADER LINE,
IT_STBM_SCRP TYPE CSXMAT OCCURS 0 WITH HEADER LINE,
IT_STBP_SCRP TYPE CSXGEN OCCURS 0 WITH HEADER LINE,
IT_STBT_SCRP TYPE CSXTPL OCCURS 0 WITH HEADER LINE,
IT_BATCH TYPE STANDARD TABLE OF STR_BATCH WITH HEADER LINE,
I_BATCH TYPE STANDARD TABLE OF STR_BATCH WITH HEADER LINE,
IT_STPOX TYPE STPOX OCCURS 0 WITH HEADER LINE,
IT_MAT TYPE CSCMAT OCCURS 0 WITH HEADER LINE,
WA_STPOX LIKE IT_STPOX,
IT_ST TYPE STANDARD TABLE OF I_ST WITH HEADER LINE,
IT_ST1 TYPE STANDARD TABLE OF I_ST WITH HEADER LINE,
IT_STBD TYPE CSXDOC OCCURS 0 WITH HEADER LINE,
IT_STBE TYPE CSXEQUI OCCURS 0 WITH HEADER LINE,
IT_STBK TYPE CSXKLA OCCURS 0 WITH HEADER LINE,
IT_STBM TYPE CSXMAT OCCURS 0 WITH HEADER LINE,
IT_STBP TYPE CSXGEN OCCURS 0 WITH HEADER LINE,
IT_STBT TYPE CSXTPL OCCURS 0 WITH HEADER LINE,
IT_STBD_ACTQTY TYPE CSXDOC OCCURS 0 WITH HEADER LINE,
IT_STBE_ACTQTY TYPE CSXEQUI OCCURS 0 WITH HEADER LINE,
IT_STBK_ACTQTY TYPE CSXKLA OCCURS 0 WITH HEADER LINE,
IT_STBM_ACTQTY TYPE CSXMAT OCCURS 0 WITH HEADER LINE,
IT_STBP_ACTQTY TYPE CSXGEN OCCURS 0 WITH HEADER LINE,
IT_STBT_ACTQTY TYPE CSXTPL OCCURS 0 WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS : PR_WERKS LIKE IT_CONFIRM-PLWRK OBLIGATORY,
PR_BUDAT LIKE IT_CONFIRM-ZBUDAT OBLIGATORY.
SELECT-OPTIONS : SO_SHIFT FOR IT_CONFIRM-ZSHIFT NO-EXTENSION NO INTERVALS,
SO_MATNR FOR IT_CONFIRM-MATNR,
SO_WORK FOR IT_CONFIRM-ZWRKCE ,
SO_TOKEN FOR ZHT010_FORGE-TOKEN,
SO_CELL FOR MARC-FEVOR NO-EXTENSION NO INTERVALS.
PARAMETERS : PR_CONFM AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK B1.
**This selection screen gives an option to execute in
**foreground or in the background.
**This is needed to analyse any errors while posting data.
SELECTION-SCREEN BEGIN OF BLOCK RADIO WITH FRAME TITLE TEXT-018 NO
INTERVALS.
PARAMETERS: PR_BIN RADIOBUTTON GROUP BI DEFAULT 'X',
PR_BIA RADIOBUTTON GROUP BI.
SELECTION-SCREEN END OF BLOCK RADIO.
DATA W_WERKS LIKE ZHT010_FORGE-PLWRK.
AT SELECTION-SCREEN.
IF PR_WERKS IS NOT INITIAL.
IF PR_WERKS <> '4100'.
SET CURSOR FIELD 'PR_WERKS'.
MESSAGE E000(ZSFL) WITH 'Plant 4100 Only Allowed'.
EXIT.
ENDIF.
ENDIF.
IF PR_BIA = 'X'.
IF SY-UNAME = 'PP4100A01' OR SY-UNAME = 'PP4100B01' OR SY-UNAME = 'PP4100C01' OR
SY-UNAME = 'PP4100C02' OR SY-UNAME = 'PP4200B01' OR SY-UNAME = 'PP4200C01' OR
SY-UNAME = 'PP4200C02'.
MESSAGE E000(ZSFL) WITH 'No Authorization to Run in Foreground'.
EXIT.
ENDIF.
ENDIF.
START-OF-SELECTION.
MOVE 'DELETE' TO W_TAB-FCODE.
APPEND W_TAB TO TAB.
MOVE 'SELA' TO W_TAB-FCODE.
APPEND W_TAB TO TAB.
MOVE 'DSELA' TO W_TAB-FCODE.
APPEND W_TAB TO TAB.
SET PF-STATUS 'CONF' EXCLUDING TAB.
IF PR_CONFM = 'X'.
SELECT AZBUDAT AMATNR APLWRK AZSHIFT AZWRKCE AZWIRECD A~ZACQTY
A~ZREQTY
AZSCQTY AZSEQTY AENDBIT AENDBIT2 ATIMLO AZCONFIRM
A~ZCONFIRMREJ
AZCONFIRMSC AZCONFIRMSE AZCONFIRMBIT AZCONFIRMBIT2
AZCONFIRMBUR ATOKEN AJONUMBER ACHARG A~ZACCISSQTY
AZREJISSQTY AZSCMISSQTY AZSEMISSQTY AVERID
FROM ZHT010_FORGE AS A INNER JOIN MARC AS B ON B~MATNR =
AMATNR AND BWERKS = PR_WERKS
INNER JOIN MARA AS C ON CMATNR = AMATNR
INTO TABLE IT_CONFIRM
WHERE A~PLWRK EQ PR_WERKS
AND A~ZSHIFT IN SO_SHIFT
AND A~ZBUDAT EQ PR_BUDAT
AND A~MATNR IN SO_MATNR
AND A~ZWRKCE IN SO_WORK
AND A~TOKEN IN SO_TOKEN
AND B~FEVOR IN SO_CELL
AND C~FERTH = 'RCOMP'
AND ( A~ZCONFIRM = ''
OR A~ZCONFIRMREJ = ''
OR A~ZCONFIRMSC = ''
OR A~ZCONFIRMSE = '' )
or a~zconfirmbit = '' )
OR a~zconfirmbit2 = '' ) and
AND KZLOESCH <> 'X'.
ELSE.
SELECT AZBUDAT AMATNR APLWRK AZSHIFT AZWRKCE AZWIRECD A~ZACQTY
A~ZREQTY
AZSCQTY AZSEQTY AENDBIT AENDBIT2 ATIMLO AZCONFIRM
A~ZCONFIRMREJ
AZCONFIRMSC AZCONFIRMSE AZCONFIRMBIT AZCONFIRMBIT2
AZCONFIRMBUR ATOKEN AJONUMBER ACHARG A~ZACCISSQTY
AZREJISSQTY AZSCMISSQTY AZSEMISSQTY AVERID
FROM ZHT010_FORGE AS A INNER JOIN MARC AS B ON B~MATNR =
AMATNR AND BWERKS = PR_WERKS
INNER JOIN MARA AS C ON CMATNR = AMATNR
INTO TABLE IT_CONFIRM
WHERE A~PLWRK EQ PR_WERKS
AND A~ZSHIFT IN SO_SHIFT
AND A~ZBUDAT EQ PR_BUDAT
AND A~MATNR IN SO_MATNR
AND A~ZWRKCE IN SO_WORK
AND A~TOKEN IN SO_TOKEN
AND B~FEVOR IN SO_CELL
AND C~FERTH = 'RCOMP' AND
KZLOESCH <> 'X'.
ENDIF.
W_LINES = LINES( IT_CONFIRM ).
IF W_LINES LT 1.
MESSAGE I999(ZSFL) WITH 'No Records Found For The Seln Criteria'.
EXIT.
ENDIF.
END-OF-SELECTION.
SORT IT_CONFIRM BY MATNR.
LOOP AT IT_CONFIRM.
W_MATNR = IT_CONFIRM-MATNR.
REM = SY-TABIX MOD 2.
W_WIRECD = IT_CONFIRM-ZWIRECD.
W_TIMLO = IT_CONFIRM-TIMLO.
W_CHARG = IT_CONFIRM-CHARG.
W_JONO = IT_CONFIRM-JONUMBER.
W_MACHINE = IT_CONFIRM-ZWRKCE.
W_ZACQTY = IT_CONFIRM-ZACQTY.
W_ZREQTY = IT_CONFIRM-ZREQTY.
W_ZSCQTY = IT_CONFIRM-ZSCQTY.
W_ZSEQTY = IT_CONFIRM-ZSEQTY.
W_ENDBIT = IT_CONFIRM-ENDBIT.
W_ENDBIT2 = IT_CONFIRM-ENDBIT2.
W_ACCISSQTY = IT_CONFIRM-ZACCISSQTY.
W_REJISSQTY = IT_CONFIRM-ZREJISSQTY.
W_SCMISSQTY = IT_CONFIRM-ZSCMISSQTY.
W_SEMISSQTY = IT_CONFIRM-ZSEMISSQTY.
W_CONFIRM = IT_CONFIRM-ZCONFIRM.
W_CONFIRMREJ = IT_CONFIRM-ZCONFIRMREJ.
W_CONFIRMSC = IT_CONFIRM-ZCONFIRMSC.
W_CONFIRMSE = IT_CONFIRM-ZCONFIRMSE.
W_VERID = IT_CONFIRM-VERID.
SHIFT W_ZACQTY LEFT DELETING LEADING SPACE.
SHIFT W_ZREQTY LEFT DELETING LEADING SPACE.
SHIFT W_ZSCQTY LEFT DELETING LEADING SPACE.
SHIFT W_ZSEQTY LEFT DELETING LEADING SPACE.
SHIFT W_ENDBIT LEFT DELETING LEADING SPACE.
SHIFT W_ENDBIT2 LEFT DELETING LEADING SPACE.
SHIFT W_ACCISSQTY LEFT DELETING LEADING SPACE.
SHIFT W_REJISSQTY LEFT DELETING LEADING SPACE.
SHIFT W_SCMISSQTY LEFT DELETING LEADING SPACE.
SHIFT W_SEMISSQTY LEFT DELETING LEADING SPACE.
SELECT SINGLE MAKTX INTO W_MAKTX FROM MAKT WHERE MATNR =
IT_CONFIRM-MATNR AND SPRAS = 'E'.
IF IT_CONFIRM-ZCONFIRM = 'X' AND IT_CONFIRM-ZCONFIRMREJ = 'X' AND
IT_CONFIRM-ZCONFIRMSC = 'X'
AND IT_CONFIRM-ZCONFIRMSE = 'X' AND IT_CONFIRM-ZCONFIRMBIT = 'X'
AND IT_CONFIRM-ZCONFIRMBIT2 = 'X'.
WRITE : / SY-VLINE,
IT_CONFIRM-MARK AS CHECKBOX INPUT OFF ,
IT_CONFIRM-MATNR UNDER TEXT-002,
W_MAKTX(20) UNDER TEXT-027,
IT_CONFIRM-ZSHIFT UNDER TEXT-011,
IT_CONFIRM-ZWRKCE UNDER TEXT-010,
IT_CONFIRM-ZWIRECD UNDER TEXT-003,
IT_CONFIRM-CHARG UNDER TEXT-022,
IT_CONFIRM-JONUMBER UNDER TEXT-019.
ELSE.
WRITE : / SY-VLINE,
IT_CONFIRM-MARK AS CHECKBOX,
IT_CONFIRM-MATNR UNDER TEXT-002 HOTSPOT ON,
W_MAKTX(20) UNDER TEXT-027,
IT_CONFIRM-ZSHIFT UNDER TEXT-011,
IT_CONFIRM-ZWRKCE UNDER TEXT-010,
IT_CONFIRM-ZWIRECD UNDER TEXT-003,
IT_CONFIRM-CHARG UNDER TEXT-022 ,
IT_CONFIRM-JONUMBER UNDER TEXT-019.
ENDIF.
Check if the burslg has already been posted. Incase it
has been posted then acc, rej , pr sc and se sc qnty cannot
be in editable
IF IT_CONFIRM-ZCONFIRM EQ 'X'. "or it_confirm-zconfirmbur eq 'X'.
IF IT_CONFIRM-ZCONFIRM EQ 'X' .
WRITE W_ZACQTY UNDER TEXT-004 COLOR 5 INTENSIFIED OFF.
ELSEIF IT_CONFIRM-ZCONFIRMBUR EQ 'X'.
WRITE W_ZACQTY UNDER TEXT-004 COLOR 3 INTENSIFIED OFF.
ENDIF.
ELSE.
WRITE W_ZACQTY UNDER TEXT-004 INPUT OFF.
ENDIF.
IF IT_CONFIRM-ZCONFIRMREJ EQ 'X' OR IT_CONFIRM-ZCONFIRMBUR EQ 'X'.
IF IT_CONFIRM-ZCONFIRMREJ EQ 'X' .
WRITE W_ZREQTY UNDER TEXT-005 COLOR 5 INTENSIFIED OFF.
ELSEIF IT_CONFIRM-ZCONFIRMBUR EQ 'X'.
WRITE W_ZREQTY UNDER TEXT-005 COLOR 3 INTENSIFIED OFF.
ENDIF.
ELSE.
WRITE W_ZREQTY UNDER TEXT-005. "input on.
ENDIF.
IF IT_CONFIRM-ZCONFIRMSC EQ 'X' OR IT_CONFIRM-ZCONFIRMBUR EQ 'X'.
IF IT_CONFIRM-ZCONFIRMSC EQ 'X' .
WRITE W_ZSCQTY UNDER TEXT-006 COLOR 5 INTENSIFIED OFF.
ELSEIF IT_CONFIRM-ZCONFIRMBUR EQ 'X'.
WRITE W_ZSCQTY UNDER TEXT-006 COLOR 3 INTENSIFIED OFF.
ENDIF.
ELSE.
WRITE W_ZSCQTY UNDER TEXT-006. "input on.
ENDIF.
IF IT_CONFIRM-ZCONFIRMSE EQ 'X' OR IT_CONFIRM-ZCONFIRMBUR EQ 'X'.
IF IT_CONFIRM-ZCONFIRMSE EQ 'X' .
WRITE W_ZSEQTY UNDER TEXT-007 COLOR 5 INTENSIFIED OFF.
ELSEIF IT_CONFIRM-ZCONFIRMBUR EQ 'X'.
WRITE W_ZSEQTY UNDER TEXT-007 COLOR 3 INTENSIFIED OFF.
ENDIF.
ELSE.
WRITE W_ZSEQTY UNDER TEXT-007. "input on.
ENDIF.
IF IT_CONFIRM-ZCONFIRMBIT EQ 'X'.
WRITE W_ENDBIT UNDER TEXT-008 COLOR 5 INTENSIFIED OFF.
ELSE.
WRITE W_ENDBIT UNDER TEXT-008. "input on.
ENDIF.
IF IT_CONFIRM-ZCONFIRMBIT2 EQ 'X'.
WRITE W_ENDBIT2 UNDER TEXT-009 COLOR 5 INTENSIFIED OFF.
ELSE.
WRITE W_ENDBIT2 UNDER TEXT-009. " input on.
ENDIF.
WRITE W_ACCISSQTY UNDER TEXT-023 COLOR 5 INTENSIFIED OFF.
WRITE W_REJISSQTY UNDER TEXT-024 COLOR 5 INTENSIFIED OFF.
WRITE W_SCMISSQTY UNDER TEXT-025 COLOR 5 INTENSIFIED OFF.
WRITE W_SEMISSQTY UNDER TEXT-026 COLOR 5 INTENSIFIED OFF.
WRITE 274 SY-VLINE.
HIDE: W_MATNR,W_WIRECD,W_ZACQTY,W_ZREQTY,W_ZSCQTY,
W_ZSEQTY,W_CHARG,W_JONO,W_MACHINE,W_TIMLO,
W_CONFIRM,W_CONFIRMREJ,W_CONFIRMSC,W_CONFIRMSE,W_VERID.
ULINE (274).
ENDLOOP.
TOP-OF-PAGE.
FORMAT COLOR 5 INTENSIFIED ON.
WRITE : 'Plant: ', PR_WERKS,
"'Shift: ', so_shift-low, ' To ' , so_shift-high,
'Posting date: ', PR_BUDAT.
WRITE : /''.
ULINE (274).
FORMAT COLOR 1 INTENSIFIED ON.
WRITE :/1 SY-VLINE,
5 TEXT-002, " Material no.
21 TEXT-027, " Description
45 TEXT-011, " shift
50 TEXT-010, " Work center.
65 TEXT-003, " Wire code.
85 TEXT-022, " Heat Number
105 TEXT-019, " Job Order Number
125 TEXT-004, " Acc. qty.
140 TEXT-005, " Rej. qty.
154 TEXT-006, " Scrap.
170 TEXT-007, " Set qty.
185 TEXT-008, " Endbit in Kg.
199 TEXT-009, " SOP.
214 TEXT-023,
229 TEXT-024,
244 TEXT-025,
259 TEXT-026,
274 SY-VLINE.
FORMAT COLOR OFF.
WRITE :/''.
ULINE (274).
END-OF-PAGE.
in order to show the stock
of wire code and requirement qty of wirecode .
AT LINE-SELECTION.
DATA: W_MEINS TYPE MARA-MEINS,
W_SPC1 TYPE MBEW-LBKUM,
W_STMAT TYPE MARA-MATNR,
W_QTY1 TYPE STKO-BMENG,
W_QTY2 TYPE STKO-BMENG,
W_QTY3 TYPE STKO-BMENG,
W_QTY4 TYPE STKO-BMENG,
W_TOTAL TYPE STKO-BMENG,
W_BRGEW TYPE MARA-BRGEW,
W_GEWEI TYPE MARA-GEWEI,
W_BUOM TYPE MARA-MEINS,
W_RQTY TYPE P DECIMALS 3,
w_ferth type mara-ferth,
TMATNR LIKE MARA-MATNR,
W_BATCH1(10),
W_BATCH2(10),
W_BATCH3(10),
W_BATCH4(10),
W_BATCH5(10),
W_BALQTY LIKE MCHB-CLABS,
w_penqty like mchb-clabs,
W_CLABS LIKE MCHB-CLABS.
IF SY-LILLI <= 4.
MESSAGE S000(ZSFL) WITH 'Select Correct Record'.
STOP.
ENDIF.
*zwcd = sy-lisel+64(18).
REFRESH IT_ST.
CLEAR IT_ST.
PERFORM F001-READ_MAT.
**Logic changed. the req qty should be shown from the BOM.
**Therefore these changes are needed.
CLEAR : IT_STBD,IT_STBE,IT_STBK,IT_STBM,IT_STBP,IT_STBT,W_QTY1,W_QTY2,
W_QTY3,W_TOTAL.
W_QTY1 = SY-LISEL+119(15).
W_QTY2 = SY-LISEL+137(15).
W_QTY3 = SY-LISEL+152(15).
W_QTY4 = SY-LISEL+167(15).
W_TOTAL = W_QTY1.
PERFORM F002-GET_QTY.
CLEAR : IT_STBD_SCRP,IT_STBE_SCRP,IT_STBK_SCRP,IT_STBM_SCRP,IT_STBP_SCRP
,IT_STBT_SCRP.
PERFORM F002-GET_SCRPQTY.
SORT IT_ST.
IF SY-LSIND = 1.
WINDOW STARTING AT 1 10 ENDING AT 135 20.
SET PF-STATUS 'ZCOMP'.
*to display batch and batch qty in pop up screen
REFRESH IT_BATCH[].
CLEAR :IT_BATCH , IT_ST,TMATNR.
LOOP AT IT_ST WHERE MATNR = W_MATNR AND WIRECD = W_WIRECD.
IT_BATCH-MATNR = IT_ST-MATNR.
IT_BATCH-WIRECD = IT_ST-WIRECD .
IT_BATCH-TIMLO = W_TIMLO.
READ TABLE IT_STBP_SCRP WITH KEY OBJNR = IT_ST-RMCODE.
IF SY-SUBRC = 0.
IF IT_ST-UOM = IT_ST-MEINS.
IT_BATCH-SCRPQTY = IT_STBP_SCRP-MNGLG.
ELSE.
IF IT_ST-MEINS = 'KG' AND IT_ST-UOM = 'TO'.
IT_BATCH-SCRPQTY = IT_STBP_SCRP-MNGLG / 1000.
ELSEIF IT_ST-MEINS = 'TO' AND IT_ST-UOM ='KG'.
IT_BATCH-SCRPQTY = IT_STBP_SCRP-MNGLG * 1000.
ENDIF.
ENDIF.
ENDIF.
SELECT SINGLE MATNR INTO TMATNR FROM MCHB WHERE MATNR =
IT_BATCH-WIRECD.
IF SY-SUBRC <> 0.
READ TABLE IT_BATCH WITH KEY MATNR = W_MATNR WIRECD =
IT_BATCH-WIRECD.
IF SY-SUBRC <> 0.
APPEND IT_BATCH.
ENDIF.
ELSE.
SELECT CLABS CHARG INTO (IT_BATCH-CLABS , IT_BATCH-CHARG) FROM
MCHB
WHERE MATNR = IT_ST-WIRECD AND WERKS = PR_WERKS AND LGORT =
'0007'.
READ TABLE IT_BATCH WITH KEY MATNR = W_MATNR WIRECD =
IT_ST-WIRECD
CHARG = IT_BATCH-CHARG .
IF SY-SUBRC <> 0.
APPEND IT_BATCH.
ENDIF.
ENDSELECT.
ENDIF.
CLEAR :IT_BATCH , IT_STBP_SCRP.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM IT_BATCH COMPARING WIRECD CHARG.
DELETE IT_BATCH WHERE CLABS = 0.
ULINE AT /1(134).
FORMAT COLOR 5 INTENSIFIED OFF.
WRITE : /1 SY-VLINE,
5 TEXT-003, " Wire code.
23(1) SY-VLINE,
25 TEXT-013,
39(1) SY-VLINE,
40 TEXT-014,
43(1) SY-VLINE,
44 TEXT-015,
59(1) SY-VLINE,
60 TEXT-020,
71(1) SY-VLINE,
72 TEXT-021,
90(1) SY-VLINE,
91 'Pending Qty',
104(1) SY-VLINE,
105 'Possible Qty',
119(1) SY-VLINE,
120 'To Post',
134(1) SY-VLINE.
ULINE AT /1(134).
CLEAR IT_ST.
SORT IT_ST.
DELETE ADJACENT DUPLICATES FROM IT_ST COMPARING ALL FIELDS.
SORT IT_ST.
REFRESH IT_ST1.
CLEAR: IT_ST1,IT_ST.
LOOP AT IT_ST WHERE MATNR = W_MATNR AND WIRECD = W_WIRECD.
MOVE-CORRESPONDING IT_ST TO IT_ST1.
APPEND IT_ST1.
ENDLOOP.
SORT: IT_ST,IT_ST1.
DELETE IT_ST1 WHERE MATNR NE W_MATNR.
SORT: IT_ST,IT_ST1.
CLEAR: IT_ST1.
LOOP AT IT_ST1 WHERE MATNR = W_MATNR AND WIRECD = W_WIRECD .
W_MEINS = IT_ST1-MEINS.
W_SPC = IT_ST1-SPC.
W_STMAT = IT_ST1-WIRECD.
**ZC127 has only a one to one relationship to BOM therefore only one
**line in the internal table is expected.
CLEAR IT_STBP.
READ TABLE IT_STBP WITH KEY OBJNR = IT_ST1-RMCODE.
IF IT_ST1-UOM = IT_ST1-MEINS .
W_RQTY = IT_STBP-MNGLG.
ELSE.
IF IT_ST1-MEINS = 'KG' AND IT_ST1-UOM = 'TO'.
W_RQTY = IT_STBP-MNGLG / 1000.
ELSEIF IT_ST1-MEINS = 'TO' AND IT_ST1-UOM = 'KG'.
W_RQTY = IT_STBP-MNGLG * 1000.
ENDIF.
ENDIF.
FORMAT COLOR 2 INTENSIFIED OFF.
CLEAR : W_BATCH1,W_BATCH2,W_BATCH3,W_BATCH4,W_BATCH5,W_BALQTY,
W_CLABS.
SPLIT W_CHARG AT ',' INTO W_BATCH1 W_BATCH2 W_BATCH3 W_BATCH4
W_BATCH5.
DELETE IT_BATCH WHERE CHARG <> W_BATCH1 AND CHARG <> W_BATCH2 AND
CHARG <> W_BATCH3
AND CHARG <> W_BATCH4 AND CHARG <> W_BATCH5
AND MATNR = W_MATNR
AND WIRECD = W_WIRECD AND TIMLO = W_TIMLO.
W_BALQTY = W_RQTY.
LOOP AT IT_BATCH WHERE MATNR = W_MATNR AND WIRECD = W_WIRECD AND
TIMLO = W_TIMLO.
SELECT SINGLE PENDINGQTY FROM ZHT012_JOBORDNO INTO
IT_BATCH-PENQTY WHERE LOT = IT_BATCH-CHARG AND
RMCODE = W_WIRECD AND
JO_NO = W_JONO AND
MACHINE = W_MACHINE.
IF IT_BATCH-PENQTY >= IT_BATCH-CLABS.
W_CLABS = IT_BATCH-CLABS.
ELSE.
W_CLABS = IT_BATCH-PENQTY.
ENDIF.
IF W_BALQTY > W_CLABS.
IT_BATCH-TOPOST = W_CLABS.
W_BALQTY = W_BALQTY - W_CLABS.
ELSEIF W_BALQTY < W_CLABS.
IT_BATCH-TOPOST = W_BALQTY.
W_BALQTY = W_BALQTY - IT_BATCH-TOPOST.
ENDIF.
IF IT_BATCH-PENQTY < IT_BATCH-CLABS.
IT_BATCH-POSSQTY = IT_BATCH-PENQTY.
ELSEIF IT_BATCH-CLABS < IT_BATCH-PENQTY.
IT_BATCH-POSSQTY = IT_BATCH-CLABS.
ELSEIF IT_BATCH-CLABS = IT_BATCH-PENQTY.
IT_BATCH-POSSQTY = IT_BATCH-CLABS.
ENDIF.
MODIFY IT_BATCH .
CLEAR IT_BATCH.
ENDLOOP.
LOOP AT IT_BATCH WHERE MATNR = W_MATNR AND WIRECD = W_WIRECD .
READ TABLE IT_STBP_ACTQTY WITH KEY OBJNR = IT_ST1-RMCODE.
FORMAT COLOR 2 INTENSIFIED OFF.
WRITE:/1 SY-VLINE,
3 IT_BATCH-MARK AS CHECKBOX,
IT_BATCH-WIRECD UNDER TEXT-003,
23(1) SY-VLINE.
ON CHANGE OF IT_BATCH-WIRECD.
AT NEW WIRECD.
WRITE :
W_SPC UNDER TEXT-013 LEFT-JUSTIFIED.
ENDON.
ENDAT.
WRITE: 39(1) SY-VLINE,
IT_ST1-UOM UNDER TEXT-014 ,
43(1) SY-VLINE,
W_RQTY UNDER TEXT-015 LEFT-JUSTIFIED,
59(1) SY-VLINE,
60 IT_BATCH-CHARG,
71(1) SY-VLINE,
72 IT_BATCH-CLABS LEFT-JUSTIFIED,
90(1) SY-VLINE,
91 IT_BATCH-PENQTY LEFT-JUSTIFIED,
104(1) SY-VLINE,
105 IT_BATCH-POSSQTY LEFT-JUSTIFIED,
119(1) SY-VLINE,
120 IT_BATCH-TOPOST LEFT-JUSTIFIED,
134(1) SY-VLINE.
IT_BATCH-QTY = IT_STBP_ACTQTY-MNGLG.
IT_BATCH-UOM = IT_ST1-UOM.
IT_BATCH-MEINS = IT_ST1-MEINS.
IT_BATCH-REQTY = W_RQTY.
MODIFY IT_BATCH TRANSPORTING QTY UOM MEINS REQTY.
ENDLOOP.
CLEAR : IT_BATCH , IT_STBP_ACTQTY.
ENDLOOP.
ULINE AT /1(134).
ENDIF.
AT USER-COMMAND.
CLEAR W_MOD.
CASE SY-UCOMM.
WHEN 'SELA'.
W_COUNT = 5.
LOOP AT IT_CONFIRM.
IF ( IT_CONFIRM-ZCONFIRM = '' OR IT_CONFIRM-ZCONFIRMREJ = '' OR
IT_CONFIRM-ZCONFIRMSC = ''
OR IT_CONFIRM-ZCONFIRMSE = '' OR IT_CONFIRM-ZCONFIRMBIT = '' OR
IT_CONFIRM-ZCONFIRMBIT2 = '' ) .
IT_CONFIRM-MARK = 'X'.
MODIFY IT_CONFIRM.
READ LINE W_COUNT.
MODIFY LINE W_COUNT FIELD VALUE IT_CONFIRM-MARK FROM 'X'.
ENDIF.
W_MOD = SY-TABIX MOD 46.
IF W_MOD EQ 0.
W_COUNT = W_COUNT + 5.
ELSE.
W_COUNT = W_COUNT + 2.
ENDIF.
ENDLOOP.
WHEN 'DSELA'.
W_COUNT = 5.
LOOP AT IT_CONFIRM.
IT_CONFIRM-MARK = ''.
MODIFY IT_CONFIRM.
READ LINE W_COUNT.
MODIFY LINE W_COUNT FIELD VALUE IT_CONFIRM-MARK FROM ''.
W_MOD = SY-TABIX MOD 46.
IF W_MOD EQ 0.
W_COUNT = W_COUNT + 5.
ELSE.
W_COUNT = W_COUNT + 2.
ENDIF.
ENDLOOP.
WHEN 'BLOCK'.
W_COUNT = 5.
W_START_COUNT = W_START_LINE - W_COUNT.
W_START_COUNT = W_START_COUNT + 1.
W_END_COUNT = W_END_LINE - W_COUNT.
W_END_COUNT = W_END_COUNT + 1.
REM = W_START_COUNT MOD 2.
IF REM EQ 0.
READ LINE W_START_LINE.
MODIFY LINE W_START_LINE LINE FORMAT INTENSIFIED OFF COLOR = 1.
ELSE.
READ LINE W_START_LINE.
MODIFY LINE W_START_LINE LINE FORMAT INTENSIFIED OFF COLOR = 2.
ENDIF.
REM = W_END_COUNT MOD 2.
IF REM EQ 0.
READ LINE W_END_LINE.
MODIFY LINE W_END_LINE LINE FORMAT INTENSIFIED OFF COLOR = 1.
ELSE.
READ LINE W_END_LINE.
MODIFY LINE W_END_LINE LINE FORMAT INTENSIFIED OFF COLOR = 2.
ENDIF.
LOOP AT IT_CONFIRM FROM W_START_COUNT TO W_END_COUNT.
IT_CONFIRM-MARK = 'X'.
MODIFY IT_CONFIRM.
READ LINE W_START_LINE.
MODIFY LINE W_START_LINE FIELD VALUE IT_CONFIRM-MARK FROM 'X'.
W_START_LINE = W_START_LINE + 1.
ENDLOOP.
CLEAR : W_START_COUNT, W_END_COUNT, W_START_LINE, W_END_LINE.
WHEN 'SAV'.
DATA : W_TCOUNT TYPE I VALUE 0.
W_LINECOUNT = 4.
CLEAR IT_BATCH.
LOOP AT IT_BATCH.
READ LINE W_LINECOUNT FIELD VALUE IT_BATCH-MARK.
IF IT_BATCH-MARK = 'X'.
W_TCOUNT = W_TCOUNT + 1.
MODIFY IT_BATCH TRANSPORTING MARK.
READ TABLE I_BATCH WITH KEY MATNR = IT_BATCH-MATNR
WIRECD = IT_BATCH-WIRECD
CHARG = IT_BATCH-CHARG
TIMLO = IT_BATCH-TIMLO.
IF SY-SUBRC <> 0.
MOVE-CORRESPONDING IT_BATCH TO I_BATCH.
APPEND I_BATCH.
ENDIF.
CLEAR : IT_BATCH , I_BATCH.
ENDIF.
W_LINECOUNT = W_LINECOUNT + 1.
ENDLOOP.
IF W_TCOUNT = 0.
MESSAGE E000(ZSFL) WITH 'Select Atleast One Entry'.
ENDIF.
SELECT SINGLE WERKS INTO W_WERKS FROM MAST WHERE WERKS = PR_WERKS AND MATNR = W_MATNR.
IF SY-SUBRC = 0.
CLEAR W_STLAL.
SELECT SINGLE STLAL INTO W_STLAL FROM MKAL WHERE WERKS = PR_WERKS AND
MATNR = W_MATNR AND
VERID = W_VERID.
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
CAPID = 'PP01'
DATUV = SY-DATUM
MKTLS = 'X'
MTNRV = W_MATNR
WERKS = PR_WERKS
STLAL = W_STLAL
TABLES
STB = IT_STPOX.
ENDIF.
CLEAR W_TCOUNT.
LOOP AT IT_BATCH WHERE MARK = 'X'.
AT NEW WIRECD.
W_TCOUNT = W_TCOUNT + 1.
ENDAT.
ENDLOOP.
DESCRIBE TABLE IT_STPOX LINES SY-TFILL.
IF W_TCOUNT <> SY-TFILL.
MESSAGE E000(ZSFL) WITH 'Select all Components as in BOM'.
ENDIF.
SET SCREEN 0.
SET USER-COMMAND 'BACK'.
WHEN 'SAVE'.
DATA W_MARK TYPE I VALUE 0.
W_COUNT = 5.
CLEAR IT_BACKFLUSH.
REFRESH IT_BACKFLUSH.
LOOP AT IT_CONFIRM.
CLEAR W_ZACQTY.
CLEAR W_ZREQTY.
CLEAR W_ZSCQTY.
CLEAR W_ZSEQTY.
CLEAR W_ENDBIT.
CLEAR W_ENDBIT2.
READ LINE W_COUNT FIELD VALUE IT_CONFIRM-MARK.
IF IT_CONFIRM-MARK EQ 'X'.
READ TABLE I_BATCH WITH KEY MATNR = IT_CONFIRM-MATNR WIRECD = IT_CONFIRM-ZWIRECD
TIMLO = IT_CONFIRM-TIMLO.
IF SY-SUBRC <> 0.
W_MARK = W_MARK + 1.
ENDIF.
READ LINE W_COUNT FIELD VALUE W_ZACQTY.
IT_CONFIRM-ZACQTY = W_ZACQTY.
IF IT_CONFIRM-ZACQTY EQ 0.
IT_CONFIRM-ZCONFIRM = 'X'.
ENDIF.
READ LINE W_COUNT FIELD VALUE W_ZREQTY.
IT_CONFIRM-ZREQTY = W_ZREQTY.
IF IT_CONFIRM-ZREQTY EQ 0.
IT_CONFIRM-ZCONFIRMREJ = 'X'.
ENDIF.
READ LINE W_COUNT FIELD VALUE W_ZSCQTY.
IT_CONFIRM-ZSCQTY = W_ZSCQTY.
IF IT_CONFIRM-ZSCQTY EQ 0.
IT_CONFIRM-ZCONFIRMSC = 'X'.
ENDIF.
READ LINE W_COUNT FIELD VALUE W_ZSEQTY.
IT_CONFIRM-ZSEQTY = W_ZSEQTY.
IF IT_CONFIRM-ZSEQTY EQ 0.
IT_CONFIRM-ZCONFIRMSE = 'X'.
ENDIF.
READ LINE W_COUNT FIELD VALUE W_ENDBIT.
IT_CONFIRM-ENDBIT = W_ENDBIT.
IF IT_CONFIRM-ENDBIT EQ 0.
IT_CONFIRM-ZCONFIRMBIT = 'X'.
ENDIF.
READ LINE W_COUNT FIELD VALUE W_ENDBIT2.
IT_CONFIRM-ENDBIT2 = W_ENDBIT2.
IF IT_CONFIRM-ENDBIT2 EQ 0.
IT_CONFIRM-ZCONFIRMBIT2 = 'X'.
ENDIF.
PERFORM CHECK_FLAG_ROUTINE.
PERFORM CHECK_BATCH.
MODIFY IT_CONFIRM.
CLEAR IT_BACKFLUSH.
MOVE-CORRESPONDING IT_CONFIRM TO IT_BACKFLUSH.
UPDATE ZHT010_FORGE
SET ZACQTY = W_ZACQTY
ZREQTY = W_ZREQTY
ZSCQTY = W_ZSCQTY
ZSEQTY = W_ZSEQTY
ENDBIT = W_ENDBIT
ENDBIT2 = W_ENDBIT2
ZCONFIRM = IT_CONFIRM-ZCONFIRM
ZCONFIRMREJ = IT_CONFIRM-ZCONFIRMREJ
ZCONFIRMSC = IT_CONFIRM-ZCONFIRMSC
ZCONFIRMSE = IT_CONFIRM-ZCONFIRMSE
ZCONFIRMBIT = IT_CONFIRM-ZCONFIRMBIT
ZCONFIRMBIT2 = IT_CONFIRM-ZCONFIRMBIT2
WHERE ZBUDAT EQ IT_CONFIRM-ZBUDAT
AND MATNR EQ IT_CONFIRM-MATNR
AND PLWRK EQ IT_CONFIRM-PLWRK
AND ZSHIFT EQ IT_CONFIRM-ZSHIFT
AND JONUMBER EQ IT_CONFIRM-JONUMBER
AND ZWRKCE EQ IT_CONFIRM-ZWRKCE
AND TIMLO EQ IT_CONFIRM-TIMLO.
Transfer recs into the IT only if atleast one column
needs to be posted.
IF ( IT_CONFIRM-ZCONFIRM = '' OR IT_CONFIRM-ZCONFIRMREJ = ''
OR IT_CONFIRM-ZCONFIRMSC = ''
OR IT_CONFIRM-ZCONFIRMSE = '' OR IT_CONFIRM-ZCONFIRMBIT = ''
OR IT_CONFIRM-ZCONFIRMBIT2 = '' ) .
APPEND IT_BACKFLUSH.
ENDIF.
ENDIF.
W_MOD = SY-TABIX MOD 46.
IF W_MOD EQ 0.
W_COUNT = W_COUNT + 5.
ELSE.
W_COUNT = W_COUNT + 2.
ENDIF.
ENDLOOP.
IF W_MARK > 0.
MESSAGE E000(ZSFL) WITH 'Select the component'.
ENDIF.
DELETE IT_BACKFLUSH WHERE ZACQTY = 0 AND ZREQTY = 0 AND ZSCQTY = 0 AND ZSEQTY = 0.
DESCRIBE TABLE IT_BACKFLUSH.
CHECK SY-TFILL GT 0.
SET PARAMETER ID 'ZPLWRK' FIELD PR_WERKS.
SET PARAMETER ID 'ZBUDAT' FIELD PR_BUDAT.
IF PR_BIN = 'X'.
W_BI = 'N'.
ELSEIF PR_BIA = 'X'.
W_BI = 'A'.
ENDIF.
EXPORT W_BI FROM W_BI TO MEMORY ID 'W_BI'.
EXPORT IT_BACKFLUSH TO MEMORY ID 'CONFIRM'.
EXPORT I_BATCH TO MEMORY ID 'TMPBATCH'.
CALL TRANSACTION 'ZHC010_FINAL'.
SET SCREEN 0.
LEAVE SCREEN.
WHEN 'ENTER'.
W_COUNT = 7.
LOOP AT IT_CONFIRM.
READ LINE W_COUNT FIELD VALUE IT_CONFIRM-MARK.
IF IT_CONFIRM-MARK EQ 'X'.
READ LINE W_COUNT FIELD VALUE W_ZACQTY.
IT_CONFIRM-ZACQTY = W_ZACQTY.
READ LINE W_COUNT FIELD VALUE W_ZREQTY.
IT_CONFIRM-ZREQTY = W_ZREQTY.
READ LINE W_COUNT FIELD VALUE W_ZSCQTY.
IT_CONFIRM-ZSCQTY = W_ZSCQTY.
READ LINE W_COUNT FIELD VALUE W_ZSEQTY.
IT_CONFIRM-ZSEQTY = W_ZSEQTY.
READ LINE W_COUNT FIELD VALUE W_ENDBIT.
IT_CONFIRM-ENDBIT = W_ENDBIT.
READ LINE W_COUNT FIELD VALUE W_ENDBIT2.
IT_CONFIRM-ENDBIT2 = W_ENDBIT2.
MODIFY IT_CONFIRM.
ENDIF.
W_MOD = SY-TABIX MOD 46.
IF W_MOD EQ 0.
W_COUNT = W_COUNT + 7.
ELSE.
W_COUNT = W_COUNT + 1.
ENDIF.
ENDLOOP.
WHEN 'DELETE'.
W_COUNT = 5.
CLEAR IT_BACKFLUSH.
LOOP AT IT_CONFIRM.
READ LINE W_COUNT FIELD VALUE IT_CONFIRM-DELETE.
IF IT_CONFIRM-DELETE EQ 'X'.
Tech Note : Provision to delete any record shld be given cos it wud
create prbs
IF ( IT_CONFIRM-ZCONFIRM = '' AND IT_CONFIRM-ZCONFIRMREJ = ''
AND IT_CONFIRM-ZCONFIRMSC = ''
AND IT_CONFIRM-ZCONFIRMSE = '' AND IT_CONFIRM-ZCONFIRMBIT =
'' AND IT_CONFIRM-ZCONFIRMBIT2 = ''
AND IT_CONFIRM-ZCONFIRMBUR = '' ) .
DELETE FROM ZHT010_FORGE
WHERE ZBUDAT = IT_CONFIRM-ZBUDAT
AND MATNR = IT_CONFIRM-MATNR
AND PLWRK = IT_CONFIRM-PLWRK
AND ZSHIFT = IT_CONFIRM-ZSHIFT
AND ZWRKCE = IT_CONFIRM-ZWRKCE
AND TIMLO = IT_CONFIRM-TIMLO.
ENDIF.
ENDIF.
W_COUNT = W_COUNT + 1.
ENDLOOP.
LEAVE PROGRAM.
WHEN 'RW'.
SET SCREEN 0.
WHEN 'BACK'.
SET SCREEN 0.
ENDCASE.
*& Form check_flag_routine
text
--> p1 text
<-- p2 text
FORM CHECK_FLAG_ROUTINE .
IF IT_CONFIRM-ZCONFIRM EQ 'X'.
IT_CONFIRM-ZACQTY = 0.
ENDIF.
IF IT_CONFIRM-ZCONFIRMREJ EQ 'X'.
IT_CONFIRM-ZREQTY = 0.
ENDIF.
IF IT_CONFIRM-ZCONFIRMSC EQ 'X'.
IT_CONFIRM-ZSCQTY = 0.
ENDIF.
IF IT_CONFIRM-ZCONFIRMSE EQ 'X'.
IT_CONFIRM-ZSEQTY = 0.
ENDIF.
IF IT_CONFIRM-ZCONFIRMBIT EQ 'X'.
IT_CONFIRM-ENDBIT = 0.
ENDIF.
IF IT_CONFIRM-ZCONFIRMBIT2 EQ 'X'.
IT_CONFIRM-ENDBIT2 = 0.
ENDIF.
ENDFORM. " check_flag_routine
*& Form f001-read_mat
text
--> p1 text
<-- p2 text
FORM F001-READ_MAT .
DATA :W_FERTH LIKE MARA-FERTH.
**Note: BREMS = 'X' - give limited explosion
MEHRS = 'X' - give the multi level explosion
LOOP AT IT_CONFIRM.
CLEAR W_STLAL.
SELECT SINGLE STLAL INTO W_STLAL FROM MKAL WHERE WERKS = PR_WERKS AND
MATNR = IT_CONFIRM-MATNR AND
VERID = W_VERID.
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
BREMS = 'X'
CAPID = 'PP01'
DATUV = SY-DATUM
MEHRS = 'X'
MTNRV = IT_CONFIRM-MATNR
WERKS = IT_CONFIRM-PLWRK
STLAL = W_STLAL
TABLES
STB = IT_STPOX
EXCEPTIONS
ALT_NOT_FOUND = 1
CALL_INVALID = 2
MATERIAL_NOT_FOUND = 3
MISSING_AUTHORIZATION = 4
NO_BOM_FOUND = 5
NO_PLANT_DATA = 6
NO_SUITABLE_BOM_FOUND = 7
CONVERSION_ERROR = 8
OTHERS = 9.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
DELETE IT_STPOX WHERE DUMPS = 'x'.
SORT IT_STPOX.
LOOP AT IT_STPOX INTO WA_STPOX.
CLEAR W_BUOM.
SELECT SINGLE MEINS INTO W_BUOM
FROM MARA WHERE MATNR = IT_CONFIRM-ZWIRECD.
CLEAR IT_ST.
IT_ST-MATNR = IT_CONFIRM-MATNR.
IT_ST-WIRECD = IT_CONFIRM-ZWIRECD.
IT_ST-UOM = W_BUOM.
IT_ST-RMCODE = WA_STPOX-IDNRK.
IT_ST-MEINS = WA_STPOX-MMEIN.
APPEND IT_ST.
ENDLOOP.
ENDLOOP.
SORT IT_ST BY MATNR.
CLEAR: IT_ST.
LOOP AT IT_ST.
SELECT SINGLE FERTH INTO W_FERTH FROM MARA WHERE MATNR = IT_ST-MATNR
CLEAR W_LBKUM.
SELECT SINGLE LBKUM INTO W_LBKUM FROM MBEW
WHERE MBEW~MATNR = IT_ST-WIRECD
AND MBEW~BWKEY = PR_WERKS
AND MBEW~BWTAR = ''.
IT_ST-SPC = W_LBKUM.
MODIFY IT_ST INDEX SY-TABIX TRANSPORTING SPC .
ENDLOOP.
ENDFORM. " f001-read_mat
*& Form f002-get_qty
text
--> p1 text
<-- p2 text
---- -
Hi
How to transfer Line Items from One GL account to another GL account.
We, at the time of changing Non Open Item Manged account to Open Item Manged account, how can we transfer Line items to make this GL account Zero, If suppose line items are more than 200.
Satish
Points assured.If you are attempting to change the account from Non Open Item managed, you need to make the account balance zero. The change will be be effective only for future transactions. You need not transfer all line items, find the balance and make an entry to debit or credit to make it zero, to a temporary account. Later, once you have activated, you can reverse that transaction.
The OSS 606977 refered may be helpful if you are looking for reverse activation. i.e from Open to Non Open. Here is a brief:
Symptom
In the G/L account master record, you can activate/deactivate the 'Open item management' indicator if the balance of the account is zero. In this case, the system does not check whether postings exist on the account.
If postings exist, this could lead to problems, for example, if the clearing is reversed after the change to the indicator is made.
Other terms
FS00, FS02, FSS0, FS02, FH190, XOPVW
Reason and Prerequisites
The transactions for the maintenance of the G/L account master record did not check whether postings exist on the account. Now the program checks whether postings exist in the current year or previous two fiscal years.
Solution
Implement the attached correction or import the corresponding Support Package. Since it could make sense to change an account with balance zero from open item managed to non-open item managed (and vice versa) - despite postings to the account - the message is delivered as customizable (with error as a default setting).
The check is also carried out, when open-item management is activated, is postings exist on the account.
If you implement the note you must also carry out the following:
Use Transaction SE91 to create message 190 in message class FH with the following text:
Account balance = 0; however, postings exist on the account
Use Transaction SM30 to insert the following entry into view T100S:
Application area FH
MsgNo 190
Allowed EW
Standard E
Afterwards, the message can be customized in View V_T100C. To do this, you can use Transaction OBA5. -
Is select from view faster then select from table..???
Hello Gurus,
I want to query some data from two tables, both of table have many columns (attributes) and many rows...
I use several where clauses to retrieve data from those tables..
witch one is faster, I create a view or I just "select" from those tables???
Regards.
Nia...riedelme wrote:
3360 wrote:
riedelme wrote:
Selecting through a view almost never helps performance and frequently hurts.Views do not affect performance.
Views are simply queries and like queries there are fast and slow ones.I disagree.
First of all, to use a view you are executing a query to get a result set, then accessing the data from that result set - a built-in extra step to perform to get data.First of all that entire explanation of how views work is not correct. The optimizer will rewrite the query to make the view go away if possible.
SQL> create or replace view v as select * from dual;
View created.
SQL> explain plan for select * from dual where dummy = 'X';
Explained.
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
Plan hash value: 272002086
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 2 | 2 (0)| 00:00:01 |
|* 1 | TABLE ACCESS FULL| DUAL | 1 | 2 | 2 (0)| 00:00:01 |
Predicate Information (identified by operation id):
1 - filter("DUMMY"='X')
13 rows selected.
SQL> explain plan for select * from v where dummy = 'X';
Explained.
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
Plan hash value: 272002086
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 2 | 2 (0)| 00:00:01 |
|* 1 | TABLE ACCESS FULL| DUAL | 1 | 2 | 2 (0)| 00:00:01 |
Predicate Information (identified by operation id):
1 - filter("DUMMY"='X')
13 rows selected.Exactly the same.
>
Second, when accessing the data from the view the result sets don't have indexes for fast lookups and efficient joins on later steps.This is also known as just making stuff up and is not how the database works. care to share any references at all for any of this?
>
Third, the systems I've seen that use views extensively - I am looking at one now - tend to perform joins on views using the same tables with the same data over and over. This is a design issue and not specifically a problem with views but they lend themselves to this misuse much too easilyCorrect as I said a view is just a query, and just like queries there are good fast views and bad slow views
>
I'll concede that the problem is not specifically with views themselves but as I just said they lend themselves to misuse. Tuning views of views and views joined to views is difficultYes, queries can be misused as can almost all SQL functions and functionality.
As I said - Views are simply queries and like queries there are fast and slow ones.
Nothing that you have posted that is accurate changes that. -
SQL select * from v$log_history;
SQL> select * from v$log_history;
RECID STAMP THREAD# SEQUENCE# FIRST_CHANGE# FIRST_TIM NEXT_CHANGE#
1 726598206 1 1 190578 08-AUG-10 467652
2 726663400 1 2 467652 09-AUG-10 719320
3 726758063 1 3 719320 10-AUG-10 1044278
(1)From this output how I can know that how often archivelog is getting genarated what should be the actual interval of genaration.
(2)How can I know the size of redolog group & it's member's size.
(3)How can I determine that these sizes are perfect with my DB(Because of performance issue).You can use this query to see the gap in time between creating archive logs which should give an indication of log switches,
set linesize 1000
select name "archive log",
ftime "first time",
trunc(ftime- pftime) || ' days ' ||
trunc( mod( (ftime-pftime)*24, 24 ) ) || ' hours ' ||
trunc( mod( (ftime-pftime)*24*60, 60 ) ) || ' mins ' ||
trunc( mod( (ftime-pftime)*24*60*60, 60 ) ) ||' secs ' "Time Gap"
from
select name,
first_time ftime,
lag(first_time,1) over (order by first_time ) pftime
from v$archived_log order by first_time
/The size of the log files are in V$LOG, groups and members in V$LOGFILE.
You can extract the log switch information from the alert log.
(there is also the DBA_HIST_LOG table).
Edited by: stellios3 on Sep 30, 2010 11:27 AM -
I am building an internal table and displaying it as search help using F4IF_INT_TABLE_VALUE_REQUEST. How can I tell what line was selected from the search help? Only one field is filled with the selection, but there are several other fields attached to this that I need in my program - but I can't tell which line was selected, and the one field is not enough information to use to get the record from the internal table.
Hi,
RETURN_TAB would have the selected values.
FIELD_TAB will have the hit list fields.
DYNPFLD_MAPPING will have the Assignment of the screen fields to the internal table.
Regards, -
Abap query to select a line item # from bseg on basis of following pattern:
Hello,
I want to retrieve the line item # from bseg which has the following pattern,
account type = S
AND
gl account starting from 135***** , 136***** , 137*****
, 138***** , 139*****
hope i am comprehendable. How do i go on writing the query,
Thanks..
ShehryarHi Shehryar,
This will fetch records with GL A/C starting with <b>13</b> only , if you want 14 and others also write sepearate conditions using <b>LIKE</b> statements.
REPORT zztest.
DATA : itab TYPE STANDARD TABLE OF bseg WITH HEADER LINE.
SELECT * FROM bseg INTO TABLE itab WHERE <b>koart = 'S'
AND
hkont LIKE '13%'</b>.
This will take a lot of DB time for fetching the records, try to include Key Fields(BUKRS and GJAHR .. if possible others).
Regards,
Arun Sambargi.
Regards -
Text is selected one or two lines away from where cursor is located
I'm viewing a PDF in Adobe Digital Editions 4.0, and when I try to select text, it actually selects text 1-2 lines off from where the cursor (I-bar) is located. This makes highlighting text extremely difficult. The PDF was created in Acrobat from a .docx file. I've also tried creating the PDF from MS Word for Mac 2011. Same problem.
If I try opening the very same PDF file in Adobe Reader, the cursor highlights text just fine. If I open it in Preview, it works fine too. Just won't work in Adobe Digital Editions.
System: Mac OS 10.10 YosemiteYou say your Powerbook but your profile indicates a MacBook Pro. Sounds more like a hardware issue than anything else. Post over in the hardware forum area of the Mac you have.
-
hi,
I would like to request your help.
I want to select some data from one table .but the table is dynamic.
It is continuously changing.So what i thought is accept the tablename as
parameter and then do the select from the parameter but the select
statement is not working .
Please advise whether i can select from parameter any data or is there
any other way to do that.
Thanks in advance.
aasr.Post your code. Are you looking for a dynamic where clause?
Here is a short sample of a dynamic select statement.
Enter your table name in the parameter on selection screen. Enter you where clause in the select-option on selection screen.
I used.....
MARA
MTART = 'HALB'
report zrich_0004 .
data: xwhere(30) type c.
data: iwhere(30) type c occurs 0.
data:itab(1000) type c occurs 0 with header line.
parameters: p_table(30) type c.
select-options: s_where for xwhere.
loop at s_where.
clear iwhere.
xwhere = s_where-low.
append xwhere to iwhere.
endloop.
select * up to 100 rows into table itab
from (p_table)
where (iwhere).
loop at itab.
write:/ itab.
endloop.
Regards,
Rich Heilman
Message was edited by: Rich Heilman -
Select values from table%ROWTYPE variable into a cursor
I have a stored procedure which has an OUT parameter of table1%ROWTYPE.
In future we might have to add more OUT parameters of table2%ROWTYPE etc. But at any point of time only one will have values.
So instead of having table%ROWTYPE as OUT parameter, can I send these single row ( with variable values) in a cursor, so that declaration part atleast will not change.
Is it possible to select values from table%ROWTYPE variable into a cursor.
cursorOUT IS
SELECT * FROM varREC;
where varREC is table.ROWTYPE variable.
Or which is the better solution in this situation.
Thanks.SQL> var a refcursor
SQL> declare
2 bb emp%ROWTYPE;
3 begin
4 select * into bb from emp where rownum = 1;
5 open :a for select bb.ename ename, bb.empno empno from dual;
6 end;
7 /
PL/SQL procedure successfully completed.
SQL> print a
ENAME EMPNO
SMITH 7369Rgds.
Maybe you are looking for
-
This is the 3rd issue I have had with Apple products in the last 6 months. I begininng to wonder if this is the beginning of the end:(
-
Auto patch error usdsop cannot create a new process
Hi i am applying hrms family pack k in one vision db in testnode but i am getting following error.Any idea appsversion 11.5.10 and windows 2003 advanced server Generating product JAR files in JAVA_TOP - j:\oracle\viscomn\java with command: adjava -mx
-
Problem JDBC lookup PI 7.1
Hello everybody, I have a scenario where the PI interface that were 7, were migrated to the PI 7.1 SP 05. With this, we are having problems in PI 7.1, JDBC Lookup. If I use the JDBC Lookup that exists in PI 7.1, it works. Plus the problem, I have man
-
Lowering my bandwidth (Qos?) setup help needed
In order to better decide if a lower bandwidth from my provider will suffice I'm trying to find out if there's a way I can configure my router to limit bandwidth to a certain speed, so as to simulate what this lower speed will feel like. Having read
-
Given the following situation: I have units delivered per person. Now I have two chriteria (only example :-) I'd like to do pivoting: Persons Weight (kg) Persons Age (years) I want it to look like this: Age | <60kg | 60-80kg | >80kg 20-30 | 1 2 3 30-