Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

check not triggering

Former Member
0 Likes
425

hi experts,

I want to put check on quantity field of goods movement screen of co11n transaction if material exists.

I am using the fiedexit & below code to read values & put check.

DATA: i_dynfields TYPE TABLE OF dynpread WITH HEADER LINE,

num TYPE i,

v_erfmg TYPE mb_erfmg.

DO 11 TIMES.

num = sy-index.

i_dynfields-fieldname = 'MATNR'.

i_dynfields-stepl = num.

APPEND i_dynfields.

i_dynfields-fieldname = 'ERFMG'.

i_dynfields-stepl = num.

APPEND i_dynfields.

ENDDO.

    • ENDIF.

CALL FUNCTION 'DYNP_VALUES_READ'

EXPORTING

dyname = 'SAPLCOWB'

dynumb = '0500'

translate_to_upper = 'X'

  • REQUEST = ' '

  • PERFORM_CONVERSION_EXITS = ' '

  • PERFORM_INPUT_CONVERSION = ' '

  • DETERMINE_LOOP_INDEX = ' '

TABLES

dynpfields = i_dynfields

EXCEPTIONS

invalid_abapworkarea = 1

invalid_dynprofield = 2

invalid_dynproname = 3

invalid_dynpronummer = 4

invalid_request = 5

no_fielddescription = 6

invalid_parameter = 7

undefind_error = 8

double_conversion = 9

stepl_not_found = 10

OTHERS = 11

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

LOOP AT i_dynfields.

IF i_dynfields-fieldname = 'MATNR'.

IF i_dynfields-fieldvalue IS NOT INITIAL.

READ TABLE i_dynfields WITH KEY fieldname = 'ERFMG'

stepl = num.

IF sy-subrc EQ 0.

IF i_dynfields-fieldvalue = 0 OR

i_dynfields-fieldvalue = space.

MESSAGE e004(zmsg2) WITH 'Quantity cannot be zero or empty'.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

ENDLOOP.

ENDFUNCTION.

but this is not executing the error message.

pls tell me where it is wrong.

2 REPLIES 2
Read only

Former Member
0 Likes
388

hi all,

now it is triggering error message. but now the problem is it is displaying message even when the quantity is ne 0.

I think there need to do some conversion from char to packed.

because if i give IF i_dynfields-fieldvalue = 0, in the below code, it is giving the error message for all values of fieldvalue.

LOOP AT i_dynfields WHERE fieldname EQ 'COWB_COMP-MATNR'.

IF i_dynfields-fieldvalue IS NOT INITIAL.

READ TABLE i_dynfields WITH KEY fieldname = 'COWB_COMP-ERFMG'

stepl = i_dynfields-stepl.

IF i_dynfields-fieldvalue = 0. "OR

MESSAGE e004(zmsg2) WITH 'Quantity cannot be zero or empty'.

ENDIF.

ENDIF.

ENDLOOP.

Any suggestions?

Read only

former_member202474
Contributor
0 Likes
388

Hi ,

As per ur code given as below:

LOOP AT i_dynfields WHERE fieldname EQ 'COWB_COMP-MATNR'.

IF i_dynfields-fieldvalue IS NOT INITIAL.

READ TABLE i_dynfields WITH KEY fieldname = 'COWB_COMP-ERFMG'

stepl = i_dynfields-stepl.

IF i_dynfields-fieldvalue = 0. "OR

MESSAGE e004(zmsg2) WITH 'Quantity cannot be zero or empty'.

ENDIF.

ENDIF.

ENDLOOP.

If u want to display the message when fieldvalue = 0, then i think u should check ur statement after the loop.

The statements which i have highlighted in bold is contradicting to each other.

Similary the fieldnames in loop statement and in read are different.

In ur code the loop will repeat for fieldnames only = ''COWB_COMP-MATN' and not ''COWB_COMP-ERFMG''.

      • Reward if helpful ***

Regards,

Ruby.