‎2007 Jul 10 10:21 AM
hi experts,
i have oneZ transaction code , by excuting it is giving teh error like " unable to interpret "E" as a number".
i will give teh discription where exactly getting the error .
i have one function module in this ''V51F_HU_HEADER_UPDATE.
in this function module run timr error shows at the lines.
CONCATENATE 'ES_HEADER-' LS_CHANGED-CHANGED_F INTO FIELDNAME.
ASSIGN (FIELDNAME) TO <F>.
IF SY-SUBRC IS INITIAL.
<F> = LS_CHANGED-F_VALUE.
ENDIF.
couls any one help me in this.
‎2007 Jul 10 10:25 AM
Hi Venu,
what is the Data Type Of Field "FIELDNAME".
If the Data type of FIELDNAME is Integer means you can't Concatenate the characters to FIELDNAME.
So Change the Data type,
Thanks.
‎2007 Jul 10 10:34 AM
‎2007 Jul 10 10:39 AM
Hi,
Try this,
CONCATENATE 'IS_HEADER-' LS_CHANGED-CHANGED_F INTO FIELDNAME.
Change ES_HEADER as IS_HEADER.
It will works fine.
Thanks.
‎2007 Jul 10 10:47 AM
but ho wcan i change , that code is in standard function module''V51F_HU_HEADER_UPDATE''
‎2007 Jul 10 10:54 AM
‎2007 Jul 10 11:06 AM
initially i have one zprogram ie. ZWMR_MAN_HU_UPDATEI01.
----
INCLUDE ZWMR_MAN_HU_UPDATEI01 *
&----
*& Module USER_COMMAND_0100 INPUT
&----
Process Screen 100 User Command
----
MODULE USER_COMMAND_0100 INPUT.
case ok_code.
when 'BACK'.
leave to screen 0.
when 'CANC'.
leave to screen 0.
when 'PROC'.
perform convert_hu using vekp-exidv
changing w_exidv.
perform select_hu_header using w_exidv.
perform display_next_screen using '0200'.
endcase.
ENDMODULE. " USER_COMMAND_0100 INPUT
&----
*& Module USER_COMMAND_0200 INPUT
&----
text
----
MODULE USER_COMMAND_0200 INPUT.
data: retcode like sy-subrc.
refresh t_values[].
case ok_code.
when 'BACK'.
perform check_for_changes.
if not t_values[] is initial.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TEXT_QUESTION = text-001
TEXT_BUTTON_1 = 'Yes'(002)
TEXT_BUTTON_2 = 'No'(003)
IMPORTING
ANSWER = answer.
check answer = '1'.
perform unlock_hu using w_vekp-venum.
leave to screen 0.
else.
perform unlock_hu using w_vekp-venum.
leave to screen 0.
endif.
when 'CANC'.
perform check_for_changes.
if not t_values[] is initial.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TEXT_QUESTION = text-001
TEXT_BUTTON_1 = 'Yes'(002)
TEXT_BUTTON_2 = 'No'(003)
IMPORTING
ANSWER = answer.
check answer = '1'.
perform unlock_hu using w_vekp-venum.
leave to screen 0.
else.
perform unlock_hu using w_vekp-venum.
leave to screen 0.
endif.
when 'UPD'.
perform check_for_changes.
perform update_hu_header using w_vekp-exidv
changing retcode.
perform unlock_hu using w_vekp-venum.
check retcode = 0.
if t_values[] is initial.
message i102(zw).
else.
message i101(zw) with w_vekp-exidv.
endif.
leave to screen 0.
endcase.
ENDMODULE. " USER_COMMAND_0200 INPUT
///// in this program HU_HEADER_UPDATE' function module is there .
in that function module ''V51F_HU_HEADER_UPDATE'' (here i am getting teh problem.)..i will paste the code of this also here .
////
FUNCTION V51F_HU_HEADER_UPDATE.
*"----
""Lokale Schnittstelle:
*" IMPORTING
*" VALUE(IF_INDEX) LIKE SY-TABIX OPTIONAL
*" VALUE(IF_WITH_UPDATE) TYPE CHAR1 DEFAULT SPACE
*" VALUE(IF_VENUM) TYPE VENUM OPTIONAL
*" VALUE(IS_HEADER) LIKE VEKPVB STRUCTURE VEKPVB OPTIONAL
*" VALUE(IT_CHANGED_FIELDS) TYPE VSEP_T_CHANGED
*" REFERENCE(IT_OVEKP) TYPE VSEP_T_OVEKP OPTIONAL
*" EXPORTING
*" VALUE(ES_HEADER) LIKE VEKPVB STRUCTURE VEKPVB
*" EXCEPTIONS
*" NOT_FOUND
*" EXIDV_ALREADY_EXIST
*" NOT_POSSIBLE
*" OVERLOADING_W
*" OVERLOADING_V
*" FATAL_ERROR
*"----
DATA: LT_CHANGED TYPE VSEP_T_CHANGED, LT_OVEKP TYPE VSEP_T_OVEKP,
lt_nametab type X031L occurs 0.
DATA: LS_CHANGED TYPE V51P_CHANGED, LS_HEADER TYPE VEKPVB,
LS_GEW_VOL TYPE V51P_GEW_VOL, LS_PAVOL TYPE V51P_GEW_VOL,
ls_hu_mm type HUM_MM_KOPFDATEN,
ls_attributes type HUM_HEADER_ATTRIBUTES_S.
DATA: FIELDNAME(30), LF_EXIDV TYPE exidv,
LF_PAGEW TYPE VEKP-BRGEW, LF_PAVOL TYPE VEKP-BTVOL,
LF_STATUS TYPE HU_STATUS, lf_table type DD02D-TABNAME,
lf_key1 type DD03D-FIELDNAME, lf_key2 type DD03D-FIELDNAME,
lf_rcode type sysubrc, lf_msgv type symsgv.
FIELD-SYMBOLS: <F>,
<nametab> type X031L.
if gs_badi-init_main is initial.
CALL METHOD CL_EXITHANDLER=>GET_INSTANCE
CHANGING INSTANCE = gs_badi-main.
gs_badi-init_main = 'X'.
endif.
IF NOT IF_INDEX IS INITIAL OR IS_HEADER-VENUM IS INITIAL OR
NOT IF_VENUM IS INITIAL.
IF NOT IF_VENUM IS INITIAL.
LS_HEADER-VENUM = IF_VENUM.
ELSE.
LS_HEADER = IS_HEADER.
ENDIF.
CALL FUNCTION 'V51P_FIND_HEADER'
EXPORTING
IF_HEADER_INDEX = IF_INDEX
IS_VEKP = LS_HEADER
IMPORTING
ES_HEADER = ES_HEADER
EXCEPTIONS
NOT_FOUND = 01
OTHERS = 99.
IF SY-SUBRC = 01.
MESSAGE E101(HUFUNCTIONS) RAISING NOT_FOUND.
ENDIF.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE E099(HUGENERAL) RAISING FATAL_ERROR.
ENDIF.
CLEAR LS_HEADER.
ELSE.
ES_HEADER = IS_HEADER.
ENDIF.
LS_HEADER = ES_HEADER.
if not ls_header-aendb is initial.
write ls_header-exidv to lf_msgv using edit mask '==ALPHA'.
message e053(hugeneral) with lf_msgv raising NOT_POSSIBLE.
endif.
LOOP AT IT_CHANGED_FIELDS INTO LS_CHANGED.
move-corresponding es_header to ls_attributes.
call method gs_badi-main->HEADER_CHECKS
exporting
IS_CHANGED_FIELDS = ls_changed
is_header = es_header
changing
cs_attributes = ls_attributes
exceptions
continue = 1
others = 99.
case sy-subrc.
when 1.
continue.
when 99.
raise FATAL_ERROR.
endcase.
move-corresponding ls_attributes to es_header.
clear: lf_rcode, lf_table, lf_key1.
CASE LS_CHANGED-CHANGED_F.
WHEN 'EXIDV'.
CATCH SYSTEM-EXCEPTIONS CONVT_NO_NUMBER = 1.
UNPACK LS_CHANGED-F_VALUE TO lf_exidv.
ENDCATCH.
IF NOT SY-SUBRC IS INITIAL.
WRITE LS_CHANGED-F_VALUE TO lf_exidv
USING EDIT MASK '==ALPHA'.
ENDIF.
call function 'V51P_GET_HEADER_DATA'
importing
es_hu_mm = ls_hu_mm.
clear ls_header-exida.
call function 'V51F_DETERMINE_EXIDV'
exporting
if_vhart = es_header-vhart
is_mm_header = ls_hu_mm
changing
cf_exidv = lf_exidv
cf_exida = ls_header-exida
exceptions
EXIDV_ALREADY_EXISTS = 01
error_on_exidv = 02
others = 99.
CASE SY-SUBRC.
WHEN 00.
es_header-exidv = lf_exidv.
es_header-exida = ls_header-exida.
WHEN 01 or 02.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4
RAISING EXIDV_ALREADY_EXIST.
WHEN OTHERS. MESSAGE E099(HUGENERAL) RAISING FATAL_ERROR.
ENDCASE.
when 'VHILM'.
ls_header-vhilm = LS_CHANGED-F_VALUE.
perform change_packaging_material using ls_header
changing es_header LT_CHANGED.
WHEN 'TARAG' OR 'MAGEW' OR 'NTGEW' OR 'BRGEW' OR 'GEWEI' OR
'TAVOL' OR 'MAVOL' OR 'NTVOL' OR 'BTVOL' OR 'VOLEH' OR
'GEWEI_MAX' OR 'VOLEH_MAX' or 'GEWTO' or 'VOLTO'. "HP_388893
if not ls_header-aendb_wv is initial.
message e174(hugeneral) raising NOT_POSSIBLE.
endif.
APPEND LS_CHANGED TO LT_CHANGED.
when 'VEGR1' or 'VEGR2' or 'VEGR3' or 'VEGR4' or 'VEGR5'.
if lt_nametab is initial.
CALL FUNCTION 'DDIF_NAMETAB_GET'
EXPORTING
TABNAME = 'VEKP'
TABLES
X031L_TAB = LT_NAMETAB
EXCEPTIONS
NOT_FOUND = 01
OTHERS = 99.
if not sy-subrc is initial.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
raising FATAL_ERROR.
endif.
endif.
read table lt_nametab assigning <nametab>
with key FIELDNAME = ls_changed-changed_f.
if not ls_changed-f_value is initial and
not <nametab>-checktable is initial.
lf_table = <nametab>-checktable.
lf_key1 = LS_CHANGED-CHANGED_F.
perform read_table_buffered using lf_table lf_key1 space space
space ls_changed-f_value
space space space
changing lf_rcode.
if not lf_rcode is initial.
message e061(huselect) with ls_changed-f_value
raising not_possible.
endif.
endif.
case LS_CHANGED-CHANGED_F.
when 'VEGR1'.
es_header-vegr1 = ls_changed-f_value.
when 'VEGR2'.
es_header-vegr2 = ls_changed-f_value.
when 'VEGR3'.
es_header-vegr3 = ls_changed-f_value.
when 'VEGR4'.
es_header-vegr4 = ls_changed-f_value.
when 'VEGR5'.
es_header-vegr5 = ls_changed-f_value.
endcase.
WHEN OTHERS.
CONCATENATE 'ES_HEADER-' LS_CHANGED-CHANGED_F INTO FIELDNAME.
ASSIGN (FIELDNAME) TO <F>.
IF SY-SUBRC IS INITIAL.
<F> = LS_CHANGED-F_VALUE.
ENDIF.
ENDCASE.
ENDLOOP.
ES_HEADER-AENAM = SY-UNAME.
ES_HEADER-AEDAT = SY-DATUM.
ES_HEADER-AEZET = SY-UZEIT.
IF NOT LT_CHANGED[] IS INITIAL.
IF IT_OVEKP[] IS INITIAL and
( not es_header-uevel is initial or es_header-saprl < '46C' ).
*........ bestimmen der oberen VSE falls nicht schon bekannt ....
CALL FUNCTION 'V51P_OVEKP_FILL'
EXPORTING
IF_VENUM = ES_HEADER-VENUM
IMPORTING
ET_OVEKP = LT_OVEKP
EXCEPTIONS
VEKP_NOT_FOUND = 01
NO_UPPER_VSE = 02
WRONG_VEPO = 03
OTHERS = 99.
IF NOT SY-SUBRC IS INITIAL AND NOT SY-SUBRC = 02.
MESSAGE E099(HUGENERAL) RAISING FATAL_ERROR.
ENDIF.
ELSE.
LT_OVEKP = IT_OVEKP.
ENDIF.
MOVE-CORRESPONDING ES_HEADER TO LS_GEW_VOL.
IF ES_HEADER-GEWFX IS INITIAL.
*.......... determine weight/VOLum-fields check if allowed ...........
CALL FUNCTION 'V51F_CHANGING_WEIGHT_VOLUME'
EXPORTING
IS_OLD = LS_GEW_VOL
IT_FIELDS = LT_CHANGED
IT_OVEKP = LT_OVEKP
IMPORTING
ES_NEW = LS_GEW_VOL
ES_PAVOL = LS_PAVOL
EXCEPTIONS
OVERLOADING_W = 01
OVERLOADING_V = 02
VOLUM_INCONSISTENCY = 03
OTHERS = 99.
CASE SY-SUBRC.
WHEN 01.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4
RAISING OVERLOADING_W.
WHEN 02.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4
RAISING OVERLOADING_V.
WHEN 03 OR 99.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4
RAISING FATAL_ERROR.
ENDCASE.
IF NOT LT_OVEKP IS INITIAL.
IF NOT LS_PAVOL IS INITIAL.
CALL FUNCTION 'V51F_GEW_VOL_UPDATE'
EXPORTING
IF_PAGEW = LS_PAVOL-BRGEW
IF_GEWEI = LS_GEW_VOL-GEWEI_MAX
IF_PAVOL = LS_PAVOL-BTVOL
IF_VOLEH = LS_GEW_VOL-VOLEH_MAX
IF_OPERATOR = '+'
IF_ONLY_OVEKP = 'X'
CHANGING
CT_OVEKP = LT_OVEKP
EXCEPTIONS
ERROR = 01
OTHERS = 99.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4
RAISING FATAL_ERROR.
ENDIF.
ENDIF.
ENDIF.
else.
loop at lt_changed into ls_changed.
CONCATENATE 'LS_GEW_VOL-' LS_CHANGED-CHANGED_F INTO FIELDNAME.
ASSIGN (FIELDNAME) TO <F>.
IF SY-SUBRC IS INITIAL.
<F> = LS_CHANGED-F_VALUE.
ENDIF.
endloop.
ENDIF.
MOVE-CORRESPONDING LS_GEW_VOL TO ES_HEADER.
ENDIF.
CHECK NOT IF_WITH_UPDATE IS INITIAL.
CALL FUNCTION 'V51P_XVEKP_YVEKP_UPDATE'
EXPORTING
IF_UPDKZ = 'U'
IS_VEKP = ES_HEADER
EXCEPTIONS
NOT_FOUND = 01
OTHERS = 99.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE E099(HUGENERAL) RAISING FATAL_ERROR.
ENDIF.
ENDFUNCTION.
///.
now i given total code so could u help me how can i solve this problem.
thanks
venu
‎2007 Jul 10 11:06 AM
hi venu
problem is in your data types
this is the data types of that function module
*" IMPORTING
*" VALUE(IF_INDEX) LIKE SY-TABIX OPTIONAL
*" VALUE(IF_WITH_UPDATE) TYPE CHAR1 DEFAULT SPACE
*" VALUE(IF_VENUM) TYPE VENUM OPTIONAL
*" VALUE(IS_HEADER) LIKE VEKPVB STRUCTURE VEKPVB OPTIONAL
*" VALUE(IT_CHANGED_FIELDS) TYPE VSEP_T_CHANGED
*" REFERENCE(IT_OVEKP) TYPE VSEP_T_OVEKP OPTIONAL
*" EXPORTING
*" VALUE(ES_HEADER) LIKE VEKPVB STRUCTURE VEKPVB
change your input fields as this types
Rewards if helpful.
‎2007 Jul 10 11:49 AM
i didn't get compleate idea on this , ho wcan i change the input fields in this.
is there any other option for this.
‎2007 Jul 10 12:01 PM
Hi Venu,
Remove this lines from your code and check it.
IF SY-SUBRC IS INITIAL.
<F> = LS_CHANGED-F_VALUE.
ENDIF.
Thanks.
‎2007 Jul 10 1:18 PM
hi for removing that code also i need access, how can i do that ,is there any option to do it.
‎2007 Jul 11 7:53 AM
Hi VJ,
have u get any idea..
main problem occuring on this line <F> = LS_CHANGED-F_VALUE.