HR BDC

*&---------------------------------------------------------------------*
*& Report  ZHRB0000
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zhrb0000.

CONSTANTS :   cts(5)    VALUE   'GNDK*'.

************************************************************************
** 업로드할 데이타 양식 정의
************************************************************************
DATA: BEGIN OF itab OCCURS 0,
      pernr         TYPE         persno,         "교직원번호
      begda         TYPE         begda,          "시작일자
      endda         TYPE         endda,          "종료일자
      END OF itab.


************************************************************************
** BDC 공통 INCLUDE
************************************************************************
INCLUDE zbdcrecx1.


************************************************************************
** BDC 처리 부분 - 각 BDC 마다 틀림
************************************************************************
LOOP AT itab.
  CLEAR p0006.
  MOVE-CORRESPONDING itab TO p0006.
  CALL METHOD lv_ref->infotype_operation
    EXPORTING
      im_opera     = mode
      im_infty     = '0006'
      im_pernr     = p0006-pernr
      im_subty     = p0006-subty
      im_objps     = p0006-objps
      im_sprps     = p0006-sprps
      im_endda     = p0006-endda
      im_begda     = p0006-begda
      im_seqnr     = p0006-seqnr
      im_view_flag = '41'
    IMPORTING
      ex_message   = ex_message
      ex_return    = ex_return.

  PERFORM MESSAGE_PROCESS USING P0006-PERNR.

ENDLOOP.



**************************************************************************************
*&---------------------------------------------------------------------*
*&  Include           ZBDCRECX1
*&---------------------------------------------------------------------*
TABLES: e070.
DATA:   subrc,
        tabix(10)    TYPE   n,
        line         TYPE   i.
DATA:   lv_ref       TYPE   REF TO zcl_wd_common.
DATA:   mode         TYPE   actio.
DATA:   ex_message   TYPE   string,
        ex_return    TYPE   bapireturn1.

DATA:   suc_count    TYPE   i,
        fal_count    TYPE   i,
        tot_count    TYPE   i.

DATA:   BEGIN        OF     jtab     OCCURS 0,
        pernr        TYPE   persno,
        ex_message   TYPE   string,
        END          OF     jtab.

TABLES: p0000, p0001, p0002, p0003, p0006, p0007, p0008,
        p0009, p0014, p0015, p0171, p0183, p0543, p0542,
        p2001, p2002, p2004, p2005, p2010.


SELECTION-SCREEN FUNCTION KEY 1.
SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE text-001.
PARAMETERS: filename LIKE rlgrap-filename OBLIGATORY.
*            count TYPE i.
SELECTION-SCREEN END OF BLOCK a1.

* PARAMETERS NOBINPT LIKE CTU_PARAMS-NOBINPT DEFAULT ' '.
SELECTION-SCREEN BEGIN OF BLOCK bk1 WITH FRAME TITLE text-100.
PARAMETERS: p_p RADIOBUTTON GROUP a USER-COMMAND se7,
            p_a RADIOBUTTON GROUP a.
SELECTION-SCREEN SKIP 1.
PARAMETERS: p_trkorr LIKE ko008-trkorr MODIF ID se1 DEFAULT cts.
SELECTION-SCREEN END   OF BLOCK bk1.

SELECTION-SCREEN BEGIN OF BLOCK bk2 WITH FRAME TITLE text-020.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS ins RADIOBUTTON GROUP md .  "입력
SELECTION-SCREEN COMMENT 3(20) text-k01 FOR FIELD ins.
SELECTION-SCREEN POSITION 30.
PARAMETERS mod RADIOBUTTON GROUP  md . "수정
SELECTION-SCREEN COMMENT 35(10) text-k02 FOR FIELD mod.
SELECTION-SCREEN POSITION 55.
PARAMETERS del RADIOBUTTON GROUP  md . "삭제
SELECTION-SCREEN COMMENT 60(10) text-k03 FOR FIELD del.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK bk2.

*----------------------------------------------------------------------*
*   data definition
*----------------------------------------------------------------------*
*       Batchinputdata of single transaction
DATA:   bdcdata LIKE bdcdata    OCCURS 0 WITH HEADER LINE.
*       messages of call transaction
DATA:   messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
*       error session opened (' ' or 'X')
DATA:   e_group_opened.
*       message texts
DATA:  opt LIKE ctu_params.
TABLES: t100,
        sscrfields.

TYPE-POOLS icon.

DATA : group_name(12).  "섹션의 이름 (섹션의 이름 + 순번)

DATA : tab_line      TYPE  i,  "전체 레코드 갯수
       rec_count     TYPE  i,  "수행한 건수
       w_count(6)    TYPE  n,  "섹션내의 레코드 건수
       w_countsn(6)  TYPE  n,  "섹션의 갯수
       temp_text(100),
       opencheck.

DATA: ok_count TYPE i,
      error_count TYPE i.
*----------------------------------------------------------------------*
INITIALIZATION.
*----------------------------------------------------------------------*
  filename = 'C:\BDC\IT012.XLS'.
  CONCATENATE icon_xls '양식 다운로드' INTO sscrfields-functxt_01.
*----------------------------------------------------------------------*
*  AT SELECTION-SCREEN                                                 *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR filename.
  PERFORM  pro_request_dir.

*----------------------------------------------------------------------*
*   at selection screen                                                *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.

  CASE sscrfields-ucomm.
    WHEN 'FC01'.
      PERFORM download_excel  USING itab.
*    WHEN OTHERS.
*      PERFORM pro_pre_condition.
  ENDCASE.

** SEL SCREEN 제어
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_trkorr.
  PERFORM read_dynp_field USING p_trkorr 'P_TRKORR'.
  CALL FUNCTION 'TR_F4_REQUESTS'
    EXPORTING
      iv_trkorr_pattern   = p_trkorr
    IMPORTING
      ev_selected_request = p_trkorr.
*&---------------------------------------------------------------------*
*&      Form  pro_request_dir
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM pro_request_dir.

  CALL FUNCTION 'WS_FILENAME_GET'
    EXPORTING
      def_filename     = filename
      def_path         = 'C:\DATA'
*      mask             = 'xlsx files,*.xlsx,xls files,*.xls,text files,*.txt,All files,*.*,.'
      mask             = ' xls files,*.xls,text files,*.txt,All files,*.*,.'
      mode             = 'O'
      title            = 'Select uploading file...'
    IMPORTING
      filename         = filename
    EXCEPTIONS
      inv_winsys       = 0
      no_batch         = 0
      selection_cancel = 0
      selection_error  = 0.

ENDFORM.                    " pro_request_dir

*----------------------------------------------------------------------*
*        Start new transaction according to parameters                 *
*----------------------------------------------------------------------*
FORM bdc_transaction USING tcode.
  DATA: l_mstring(480).
  DATA: l_subrc LIKE sy-subrc.

  REFRESH messtab.

*  MOVE :  ctumode  TO  opt-dismode,
*          cupdate  TO  opt-updmode,
*          nobinpt  TO  opt-nobinpt.

  CALL TRANSACTION tcode USING bdcdata
                     MODE   'N'
                     UPDATE 'S'
*                   OPTIONS FROM opt
                   MESSAGES INTO messtab.
  l_subrc = sy-subrc.

  IF ( l_subrc = 0 ).
    ok_count = ok_count + 1.
  ELSE.
    error_count = error_count + 1.
  ENDIF.

  WRITE: / 'CALL_TRANSACTION',
           tcode,
           'returncode:'(i05), l_subrc,
           'RECORD:', rec_count.

  LOOP AT messtab.
    SELECT SINGLE * FROM t100 WHERE sprsl = messtab-msgspra
                              AND   arbgb = messtab-msgid
                              AND   msgnr = messtab-msgnr.
    IF sy-subrc = 0.
      l_mstring = t100-text.
      IF l_mstring CS '&1'.
        REPLACE '&1' WITH messtab-msgv1 INTO l_mstring.
        REPLACE '&2' WITH messtab-msgv2 INTO l_mstring.
        REPLACE '&3' WITH messtab-msgv3 INTO l_mstring.
        REPLACE '&4' WITH messtab-msgv4 INTO l_mstring.
      ELSE.
        REPLACE '&' WITH messtab-msgv1 INTO l_mstring.
        REPLACE '&' WITH messtab-msgv2 INTO l_mstring.
        REPLACE '&' WITH messtab-msgv3 INTO l_mstring.
        REPLACE '&' WITH messtab-msgv4 INTO l_mstring.
      ENDIF.
      CONDENSE l_mstring.
      WRITE: / messtab-msgtyp, l_mstring(250).
    ELSE.
      WRITE: / messtab.
    ENDIF.
  ENDLOOP.
  SKIP.


  REFRESH bdcdata.
ENDFORM.                    "BDC_TRANSACTION

*----------------------------------------------------------------------*
*        Start new screen                                              *
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
  CLEAR bdcdata.
  bdcdata-program  = program.
  bdcdata-dynpro   = dynpro.
  bdcdata-dynbegin = 'X'.
  APPEND bdcdata.
ENDFORM.                    "BDC_DYNPRO

*----------------------------------------------------------------------*
*        Insert field                                                  *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
  CLEAR bdcdata.
  bdcdata-fnam = fnam.
  bdcdata-fval = fval.
  APPEND bdcdata.
ENDFORM.                    "BDC_FIELD

*&---------------------------------------------------------------------*
*&      Form  download_exceL
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_SY_REPID  text    excel form
*----------------------------------------------------------------------*
FORM download_excel  USING    p_tab.

  CALL FUNCTION 'ZHR_EXCEL_FORM_DOWMLOAD'
    EXPORTING
      im_itab = p_tab.

ENDFORM.                    " download_exceL
*&---------------------------------------------------------------------*
*&      Form  DATA_CONVERSION
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_WA_TAB_ORG  text
*      -->P_WA_ZPGM_CD  text
*----------------------------------------------------------------------*
FORM data_conversion  USING    p_in
                               p_out.

  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
      input  = p_in
    IMPORTING
      output = p_out.


ENDFORM.                    " DATA_CONVERSION
*&---------------------------------------------------------------------*
*&      Form  READ_DYNP_FIELD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_P_TRKORR  text
*      -->P_0421   text
*----------------------------------------------------------------------*
FORM read_dynp_field USING p_trkorr p_fname.
  DATA: lt_dynpfields LIKE dynpread OCCURS 0 WITH HEADER LINE,
        lv_dyname     LIKE d020s-prog,
        lv_dynumb     LIKE d020s-dnum.

  lv_dyname = sy-repid.
  lv_dynumb = sy-dynnr.
  lt_dynpfields-fieldname = p_fname.  APPEND lt_dynpfields.

  CALL FUNCTION 'DYNP_VALUES_READ'
    EXPORTING
      dyname     = lv_dyname
      dynumb     = lv_dynumb
    TABLES
      dynpfields = lt_dynpfields.

  p_trkorr = lt_dynpfields-fieldvalue.
ENDFORM.                    " READ_DYNP_FIELD

AT   SELECTION-SCREEN  OUTPUT.
  PERFORM set_cts_no.
*&---------------------------------------------------------------------*
*&      Form  SET_CTS_NO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM set_cts_no .
  IF p_a = 'X'.
    LOOP AT SCREEN.
      CASE screen-group1.
        WHEN 'SE1'.
          screen-active = '0'.
          screen-required  =  '0'.
          CLEAR: p_trkorr.
          MODIFY SCREEN.
      ENDCASE.
      MODIFY SCREEN.
    ENDLOOP.
  ELSEIF p_p  =  'X'.
    LOOP AT SCREEN.
      CASE screen-group1.
        WHEN 'SE1'.
          IF p_trkorr  IS INITIAL.
            p_trkorr  =  cts.
          ENDIF.
          screen-active = '1'.
          screen-required  =  '1'.
          MODIFY SCREEN.
      ENDCASE.
      MODIFY SCREEN.
    ENDLOOP.
  ENDIF.
ENDFORM.                    " SET_CTS_NO

*&---------------------------------------------------------------------*
*&      Form  CHECK_CTS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM check_cts .
  IF  p_p   =  'X'.
    CLEAR: e070, subrc.
    SELECT SINGLE  *  FROM e070  WHERE  trkorr     =  p_trkorr.
    IF  sy-subrc  <>  0.
      subrc  = sy-subrc.
    ELSE.
      IF      e070-trfunction =  'W'  AND  e070-trstatus   =  'D'.
        subrc  =  '0'.
      ELSEIF  e070-trfunction =  'K'.
        subrc  =  '7'.
      ELSEIF  e070-trstatus   =  'R'.
        subrc  =  '8'.
      ELSE.
        subrc  =  '9'.
      ENDIF.
    ENDIF.
  ELSE.
    subrc  =  '0'.
  ENDIF.
ENDFORM.                    " CHECK_CTS


*&---------------------------------------------------------------------*
*&      Form  file_upload
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->GV_TABLE_NAME  text
*----------------------------------------------------------------------*
FORM file_upload  USING   gv_table_name.

  PERFORM progress_indicator  USING 0 0
                      'Uploading data...'.

*-. INTERNAL TABLE 변환용
  FIELD-SYMBOLS : <fs_table>    TYPE STANDARD TABLE.

  TYPES truxs_t_text_data(4096) TYPE c OCCURS 0.

  DATA: lv_table_name   LIKE feld-name,
        v_data          TYPE truxs_t_text_data,
        lv_lines        TYPE i.

*-. Internal Table Assign
  CONCATENATE gv_table_name '[]' INTO lv_table_name.

  ASSIGN (lv_table_name)  TO  <fs_table>.

  TRANSLATE filename TO UPPER CASE.

  FIND '.TXT' IN filename.
  IF sy-subrc = 0.
    CALL FUNCTION 'WS_UPLOAD'
      EXPORTING
        codepage            = 'ASC'
        filename            = filename          "File Location
        filetype            = 'DAT'
*    IMPORTING
*      filelength          = flength
      TABLES
        data_tab            = <fs_table>
      EXCEPTIONS
        file_open_error     = 1
        invalid_table_width = 2
        invalid_type        = 3.
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
  ELSE.
    FIND '.XLS' IN filename.
    IF sy-subrc = 0.
      CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
        EXPORTING
*     I_FIELD_SEPERATOR          =
*     I_LINE_HEADER              =
          i_tab_raw_data             = v_data
          i_filename                 = filename
        TABLES
          i_tab_converted_data       = <fs_table>
       EXCEPTIONS
         conversion_failed          = 1
         OTHERS                     = 2
                .
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    ENDIF.
  ENDIF.

*-. 데이타 건수 체크
  DELETE <fs_table> INDEX 1.
  DESCRIBE TABLE <fs_table> LINES lv_lines.
  IF  lv_lines = 0.
    MESSAGE s000(zmhr) WITH
        '화일을 체크해주세요. 데이타가 없습니다.'.
  ELSE.
    PERFORM progress_indicator USING 100 100
                        'Finish upload...'.
  ENDIF.
ENDFORM.                    " file_upload
*&---------------------------------------------------------------------*
*&      Form  PROGRESS_INDICATOR
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0      text
*      -->P_0      text
*      -->P_1078   text
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Form  progress_indicator
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0      text
*      -->P_0      text
*      -->P_0125   text
*----------------------------------------------------------------------*
FORM progress_indicator  USING p_act  TYPE i
                               p_max  TYPE i
                               p_text TYPE any.
  DATA: l_percent       TYPE p,
        l_ptext(80)     TYPE c.

  IF p_max NE 0.
    l_percent = p_act / p_max * 100.
  ENDIF.

  l_ptext(3)    = l_percent.
  l_ptext+3     = '%'.
  l_ptext+6(38) = p_text.

  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
    EXPORTING
      percentage = l_percent
      text       = l_ptext.

ENDFORM.                    " progress_indicator

*&---------------------------------------------------------------------*
*&      Form  MESSAGE_PROCESS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM message_process USING pernr TYPE persno.
  jtab-pernr = pernr.
  IF ex_return-type = 'E'.
    fal_count = fal_count + 1.
    SELECT SINGLE   text FROM t100
           INTO     jtab-ex_message
           WHERE    sprsl   =   sy-langu
           AND      arbgb   =   ex_return-id
           AND      msgnr   =   ex_return-number.
    IF sy-subrc = 0.

      IF jtab-ex_message CS '&1'.
        REPLACE '&1' WITH ex_return-message_v1 INTO jtab-ex_message.
        REPLACE '&2' WITH ex_return-message_v2 INTO jtab-ex_message.
        REPLACE '&3' WITH ex_return-message_v3 INTO jtab-ex_message.
        REPLACE '&4' WITH ex_return-message_v4 INTO jtab-ex_message.
      ELSE.
        REPLACE '&' WITH ex_return-message_v1 INTO jtab-ex_message.
        REPLACE '&' WITH ex_return-message_v2 INTO jtab-ex_message.
        REPLACE '&' WITH ex_return-message_v3 INTO jtab-ex_message.
        REPLACE '&' WITH ex_return-message_v4 INTO jtab-ex_message.
      ENDIF.
      CONDENSE jtab-ex_message.
    ENDIF.
  ELSE.
    suc_count = suc_count.
    jtab-ex_message = '성공'.
  ENDIF.
  APPEND JTAB.
  WRITE: /1(3)       '( ',
          4(8)        pernr,
          12(3)       ' )' ,
          20(100)     jtab-ex_message.

  tot_count = fal_count + suc_count.
ENDFORM.                    " MESSAGE_PROCESS


************************************************************************
** 메인 로직
************************************************************************
START-OF-SELECTION.
  PERFORM check_cts.
  CHECK   subrc  = '0'.
  PERFORM file_upload   USING 'ITAB'.

  IF itab[] IS INITIAL.
    LEAVE LIST-PROCESSING.
  ENDIF.
  IF lv_ref IS INITIAL.
    CREATE OBJECT lv_ref.
  ENDIF.

  CASE 'X'.
    WHEN 'INS'.
      mode = 'INS'.
    WHEN 'MOD'.
      mode = 'MOD'.
    WHEN 'DEL'.
      mode = 'DEL'.
  ENDCASE.

by saper | 2008/07/01 04:16 | Report | 트랙백 | 덧글(0)

HR 인포타입 잠금 해제

HR 인포타입을 담당자가 잠그고 있을때 잠금을 해제할수 있는 펑션
  CALL FUNCTION 'HR_PSBUFFER_INITIALIZE'.
  CALL FUNCTION 'HR_READ_INFOTYPE_AUTHC_DISABLE'.

by saper | 2008/06/26 16:56 | Tip | 트랙백 | 덧글(0)

상하위 조직 불러오는 펑션

DATA: lt_result_tab TYPE TABLE OF swhactor. 
CALL FUNCTION 'RH_STRUC_GET'
    EXPORTING
      act_otype       = 'O'
      act_objid       =  '10000000'
      act_wegid       = 'B002' " 'O-O-P' 'A002' => V_T77AW 참조
      act_begda       = '20080101'
      act_endda       = '20080101'
      act_tdepth      = 0
      act_tflag       = 'X'
      act_vflag       = 'X'
      authority_check = 'X'
    TABLES
      result_tab      = lt_result_tab
    EXCEPTIONS
      no_plvar_found  = 1
      no_entry_found  = 2
      OTHERS          = 3.

by saper | 2008/06/25 00:47 | 트랙백 | 덧글(0)

sap link를 이용한 데이타 다운로드

REPORT  ythrpar16.

DATA: BEGIN OF itab OCCURS 0 ,
      objname(40),
      END   OF itab.

DATA: BEGIN OF bdcdata OCCURS 0.
        INCLUDE STRUCTURE bdcdata.
DATA: END OF bdcdata.

DATA : lv_fname TYPE string.
DATA:  mstext(50).

DATA: in_file LIKE rlgrap-filename,
      zobject TYPE trobjtype.

DATA: count TYPE i,
      file_talbe TYPE STANDARD TABLE OF file_info,
      wa_talbe LIKE LINE OF file_talbe.

CALL METHOD cl_gui_frontend_services=>directory_list_files
  EXPORTING
    directory                   = 'C:\FILE\타모듈\'
    files_only                  = 'X'
  CHANGING
    file_table                  = file_talbe
    count                       = count
  EXCEPTIONS
    cntl_error                  = 1
    directory_list_files_failed = 2
    wrong_parameter             = 3
    error_no_gui                = 4
    not_supported_by_gui        = 5
    OTHERS                      = 6.

START-OF-SELECTION.

  LOOP AT file_talbe INTO wa_talbe.
    CLEAR: in_file, zobject.
    zobject = wa_talbe-filename+0(4).
    CONCATENATE 'C:\FILE\타모듈\' wa_talbe-filename+0(11) INTO in_file.
    PERFORM  get_data_section.
    PERFORM download_data.
  ENDLOOP.

END-OF-SELECTION.

*&---------------------------------------------------------------------*
*&      Form  get_in_file
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_in_file .
  CALL FUNCTION 'WS_FILENAME_GET'
    EXPORTING
      def_path         = 'C:\FILE\'
      mask             = ',*.*,*.*.'
      mode             = 'O'
      title            = 'File Uploading Path'
    IMPORTING
      filename         = in_file
    EXCEPTIONS
      inv_winsys       = 01
      no_batch         = 02
      selection_cancel = 03
      selection_error  = 04.

  CASE sy-subrc.
    WHEN 1.
      MESSAGE s899(zmpp) WITH 'E : INV_WINSYS!'.
    WHEN 2.
      MESSAGE s899(zmpp) WITH 'E : NO_BATCH!'.
    WHEN 3.
      MESSAGE s899(zmpp) WITH 'E : SELECTION_CANCEL!'.
    WHEN 4.
      MESSAGE s899(zmpp) WITH 'E : SELECTION_ERROR!'.
  ENDCASE.

ENDFORM.                    " get_in_file
*&---------------------------------------------------------------------*
*&      Form  get_data_section
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_data_section .
  lv_fname =   in_file.
  CLEAR itab. REFRESH itab.
  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename            = lv_fname
      has_field_separator = 'X'
    TABLES
      data_tab            = itab.

ENDFORM.                    " get_data_section
*&---------------------------------------------------------------------*
*&      Form  download_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM download_data .
  DATA: line TYPE i,
        pct  TYPE i,
        sytabix(4),
        t_line(4),
        t_pct(4).
  DESCRIBE TABLE itab LINES line.
  t_line = line.
  LOOP AT itab.
    pct = sy-tabix * 100 / line .
    CLEAR: mstext.
    sytabix = sy-tabix.
    t_pct = pct.
    CONCATENATE   sytabix '/' t_line ':' t_pct  '%' '진행중 >>' itab-objname
                         INTO   mstext
                         SEPARATED   BY  space.
    REFRESH bdcdata.     CLEAR bdcdata.
    PERFORM dynpro USING:
                'X'       'ZSAPLINK'      '1000',
                ' '       'BDC_OKCODE'    '=OBJ',
                'X'       'ZSAPLINK'      '1000',
                ' '       'BDC_SUBSCR'    'ZSAPLINK',
                ' '       'BDC_OKCODE'    '=UPDOWN',
                ' '       'BDC_SUBSCR'    'ZSAPLINK',
                ' '       'BDC_CURSOR'    'EXPORT',
                ' '       'IMPORT'        '',
                ' '       'EXPORT'        'X',
                'X'       'ZSAPLINK'      '1000',
                ' '       'BDC_SUBSCR'    'ZSAPLINK',
                ' '       'BDC_CURSOR'    'OBJNAME',
                ' '       'EXPORT'        'X',
                ' '       'PLUGIN'        zobject,
                ' '       'OBJNAME'       itab-objname,
                ' '       'BDC_OKCODE'    '=ONLI',
                'X'       'SAPLSWXML_IO'  '0200',
                ' '       'BDC_OKCODE'    '=CANC'.


    CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'   ">Progress bar
            EXPORTING
                   percentage  =   100         ">백분율
                   text        =   mstext
            EXCEPTIONS
                   OTHERS      =   1.

    CALL TRANSACTION 'ZSAPLINK' USING     bdcdata
                                MODE     'N'
                                UPDATE   'S'.


  ENDLOOP.
ENDFORM.                    " download_data
*&---------------------------------------------------------------------*
*&      Form  dynpro
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0147   text
*      -->P_0148   text
*      -->P_0149   text
*----------------------------------------------------------------------*
FORM dynpro  USING    dynbegin name value.
  CLEAR bdcdata.
  IF dynbegin = 'X'.
    MOVE : name      TO bdcdata-program,
           value     TO bdcdata-dynpro,
           dynbegin  TO bdcdata-dynbegin.
  ELSE.
    MOVE : name      TO bdcdata-fnam,
           value     TO bdcdata-fval.
  ENDIF.
  APPEND bdcdata.
ENDFORM.                    " DYNPRO

by saper | 2008/06/17 04:12 | Report | 트랙백 | 덧글(0)

로그인한 사용자 정보 리턴

DATA:  i_bapiret2     TYPE TABLE OF bapiret2 WITH HEADER LINE,
            wa_address     TYPE bapiaddr3,
            g_iderror(20)  TYPE c.
 
  CALL FUNCTION 'BAPI_USER_GET_DETAIL'
    EXPORTING
      username = p_usr
    IMPORTING
      address  = wa_address
    TABLES
      return   = i_bapiret2.

by saper | 2008/06/13 15:30 | Tip | 트랙백 | 덧글(0)

◀ 이전 페이지 다음 페이지 ▶