월 / 연 형식으로 셀렉션 스크린에 입력하고자 할때 사용하면 유용할듯..
연 / 월로 하려면.. 스크린을 수정해야할것 같다..
DATA: BEGIN OF lt_mf_dynpfields OCCURS 1.
INCLUDE STRUCTURE dynpread.
DATA: END OF lt_mf_dynpfields.
DATA: lv_mf_returncode LIKE sy-subrc,
lv_mf_monat LIKE isellist-month,
lv_mf_hlp_repid LIKE sy-repid.
FIELD-SYMBOLS: <lv_mf_feld>.
* Wert von Dynpro lesen
GET CURSOR FIELD lt_mf_dynpfields-fieldname.
APPEND lt_mf_dynpfields.
lv_mf_hlp_repid = sy-repid.
DO 2 TIMES.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = lv_mf_hlp_repid
dynumb = sy-dynnr
TABLES
dynpfields = lt_mf_dynpfields
EXCEPTIONS
invalid_abapworkarea = 01
invalid_dynprofield = 02
invalid_dynproname = 03
invalid_dynpronummer = 04
invalid_request = 05
no_fielddescription = 06
undefind_error = 07.
IF sy-subrc = 3.
* Aktuelles Dynpro ist Wertemengenbild
lv_mf_hlp_repid = 'SAPLALDB'.
ELSE.
READ TABLE lt_mf_dynpfields INDEX 1.
* Unterstriche durch Blanks ersetzen
TRANSLATE lt_mf_dynpfields-fieldvalue USING '_ '.
EXIT.
ENDIF.
ENDDO.
IF sy-subrc = 0.
* Konvertierung ins interne Format
CALL FUNCTION 'CONVERSION_EXIT_PERI_INPUT'
EXPORTING
input = lt_mf_dynpfields-fieldvalue
IMPORTING
output = lv_mf_monat.
IF lv_mf_monat IS INITIAL.
* Monat ist initial => Vorschlagswert aus akt. Datum ableiten
lv_mf_monat = sy-datlo+0(6).
ENDIF.
CALL FUNCTION 'POPUP_TO_SELECT_MONTH'
EXPORTING
actual_month = lv_mf_monat
IMPORTING
selected_month = lv_mf_monat
return_code = lv_mf_returncode
EXCEPTIONS
factory_calendar_not_found = 1
holiday_calendar_not_found = 2
month_not_found = 3
OTHERS = 4.
IF sy-subrc = 0 AND lv_mf_returncode = 0.
ASSIGN (lt_mf_dynpfields-fieldname) TO <lv_mf_feld>.
<lv_mf_feld> = lv_mf_monat.
ENDIF.
ENDIF.