IT/SAP

ZINCL_COMMON_MODULE

KSH&LSH 2013. 3. 19. 04:32

***********************************************************************

* PROGRAM-ID  : ZINCL_COMMON_MODULE                                        *

* MODULE      : ALL                                                                            *

* TYPE        : INCLUDE                                                                        *

* DESCRIPTION : COMMON DEFINITION / SUB PROCESS                       *

***********************************************************************


*---------------------------------------------------------------------*

* TABLES DEFINE

*---------------------------------------------------------------------*


*---------------------------------------------------------------------*

* DATA DEFINE

*---------------------------------------------------------------------*

* POV HELP용

DATA: I_FIELDNAME     LIKE HELP_INFO-FIELDNAME,

      I_IT_HELP_VALUE LIKE HELP_VALUE OCCURS 0 WITH HEADER LINE,

      I_IT_DYNPREAD   LIKE DYNPREAD OCCURS 0 WITH HEADER LINE,

      I_FLDVALUE      LIKE HELP_INFO-FLDVALUE,

      I_TABIX         LIKE SY-TABIX.


* TEXT EDITOR

TYPES: BEGIN OF I_EDITOR_TEXT,

       TEXT(132),

       END OF I_EDITOR_TEXT.


DATA: I_TEMP_TEXT    TYPE I_EDITOR_TEXT,

      I_EDITOR_TEXT1 TYPE TABLE OF I_EDITOR_TEXT,

      I_EDITOR_TEXT2 TYPE TABLE OF I_EDITOR_TEXT,

      I_EDITOR_TEXT3 TYPE TABLE OF I_EDITOR_TEXT.


DATA: I_EDITOR1           TYPE REF TO CL_GUI_TEXTEDIT,

      I_EDITOR_CONTAINER1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,

      I_EDITOR2           TYPE REF TO CL_GUI_TEXTEDIT,

      I_EDITOR_CONTAINER2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,

      I_EDITOR3           TYPE REF TO CL_GUI_TEXTEDIT,

      I_EDITOR_CONTAINER3 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.


DATA: I_LINES1 LIKE TLINE OCCURS 0 WITH HEADER LINE,

      I_LINES2 LIKE TLINE OCCURS 0 WITH HEADER LINE,

      I_LINES3 LIKE TLINE OCCURS 0 WITH HEADER LINE.


*---------------------------------------------------------------------*

*      Form  IFORM_ALPHA_OUTPUT

*---------------------------------------------------------------------*

FORM IFORM_ALPHA_OUTPUT USING P_IN P_OUT.

     CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'

          EXPORTING

             INPUT         = P_IN

          IMPORTING

             OUTPUT        = P_OUT.

ENDFORM.


*---------------------------------------------------------------------*

*      Form  IFORM_ALPHA_INPUT

*---------------------------------------------------------------------*

FORM IFORM_ALPHA_INPUT USING P_IN P_OUT.

     CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

          EXPORTING

             INPUT         = P_IN

          IMPORTING

             OUTPUT        = P_OUT.

ENDFORM.


*---------------------------------------------------------------------*

*      Form  IFORM_SIGN_IN_FRONT  - 값을 문자 앞으로 보냄

*---------------------------------------------------------------------*

FORM IFORM_SIGN_IN_FRONT USING P_VALUE.

     CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'

          CHANGING

             VALUE         = P_VALUE.

ENDFORM.


*---------------------------------------------------------------------*

*      Form  PROGRES_BAR_RTN

*---------------------------------------------------------------------*

FORM IFORM_PROGRES_BAR USING P_TEXT.

     CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'

          EXPORTING

             PERCENTAGE = 100

             TEXT       = P_TEXT

          EXCEPTIONS

             OTHERS     = 1.

ENDFORM.


*---------------------------------------------------------------------*

*      Form  PROGRES_BAR_RTN

*---------------------------------------------------------------------*

FORM IFORM_PROGRES_BAR2 USING P_PER P_TEXT.

     CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'

          EXPORTING

             PERCENTAGE = P_PER

             TEXT       = P_TEXT

          EXCEPTIONS

             OTHERS     = 1.

ENDFORM.


*---------------------------------------------------------------------*

*      Form  IFORM_EDITOR_CREATE

*      P_COUNT     : EDITOR 갯수

*      P_LINE_SIZE : EDITOR의 LINE SIZE

*---------------------------------------------------------------------*

FORM IFORM_EDITOR_CREATE USING P_COUNT P_LINE_SIZE.

*    첫번째 EDITOR 생성

     IF I_EDITOR1 IS INITIAL.

        CLEAR I_EDITOR_TEXT1.

        REFRESH I_EDITOR_TEXT1.


        CREATE OBJECT I_EDITOR_CONTAINER1

               EXPORTING

                  CONTAINER_NAME = 'CON1'

               EXCEPTIONS

                  CNTL_ERROR                  = 1

                  CNTL_SYSTEM_ERROR           = 2

                  CREATE_ERROR                = 3

                  LIFETIME_ERROR              = 4

                  LIFETIME_DYNPRO_DYNPRO_LINK = 5.


        CREATE OBJECT I_EDITOR1

               EXPORTING

                  PARENT                     = I_EDITOR_CONTAINER1

                  WORDWRAP_MODE              =

                     CL_GUI_TEXTEDIT=>WORDWRAP_AT_FIXED_POSITION

                  WORDWRAP_POSITION          = P_LINE_SIZE

                  WORDWRAP_TO_LINEBREAK_MODE = CL_GUI_TEXTEDIT=>TRUE.


        LOOP AT I_LINES1.

             APPEND I_LINES1-TDLINE TO I_EDITOR_TEXT1.

        ENDLOOP.


        CALL METHOD I_EDITOR1->SET_TEXT_AS_R3TABLE

             EXPORTING

                TABLE           = I_EDITOR_TEXT1

             EXCEPTIONS

                ERROR_DP        = 1

                ERROR_DP_CREATE = 2.

     ENDIF.


     CHECK P_COUNT >= 2.


*    두번째 EDITOR 생성

     IF I_EDITOR2 IS INITIAL.

        CLEAR I_EDITOR_TEXT2.

        REFRESH I_EDITOR_TEXT2.


        CREATE OBJECT I_EDITOR_CONTAINER2

               EXPORTING

                  CONTAINER_NAME = 'CON2'

               EXCEPTIONS

                  CNTL_ERROR                  = 1

                  CNTL_SYSTEM_ERROR           = 2

                  CREATE_ERROR                = 3

                  LIFETIME_ERROR              = 4

                  LIFETIME_DYNPRO_DYNPRO_LINK = 5.


        CREATE OBJECT I_EDITOR2

               EXPORTING

                  PARENT                     = I_EDITOR_CONTAINER2

                  WORDWRAP_MODE              =

                     CL_GUI_TEXTEDIT=>WORDWRAP_AT_FIXED_POSITION

                  WORDWRAP_POSITION          = P_LINE_SIZE

                  WORDWRAP_TO_LINEBREAK_MODE = CL_GUI_TEXTEDIT=>TRUE.


        LOOP AT I_LINES2.

             APPEND I_LINES2-TDLINE TO I_EDITOR_TEXT2.

        ENDLOOP.


        CALL METHOD I_EDITOR2->SET_TEXT_AS_R3TABLE

             EXPORTING

                TABLE           = I_EDITOR_TEXT2

             EXCEPTIONS

                ERROR_DP        = 1

                ERROR_DP_CREATE = 2.

     ENDIF.


     CHECK P_COUNT >= 3.


*    세번째 EDITOR 생성

     IF I_EDITOR3 IS INITIAL.

        CLEAR I_EDITOR_TEXT3.

        REFRESH I_EDITOR_TEXT3.


        CREATE OBJECT I_EDITOR_CONTAINER3

               EXPORTING

                  CONTAINER_NAME = 'CON3'

               EXCEPTIONS

                  CNTL_ERROR                  = 1

                  CNTL_SYSTEM_ERROR           = 2

                  CREATE_ERROR                = 3

                  LIFETIME_ERROR              = 4

                  LIFETIME_DYNPRO_DYNPRO_LINK = 5.


        CREATE OBJECT I_EDITOR3

               EXPORTING

                  PARENT                     = I_EDITOR_CONTAINER3

                  WORDWRAP_MODE              =

                     CL_GUI_TEXTEDIT=>WORDWRAP_AT_FIXED_POSITION

                  WORDWRAP_POSITION          = P_LINE_SIZE

                  WORDWRAP_TO_LINEBREAK_MODE = CL_GUI_TEXTEDIT=>TRUE.


        LOOP AT I_LINES3.

             APPEND I_LINES3-TDLINE TO I_EDITOR_TEXT3.

        ENDLOOP.


        CALL METHOD I_EDITOR3->SET_TEXT_AS_R3TABLE

             EXPORTING

                TABLE           = I_EDITOR_TEXT3

             EXCEPTIONS

                ERROR_DP        = 1

                ERROR_DP_CREATE = 2.

     ENDIF.

ENDFORM.


*---------------------------------------------------------------------*

*      Form  IFORM_EDITOR_READ_TEXT

*      P_COUNT     : EDITOR 갯수

*      P_LINE_SIZE : EDITOR의 LINE SIZE

*      P_LENGTH    : EDITOR에 입력된 TEXT 전체 SIZE

*      P_TEXT      : EDITOR에 입력된 TEXT.

*---------------------------------------------------------------------*

FORM IFORM_EDITOR_READ_TEXT USING P_COUNT  P_LINE_SIZE

                                  P_LENGTH P_TEXT.

*    첫번째 EDITOR READ TEXT

     IF P_COUNT = 1.

        CLEAR: I_EDITOR_TEXT1, I_TEMP_TEXT.

        REFRESH I_EDITOR_TEXT1.


        CALL METHOD I_EDITOR1->GET_TEXT_AS_R3TABLE

             IMPORTING

                TABLE                  = I_EDITOR_TEXT1

             EXCEPTIONS

                ERROR_DP               = 1

                ERROR_CNTL_CALL_METHOD = 2

                ERROR_DP_CREATE        = 3

                POTENTIAL_DATA_LOSS    = 4.


        LOOP AT I_EDITOR_TEXT1 INTO I_TEMP_TEXT.

             WRITE I_TEMP_TEXT TO P_TEXT+P_LENGTH(80).

             CLEAR I_TEMP_TEXT.

             P_LENGTH = P_LENGTH + P_LINE_SIZE.

             CHECK P_LENGTH <= 7902.

        ENDLOOP.

     ENDIF.


*    두번째 EDITOR READ TEXT

     IF P_COUNT = 2.

        CLEAR: I_EDITOR_TEXT2, I_TEMP_TEXT.

        REFRESH I_EDITOR_TEXT2.


        CALL METHOD I_EDITOR2->GET_TEXT_AS_R3TABLE

             IMPORTING

                TABLE                  = I_EDITOR_TEXT2

             EXCEPTIONS

                ERROR_DP               = 1

                ERROR_CNTL_CALL_METHOD = 2

                ERROR_DP_CREATE        = 3

                POTENTIAL_DATA_LOSS    = 4.


        LOOP AT I_EDITOR_TEXT2 INTO I_TEMP_TEXT.

             P_LENGTH = P_LENGTH + P_LINE_SIZE.

             CHECK P_LENGTH <= 7902.

             CONCATENATE P_TEXT I_TEMP_TEXT INTO P_TEXT.

             CLEAR I_TEMP_TEXT.

        ENDLOOP.

     ENDIF.


*    세번째 EDITOR READ TEXT

     IF P_COUNT = 3.

        CLEAR: I_EDITOR_TEXT3, I_TEMP_TEXT.

        REFRESH I_EDITOR_TEXT3.


        CALL METHOD I_EDITOR3->GET_TEXT_AS_R3TABLE

             IMPORTING

                TABLE                  = I_EDITOR_TEXT3

             EXCEPTIONS

                ERROR_DP               = 1

                ERROR_CNTL_CALL_METHOD = 2

                ERROR_DP_CREATE        = 3

                POTENTIAL_DATA_LOSS    = 4.


        LOOP AT I_EDITOR_TEXT3 INTO I_TEMP_TEXT.

             P_LENGTH = P_LENGTH + P_LINE_SIZE.

             CHECK P_LENGTH <= 7902.

             CONCATENATE P_TEXT I_TEMP_TEXT INTO P_TEXT.

             CLEAR I_TEMP_TEXT.

        ENDLOOP.

     ENDIF.

ENDFORM.


*---------------------------------------------------------------------*

*      Form  IFORM_EDITOR_FREE

*      P_COUNT : EDITOR 갯수

*---------------------------------------------------------------------*

FORM IFORM_EDITOR_FREE USING P_COUNT.

*    첫번째 EDITOR FREE

     IF NOT I_EDITOR1 IS INITIAL.

        CALL METHOD I_EDITOR1->FREE

             EXCEPTIONS

                OTHERS = 1.

        FREE I_EDITOR1.

     ENDIF.

     IF NOT I_EDITOR_CONTAINER1 IS INITIAL.

        CALL METHOD I_EDITOR_CONTAINER1->FREE

             EXCEPTIONS

                OTHERS = 1.

        FREE I_EDITOR_CONTAINER1.

     ENDIF.


     CHECK P_COUNT >= 2.


*    두번째 EDITOR FREE

     IF NOT I_EDITOR2 IS INITIAL.

        CALL METHOD I_EDITOR2->FREE

             EXCEPTIONS

                OTHERS = 1.

        FREE I_EDITOR2.

     ENDIF.

     IF NOT I_EDITOR_CONTAINER2 IS INITIAL.

        CALL METHOD I_EDITOR_CONTAINER2->FREE

             EXCEPTIONS

                OTHERS = 1.

        FREE I_EDITOR_CONTAINER2.

     ENDIF.


     CHECK P_COUNT >= 3.


*    세번째 EDITOR FREE

     IF NOT I_EDITOR3 IS INITIAL.

        CALL METHOD I_EDITOR3->FREE

             EXCEPTIONS

                OTHERS = 1.

        FREE I_EDITOR3.

     ENDIF.

     IF NOT I_EDITOR_CONTAINER3 IS INITIAL.

        CALL METHOD I_EDITOR_CONTAINER3->FREE

             EXCEPTIONS

                OTHERS = 1.

        FREE I_EDITOR_CONTAINER3.

     ENDIF.

ENDFORM.