J'ai fait une implémentation similaire il y a quelque temps. Vérifiez que cela fonctionne pour vous.
DATA:
lv_char TYPE char1,
lv_len TYPE i,
lv_len_minus_1 TYPE i,
lv_partial_index1 TYPE i,
lv_partial_index2 TYPE i,
lv_number TYPE i,
result_tab TYPE match_result_tab,
lv_col_index_substr TYPE string,
lv_result TYPE i.
FIELD-SYMBOLS:
<match> LIKE LINE OF result_tab.
lv_len = strlen(iv_col_index) .
lv_char = iv_col_index(1).
FIND FIRST OCCURRENCE OF lv_char IN co_char RESULTS result_tab.
READ TABLE result_tab ASSIGNING <match> INDEX 1.
lv_number = <match>-offset .
lv_number = lv_number + 1 .
IF lv_len EQ 1.
ev_col = ((26 ** (lv_len - 1)) * lv_number) .
ELSE.
lv_len_minus_1 = lv_len - 1.
lv_col_index_substr = iv_col_index+1(lv_len_minus_1) .
CALL METHOD get_col_index
EXPORTING
iv_col_index = lv_col_index_substr
IMPORTING
ev_col = lv_partial_index2.
lv_partial_index1 = ((26 ** (lv_len - 1)) * lv_number) + lv_partial_index2 .
ev_col = lv_partial_index1 .
ENDIF.
Ici L'algorithme utilise une logique récursive pour déterminer l'indice de colonne en nombres. Ce n'est pas mon algorithme, mais j'ai adapté pour être utilisé dans ABAP.
L'algorithme original est utilisé dans Open Excel, je ne peux pas trouver de liens maintenant.
Ce code golf récent vous montrera de nombreuses façons de le faire (bien que dans plusieurs langues vous fassiez attention à ...) http://stackoverflow.com/questions/2634427/code-golf-numeric-equivalent- of-an-excel-column-name/2634463 # 2634463 –
C'est très utile. Je vous remercie! :-) – Techboy