SAP/ABAP

MONAT_F4

Linkin 2024. 2. 26. 00:27

RMCB0300 Standard Program의 MONAT_F4 form 문 활용

 

**********************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR SL_SPMON-LOW.
  PERFORM MONAT_F4.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR SL_SPMON-HIGH.
  PERFORM MONAT_F4.
**********************************

FORM  MONAT_F4.
  DATA: BEGIN OF MF_DYNPFIELDS OCCURS 1.
          INCLUDE STRUCTURE DYNPREAD.
  DATA: END   OF MF_DYNPFIELDS.
  DATA: MF_RETURNCODE   LIKE SY-SUBRC,
        MF_MONAT        LIKE ISELLIST-MONTH,
        MF_HLP_REPID    LIKE SY-REPID.
  FIELD-SYMBOLS: <MF_FELD>.

* Wert von Dynpro lesen
  GET CURSOR FIELD MF_DYNPFIELDS-FIELDNAME.
  APPEND MF_DYNPFIELDS.
  MF_HLP_REPID = SY-REPID.
  DO 2 TIMES.
    CALL FUNCTION 'DYNP_VALUES_READ'
         EXPORTING
              DYNAME               = MF_HLP_REPID
              DYNUMB               = SY-DYNNR
         TABLES
              DYNPFIELDS           = 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
      MF_HLP_REPID = 'SAPLALDB'.
    ELSE.
      READ TABLE MF_DYNPFIELDS INDEX 1.
*     Unterstriche durch Blanks ersetzen
      TRANSLATE MF_DYNPFIELDS-FIELDVALUE USING '_ '.
      EXIT.
    ENDIF.
  ENDDO.
  IF SY-SUBRC = 0.
*   Konvertierung ins interne Format
    CALL FUNCTION 'CONVERSION_EXIT_PERI_INPUT'
         EXPORTING
              INPUT  = MF_DYNPFIELDS-FIELDVALUE
         IMPORTING
              OUTPUT = MF_MONAT
         EXCEPTIONS
              ERROR_MESSAGE = 1.
    IF MF_MONAT IS INITIAL.
*     Monat ist initial => Vorschlagswert aus akt. Datum ableiten
      MF_MONAT = SY-DATLO(6).
    ENDIF.
    CALL FUNCTION 'POPUP_TO_SELECT_MONTH'
         EXPORTING
              ACTUAL_MONTH               = MF_MONAT
         IMPORTING
              SELECTED_MONTH             = MF_MONAT
              RETURN_CODE                = MF_RETURNCODE
         EXCEPTIONS
              FACTORY_CALENDAR_NOT_FOUND = 01
              HOLIDAY_CALENDAR_NOT_FOUND = 02
              MONTH_NOT_FOUND            = 03.
    IF SY-SUBRC = 0 AND MF_RETURNCODE = 0.
*     ASSIGN (MF_DYNPFIELDS-FIELDNAME) TO <MF_FELD>. " ==>> note 148804
*     <MF_FELD> = MF_MONAT.
      CALL FUNCTION 'CONVERSION_EXIT_PERI_OUTPUT'
           EXPORTING
                INPUT  =  MF_MONAT
           IMPORTING
                OUTPUT =  MF_DYNPFIELDS-FIELDVALUE.
      COLLECT MF_DYNPFIELDS.
      CALL FUNCTION 'DYNP_VALUES_UPDATE'
           EXPORTING
                DYNAME               = MF_HLP_REPID
                DYNUMB               = SY-DYNNR
         TABLES
                DYNPFIELDS           = MF_DYNPFIELDS
           EXCEPTIONS
                INVALID_ABAPWORKAREA = 01
                INVALID_DYNPROFIELD  = 02
                INVALID_DYNPRONAME   = 03
                INVALID_DYNPRONUMMER = 04
                INVALID_REQUEST      = 05
                NO_FIELDDESCRIPTION  = 06
                UNDEFIND_ERROR       = 07.           "<<== note 148804
    ENDIF.
  ENDIF.
ENDFORM.  "MONAT_F4