Hi all,
in my SAP Script form two IF statments are evaluated in different ways. Please see the image below.
Both LV_PSP_LEN and LV_HLTST_LEN are calculated in one ABAP subroutine via PERFORM ... ENDPERFORM call.
Seems like the second comparison uses only the first digit of LV_HLTST_LEN.
I tried this values:
LV_HLTST_LEN = 3 => processor evaluates IF &LV_HLTST_LEN& LE '3' to true
LV_HLTST_LEN = 9 => processor evaluates ELSEIF &LV_HLTST_LEN& LE '9' to true
LV_HLTST_LEN = 16 => processor evaluates IF &LV_HLTST_LEN& LE '3' to true
LV_HLTST_LEN = 44 => processor evaluates ELSEIF &LV_HLTST_LEN& LE '9' to true
Please give me some hints to solve my problem.
Regards,
Hubert
Request clarification before answering.
Hi Hubert,
What type of fields are LV_HLTST_LEN and LV_PSP_LEN? If they are numeric fields, maybe you should remove the quotes in the if/elseif conditions:
/: IF &LV_HLTST_LEN& LE 3
H1 ,,&LV_HLTST&
/: ELSEIF &LV_HLTST_LEN& LE 9
H2 ,,&LV_HLTST&
/: ELSEIF &LV_HLTST_LEN& LE 16
H3 ,,&LV_HLTST&
/: ELSE
H4 ,,&LV_HLTST&
/: ENDIF
Kind regards,
Rudy.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Rudy,
I don't know wich type SAPscript uses for variables but I think it should use the same type for LV_HLTST_LEN and LV_PSP_LEN.
The interface of the data-delivery-FORM is given by
FORM get_delnote_print_data TABLES in_tab STRUCTURE itcsy
out_tab STRUCTURE itcsy.
where ITCSY-VALUE is of type CHAR(255).
The values for both LV_HLTST_LEN and LV_PSP_LEN is calculated like
READ TABLE out_tab ASSIGNING <ls_out_param> WITH KEY 'LV_HLTST'.
IF sy-subrc EQ 0.
...
lv_size = STRLEN( <ls_out_param>-value ).
READ TABLE out_tab ASSIGNING <ls_out_param> WITH KEY 'LV_HLTST_LEN'.
IF sy-subrc EQ 0.
WRITE lv_size TO <ls_out_param>-value.
SHIFT <ls_out_param>-value LEFT DELETING LEADING space.
ENDIF.
ENDIF.
thanks,
Hubert
Hi Hubert,
You are right about the conversion to char. But I'm not sure if your first IF-statement really does work correct.. In the SAP help on the SAPScript IF-statement, there is a note:
According to this note it should print &LV_HLTST& multiple times then. I don't know if this is the case.
Anyway, I checked some standard SAP forms and noticed that they close the IF-statement with a period sign:
Maybe that is you syntax error? Can you try to add period sign at the end of each condition?
Kind regards,
Rudy.
Hi again Rudy,
thanks for your continous support.
I checked the form with [Form] -> [Check] -> [Definition]. Result was both times (with and without period sign at end of IF, ELSEIF and ENDIF statement): "No errors found in form ZMM_ABRUF_LEFER"
According to this, the evaluation of the logical expressions did not change with period signs.
&LV_HLTST& is only printed once, with size of the paragraph selected by log.exp. (H1 in case of LV_HLTST_LEN = 16 )
Best regards,
Hubert
| User | Count |
|---|---|
| 5 | |
| 4 | |
| 4 | |
| 3 | |
| 2 | |
| 2 | |
| 2 | |
| 2 | |
| 2 | |
| 2 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.