07-20-2007 8:31 AM
Hi guys,
Attach Dump Analysis generated from system. i'm having this problem after several calls of module pool screen. Appreciate your advise to fix this.
Runtime errors LIST_TOO_MANY_LPROS
Occurred on 07/20/2007 at 00:11:14
-
>> Short dump has not been completely stored. It is too big.
No further list processing possible.
What happened?
-
You requested too many consecutive nested call screens.
-
What can you do?
-
If possible, leave the current screen level before making a further
selection (Back=F3 or Cancel=F12).
Print out the error message (using the "Print" function)
and make a note of the actions and input that caused the
error.
To resolve the problem, contact your SAP system administrator.
You can use transaction ST22 (ABAP Dump Analysis) to view and administer
termination messages, especially those beyond their normal deletion
date.
Error analysis
-
At present, the maximum permitted number of nested screen levels is
restricted to 50.
07-20-2007 8:34 AM
Looks like its stuck in an endless loop. Can you post the part of the code where it calls screen?
Cheers,
Sougata.
07-20-2007 8:54 AM
hi,
attach 2 portion of the code here.
1)sub rountine.
&----
*& Include ZRF_MB1B_F01 *
&----
&----
*& Form VERIFICATION
&----
text
----
--> p1 text
<-- p2 text
----
FORM verification .
IF werks <> ''.
SELECT SINGLE werks FROM t001w INTO werks WHERE werks = werks.
IF sy-subrc <> 0.
errflag = 'X'.
message_id = 'M7' .
message_type = 'E' .
message_number = '146'.
message_var1 = werks.
PERFORM error_message .
PERFORM clear_message.
CALL SCREEN 100.
ENDIF.
ELSE.
message_id = 'ZRFCONSOLE'.
message_type = 'E' .
message_number = '036'.
PERFORM error_message .
PERFORM clear_message.
IF movetype = '309'.
LEAVE TO SCREEN 800.
ELSE.
CALL SCREEN 100.
ENDIF.
ENDIF.
IF recv_mat <> ''.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = recv_mat
IMPORTING
output = recv_mat.
CALL FUNCTION 'MARC_SINGLE_READ'
EXPORTING
kzrfb = ' '
maxtz = 0
matnr = recv_mat
werks = werks
sperrmodus = ' '
std_sperrmodus = ' '
IMPORTING
wmarc = i_rec_marc
EXCEPTIONS
lock_on_marc = 1
lock_system_error = 2
wrong_call = 3
not_found = 4
OTHERS = 5.
.
IF sy-subrc <> 0.
errflag = 'X'.
message_id = sy-msgid .
message_type = sy-msgty .
message_number = sy-msgno.
message_var1 = sy-msgv1.
message_var2 = sy-msgv2.
message_var3 = sy-msgv3.
message_var4 = sy-msgv4.
PERFORM error_message .
PERFORM clear_message.
CALL SCREEN 800.
ENDIF.
ELSEIF movetype ='309' AND recv_mat = ''.
message_id = 'ZRFCONSOLE'.
message_type = 'E' .
message_number = '038'.
PERFORM error_message .
PERFORM clear_message.
CALL SCREEN 800.
ENDIF.
ENDFORM. " VERIFICATION
&----
*& Form BATCH_READ
&----
text
----
--> p1 text
<-- p2 text
----
FORM batch_read USING lgort TYPE resb-lgort
matnr TYPE resb-matnr.
READ TABLE i_mchb WITH KEY matnr = matnr lgort = lgort.
IF sy-subrc <> 0.
SELECT matnr werks lgort charg laeda clabs FROM mchb
INTO CORRESPONDING FIELDS OF TABLE i_mchb "CH 05.09.95
WHERE matnr = matnr
AND werks = werks
AND lgort = lgort
AND clabs <> ''.
SORT i_mchb DESCENDING BY clabs.
ENDIF.
ENDFORM. " BATCH_READ
&----
*& Form SLOC_UNKNOWN
&----
text
----
--> p1 text
<-- p2 text
----
FORM sloc_unknown.
SELECT matnr werks lgort charg ersda clabs FROM mchb
INTO CORRESPONDING FIELDS OF TABLE i_mchb "CH 05.09.95
WHERE matnr = xmatnr
AND werks = werks
AND lgort <> recv_sloc
AND clabs <> ''.
IF sy-subrc = 0.
SORT i_mchb DESCENDING BY clabs.
DESCRIBE TABLE i_mchb LINES batch_lines.
LOOP AT itap_items.
READ TABLE i_mchb WITH KEY matnr = itap_items-matnr lgort =
itap_items-lgort charg = itap_items-charg.
IF sy-subrc = 0.
i_mchb-rdconf = itap_items-rdconf.
i_mchb-issue_qty = itap_items-qty.
i_mchb-rec_batch = itap_items-rec_batch.
MODIFY i_mchb INDEX sy-tabix TRANSPORTING rdconf issue_qty
rec_batch.
ENDIF.
ENDLOOP.
CALL SCREEN 600.
ELSE.
SELECT amatnr aekgrp adispo blgort blabst bklabs INTO
CORRESPONDING FIELDS OF TABLE i_mard FROM marc AS a INNER JOIN mard AS
b ON amatnr = bmatnr AND awerks = bwerks
WHERE a~matnr = xmatnr
AND a~werks = werks
AND labst <> '' .
IF sy-subrc = 0.
CALL SCREEN 700.
ELSE.
errflag = 'X'.
message_id = 'M7'.
message_type = 'E' .
message_number = '046'.
message_var1 = tap_items-matnr.
PERFORM error_message .
PERFORM clear_message.
EXIT.
ENDIF.
ENDIF.
ENDFORM. " SLOC_UNKNOWN
&----
*& Form SLOC_SINGLE
&----
text
----
--> p1 text
<-- p2 text
----
FORM sloc_single.
SELECT matnr werks lgort charg ersda clabs FROM mchb
INTO CORRESPONDING FIELDS OF TABLE i_mchb "CH 05.09.95
WHERE matnr = xmatnr
AND werks = werks
AND lgort = xlgort
AND clabs <> ''.
IF sy-subrc = 0.
SORT i_mchb DESCENDING BY clabs.
DESCRIBE TABLE i_mchb LINES batch_lines.
LOOP AT itap_items.
READ TABLE i_mchb WITH KEY matnr = itap_items-matnr lgort =
itap_items-lgort charg = itap_items-charg.
IF sy-subrc = 0.
i_mchb-rdconf = itap_items-rdconf.
i_mchb-issue_qty = itap_items-qty.
i_mchb-rec_batch = itap_items-rec_batch.
MODIFY i_mchb INDEX sy-tabix TRANSPORTING rdconf issue_qty
rec_batch.
ENDIF.
ENDLOOP.
CALL SCREEN 600.
ELSE.
SELECT amatnr aekgrp adispo blgort blabst bklabs INTO
CORRESPONDING FIELDS OF TABLE i_mard FROM marc AS a INNER JOIN mard AS
b ON amatnr = bmatnr AND awerks = bwerks
WHERE a~matnr = xmatnr
AND a~werks = werks
AND lgort = xlgort
AND labst <> '' .
IF sy-subrc = 0.
CALL SCREEN 700.
ELSE.
errflag = 'X'.
message_id = 'M7'.
message_type = 'E' .
message_number = '046'.
message_var1 = tap_items-matnr.
PERFORM error_message .
PERFORM clear_message.
EXIT.
ENDIF.
ENDIF.
ENDFORM. " SLOC_SINGLE
&----
*& Form SLOC_BLOCKED_STOCK
&----
text
----
--> p1 text
<-- p2 text
----
FORM sloc_blocked_stock.
SELECT matnr werks lgort charg ersda clabs cspem FROM mchb
INTO CORRESPONDING FIELDS OF TABLE i_mchb "CH 05.09.95
WHERE matnr = xmatnr
AND werks = werks
AND LGORT <> RECV_SLOC
AND cspem <> ''.
IF sy-subrc = 0.
SORT i_mchb DESCENDING BY clabs.
DESCRIBE TABLE i_mchb LINES batch_lines.
LOOP AT itap_items.
READ TABLE i_mchb WITH KEY matnr = itap_items-matnr lgort =
itap_items-lgort charg = itap_items-charg.
IF sy-subrc = 0.
i_mchb-rdconf = itap_items-rdconf.
i_mchb-issue_qty = itap_items-qty.
i_mchb-rec_batch = itap_items-rec_batch.
MODIFY i_mchb INDEX sy-tabix TRANSPORTING rdconf issue_qty
rec_batch.
ENDIF.
ENDLOOP.
CALL SCREEN 600.
ELSE.
SELECT amatnr aekgrp adispo blgort blabst bklabs b~speme INTO
CORRESPONDING FIELDS OF TABLE i_mard FROM marc AS a INNER JOIN mard AS
b ON amatnr = bmatnr AND awerks = bwerks
WHERE a~matnr = xmatnr
AND a~werks = werks
AND speme <> '' .
IF sy-subrc = 0.
CALL SCREEN 700.
ELSE.
errflag = 'X'.
message_id = 'M7'.
message_type = 'E' .
message_number = '046'.
message_var1 = tap_items-matnr.
PERFORM error_message .
PERFORM clear_message.
EXIT.
ENDIF.
ENDIF.
ENDFORM. " SLOC_BLOCKED_STOCK
&----
*& Form UNRESTRICTED_BATCH_READ
&----
text
----
--> p1 text
<-- p2 text
----
FORM unrestricted_batch_read .
SELECT matnr werks lgort charg ersda clabs FROM mchb
INTO CORRESPONDING FIELDS OF TABLE i_mchb
WHERE matnr = xmatnr
AND werks = werks
AND lgort = xlgort
AND charg = xcharg
AND clabs <> ''.
IF sy-subrc <> 0.
errflag = 'X'.
message_id = 'M7' .
message_type = 'E' .
message_number = '042'.
message_var1 = xmatnr.
message_var2 = werks.
message_var3 = xlgort.
message_var4 = xcharg.
PERFORM error_message .
PERFORM clear_message.
CALL SCREEN 200.
ELSE.
READ TABLE i_mchb INDEX 1.
qty = i_mchb-clabs.
MODIFY I_MCHB INDEX 1 TRANSPORTING QTY.
ENDIF.
ENDFORM. " UNRESTRICTED_BATCH_READ
&----
*& Form VENDOR_UNRESTRICTED_BATCH_READ
&----
text
----
--> p1 text
<-- p2 text
----
FORM vendor_unrestricted_batch_read .
SELECT matnr werks lgort charg ersda slabs lifnr FROM mkol
INTO CORRESPONDING FIELDS OF TABLE i_mkol
WHERE matnr = xmatnr
AND werks = werks
AND lgort = xlgort
AND charg = xcharg
AND sobkz = 'K'
AND slabs <> ''.
IF sy-subrc <> 0.
errflag = 'X'.
message_id = 'M7' .
message_type = 'E' .
message_number = '042'.
message_var1 = xmatnr.
message_var2 = werks.
message_var3 = xlgort.
message_var4 = xcharg.
PERFORM error_message .
PERFORM clear_message.
CALL SCREEN 200.
ELSE.
READ TABLE i_mkol INDEX 1.
qty = i_mkol-slabs.
vendor = i_mkol-lifnr.
MODIFY I_MKOL INDEX 1 TRANSPORTING QTY.
ENDIF.
ENDFORM. " VENDOR_UNRESTRICTED_BATCH_READ
&----
*& Form BLOCKED_BATCH_READ
&----
text
----
--> p1 text
<-- p2 text
----
FORM blocked_batch_read .
SELECT matnr werks lgort charg ersda cspem FROM mchb
INTO CORRESPONDING FIELDS OF TABLE i_mchb "CH 05.09.95
WHERE matnr = xmatnr
AND werks = werks
AND lgort = xlgort
AND charg = xcharg
AND cspem <> ''.
IF sy-subrc <> 0.
errflag = 'X'.
message_id = 'M7' .
message_type = 'E' .
message_number = '042'.
message_var1 = xmatnr.
message_var2 = werks.
message_var3 = xlgort.
message_var4 = xcharg.
PERFORM error_message .
PERFORM clear_message.
CALL SCREEN 200.
ELSE.
READ TABLE i_mchb INDEX 1.
qty = i_mchb-cspem.
MODIFY I_MCHB INDEX 1 TRANSPORTING QTY.
ENDIF.
ENDFORM. " BLOCKED_BATCH_READ
&----
*& Form VENDOR_BLOCKED_BATCH_READ
&----
text
----
--> p1 text
<-- p2 text
----
FORM vendor_blocked_batch_read .
SELECT matnr werks lgort charg ersda sspem lifnr FROM mkol
INTO CORRESPONDING FIELDS OF TABLE i_mkol "CH 05.09.95
WHERE matnr = xmatnr
AND werks = werks
AND lgort = xlgort
AND charg = xcharg
AND sspem <> ''.
IF sy-subrc <> 0.
errflag = 'X'.
message_id = 'M7' .
message_type = 'E' .
message_number = '042'.
message_var1 = xmatnr.
message_var2 = werks.
message_var3 = xlgort.
message_var4 = xcharg.
PERFORM error_message .
PERFORM clear_message.
CALL SCREEN 200.
ELSE.
READ TABLE i_mkol INDEX 1.
qty = i_mkol-sspem.
vendor = i_mkol-lifnr.
MODIFY I_MKOL INDEX 1 TRANSPORTING QTY.
ENDIF.
ENDFORM. " VENDOR_BLOCKED_BATCH_READ
&----
*& Form GOODS_ISSUE
&----
text
----
--> p1 text
<-- p2 text
----
FORM goods_issue .
gmhead-pstng_date = sy-datum.
gmhead-doc_date = sy-datum.
gmhead-pr_uname = sy-uname.
gmhead-ref_doc_no = delivery_note.
gmhead-header_txt = header_txt.
gmcode-gm_code = '04'.
LOOP AT itap_items WHERE rdconf = 'X'.
gritab-material = itap_items-matnr.
gritab-plant = itap_items-werks.
gritab-stge_loc = itap_items-lgort.
gritab-batch = itap_items-charg.
gritab-move_type = movetype.
gritab-mvt_ind = ''.
gritab-entry_qnt = itap_items-qty.
gritab-spec_stock = itap_items-spec_stock.
gritab-vendor = itap_items-vendor.
gritab-move_plant = werks.
gritab-move_mat = recv_mat.
IF movetype = '412' OR movetype = '344' OR movetype = '542'.
gritab-move_stloc = itap_items-lgort.
gritab-move_batch = itap_items-iss_batch.
gritab-stge_loc = itap_items-recv_sloc.
ELSE.
gritab-move_stloc = itap_items-recv_sloc.
gritab-move_batch = itap_items-rec_batch.
ENDIF.
APPEND gritab.
ENDLOOP.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = gmhead
goodsmvt_code = gmcode
TESTRUN = ' '
IMPORTING
goodsmvt_headret = mthead
materialdocument = mat_doc
MATDOCUMENTYEAR =
TABLES
goodsmvt_item = gritab
GOODSMVT_SERIALNUMBER =
return = errmsg
.
CLEAR errflag.
READ TABLE errmsg WITH KEY type = 'E'.
IF sy-subrc = 0.
errflag = 'X'.
message_id = errmsg-id .
message_type = errmsg-type .
message_number = errmsg-number.
message_var1 = errmsg-message_v1.
message_var2 = errmsg-message_v2.
message_var3 = errmsg-message_v3.
message_var4 = errmsg-message_v4.
PERFORM error_message .
PERFORM clear_message.
CLEAR: gmhead,gritab.
REFRESH: gritab,errmsg.
LEAVE TO SCREEN 500.
ENDIF.
IF errflag IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
IF sy-subrc NE 0.
WRITE:/ 'Error in updating'.
EXIT.
ELSE.
message_id = 'M7'. .
message_type = 'S' .
message_number = '060'.
message_var1 = mthead-mat_doc.
message_var2 = errmsg-message_v2.
message_var3 = errmsg-message_v3.
message_var4 = errmsg-message_v4.
PERFORM error_message .
PERFORM clear_message.
PERFORM clear_all.
ENDIF.
ENDIF.
ENDFORM. " GOODS_ISSUE
*&----
*& Form ERROR_MESSAGE
*&----
Calling the error message screen
*----
FORM error_message.
For different types of screens there are different lengths of message
line and no of lines. Default values are 40 chars X 4 lines
for 8x40 screens.
message_type = 'W'.
msg_scr = error_screen.
message_lang = sy-langu.
message_lang = sy-langu.
CALL FUNCTION 'ZCALL_MESSAGE_SCREEN'
EXPORTING
i_msgid = message_id
i_lang = message_lang
i_msgno = message_number
i_msgv1 = message_var1
i_msgv2 = message_var2
i_msgv3 = message_var3
i_msgv4 = message_var4
i_line_size = msg_line
i_lines = msg_nln
i_message_screen = msg_scr
i_condense = con_x
IMPORTING
o_answer = msg_answ
EXCEPTIONS
invalid_message1 = 01.
IF sy-subrc <> 0.
ENDIF.
ENDFORM. " ERROR_MESSAGE
*&----
*& Form WARNING_MESSAGE
*&----
Calling the error message screen
(warning message,answer may be YES or NO)
*----
FORM warning_message.
WARNING IS DIPLAYED ON SPECIAL SCREEN, USER GIVES ANSWER Y/N
message_type = 'W'.
msg_scr = warning_screen.
message_lang = sy-langu.
CALL FUNCTION 'ZCALL_MESSAGE_SCREEN'
EXPORTING
i_msgid = message_id
i_lang = message_lang
i_msgno = message_number
i_msgv1 = message_var1
i_msgv2 = message_var2
i_msgv3 = message_var3
i_msgv4 = message_var4
i_line_size = msg_line
i_lines = msg_nln
i_message_screen = msg_scr
i_condense = con_x
IMPORTING
o_answer = msg_answ
EXCEPTIONS
invalid_message1 = 01.
IF sy-subrc <> 0.
ENDIF.
ENDFORM. "WARNING_MESSAGE
&----
*& Form CLEAR_MESSAGE
&----
text
----
--> p1 text
<-- p2 text
----
FORM clear_message .
CLEAR: message_id,message_type,message_number,message_var1,message_var2,
message_var3, message_var4 .
ENDFORM. " CLEAR_MESSAGE
&----
*& Form CLEAR_ALL
&----
text
----
--> p1 text
<-- p2 text
----
FORM clear_all .
CLEAR: wa_mard,sloc,movetype,werks, spec_stock, xlgort,
xcharg,recv_sloc,werks, wa_storage,i_storage,resb_index,selection,
sloc_selection,batch_index,xmatnr, balance,wa_batch, i_mchb,xmatnr,
tap_index,itemno,pf_itab,wo_items, gmhead,delivery_note, header_txt,
gmcode,gritab,errmsg,mat_doc, errflag,tap_items,rec_batch,iss_sloc,
iss_batch,issue_qty,vendor,spec_stock,issued_qty,recv_mat.
REFRESH:i_mard,i_storage, i_mchb,pf_itab,i_woitems,itap_items,
gritab,errmsg.
ENDFORM. " CLEAR_ALL
&----
*& Form GET_DATA
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_data.
IF xmatnr <> ''.
CLEAR i_marc.
REFRESH i_marc.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = xmatnr
IMPORTING
output = xmatnr.
*check the material available in Cons PO for 541
IF movetype = '541'.
READ TABLE xmdgi WITH KEY matnr = xmatnr.
IF sy-subrc NE 0.
message_id = 'M7'.
message_lang = sy-langu.
message_number = 551.
message_var1 = xmatnr.
PERFORM error_message.
PERFORM clear_message.
CALL SCREEN 200.
ENDIF.
ENDIF.
*end of checking
CALL FUNCTION 'MARC_SINGLE_READ'
EXPORTING
kzrfb = ' '
maxtz = 0
matnr = xmatnr
werks = werks
sperrmodus = ' '
std_sperrmodus = ' '
IMPORTING
wmarc = i_marc
EXCEPTIONS
lock_on_marc = 1
lock_system_error = 2
wrong_call = 3
not_found = 4
OTHERS = 5.
IF sy-subrc <> 0.
errflag = 'X'.
message_id = sy-msgid .
message_type = sy-msgty .
message_number = sy-msgno.
message_var1 = sy-msgv1.
message_var2 = sy-msgv2.
message_var3 = sy-msgv3.
message_var4 = sy-msgv4.
PERFORM error_message .
PERFORM clear_message.
CALL SCREEN 200.
ELSE.
ENDIF.
ENDIF.
IF xlgort <> '' AND i_marc-xchar = ''.
CLEAR: i_mard_tab,i_mard.
REFRESH: i_mard_tab,i_mard.
CALL FUNCTION 'MARD_SINGLE_READ'
EXPORTING
kzrfb = ' '
maxtz = 0
matnr = xmatnr
werks = werks
lgort = xlgort
IMPORTING
wmard = i_mard_tab
EXCEPTIONS
wrong_call = 1
not_found = 2
OTHERS = 3.
IF sy-subrc <> 0.
errflag = 'X'.
message_id = sy-msgid .
message_type = sy-msgty .
message_number = sy-msgno.
message_var1 = sy-msgv1.
message_var2 = sy-msgv2.
message_var3 = sy-msgv3.
message_var4 = sy-msgv4.
PERFORM error_message .
PERFORM clear_message.
CALL SCREEN 200.
ELSE.
IF MOVETYPE <> '344' OR MOVETYPE <> '412'.
READ TABLE itap_items WITH KEY matnr = xmatnr lgort = xlgort .
IF sy-subrc = 0.
xmatnr = itap_items-matnr.
xlgort = itap_items-lgort.
xcharg = itap_items-charg.
recv_sloc = itap_items-recv_sloc.
spec_stock = itap_items-spec_stock.
vendor = itap_items-vendor.
rec_batch = itap_items-rec_batch .
IF issued_qty = ''.
issue_qty = itap_items-qty.
PERFORM move_num_to_char USING itap_items-qty CHANGING issued_qty.
ENDIF.
ENDIF.
ELSE.
READ TABLE ITAP_ITEMS WITH KEY MATNR = XMATNR LGORT = ISS_SLOC.
IF SY-SUBRC = 0.
XMATNR = ITAP_ITEMS-MATNR.
XLGORT = ITAP_ITEMS-LGORT.
XCHARG = ITAP_ITEMS-CHARG.
RECV_SLOC = ITAP_ITEMS-RECV_SLOC.
SPEC_STOCK = ITAP_ITEMS-SPEC_STOCK.
VENDOR = ITAP_ITEMS-VENDOR.
REC_BATCH = ITAP_ITEMS-REC_BATCH .
ISSUE_QTY = ITAP_ITEMS-QTY.
ENDIF.
ENDIF.
MOVE-CORRESPONDING i_mard_tab TO i_mard.
IF movetype = '325' OR movetype = '343'.
IF spec_stock <> 'K' AND spec_stock <> ''.
message_id = 'ZRFCONSOLE'.
message_type = 'E' .
message_number = '030'.
PERFORM error_message .
PERFORM clear_message.
EXIT.
ENDIF.
IF spec_stock = 'K'.
qty = i_mard_tab-kspem.
ELSE.
qty = i_mard_tab-speme.
ENDIF.
ELSE.
IF spec_stock = 'K'.
qty = i_mard_tab-klabs.
ELSE.
qty = i_mard_tab-labst.
ENDIF.
ENDIF.
APPEND i_mard.
READ TABLE i_mard INDEX 1.
ENDIF.
ENDIF.
IF xcharg <> '' AND xlgort <> '' AND i_marc-xchar = 'X'.
CLEAR: wa_batch,i_mchb.
REFRESH: i_mchb.
READ TABLE itap_items WITH KEY matnr = xmatnr lgort = xlgort
charg = xcharg recv_sloc = recv_sloc.
IF sy-subrc = 0.
xmatnr = itap_items-matnr.
xlgort = itap_items-lgort.
xcharg = itap_items-charg.
recv_sloc = itap_items-recv_sloc.
spec_stock = itap_items-spec_stock.
vendor = itap_items-vendor.
rec_batch = itap_items-rec_batch .
IF issued_qty = ''.
issue_qty = itap_items-qty.
PERFORM move_num_to_char USING itap_items-qty CHANGING issued_qty.
ENDIF.
ENDIF.
IF spec_stock <> 'K' AND spec_stock <> ''.
message_id = 'ZRFCONSOLE'.
message_type = 'E' .
message_number = '030'.
PERFORM error_message .
PERFORM clear_message.
EXIT.
ENDIF.
IF movetype = 325 OR movetype = 343.
IF spec_stock = ''.
PERFORM blocked_batch_read.
ELSE.
PERFORM vendor_blocked_batch_read.
ENDIF.
ELSE.
IF spec_stock = ''.
PERFORM unrestricted_batch_read.
ELSE.
PERFORM vendor_unrestricted_batch_read.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " GET_DATA
&----
*& Form MOVE_NUM_TO_CHAR
&----
text
----
-->P_RESULT_QTY text
<--P_*RLMOB_CQTY text
----
FORM move_num_to_char USING p_qty TYPE p CHANGING p_char.
DATA: positive_qty TYPE p DECIMALS 5,
negative_sign(1) VALUE '-'.
IF p_qty > 0.
CONDENSE P_QTY.
convert from numeric to char
CALL FUNCTION 'SHIFT_NUMBER'
EXPORTING
num = p_qty
IMPORTING
chr = p_char.
*in case the qty is negative
ELSEIF p_qty < 0.
positive_qty = p_qty * ( -1 ).
CALL FUNCTION 'SHIFT_NUMBER'
EXPORTING
num = positive_qty
IMPORTING
chr = p_char.
SHIFT p_char RIGHT.
p_char(1) = negative_sign.
*in case the qty is zero
ELSE.
p_char = '0'.
ENDIF. " p_qty
ENDFORM. "MOVE_NUM_TO_CHAR
&----
*& Form MOVE_CHAR_TO_NUM
&----
move character value to numeric
----
CHR character value
NUM numeric value
----
FORM move_char_to_num USING chr TYPE c
num TYPE p.
errorcode = 0.
CALL FUNCTION 'MOVE_CHAR_TO_NUM'
EXPORTING
chr = chr
IMPORTING
num = num
EXCEPTIONS
convt_no_number = 1
convt_overflow = 2.
IF sy-subrc = 1.
errorcode = 9.
Cannot convert entry &1 to number
message_id = 'LF'.
message_lang = sy-langu.
message_number = 139.
message_var1 = chr.
PERFORM error_message.
PERFORM clear_message.
EXIT.
ENDIF.
IF sy-subrc = 2.
errorcode = 9.
Value is out of range
message_id = 'LF'.
message_lang = sy-langu.
message_number = 209.
message_var1 = chr.
PERFORM error_message.
PERFORM clear_message.
EXIT.
ENDIF.
ENDFORM. " MOVE_CHAR_TO_NUM
2)PAI
&----
*& Include ZRF_MB1B_I01 *
&----
&----
*& Module TRANSP_ITAB_IN INPUT
&----
text
----
MODULE transp_itab_in INPUT.
lines = sy-loopc.
idx = sy-stepl + line.
ENDMODULE. " TRANSP_ITAB_IN INPUT
&----
*& Module USER_COMMAND_0300 INPUT
&----
text
----
MODULE user_command_0300 INPUT.
temp_movetype = movetype.
PERFORM clear_all.
movetype = temp_movetype.
CLEAR temp_movetype.
CASE ok_code.
WHEN 'ENTER' OR 'DITM'.
IF NOT move_select IS INITIAL AND move_select <= 10.
READ TABLE itab_movement INDEX move_select.
movetype = itab_movement-text(3).
IF movetype = '309'.
CALL SCREEN 800.
ELSEIF movetype = '541' OR movetype = '542'.
CALL SCREEN 900.
ELSE.
CALL SCREEN 100.
ENDIF.
ELSE.
ENDIF.
WHEN 'BACK'.
LEAVE PROGRAM.
WHEN 'PGDN'.
line = line + lines.
limit = fill - lines.
IF line > limit.
line = limit.
ENDIF.
WHEN 'PGUP'.
line = line - lines.
IF line < 0.
line = 0.
ENDIF.
ENDCASE.
ENDMODULE. " USER_COMMAND_0300 INPUT
&----
*& Module USER_COMMAND_0100 INPUT
&----
text
----
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN 'ENTER' OR 'DITM'.
CLEAR ok_code.
PERFORM verification.
CALL SCREEN 200.
WHEN 'CLEAR'.
CLEAR ok_code.
CLEAR: werks, header_txt,recv_mat.
WHEN 'BACK'.
CLEAR: ok_code,werks, header_txt,recv_mat.
LEAVE TO SCREEN 300.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
&----
*& Module USER_COMMAND_0200 INPUT
&----
text
----
MODULE user_command_0200 INPUT.
CASE ok_code.
WHEN 'ENTER' .
CLEAR: ok_code.
IF movetype <> '541' AND movetype <> '542'.
WERKS = XMDGI-WERKS.
PERFORM get_data.
ELSE.
IF xmatnr <> xmdgi-matnr.
message_id = 'ZRFCONSOLE'.
message_type = 'E' .
message_number = '031'.
PERFORM error_message .
PERFORM clear_message.
EXIT.
ELSE.
werks = xmdgi-werks.
PERFORM get_data.
ENDIF.
ENDIF.
WHEN 'DEL'.
CASE i_marc-xchar.
WHEN 'X'.
DELETE itap_items WHERE matnr = xmatnr AND
lgort = xlgort AND
charg = xcharg AND
recv_sloc = recv_sloc. "#06-10-17-2250
IF sy-subrc = 0.
*update the qty in xmdgi
IF movetype = '541'.
READ TABLE xmdgi WITH KEY matnr = xmatnr.
xmdgi-erfmg = xmdgi-erfmg + issue_qty.
MODIFY xmdgi INDEX sy-tabix.
ENDIF.
CLEAR: recv_sloc,spec_stock,xmatnr,xlgort,xcharg,rec_batch,
issue_qty,issued_qty,vendor,tap_items,iss_sloc,iss_batch.
ENDIF.
WHEN ''.
DELETE itap_items WHERE matnr = xmatnr AND lgort = xlgort.
IF sy-subrc = 0.
*update the qty in xmdgi
IF movetype = '541'.
READ TABLE xmdgi WITH KEY matnr = xmatnr.
xmdgi-erfmg = xmdgi-erfmg + issue_qty.
MODIFY xmdgi INDEX sy-tabix.
ENDIF.
CLEAR: recv_sloc,spec_stock,xmatnr,xlgort,xcharg,
rec_batch,issue_qty,issued_qty,vendor,tap_items,
iss_sloc,iss_batch.
ENDIF.
ENDCASE.
WHEN 'CLEAR'.
CLEAR ok_code.
CLEAR: tap_items, xmatnr,xlgort,xcharg,issue_qty,issued_qty,
i_mchb,i_mard,tap_items-rdconf,
rec_batch,recv_sloc,vendor,spec_stock,iss_sloc,iss_batch.
REFRESH : i_mchb,i_mard.
WHEN 'SEL'.
CLEAR: ok_code.
PERFORM GET_DATA.
PERFORM move_char_to_num USING issued_qty issue_qty.
IF errorcode <> 0.
CALL SCREEN 200.
ENDIF.
IF movetype = '541' OR movetype = '542'.
werks = xmdgi-werks.
ENDIF.
PERFORM get_data.
IF movetype = '542'.
IF iss_batch = ''.
tap_items-vendor = xmdgi-lifnr.
vendor = xmdgi-lifnr.
iss_batch = ebeln.
tap_items-iss_batch = ebeln.
ELSE.
tap_items-iss_batch = iss_batch.
ENDIF.
SELECT SINGLE lblab INTO qty FROM mslb
WHERE matnr = xmatnr
AND werks = werks
AND charg = iss_batch
AND sobkz = 'O'
AND lblab <> ''.
IF sy-subrc <> 0.
errflag = 'X'.
message_id = 'M7' .
message_type = 'E' .
message_number = '042'.
message_var1 = xmatnr.
message_var2 = werks.
message_var3 = xlgort.
message_var4 = xcharg.
PERFORM error_message .
PERFORM clear_message.
CALL SCREEN 200.
ENDIF.
ENDIF.
IF movetype = '311' OR movetype = '411' OR movetype = '412' OR
movetype = '344'.
IF recv_sloc <> '' .
SELECT SINGLE lgort FROM t001l INTO recv_sloc WHERE lgort =
recv_sloc AND werks = werks.
IF sy-subrc <> 0.
errflag = 'X'.
message_id = 'HUSELECT' .
message_type = 'E' .
message_number = '031'.
message_var1 = recv_sloc.
message_var2 = werks.
PERFORM error_message .
PERFORM clear_message.
EXIT.
ENDIF.
ELSE.
message_id = 'ZRFCONSOLE'.
message_type = 'E' .
message_number = '037'.
PERFORM error_message .
PERFORM clear_message.
EXIT.
ENDIF.
ELSEIF MOVETYPE = '412' OR MOVETYPE = '344'.
IF ISS_SLOC <> '' .
SELECT SINGLE LGORT FROM T001L INTO RECV_SLOC WHERE LGORT =
ISS_SLOC AND WERKS = WERKS.
IF SY-SUBRC <> 0.
ERRFLAG = 'X'.
MESSAGE_ID = 'HUSELECT' .
MESSAGE_TYPE = 'E' .
MESSAGE_NUMBER = '041'.
MESSAGE_VAR1 = RECV_SLOC.
MESSAGE_VAR2 = WERKS.
PERFORM ERROR_MESSAGE .
PERFORM CLEAR_MESSAGE.
EXIT.
ENDIF.
ELSE.
MESSAGE_ID = 'ZRFCONSOLE'.
MESSAGE_TYPE = 'E' .
MESSAGE_NUMBER = '037'.
PERFORM ERROR_MESSAGE .
PERFORM CLEAR_MESSAGE.
EXIT.
ENDIF.
ENDIF.
IF spec_stock <> 'K' AND spec_stock <> ''.
message_id = 'ZRFCONSOLE'.
message_type = 'E' .
message_number = '030'.
PERFORM error_message .
PERFORM clear_message.
EXIT.
ENDIF.
IF spec_stock = 'K'.
IF vendor <> ''.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = vendor
IMPORTING
output = vendor.
ELSE.
message_id = 'ZRFCONSOLE'.
message_type = 'E' .
message_number = '039'.
PERFORM error_message .
PERFORM clear_message.
EXIT.
ENDIF.
ENDIF.
IF xmatnr = ''.
message_id = 'ZRFCONSOLE'.
message_type = 'E' .
message_number = '031'.
PERFORM error_message .
PERFORM clear_message.
EXIT.
ELSEIF xlgort = '' .
message_id = 'ZRFCONSOLE'.
message_type = 'E' .
message_number = '032'.
PERFORM error_message .
PERFORM clear_message.
EXIT.
ELSEIF i_marc-xchar = '' AND xcharg <> ''.
message_id = 'ZRFCONSOLE'.
message_type = 'E' .
message_number = '035'.
PERFORM error_message .
PERFORM clear_message.
EXIT.
ELSEIF xcharg = '' AND i_marc-xchar ='X'.
message_id = 'ZRFCONSOLE'.
message_type = 'E' .
message_number = '033'.
PERFORM error_message .
PERFORM clear_message.
EXIT.
ELSEIF issue_qty = ''.
message_id = 'ZRFCONSOLE'.
message_type = 'E' .
message_number = '034'.
PERFORM error_message .
PERFORM clear_message.
EXIT.
ELSEIF issue_qty > qty.
errflag = 'X'.
message_id = 'ZRFCONSOLE'.
message_type = 'E' .
message_number = '017'.
message_var2 = xmatnr.
message_var3 = werks.
PERFORM error_message .
PERFORM clear_message.
EXIT.
message_id = 'ZRFCONSOLE'.
message_type = 'E' .
message_number = '011'.
PERFORM error_message .
PERFORM clear_message.
EXIT.
ELSEIF i_marc-xchar = 'X'.
IF movetype = '541' AND movetype <> '542'.
vendor = xmdgi-lifnr.
rec_batch = ebeln.
DATA: v1(1) VALUE '0'.
SHIFT rec_batch LEFT DELETING LEADING v1.
ENDIF.
IF recv_sloc = ''.
recv_sloc = xlgort.
ENDIF.
IF iss_sloc = ''.
iss_sloc = xlgort.
ENDIF.
*if excess qty entered show them warning for 541
IF issue_qty > xmdgi-erfmg AND movetype = '541'.
DATA: issue_qty1 LIKE resb-bdmng.
issue_qty1 = issue_qty - xmdgi-erfmg.
message_id = 'ZRFCONSOLE' .
message_type = 'W' .
message_number = '001'.
message_var1 = 'Excess Qty '.
message_var2 = issue_qty1.
message_var3 = 'issued'.
message_var4 = 'Do you want to Continue'.
PERFORM warning_message.
IF msg_answ = 'N'.
CLEAR: issued_qty,issue_qty.
EXIT.
ENDIF.
ENDIF.
READ TABLE itap_items WITH KEY matnr = xmatnr lgort =
xlgort charg = xcharg .
IF sy-subrc <> 0.
IF movetype <> '541' AND movetype <> '542'.
IF rec_batch = '' .
tap_items-rec_batch = xcharg.
rec_batch = xcharg.
ENDIF.
IF iss_batch = ''.
tap_items-iss_batch = xcharg.
iss_batch = xcharg.
ENDIF.
ENDIF.
tap_items-rdconf = 'X'.
tap_items-matnr = xmatnr.
tap_items-werks = werks.
tap_items-lgort = xlgort.
tap_items-charg = xcharg.
tap_items-qty = issue_qty.
tap_items-recv_sloc = recv_sloc.
tap_items-iss_sloc = iss_sloc.
tap_items-spec_stock = spec_stock.
tap_items-rec_batch = rec_batch.
tap_items-iss_batch = iss_batch.
tap_items-vendor = vendor.
APPEND tap_items TO itap_items.
ELSE.
itap_index = sy-tabix.
tap_items-rdconf = 'X'.
tap_items-matnr = xmatnr.
tap_items-werks = werks.
tap_items-lgort = xlgort.
tap_items-charg = xcharg.
tap_items-qty = issue_qty.
tap_items-rec_batch = rec_batch.
tap_items-iss_batch = iss_batch.
tap_items-recv_sloc = recv_sloc.
tap_items-spec_stock = spec_stock.
tap_items-vendor = vendor.
IF rec_batch = ''.
tap_items-rec_batch = xcharg.
rec_batch = xcharg.
ELSE.
tap_items-rec_batch = rec_batch.
ENDIF.
APPEND tap_items TO itap_items.
MODIFY ITAP_ITEMS FROM TAP_ITEMS INDEX ITAP_INDEX. thiru
ENDIF.
ELSEIF i_marc-xchar = ''.
*if excess qty entered show them warning for 541
IF issue_qty > xmdgi-erfmg AND movetype = '541'.
issue_qty1 = issue_qty - xmdgi-erfmg.
message_id = 'ZRFCONSOLE' .
message_type = 'W' .
message_number = '001'.
message_var1 = 'Excess Qty '.
message_var2 = issue_qty1.
message_var3 = 'issued'.
message_var4 = 'Do you want to Continue'.
PERFORM warning_message.
IF msg_answ = 'N'.
CLEAR: issued_qty,issue_qty.
EXIT.
ENDIF.
ENDIF.
READ TABLE itap_items WITH KEY matnr = xmatnr lgort = xlgort .
IF sy-subrc <> 0.
IF recv_sloc = ''.
recv_sloc = xlgort.
ENDIF.
IF iss_sloc = ''.
iss_sloc = xlgort.
ENDIF.
IF movetype = '541' AND movetype <> '542'.
vendor = xmdgi-lifnr.
ENDIF.
tap_items-rdconf = 'X'.
tap_items-matnr = xmatnr.
tap_items-werks = werks.
tap_items-lgort = xlgort.
tap_items-qty = issue_qty.
tap_items-recv_sloc = recv_sloc.
tap_items-iss_sloc = iss_sloc.
tap_items-spec_stock = spec_stock.
tap_items-vendor = vendor.
APPEND tap_items TO itap_items.
ELSE.
itap_index = sy-tabix.
tap_items-rdconf = 'X'.
tap_items-matnr = xmatnr.
tap_items-werks = werks.
tap_items-lgort = xlgort.
tap_items-qty = issue_qty.
tap_items-recv_sloc = recv_sloc.
tap_items-iss_sloc = iss_sloc.
tap_items-spec_stock = spec_stock.
tap_items-vendor = vendor.
MODIFY ITAP_ITEMS FROM TAP_ITEMS INDEX ITAP_INDEX. thiru
APPEND tap_items TO itap_items.
ENDIF.
ELSE.
message_id = 'ZRFCONSOLE'.
message_type = 'E' .
message_number = '055'.
PERFORM error_message .
PERFORM clear_message.
EXIT.
ENDIF.
*update the qty in xmdgi
IF movetype = '541'.
READ TABLE xmdgi WITH KEY matnr = xmatnr.
xmdgi-erfmg = xmdgi-erfmg - issue_qty.
MODIFY xmdgi INDEX sy-tabix.
ENDIF.
WHEN 'SLOC'.
CLEAR ok_code.
IF movetype <> '325' AND movetype <> '343'.
IF xlgort = ''.
PERFORM sloc_unknown.
ELSE.
PERFORM sloc_single.
ENDIF.
ELSE.
PERFORM sloc_blocked_stock.
ENDIF.
WHEN 'DITM'.
CLEAR ok_code.
IF NOT itap_items[] IS INITIAL.
CALL SCREEN 500.
ELSE.
message_id = 'ZRFCONSOLE' .
message_type = 'E' .
message_number = '056'.
MESSAGE_VAR1 = WERKS.
PERFORM error_message .
PERFORM clear_message.
EXIT.
ENDIF.
WHEN 'BACK'.
IF movetype = '541' OR movetype = '542'.
CLEAR: ok_code, xmatnr,xlgort,xcharg,issue_qty,vendor,spec_stock,
rec_batch,recv_sloc,tap_items,i_mchb,i_mard,iss_batch.
REFRESH:i_mard,i_mchb.
LEAVE TO SCREEN 1100.
ELSE.
CLEAR ok_code.
message_id = 'ZRFCONSOLE' .
message_type = 'W' .
message_number = '001'.
message_var1 = 'Are you sure you '.
message_var2 = 'want to exit?'.
PERFORM warning_message.
IF msg_answ = 'Y'.
CLEAR: ok_code, xmatnr,xlgort,xcharg,issue_qty,vendor,spec_stock,
rec_batch,recv_sloc,tap_items,i_mchb,i_mard,tap_items,werks,recv_mat,
header_txt,iss_batch.
.
REFRESH:i_mard,i_mchb,itap_items.
LEAVE TO SCREEN 300.
ENDIF.
ENDIF.
ENDCASE.
ENDMODULE. " USER_COMMAND_0200 INPUT
&----
*& Module USER_COMMAND_0500 INPUT
&----
text
----
MODULE user_command_0500 INPUT.
CASE ok_code.
WHEN 'PGDN'.
CLEAR ok_code.
IF tap_items-rdconf <> ''.
ENDIF.
temporary_index = tap_index + tap_init_size.
IF temporary_index > tap_total_lines.
EXIT.
ELSE.
tap_index = tap_index + tap_init_size.
current_line = tap_index.
ENDIF.
WHEN 'PGUP'.
CLEAR ok_code.
tap_index = tap_index - tap_init_size .
IF tap_index <= 0.
tap_index = 1.
ENDIF.
current_line = tap_index.
WHEN 'SAVE'.
PERFORM goods_issue.
PERFORM clear_all.
CALL SCREEN 300.
WHEN 'BACK'.
recv_sloc = tap_items-recv_sloc.
xlgort = tap_items-lgort.
xmatnr = tap_items-matnr.
xcharg = tap_items-charg.
issued_qty = tap_items-qty.
rec_batch = tap_items-rec_batch.
iss_batch = tap_items-iss_batch.
vendor = tap_items-vendor.
CLEAR: tap_items,tap_index.
tap_items-rdconf = 'X'.
IF movetype = '541' OR movetype = '542'.
LEAVE TO SCREEN 1100.
ELSE.
CLEAR: TAP_ITEMS,TAP_INDEX.
LEAVE TO SCREEN 200.
ENDIF.
ENDCASE.
ENDMODULE. " USER_COMMAND_0500 INPUT
&----
*& Module USER_COMMAND_0800 INPUT
&----
text
----
MODULE user_command_0800 INPUT.
CASE ok_code.
WHEN 'ENTER' OR 'DITM'.
CLEAR ok_code.
PERFORM verification.
CALL SCREEN 200.
WHEN 'CLEAR'.
CLEAR: werks,recv_sloc, recv_mat, header_txt.
WHEN 'BACK'.
CLEAR ok_code.
CLEAR: werks,recv_sloc, recv_mat, header_txt.
LEAVE TO SCREEN 300.
ENDCASE.
ENDMODULE. " USER_COMMAND_0800 INPUT
&----
*& Module USER_COMMAND_0900 INPUT
&----
text
----
MODULE user_command_0900 INPUT.
CASE ok_code.
WHEN 'BACK'.
CLEAR: ebeln,ebelp.
LEAVE TO SCREEN 300.
WHEN 'CLEAR'.
CLEAR: ebeln.
WHEN 'DITM' OR 'ENTER'.
CALL FUNCTION 'ME_READ_COMP_GOODS_ISSUE'
EXPORTING
ebeln = ebeln
ebelp = ebelp
TABLES
xmdgi = xmdgi
EXCEPTIONS
not_found_any = 01
not_found_one = 02
not_valid_any = 03
not_valid_one = 04.
CASE sy-subrc.
WHEN 0.
IF xmdgi[] IS INITIAL.
MESSAGE ID 'M7' TYPE 'E' NUMBER 033 WITH ebeln.
ELSE.
CALL SCREEN 1100.
ENDIF.
WHEN 1.
message_id = 'M7' .
message_type = 'E' .
message_number = '033'.
message_var1 = ebeln.
PERFORM error_message .
PERFORM clear_message.
EXIT.
MESSAGE ID 'M7' TYPE 'E' NUMBER 033 WITH EBELN.
WHEN 2.
message_id = 'M7' .
message_type = 'E' .
message_number = '150'.
message_var1 = ebeln.
message_var2 = ebelp.
PERFORM error_message .
PERFORM clear_message.
EXIT.
WHEN 3.
message_id = 'M7' .
message_type = 'E' .
message_number = '151'.
message_var1 = ebeln.
PERFORM error_message .
PERFORM clear_message.
EXIT.
WHEN 4.
IF NOT ebelp IS INITIAL.
message_id = 'M7' .
message_type = 'E' .
message_number = '152'.
message_var1 = ebeln.
message_var2 = ebelp.
PERFORM error_message .
PERFORM clear_message.
EXIT.
ELSE.
message_id = 'M7' .
message_type = 'E' .
message_number = '153'.
message_var1 = ebeln.
PERFORM error_message .
PERFORM clear_message.
EXIT.
ENDIF.
ENDCASE.
ENDCASE.
ENDMODULE. " USER_COMMAND_0900 INPUT
&----
*& Module USER_COMMAND_1100 INPUT
&----
text
----
MODULE user_command_1100 INPUT.
CASE ok_code.
WHEN 'PGDN'.
CLEAR ok_code.
temporary_index = po_index + tap_init_size.
IF temporary_index > po_lines.
EXIT.
ELSE.
po_index = po_index + tap_init_size.
ENDIF.
WHEN 'PGUP'.
CLEAR ok_code.
po_index = po_index - tap_init_size .
IF po_index <= 0.
po_index = 1.
ENDIF.
WHEN 'BACK'.
CLEAR ok_code.
message_id = 'ZRFCONSOLE' .
message_type = 'W' .
message_number = '001'.
message_var1 = 'Are you sure you '.
message_var2 = 'want to exit?'.
PERFORM warning_message.
IF msg_answ = 'Y'.
CLEAR: ok_code, xmatnr,xlgort,xcharg,issue_qty,vendor,spec_stock,
rec_batch,recv_sloc,tap_items,i_mchb,i_mard,iss_batch,issued_qty.
CLEAR: tap_index,xmdgi,tap_items,itap_items.
REFRESH: xmdgi,itap_items.
LEAVE TO SCREEN 900.
ENDIF.
WHEN 'ENTER' OR 'DITM'.
MOVE-CORRESPONDING xmdgi TO tap_items.
CALL SCREEN 200.
WHEN 'DITM'.
IF NOT ITAP_ITEMS[] IS INITIAL.
CALL SCREEN 500.
ENDIF.
ENDCASE.
ENDMODULE. " USER_COMMAND_1100 INPUT
&----
*& Module USER_COMMAND_0600 INPUT
&----
text
----
MODULE user_command_0600 INPUT.
CASE ok_code.
WHEN 'SEL'.
DATA : QTY LIKE RESB-BDMNG.
CLEAR: ok_code,qty.
*IF I_MCHB = '0,000'.
ISSUE_QTY = ''.
*ENDIF.
IF I_MCHB-RDCONF IS INITIAL AND I_MCHB-ISSUE_QTY <> ''.
IF i_mchb-issue_qty <> ''.
IF i_mchb-issue_qty > batch_qty.
DATA:SHORTFALL(18) TYPE C..
SHORTFALL = I_MCHB-ISSUE_QTY - BATCH_QTY.
CONDENSE SHORTFALL.
CONCATENATE 'BA Unrestricted-use' SHORTFALL 'EA' ':' INTO
MESSAGE_VAR1 SEPARATED BY SPACE.
errflag = 'X'.
message_id = 'ZRFCONSOLE'.
message_type = 'E' .
message_number = '017'.
message_var2 = tap_items-matnr.
message_var3 = werks.
CONCATENATE I_MCHB-LGORT '' I_MCHB-CHARG INTO MESSAGE_VAR4 SEPARATED
BY SPACE.
PERFORM error_message .
PERFORM clear_message.
EXIT.
ENDIF.
i_mchb-rdconf = 'X'.
IF i_mchb-rec_batch = ''.
I_MCHB-REC_BATCH = REC_BATCH.
ELSE.
i_mchb-rec_batch = i_mchb-charg.
ENDIF.
tap_items-rdconf = i_mchb-rdconf.
tap_items-matnr = xmatnr.
tap_items-werks = werks.
tap_items-lgort = i_mchb-lgort.
tap_items-qty = i_mchb-issue_qty.
tap_items-charg = i_mchb-charg.
tap_items-rec_batch = i_mchb-rec_batch.
READ TABLE itap_items WITH KEY matnr = xmatnr
lgort = tap_items-lgort charg = i_mchb-charg.
IF sy-subrc = 0.
MODIFY TABLE itap_items FROM tap_items.
MODIFY i_mchb INDEX batch_index TRANSPORTING issue_qty rdconf
rec_batch.
ELSE.
APPEND tap_items TO itap_items .
MODIFY i_mchb INDEX batch_index TRANSPORTING issue_qty rdconf
rec_batch.
ENDIF.
ELSEIF i_mchb-issue_qty = '0.000'.
i_mchb-rdconf = ''.
itap_items-rdconf = i_mchb-rdconf.
issue_qty = ''.
issued_qty = ''.
rec_batch = ''.
i_mchb-rec_batch = ''.
i_mchb-issue_qty = issue_qty.
MODIFY i_mchb INDEX batch_index TRANSPORTING issue_qty rdconf.
DELETE itap_items WHERE matnr = xmatnr AND lgort =
i_mchb-lgort AND charg = i_mchb-charg.
ELSE.
I_MCHB-RDCONF = ''.
ITAP_ITEMS-RDCONF = I_MCHB-RDCONF.
ISSUE_QTY = ''.
I_MCHB-ISSUE_QTY = ISSUE_QTY.
MODIFY I_MCHB INDEX BATCH_INDEX TRANSPORTING ISSUE_QTY RDCONF.
DELETE ITAP_ITEMS WHERE MATNR = XMATNR AND LGORT =
*I_MCHB-LGORT AND CHARG = I_MCHB-CHARG.
ENDIF.
WHEN 'CLEAR'.
i_mchb-rdconf = ''.
itap_items-rdconf = i_mchb-rdconf.
issue_qty = ''.
i_mchb-issue_qty = issue_qty.
MODIFY i_mchb INDEX batch_index TRANSPORTING issue_qty rdconf.
DELETE itap_items WHERE matnr = xmatnr AND lgort =
i_mchb-lgort AND charg = i_mchb-charg.
CLEAR: tap_items,itap_items,i_mchb.
WHEN 'PGDN'.
CLEAR: ok_code,issue_qty,issued_qty.
IF i_mchb-rdconf <> ''.
MODIFY i_mchb INDEX batch_index TRANSPORTING issue_qty rdconf.
ENDIF.
temporary_index = batch_index + tap_init_size.
IF temporary_index > batch_lines.
EXIT.
ELSE.
batch_index = batch_index + tap_init_size.
current_line = batch_index.
ENDIF.
WHEN 'PGUP'.
CLEAR: ok_code,issue_qty,issued_qty.
MODIFY i_mchb INDEX batch_index TRANSPORTING issue_qty rdconf.
batch_index = batch_index - tap_init_size .
IF batch_index <= 0.
batch_index = 1.
ENDIF.
current_line = batch_index.
WHEN 'BACK'.
CLEAR: issue_qty, batch_index,itap_items,issued_qty.
xmatnr = tap_items-matnr.
xlgort = tap_items-lgort.
xcharg = tap_items-charg.
issue_qty = tap_items-qty.
rec_batch = tap_items-rec_batch.
LEAVE TO SCREEN 200.
ENDCASE.
ENDMODULE. " USER_COMMAND_0600 INPUT
&----
*& Module USER_COMMAND_0700 INPUT
&----
text
----
MODULE user_command_0700 INPUT.
CASE ok_code.
WHEN 'SEL'.
CLEAR: ok_code,qty.
IF issue_qty <> ''.
IF issue_qty > i_mard-labst.
SHORTFALL = ISSUE_QTY - SLOC_QTY.
CONDENSE SHORTFALL.
CONCATENATE 'BA Unrestricted-use' SHORTFALL 'EA' ':' INTO
MESSAGE_VAR1 SEPARATED BY SPACE.
errflag = 'X'.
message_id = 'ZRFCONSOLE'.
message_type = 'E' .
message_number = '017'.
message_var2 = tap_items-matnr.
message_var3 = werks.
message_var4 = i_mard-lgort.
PERFORM error_message .
PERFORM clear_message.
EXIT.
ENDIF.
i_mard-rdconf = 'X'.
tap_items-rdconf = i_mard-rdconf.
tap_items-matnr = xmatnr.
tap_items-werks = werks.
tap_items-lgort = i_mard-lgort.
tap_items-qty = issue_qty.
i_mard-issue_qty = issue_qty.
READ TABLE itap_items WITH KEY matnr = xmatnr
lgort = tap_items-lgort .
IF sy-subrc = 0.
itap_index = sy-tabix.
MODIFY itap_items FROM tap_items INDEX itap_index.
MODIFY i_mard INDEX storage_index TRANSPORTING issue_qty
rdconf.
ELSE.
APPEND tap_items TO itap_items .
MODIFY i_mard INDEX storage_index TRANSPORTING issue_qty
rdconf .
ENDIF.
ELSEIF issue_qty = ''.
i_mard-rdconf = ''.
itap_items-rdconf = i_mard-rdconf.
issue_qty = ''.
i_mard-issue_qty = issue_qty.
MODIFY i_mard INDEX storage_index TRANSPORTING issue_qty rdconf
.
DELETE itap_items WHERE matnr = xmatnr AND lgort =
i_mard-lgort .
ELSE.
I_MCHB-RDCONF = ''.
ITAP_ITEMS-RDCONF = I_MCHB-RDCONF.
ISSUE_QTY = ''.
I_MARD-ISSUE_QTY = ISSUE_QTY.
MODIFY I_MARD INDEX STORAGE_INDEX TRANSPORTING ISSUE_QTY .
DELETE ITAP_ITEMS WHERE MATNR = XMATNR AND LGORT =
*I_MARD-LGORT .
ENDIF.
WHEN 'CLEAR'.
i_mard-rdconf = ''.
itap_items-rdconf = i_mard-rdconf.
issue_qty = ''.
i_mard-issue_qty = issue_qty.
MODIFY i_mard INDEX storage_index TRANSPORTING issue_qty rdconf
.
DELETE itap_items WHERE matnr = xmatnr AND lgort =
i_mard-lgort .
CLEAR: tap_items,itap_items,i_mchb.
WHEN 'PGDN'.
CLEAR: ok_code,issue_qty.
temporary_index = storage_index + tap_init_size.
IF temporary_index > storage_lines.
EXIT.
ELSE.
storage_index = storage_index + tap_init_size.
ENDIF.
WHEN 'PGUP'.
CLEAR: ok_code,issue_qty.
storage_index = storage_index - tap_init_size .
IF batch_index <= 0.
batch_index = 1.
ENDIF.
WHEN 'BACK'.
CLEAR: issue_qty, batch_index.
xmatnr = tap_items-matnr.
xlgort = tap_items-lgort.
XCHARG = TAP_ITEMS-CHARG.
ISSUE_QTY = TAP_ITEMS-QTY.
PERFORM move_num_to_char USING tap_items-qty CHANGING issued_qty.
LEAVE TO SCREEN 200.
ENDCASE.
ENDMODULE. " USER_COMMAND_0700 INPUT
07-20-2007 8:59 AM
Hi,
There is a limit on maximum permitted number of nested screen....... and that is correctly 50.
This problem may be caused by too much use of statement
'Call Screen...'
While coding... for going back, try to avoid using call screen, if possible....use leave screen.
Else you can face exception LIST_TOO_MANY_LPROS
<b>Reward points</b>
Regards