*數據定義?
?DATA:tab_set_bukrs_gxgsdm5?TYPE?TABLE?OF?rgsb4,?
???????rec_set_bukrs_gxgsdm5?LIKE?LINE?OF?tab_set_bukrs_gxgsdm5,
???????r_bukrs_gxgsdm5???????TYPE?RANGE?OF?bukrs?WITH?HEADER?LINE.
??DATA:
????tab_set_hkont_gxkjkm5?TYPE?STANDARD?TABLE?OF?rgsb4,??
????rec_set_hkont_gxkjkm5?LIKE?LINE?OF?tab_set_hkont_gxkjkm5.
??RANGES:
????set_acct?FOR?bseg-hkont.
??DATA:
????l_c????????????????TYPE?char1,
*???Declare?the?variable
*???For?Length
????l_serial_length????TYPE?i,
*???For?Alpha?numeric
????l_str??????????????TYPE?string,
????l_valid_characters?TYPE?string.
??"查詢集下的公司代碼。
??CALL?FUNCTION?'G_SET_GET_ALL_VALUES'
????EXPORTING
??????setnr?????????=?'XGSDM5'
??????class?????????=?'0000'
*?????fieldname?????=?'BUKRS'
????TABLES
??????set_values????=?tab_set_bukrs_gxgsdm5
????EXCEPTIONS
??????set_not_found?=?1
??????OTHERS????????=?2.
**&循環集中的數據,將數據放到range表中
??LOOP?AT?tab_set_bukrs_gxgsdm5?INTO?rec_set_bukrs_gxgsdm5.
????CLEAR?r_bukrs_gxgsdm5-high.
????r_bukrs_gxgsdm5-sign?=?'I'.
????r_bukrs_gxgsdm5-low??=?rec_set_bukrs_gxgsdm5-from.
????IF?rec_set_bukrs_gxgsdm5-to?NE?space.
??????r_bukrs_gxgsdm5-option?=?'BT'.
??????r_bukrs_gxgsdm5-high???=?rec_set_bukrs_gxgsdm5-to.
????ELSE.
??????r_bukrs_gxgsdm5-option?=?'EQ'.
????ENDIF.
????APPEND?r_bukrs_gxgsdm5.
??ENDLOOP.
*?獲取集
??CALL?FUNCTION?'G_SET_GET_ALL_VALUES'
????EXPORTING
??????setnr?????????=?'GL_ACCT_REQ_GXKJKM5'
??????class?????????=?'0000'
????TABLES
??????set_values????=?tab_set_hkont_gxkjkm5
????EXCEPTIONS
??????set_not_found?=?1
??????OTHERS????????=?2.
*?判斷科目集是否為空,不為空繼續
??CHECK?sy-subrc?=?0?AND?tab_set_hkont_gxkjkm5?IS?NOT?INITIAL.
??LOOP?AT?tab_set_hkont_gxkjkm5?INTO?rec_set_hkont_gxkjkm5.
????CLEAR?set_acct-high.
????set_acct-sign?????=?'I'.
????set_acct-low??????=?rec_set_hkont_gxkjkm5-from.
????IF?rec_set_hkont_gxkjkm5-to?NE?space.
??????set_acct-option?=?'BT'.
??????set_acct-high???=?rec_set_hkont_gxkjkm5-to.
????ELSE.
??????set_acct-option?=?'EQ'.
????ENDIF.
????APPEND?set_acct.
??ENDLOOP.
??DATA:
????l_htype?LIKE??dd01v-datatype,
????l_len???TYPE?char3.
*?Fill?in?those?valid?characters?you?need?to?check
??CONCATENATE?'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
??????????????'abcdefghijklmnopqrstuvwxyz'
?????????INTO?l_valid_characters.
*??L_VALID_CHARACTERS?=?'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.
*校驗憑證行項目中的ZUONR分配字段輸入的內容如果為“英文字母”+“-”開頭時說明此輸入為WBS號
??IF?bseg-hkont??IN?set_acct?AND
?????bseg-bukrs??IN?r_bukrs_gxgsdm5.
????IF?bseg-zuonr?IS?NOT?INITIAL.
*?????Get?User?Input
??????l_str?=?bseg-zuonr+0(1).
*?????The?Checks
??????IF?l_str?CO?l_valid_characters.
????????CLEAR:
??????????l_c.
????????l_c?=?bseg-zuonr+1(1).
????????IF?l_c?=?'-'.
??????????CONDENSE?bseg-zuonr?NO-GAPS.
??????????l_len?=?strlen(?bseg-zuonr?).
??????????IF?l_len?<>?9?AND
?????????????l_len?<>?10.
????????????b_result?=?b_false.
????????????MESSAGE?e001(00)?WITH?'請在分配字段輸入正確的WBS號'.
??????????ENDIF.
????????ELSE.
??????????MESSAGE?e001(00)?WITH?'請在分配字段輸入正確的WBS號'.
????????ENDIF.
??????ELSE.
????????MESSAGE?e001(00)?WITH?'請在分配字段輸入正確的WBS號'.
??????ENDIF.
????ELSE.
??????MESSAGE?e001(00)?WITH?'請在分配字段輸入正確的WBS號'.
????ENDIF.
??ENDIF.
WBS號校驗邏輯處理代碼參考