본문 바로가기

SAP SD

Z나 Y로 시작하는 CBO테이블에 데이터를 업로드 하기위한 프로그램

Z나 Y로 시작하는 CBO테이블에 데이터를 업로드 하기위한 프로그램.

뜯어보면 쉽다.

 

단지 길 뿐.

 

  *&---------------------------------------------------------------------*
*& Report  ZSD_KR_FIELDINFO_UPDATE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zsd_kr_fieldinfo_update.

TABLESdd03l" 테이블필드
        dd01l" 도메인
        dd02t" R/3-DD: SAP 테이블 텍스트
        dd17s" R/3 S_SECINDEX: 보조 인덱스, 필드
        dd12t" DD12L에 대한 텍스트 테이블
        dd04t" R/3 DD: Data element 텍스트

DATA BEGIN OF table_structure OCCURS 10.
        INCLUDE STRUCTURE dfies.
DATA END OF table_structure.

* The dynamic program source table
DATABEGIN OF itab OCCURS 10,
            line(72),
      END OF   itab.

DATAprogramname    LIKE sy-repid  VALUE '<<ZDYNPRO>>'.

*-----------------------------------------------------------------------
*  SELECTION-SCREEN.
*-----------------------------------------------------------------------
SELECTION-SCREEN BEGIN OF BLOCK bl_1 WITH FRAME TITLE title_1.

SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (31)  t_tab      FOR  FIELD tab_name.
PARAMETERStab_name LIKE dd03l-tabname          OBLIGATORY.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK bl_1.
*
SELECTION-SCREEN BEGIN OF BLOCK bl_2 WITH FRAME TITLE title_2.

SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (31)  t_fname    FOR  FIELD filename.
PARAMETERSfilename LIKE rlgrap-filename
                     DEFAULT space        OBLIGATORY.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (31)  t_ftype    FOR  FIELD filetype.
PARAMETERSfiletype LIKE rlgrap-filetype DEFAULT 'DAT'.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN SKIP 1.

SELECTION-SCREEN BEGIN OF LINE.
PARAMETERSp_head          AS  CHECKBOX   DEFAULT space.
SELECTION-SCREEN COMMENT 3(40)  t_head     FOR  FIELD p_head.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
PARAMETERSp_space         AS  CHECKBOX   DEFAULT 'X'.
SELECTION-SCREEN COMMENT 3(40)  t_space    FOR  FIELD p_space.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
PARAMETERSp_remark        AS  CHECKBOX   DEFAULT 'X'.
SELECTION-SCREEN COMMENT 3(40)  t_remark   FOR  FIELD p_remark.
PARAMETERSp_except(1)     TYPE c   DEFAULT '#'.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN END OF BLOCK bl_2.

SELECTION-SCREEN BEGIN OF BLOCK bl_3 WITH FRAME TITLE title_3.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERSr_disp  RADIOBUTTON GROUP rad.
SELECTION-SCREEN COMMENT 3(40t_disp   FOR  FIELD r_disp.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
PARAMETERSr_upda  RADIOBUTTON GROUP rad.
SELECTION-SCREEN COMMENT 3(40t_upda   FOR  FIELD r_upda.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
PARAMETERSr_refr  RADIOBUTTON GROUP rad.
SELECTION-SCREEN COMMENT 3(40t_refr   FOR  FIELD r_refr.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK bl_3.

INITIALIZATION.
  title_1  'Select Options'.
  title_2  'Upload Options'.
  title_3  'Additional Options'.

  t_tab    'Table Name'.
  t_fname  'File Name'.
  t_ftype  'File Type'.

  t_head   ' 데이터 첫행은 제외함'.
  t_space  ' 데이터 값이 없는 라인은 제외함'.
  t_remark ' 데이터가 다음 문자로 시작되면 제외함'.

  t_disp   ' Display Only'.
  t_upda   ' Update Only'.
  t_refr   ' Table Data Initialize & Update'.

  SET TITLEBAR '%_T' OF PROGRAM 'RSSYSTDB'
                        WITH 'Table contents Upload Utility'.

**----------------------------------------------------------------------
**  AT SELECTION-SCREEN.
**----------------------------------------------------------------------
AT SELECTION-SCREEN ON VALUE-REQUEST FOR filename.
  PERFORM f4_help_datafile     CHANGING filename.


*-----------------------------------------------------------------------
*  START-OF-SELECTION.
*-----------------------------------------------------------------------
START-OF-SELECTION.
  PERFORM table_field_info_get.
  PERFORM make_program.

  IF r_refr 'X'.         "- Delete & Update
    PERFORM table_data_delete_all.
  ENDIF.

  INSERT REPORT programname FROM itab.
  SUBMIT (programname)    AND RETURN
                         WITH tab_name tab_name
                         WITH filename filename
                         WITH filetype filetype
                         WITH p_head   p_head
                         WITH p_space  p_space
                         WITH p_remark p_remark
                         WITH p_except p_except
                         WITH r_disp   r_disp
                         WITH r_upda   r_upda
                         WITH r_refr   r_refr.

  DELETE REPORT  programname.

*&--------------------------------------------------------------------*
*&      Form  TABLE_field_info_get
*&--------------------------------------------------------------------*
FORM table_field_info_get.
  DATA table_type      TYPE dd02v-tabclass.

  CALL FUNCTION 'DDIF_FIELDINFO_GET'
    EXPORTING
      tabname        tab_name
    IMPORTING
      ddobjtype      table_type
    TABLES
      dfies_tab      table_structure
    EXCEPTIONS
      not_found      1
      internal_error 2
      OTHERS         3.

  IF sy-subrc <> OR tab_name+0(1NE 'Z'  OR tab_name+0(1NE 'Y'.
    MESSAGE i001(00)  WITH '테이블명이 잘못되었거나 CBO테이블이 아닙니다(Z*)'.   STOP.
  ENDIF.

  SORT table_structure  ASCENDING BY position.

  READ TABLE table_structure    INDEX 1.
  IF sy-subrc 0                        AND
     table_structure-fieldname 'MANDT' ).
    DELETE table_structure     INDEX 1.
  ENDIF.

ENDFORM.                    "TABLE_field_info_get

*&--------------------------------------------------------------------*
*&      Form  f4_help_datafile
*&--------------------------------------------------------------------*
FORM f4_help_datafile     CHANGING p_filename LIKE rlgrap-filename.
* rlgrap-filename
  DATAfname        TYPE fieldname.
  DATAfvalue       LIKE rlgrap-filename.

*  GET CURSOR FIELD fname   VALUE fvalue.
  GET CURSOR FIELD p_filename   VALUE fvalue.
  IF fvalue IS INITIAL   OR   fvalue '?' ).
    fvalue '*.*'.
  ENDIF.

  CALL FUNCTION 'WS_FILENAME_GET'
    EXPORTING
      def_filename     fvalue
      mask             ',*.*,*.*.'
      title            '파일선택'
    IMPORTING
      filename         p_filename
    EXCEPTIONS
      inv_winsys       1
      no_batch         2
      selection_cancel 3
      selection_error  4
      OTHERS           5.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE 'S'      NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

ENDFORM.                    "f4_help_datafile

*&--------------------------------------------------------------------*
*&      Form  make_target_structure
*&--------------------------------------------------------------------*
FORM make_target_structure.
  DATAfld_name(30)      TYPE c.

  itab 'DATA: BEGIN OF IN_DATA  OCCURS 100,'.         APPEND itab.

  LOOP AT table_structure.
    CLEARfld_name,  itab.
    CONCATENATE table_structure-fieldname '('
                table_structure-outputlen ')'
                ' TYPE C,'
                INTO itab.
    APPEND itab.

  ENDLOOP.

  itab 'END OF IN_DATA.'.    APPEND itab.

ENDFORM.                    "make_target_structure
*&--------------------------------------------------------------------*
*&      Form  table_data_delete_all
*&--------------------------------------------------------------------*
FORM table_data_delete_all.
  DATAhd_text(100)           TYPE c,
        return_code            TYPE c.

  IF tab_name NP 'Y*' AND tab_name NP 'Z*' ).
    MESSAGE i001(00)  WITH
            'Standard Table은 데이터를 삭제할 수 없습니다'.
    STOP.
  ENDIF.


  CONCATENATE '테이블 (' tab_name
              ') 데이터를 모두 삭제후 작업을 진행합니다'
              INTO  hd_text SEPARATED BY space.
  CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
    EXPORTING
      textline1      hd_text
      textline2      '계속 진행하시겠습니까?'
      titel          '데이터 삭제 확인'
      defaultoption  'N'
      cancel_display ''
    IMPORTING
      answer         return_code.
  IF return_code <> 'J'.
    MESSAGE s001(00)  WITH '작업이 취소되었습니다'.
    STOP.
  ENDIF.

* 데이터베이스 테이블의 데이터를 전체 삭제
  DELETE  FROM (tab_name).

ENDFORM.                    "table_data_delete_all

*&--------------------------------------------------------------------*
*&      Form  make_program
*&--------------------------------------------------------------------*
FORM make_program.
  CLEARitab.     REFRESHitab.

  DEFINE program_body.
    itab-line &1.
    append itab.
  END-OF-DEFINITION.

  itab 'REPORT ZDYNPRO   MESSAGE-ID 00   LINE-SIZE 210'APPEND itab.
  itab '                   NO STANDARD PAGE HEADING.  'APPEND itab.
* Input Table Structure
  PERFORM make_target_structure.

* Target Table Structure
  CONCATENATE 'DATA UP_DATA LIKE '    tab_name
                                 INTO itab  SEPARATED BY space.
  CONCATENATE itab 'OCCURS 0 WITH HEADER LINE.'
                                 INTO itab  SEPARATED BY space.
  APPEND itab.

* Program Body create
  program_body:
   'TYPE-POOLS: slis.                                              ',
   '                                                               ',
   '                                                               ',
   'DATA: gt_fieldcat          TYPE slis_t_fieldcat_alv,           ',
   '      gs_layout            TYPE slis_layout_alv,               ',
   '      pgm                  LIKE sy-repid,                      ',
   '      g_inclname           LIKE trdir-name.                    ',
   '                                                               ',
   'DATA: cnt                    TYPE i,                           ',
   '      hd_text(100)           TYPE c,                           ',
   '      return_code            TYPE c.                           ',
   '                                                               ',
   'SELECTION-SCREEN BEGIN OF BLOCK bl_1 WITH FRAME TITLE title_1. ',
   '                                                               ',
   'SELECTION-SCREEN BEGIN OF LINE.                                ',
   'SELECTION-SCREEN COMMENT (31)  t_tab      FOR  FIELD tab_name. ',
   'PARAMETERS: tab_name LIKE dd03l-tabname          OBLIGATORY.   ',
   'SELECTION-SCREEN END OF LINE.                                  ',
   '                                                               ',
   'SELECTION-SCREEN END OF BLOCK bl_1.                            ',
   '*                                                              ',
   'SELECTION-SCREEN BEGIN OF BLOCK bl_2 WITH FRAME TITLE title_2. ',
   '                                                               ',
   'SELECTION-SCREEN BEGIN OF LINE.                                ',
   'SELECTION-SCREEN COMMENT (31)  t_fname    FOR  FIELD filename. ',
   'PARAMETERS: filename LIKE rlgrap-filename                      ',
   '                 DEFAULT ''C:\Data''              OBLIGATORY.   ',
   'SELECTION-SCREEN END OF LINE.                                  ',
   '                                                               ',
   'SELECTION-SCREEN BEGIN OF LINE.                                ',
   'SELECTION-SCREEN COMMENT (31)  t_ftype    FOR  FIELD filetype. ',
   'PARAMETERS: filetype LIKE rlgrap-filetype DEFAULT ''DAT''.     ',
   'SELECTION-SCREEN END OF LINE.                                  ',
   '                                                               ',
   'SELECTION-SCREEN SKIP 1.                                       ',
   '                                                               ',
   'SELECTION-SCREEN BEGIN OF LINE.                                ',
   'PARAMETERS: p_head          AS  CHECKBOX   DEFAULT space.      ',
   'SELECTION-SCREEN COMMENT 3(40)  t_head     FOR  FIELD p_head.  ',
   'SELECTION-SCREEN END OF LINE.                                  ',
   '                                                               ',
   'SELECTION-SCREEN BEGIN OF LINE.                                ',
   'PARAMETERS: p_space         AS  CHECKBOX   DEFAULT ''X''.      ',
   'SELECTION-SCREEN COMMENT 3(40)  t_space    FOR  FIELD p_space. ',
   'SELECTION-SCREEN END OF LINE.                                  ',
   '                                                               ',
   'SELECTION-SCREEN BEGIN OF LINE.                                ',
   'PARAMETERS: p_remark        AS  CHECKBOX   DEFAULT ''X''.      ',
   'SELECTION-SCREEN COMMENT 3(40)  t_remark   FOR  FIELD p_remark.',
   'PARAMETERS: p_except(1)     TYPE c   DEFAULT ''#''.            ',
   'SELECTION-SCREEN END OF LINE.                                  ',
   '                                                               ',
   'SELECTION-SCREEN SKIP 1.                                       ',
   'SELECTION-SCREEN END OF BLOCK bl_2.                            ',
   '                                                               ',
   'SELECTION-SCREEN BEGIN OF BLOCK bl_3 WITH FRAME TITLE title_3. ',
   'SELECTION-SCREEN BEGIN OF LINE.                                ',
   'PARAMETERS: r_disp  RADIOBUTTON GROUP rad.                     ',
   'SELECTION-SCREEN COMMENT 3(30) t_disp   FOR  FIELD r_disp.     ',
   'SELECTION-SCREEN END OF LINE.                                  ',
   '                                                               ',
   'SELECTION-SCREEN BEGIN OF LINE.                                ',
   'PARAMETERS: r_upda  RADIOBUTTON GROUP rad.                     ',
   'SELECTION-SCREEN COMMENT 3(30) t_upda   FOR  FIELD r_upda.     ',
   'SELECTION-SCREEN END OF LINE.                                  ',
   '                                                               ',
   'SELECTION-SCREEN BEGIN OF LINE.                                ',
   'PARAMETERS: r_refr  RADIOBUTTON GROUP rad.                     ',
   'SELECTION-SCREEN COMMENT 3(30) t_refr   FOR  FIELD r_refr.     ',
   'SELECTION-SCREEN END OF LINE.                                  ',
   '                                                               ',
   'SELECTION-SCREEN END OF BLOCK bl_3.                            ',
   '                                                               ',
   'INITIALIZATION.                                                ',
   '  title_1  = ''선택조건''.                                     ',
   '  title_2  = ''추가옵션''.                                     ',
   '  title_3  = ''처리옵션''.                                     ',
   '                                                               ',
   '  t_tab    = ''테이블명''.                                     ',
   '  t_fname  = ''파일명''.                                       ',
   '  t_ftype  = ''파일형식''.                                     ',
   '                                                               ',
   '  t_head   = ''데이터 첫행은 제외함''.                         ',
   '  t_space  = ''데이터 값이 없는 라인은 제외함''.               ',
   '  t_remark = ''데이터가 다음 문자로 시작되면 제외함''.         ',
   '                                                               ',
   '  t_disp   = ''Display Only''.                                 ',
   '  t_upda   = ''Update Only''.                                  ',
   '  t_refr   = ''테이블 초기화 & Update''.                       ',
   '                                                               ',
   ' SET TITLEBAR ''%_t'' OF PROGRAM  ''rssystdb''                 ',
   '                  WITH ''Table contents Upload Utility''.      ',
   'AT SELECTION-SCREEN ON VALUE-REQUEST FOR filename.             ',
   '  PERFORM f4_help_datafile.                                    ',
   '                                                               ',
   'START-OF-SELECTION.                                            ',
   '  PERFORM data_upload.                                         ',
   '                                                               ',
   '  IF r_disp = ''X''.             "- Display Only               ',
   '    PERFORM selection_data_display.                            ',
   '  ELSEIF r_upda = ''X''.         "- Update Only                ',
   '    PERFORM selection_data_update.                             ',
   '  ELSEIF r_refr = ''X''.         "- Delete & Update            ',
   '*   PERFORM table_data_delete_all.                             ',
   '    PERFORM selection_data_update.                             ',
   '  ENDIF.                                                       ',
   '                                                               ',
   '*&-------------------------------------------------------------',
   '*       FORM F4_HELP_DATAFILE                                  ',
   '*&-------------------------------------------------------------',
   'FORM f4_help_datafile.                                         ',
   '                                                               ',
   '  DATA: fname        TYPE fieldname,                           ',
   '        fvalue       LIKE rlgrap-filename.                     ',
   '                                                               ',
   '  GET CURSOR FIELD fname VALUE fvalue.                         ',
   '                                                               ',
   '  CALL FUNCTION ''WS_FILENAME_GET''                            ',
   '    EXPORTING                                                  ',
   '      def_filename     = fvalue                                ',
   '      mask             = '',*.*,*.*.''                         ',
   '      title            = ''파일선택''                          ',
   '    IMPORTING                                                  ',
   '      filename         = filename                              ',
   '    EXCEPTIONS                                                 ',
   '      inv_winsys       = 1                                     ',
   '      no_batch         = 2                                     ',
   '      selection_cancel = 3                                     ',
   '      selection_error  = 4                                     ',
   '      OTHERS           = 5.                                    ',
   '  IF sy-subrc <> 0.                                            ',
   '    MESSAGE ID sy-msgid TYPE ''S''      NUMBER sy-msgno        ',
   '            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.          ',
   '  ENDIF.                                                       ',
   '                                                               ',
   'ENDFORM.                    "f4_help_datafile                  ',
   '                                                               ',
   '*&-------------------------------------------------------------',
   '*       FORM DATA_UPLOAD                                       ',
   '*&-------------------------------------------------------------',
   'FORM data_upload.                                              ',
   '  CLEAR: in_data.      REFRESH: in_data.                       ',
   '  CLEAR: up_data.      REFRESH: up_data.                       ',
   '                                                               ',
   '  CALL FUNCTION ''WS_UPLOAD''                                  ',
   '    EXPORTING                                                  ',
   '      filename                = filename                       ',
   '      filetype                = filetype                       ',
   '    TABLES                                                     ',
   '      data_tab                = in_data                        ',
   '    EXCEPTIONS                                                 ',
   '      conversion_error        = 1                              ',
   '      file_open_error         = 2                              ',
   '      file_read_error         = 3                              ',
   '      invalid_type            = 4                              ',
   '      no_batch                = 5                              ',
   '      unknown_error           = 6                              ',
   '      invalid_table_width     = 7                              ',
   '      gui_refuse_filetransfer = 8                              ',
   '      customer_error          = 9                              ',
   '      OTHERS                  = 10.                            ',
   '  IF sy-subrc <> 0.                                            ',
   '    MESSAGE ID sy-msgid TYPE ''S''    NUMBER sy-msgno          ',
   '            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.          ',
   '    STOP.                                                      ',
   '  ENDIF.                                                       ',
   '                                                               ',
   '  LOOP AT in_data.                                             ',
   '    IF ( sy-tabix = 1   )  AND  "-- 데이터 머리글행은 제외함   ',
   '       ( p_head   = ''X'' ).                                   ',
   '      CONTINUE.                                                ',
   '    ENDIF.                                                     ',
   '    IF ( in_data IS INITIAL ) AND "-- 데이터가 없는 행은 제외함',
   '       ( p_space  = ''X'' ).                                   ',
   '      CONTINUE.                                                ',
   '    ENDIF.                                                     ',
   '    IF ( p_remark = ''X''     ) AND "-데이터가 제외문자로 시작 ',
   '       ( in_data(1) = p_except ).                              ',
   '      CONTINUE.                                                ',
   '    ENDIF.                                                     ',
   '                                                               ',
   '                                                               ',
   '  CATCH SYSTEM-EXCEPTIONS  CONVERSION_ERRORS = 1               ',
   '                           OTHERS            = 2.              ',
   '                                                               ',
   '    MOVE-CORRESPONDING in_data     TO up_data.                 ',
   '  ENDCATCH.                                                    ',
   '                                                               ',
   '  IF SY-SUBRC = 0.                                             ',
   '    APPEND up_data.                                            ',
   '    CONTINUE.                                                  ',
   '  ELSE.                                                        ',
   '    WRITE SY-TABIX       TO HD_TEXT  LEFT-JUSTIFIED.           ',
   '    CONCATENATE  HD_TEXT ''번째 데이터를 변환할 수 없습니다.'' ',
   '                 INTO  hd_text.                                ',
   '    CALL FUNCTION ''POPUP_TO_CONFIRM_STEP''                    ',
   '      EXPORTING                                                ',
   '        textline1      = hd_text                               ',
   ' textline2 = ''오류 데이터를 제외하고 계속 진행하시겠습니까?'' ',
   '        titel          = ''데이터 제외 확인''                  ',
   '        defaultoption  = ''N''                                 ',
   '        cancel_display = ''''                                  ',
   '      IMPORTING                                                ',
   '        answer         = return_code.                          ',
   '    IF return_code <> ''J''.                                   ',
   '      MESSAGE s001(00)  WITH ''작업이 취소되었습니다''.        ',
   '      STOP.                                                    ',
   '    ENDIF.                                                     ',
   '  ENDIF.                                                       ',
   '  ENDLOOP.                                                     ',
   '                                                               ',
   '  DESCRIBE TABLE up_data       LINES cnt.                      ',
   '                                                               ',
   'ENDFORM.                    "data_upload                       ',
   '                                                               ',
   '*&-------------------------------------------------------------',
   '*       FORM selection_data_display                            ',
   '*&-------------------------------------------------------------',
   'FORM selection_data_display.                                   ',
   '                                                               ',
   '  PERFORM layout_init              USING gs_layout.            ',
   '  PERFORM fieldcat_init            USING tab_name.             ',
   '  PERFORM fieldcat_modify          USING gt_fieldcat[].        ',
   '                                                               ',
   '  CALL FUNCTION ''REUSE_ALV_GRID_DISPLAY''                     ',
   '    EXPORTING                                                  ',
   '      i_callback_program = pgm                                 ',
   '      i_grid_title       = ''Table Contents Upload Utility''   ',
   '      is_layout          = gs_layout                           ',
   '      it_fieldcat        = gt_fieldcat[]                       ',
   '    TABLES                                                     ',
   '      t_outtab           = up_data                             ',
   '    EXCEPTIONS                                                 ',
   '      program_error      = 1                                   ',
   '      OTHERS             = 2.                                  ',
   '                                                               ',
   '  IF sy-subrc <> 0.                                            ',
   '    MESSAGE ID sy-msgid TYPE ''I''  NUMBER sy-msgno            ',
   '            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.          ',
   '  ENDIF.                                                       ',
   '                                                               ',
   'ENDFORM.                    "selection_data_display            ',
   '                                                               ',
   '                                                               ',
   '*&-------------------------------------------------------------',
   '*       FORM selection_data_update                             ',
   '*&-------------------------------------------------------------',
   'FORM selection_data_update.                                    ',
   '                                                               ',
   '  MODIFY (tab_name) FROM TABLE up_data.                        ',
   '  MESSAGE s001(00)  WITH sy-dbcnt ''건 Upload 완료''.          ',
   '                                                               ',
   'ENDFORM.                    "selection_data_update             ',
   '                                                               ',
   '*&-------------------------------------------------------------',
   '*       FORM TABLE_DATA_DELETE_ALL                             ',
   '*&-------------------------------------------------------------',
   'FORM table_data_delete_all.                                    ',
   '  DATA: hd_text(100)          TYPE c.                          ',
   '  CONCATENATE ''테이블 (''  tab_name                           ',
   '              '')데이터를 모두 삭제후 작업을 진행합니다''      ',
   '              INTO  hd_text SEPARATED BY space.                ',
   '  CALL FUNCTION ''POPUP_TO_CONFIRM_STEP''                      ',
   '    EXPORTING                                                  ',
   '      textline1      = hd_text                                 ',
   '      textline2      = ''계속 진행하시겠습니까?''              ',
   '      titel          = ''데이터 삭제 확인''                    ',
   '      defaultoption  = ''N''                                   ',
   '      cancel_display = ''''                                    ',
   '    IMPORTING                                                  ',
   '      answer         = return_code.                            ',
   '  IF return_code <> ''J''.                                     ',
   '    MESSAGE s001(00)  WITH ''작업이 취소되었습니다''.          ',
   '    STOP.                                                      ',
   '  ENDIF.                                                       ',
   '                                                               ',
   '* 데이터베이스 테이블의 데이터를 전체 삭제                     ',
   '  DELETE  FROM (tab_name).                                     ',
   '                                                               ',
   'ENDFORM.                    "table_data_delete_all             ',
   '                                                               ',
   '                                                               ',
   '*&-------------------------------------------------------------',
   '*       FORM layout_init                                       ',
   '*&-------------------------------------------------------------',
   'FORM layout_init  USING rs_layout TYPE slis_layout_alv.        ',
   '* Build layout for list display                                ',
   '  pgm = sy-repid.                                              ',
   '                                                               ',
   '  rs_layout-zebra               = ''X''.                       ',
   '  rs_layout-colwidth_optimize   = ''X''.                       ',
   '                                                               ',
   '  rs_layout-no_keyfix           = '' ''.                       ',
   '                                                               ',
   'ENDFORM.                    "layout_init                       ',
   '                                                               ',
   '*&-------------------------------------------------------------',
   '*&      Form  fieldcat_init                                    ',
   '*&-------------------------------------------------------------',
   'FORM fieldcat_init             USING p_structure.              ',
   '  g_inclname = sy-repid.                                       ',
   '  CLEAR: gt_fieldcat.   REFRESH: gt_fieldcat.                  ',
   '                                                               ',
   '  CALL FUNCTION ''REUSE_ALV_FIELDCATALOG_MERGE''               ',
   '    EXPORTING                                                  ',
   '      i_program_name   = pgm                                   ',
   '      i_structure_name = p_structure                           ',
   '      i_inclname       = g_inclname                            ',
   '    CHANGING                                                   ',
   '      ct_fieldcat      = gt_fieldcat[].                        ',
   '                                                               ',
   'ENDFORM.                    "fieldcat_init                     ',
   '                                                               ',
   '*&-------------------------------------------------------------',
   '*&      Form  fieldcat_modify                                  ',
   '*&-------------------------------------------------------------',
   'FORM fieldcat_modify                                           ',
   '                  USING  p_fieldcat TYPE slis_t_fieldcat_alv.  ',
   '                                                               ',
   '  DATA: ls_fieldcat     TYPE slis_fieldcat_alv.                ',
   '                                                               ',
   '  LOOP AT p_fieldcat  INTO ls_fieldcat.                        ',
   '    IF ls_fieldcat-fieldname = ''MANDT''.                      ',
   '      ls_fieldcat-no_out     = ''X''.                          ',
   '    ENDIF.                                                     ',
   '    MODIFY p_fieldcat   FROM ls_fieldcat  INDEX sy-tabix.      ',
   '  ENDLOOP.                                                     ',
   'ENDFORM.                    "fieldcat_modify                   ',

   ' '.

ENDFORM.                    "make_program

'SAP SD' 카테고리의 다른 글

[TABLE] TBTCO, TBTCP 스케쥴 잡 등록 테이블.  (0) 2016.01.12