CRM 员工创建并分配用户详解编程语言

REPORT zjp_emp_upload. 
TABLES: sscrfields. 
DATA:gt_excel_data TYPE TABLE OF zalsmex_tabline, 
     gs_excel_data TYPE          zalsmex_tabline. 
DATA: lv_filename   TYPE string, 
      lt_file_table TYPE filetable, 
      gv_error      TYPE flag, 
      gv_fail_flag  TYPE flag, 
      gv_title      TYPE lvc_title, 
      lv_rc         TYPE i. 
DATA: gt_zcrms0083 TYPE TABLE OF zcrms0083, 
      gs_zcrms0083 TYPE zcrms0083. 
 
DATA lt_return TYPE STANDARD TABLE OF bapiret2 WITH HEADER LINE. 
DATA lt_output TYPE STANDARD TABLE OF bapiret2 WITH HEADER LINE. 
 
DATA: centraldataperson TYPE bapibus1006_central_person. 
DATA: addressdata       TYPE bapibus1006_address. 
DATA: it_telefondata TYPE STANDARD TABLE OF bapiadtel, 
      wa_telefondata TYPE                   bapiadtel. 
DATA: it_email TYPE STANDARD TABLE OF bapiadsmtp, 
      wa_email TYPE                   bapiadsmtp. 
DATA: centraldata       TYPE bapibus1006_central. 
DATA: l_bpartner     TYPE bu_partner, 
      l_partner_guid TYPE bapibus1006_head-partnguid, 
      l_guid_16      TYPE bu_partner_guid. 
 
*****************************alv 
DATA: g_program   TYPE syrepid VALUE sy-repid, 
      gs_layout   TYPE slis_layout_alv, 
      gt_fieldcat TYPE slis_t_fieldcat_alv, 
      gs_fieldcat TYPE slis_fieldcat_alv, 
      gt_event    TYPE slis_t_event, 
      gs_event    TYPE slis_alv_event. 
DATA lr_grid TYPE REF TO cl_gui_alv_grid. 
*----------------------------------------------------------------------* 
* MARCO DEFINE 
*----------------------------------------------------------------------* 
 
DEFINE add_fieldcat. 
  clear gs_fieldcat. 
  gs_fieldcat-fieldname  = &1 . 
  gs_fieldcat-seltext_m  = &2 . 
  gs_fieldcat-outputlen  = &3 . 
  append gs_fieldcat to gt_fieldcat. 
END-OF-DEFINITION. 
 
SELECTION-SCREEN: FUNCTION KEY 1. 
 
PARAMETERS : f_name LIKE rlgrap-filename. 
*PARAMETERS : f_land LIKE adrc-country DEFAULT 'JP' OBLIGATORY. 
 
INITIALIZATION. 
 
  DATA: functxt TYPE smp_dyntxt. 
  functxt-icon_id   = icon_export. 
  functxt-quickinfo = 'Template Export'. 
  functxt-icon_text = 'Template Export'. 
  sscrfields-functxt_01 = functxt. 
 
AT SELECTION-SCREEN OUTPUT. 
 
START-OF-SELECTION. 
 
  IF f_name IS INITIAL. 
    MESSAGE 'Filename is null' TYPE 'S' DISPLAY LIKE 'E' . 
    RETURN. 
  ENDIF. 
  PERFORM frm_upload_excel_file. 
  CHECK gv_error IS INITIAL. 
  PERFORM frm_make_alv_fieldcat. 
  PERFORM frm_set_alv_layout. 
  PERFORM frm_display_data 
    TABLES 
      gt_zcrms0083 
    USING 
      gv_title 'ZEMP_STATUS' 'ZEMP_UCOMM'. 
 
AT SELECTION-SCREEN . 
 
*下载模板 
  CASE sscrfields-ucomm. 
    WHEN 'FC01'. 
      CALL FUNCTION 'ZCRM_DOWNLOAD_TEMPLATE' 
        EXPORTING 
          iv_objid    = 'ZJP_EMP' 
          iv_filename = 'TVS Employee Upload Template' 
          iv_flag     = 'X'. 
    WHEN OTHERS. 
  ENDCASE. 
 
AT SELECTION-SCREEN ON VALUE-REQUEST FOR f_name. 
* Call popup for selecting the file 
  CALL METHOD cl_gui_frontend_services=>file_open_dialog 
    CHANGING 
      file_table              = lt_file_table 
      rc                      = lv_rc 
    EXCEPTIONS 
      file_open_dialog_failed = 1 
      cntl_error              = 2 
      error_no_gui            = 3 
      not_supported_by_gui    = 4 
      OTHERS                  = 5. 
 
  READ TABLE lt_file_table INTO lv_filename INDEX 1 . 
  IF sy-subrc <> 0 . 
    MESSAGE 'Fail to get FileName' TYPE 'S' DISPLAY LIKE 'E'. 
    RETURN. 
  ELSE. 
    f_name = lv_filename. 
  ENDIF. 
 
*&---------------------------------------------------------------------* 
*&      Form  FRM_UPLOAD_EXCEL_FILE 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
FORM frm_upload_excel_file . 
 
 
  FIELD-SYMBOLS:  <fs_excel>   TYPE any, 
                  <fs_field>   TYPE any, 
                  <fs_extract> TYPE any. 
  DATA: lv_count TYPE i VALUE 2, 
        lv_pos   TYPE i, 
        lv_str   TYPE string, 
        lv_cnt   TYPE i, 
        lv_edmk  TYPE string, 
        lv_type  TYPE string. 
 
*  DATA: lt_crm0007 LIKE TABLE OF gw_crm0007. 
  REFRESH gt_excel_data. 
  CALL FUNCTION 'ZEXCEL_UPLOAD' 
    EXPORTING 
      filename                = f_name 
      i_begin_col             = '1' "开始的列 
      i_begin_row             = '5' "开始的行 
      i_end_col               = '20' "结束的列 
      i_end_row               = '50000' 
    TABLES 
      intern                  = gt_excel_data 
    EXCEPTIONS 
      inconsistent_parameters = 1 
      upload_ole              = 2 
      OTHERS                  = 3. 
 
  IF sy-subrc <> 0 . 
    MESSAGE 'Upload Failed' TYPE 'S' DISPLAY LIKE 'E' . 
    RETURN . 
  ENDIF. 
*解析excel导入的数据 写进内表 
 
 
  PERFORM frm_make_gt_upload TABLES gt_zcrms0083. 
*  CHECK gv_error IS INITIAL. 
*  PERFORM process_data. 
 
  IF gt_zcrms0083[] IS INITIAL. 
    MESSAGE 'Excel date is null' TYPE 'S' DISPLAY LIKE 'E'. 
    RETURN. 
  ENDIF. 
 
 
ENDFORM.                    " FRM_UPLOAD_EXCEL_FILE 
*&---------------------------------------------------------------------* 
*&      Form  FRM_MAKE_GT_UPLOAD 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
*  -->  p1        text 
*  <--  p2        text 
*----------------------------------------------------------------------* 
FORM frm_make_gt_upload TABLES cv_tab TYPE table. 
 
  DATA lv_fieldvalue TYPE fieldvalue.  "字符值 
  DATA lv_fldname TYPE fieldname.   "字段名 
  DATA lo_exception TYPE REF TO cx_root. 
  DATA lv_col TYPE i. 
  DATA lr_line TYPE REF TO data. 
  FIELD-SYMBOLS: <fs_field>,<line>. 
  CLEAR gv_error. 
  SORT gt_excel_data BY row col. 
 
  CREATE DATA lr_line LIKE LINE OF cv_tab. 
  ASSIGN lr_line->* TO <line>. 
 
  TRY . 
      LOOP AT gt_excel_data INTO gs_excel_data. 
        AT NEW row. 
          CLEAR <line>. 
        ENDAT. 
        lv_fieldvalue = gs_excel_data-value. 
        CONDENSE lv_fieldvalue NO-GAPS. 
 
        ASSIGN COMPONENT gs_excel_data-col OF STRUCTURE <line> TO <fs_field>. 
        IF sy-subrc = 0. 
          <fs_field> = lv_fieldvalue. 
        ENDIF. 
        AT END OF row. 
          APPEND <line> TO cv_tab. 
        ENDAT. 
      ENDLOOP. 
    CATCH cx_root INTO lo_exception. 
 
      CALL METHOD lo_exception->if_message~get_text 
        RECEIVING 
          result = gv_error. 
 
      CONCATENATE gv_error ' Please Check import data' 
              INTO gv_error. 
      MESSAGE gv_error TYPE 'S' DISPLAY LIKE 'E'. 
      RETURN. 
  ENDTRY. 
 
ENDFORM.                    " FRM_MAKE_GT_UPLOAD 
*----------------------------------------------------------------------* 
*&---------------------------------------------------------------------* 
*&      Form  FRM_MAKE_ALV_FIELDCAT 
*&---------------------------------------------------------------------* 
*       设置ALV fieldcat 
*----------------------------------------------------------------------* 
*  -->  p1        text 
*  <--  p2        text 
*----------------------------------------------------------------------* 
FORM frm_make_alv_fieldcat . 
  add_fieldcat: 
     'ICON'   'ICON'        5, 
     'PARTNER'   'Business Partner'        18, 
     'TITLE'      'Tittle'        11, 
     'NAME_LAST'      'Last Name'    16, 
     'NAME_FIRST'    'First Name'    16, 
     'TEL_NUMBER'      'Tel Number'      18, 
     'MOB_NUMBER'        'Mob Number'        18, 
     'E_MAIL'        'Email'        28, 
     'USERNAME'        'SAP User ID'        16, 
     'COUNTRY'     'Country'        8, 
     'REGION'     'Region'        8, 
     'CITY1'     'City'        16, 
     'POST_CODE1'     'Postal Code'        16, 
     'MESSAGE'        'Error Message'        50. 
 
 
ENDFORM.                    " FRM_MAKE_ALV_FIELDCAT 
*&---------------------------------------------------------------------* 
*&      Form  FRM_SET_ALV_LAYOUT 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
*  -->  p1        text 
*  <--  p2        text 
*----------------------------------------------------------------------* 
FORM frm_set_alv_layout . 
 
  CLEAR: gv_title,gs_layout. 
  gs_layout-zebra = 'X'. 
 
 
 
ENDFORM.                    " FRM_SET_ALV_LAYOUT 
*&---------------------------------------------------------------------* 
*&      Form  FRM_DISPLAY_DATA 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
*  -->  p1        text 
*  <--  p2        text 
*----------------------------------------------------------------------* 
FORM frm_display_data TABLES it_tab USING  iv_title TYPE lvc_title 
                                           iv_pf_status TYPE slis_formname 
                                           iv_user_comm TYPE slis_formname . 
 
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' 
    EXPORTING 
      i_callback_program       = sy-repid 
      i_callback_pf_status_set = iv_pf_status 
      i_callback_user_command  = iv_user_comm 
*     I_CALLBACK_TOP_OF_PAGE   = ' ' 
*     I_GRID_SETTINGS          = 
      is_layout                = gs_layout 
      it_fieldcat              = gt_fieldcat 
      i_grid_title             = iv_title 
*     IT_SORT                  = 
*     IT_FILTER                = 
*     I_SAVE                   = ' ' 
*     IS_VARIANT               = 
    TABLES 
      t_outtab                 = it_tab[] 
    EXCEPTIONS 
      program_error            = 1 
      OTHERS                   = 2. 
ENDFORM.                    " FRM_DISPLAY_DATA 
*&---------------------------------------------------------------------* 
*&      Form  UCOMM_UPLOAD 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
*      -->IV_UCOMM     text 
*      -->RS_SELFIELD  text 
*----------------------------------------------------------------------* 
FORM zemp_ucomm  USING iv_ucomm LIKE sy-ucomm 
                         rs_selfield TYPE slis_selfield. 
  CASE iv_ucomm. 
    WHEN 'BACK' OR 'CANCEL' . 
      LEAVE TO SCREEN 0 . 
    WHEN 'EXIT'. 
      LEAVE PROGRAM. 
    WHEN 'SAVE'. 
      PERFORM process_data. 
 
    WHEN OTHERS. 
  ENDCASE. 
ENDFORM.                    "UCOMM_UPLOAD 
*&---------------------------------------------------------------------* 
*&      Form  STATUS_UPLOAD 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
*      -->RT_EXTAB   text 
*----------------------------------------------------------------------* 
FORM zemp_status USING rt_extab TYPE slis_t_extab. 
  SET PF-STATUS 'ZEMP_STATUS' . 
ENDFORM.                    "STATUS_UPLOAD 
*&---------------------------------------------------------------------* 
*&      Form  PROCESS_DATA 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
*  -->  p1        text 
*  <--  p2        text 
*----------------------------------------------------------------------* 
FORM process_data . 
  LOOP AT gt_zcrms0083 INTO gs_zcrms0083. 
    CLEAR centraldata. 
    centraldata-title_key    = gs_zcrms0083-title.                      "TITLE 
 
    CLEAR: lt_return . 
    CLEAR:centraldataperson. 
    centraldataperson-firstname    = gs_zcrms0083-name_first.                     "First Name 
    centraldataperson-lastname    = gs_zcrms0083-name_last.                      "Last Name 
 
    CLEAR:addressdata. 
    addressdata-postl_cod1        = gs_zcrms0083-post_code1          .          "postal 
    addressdata-country        = gs_zcrms0083-country .                   "county 
    addressdata-city            = gs_zcrms0083-city1            .                "city 
    addressdata-region        = gs_zcrms0083-region . 
 
    CLEAR:it_telefondata,wa_telefondata. 
    wa_telefondata-telephone         = gs_zcrms0083-tel_number. 
    wa_telefondata-r_3_user = '1'. 
*    wa_telefondata-country = f_land.                                               "telephone 
    APPEND wa_telefondata TO it_telefondata. 
    wa_telefondata-telephone         = gs_zcrms0083-mob_number. 
    wa_telefondata-r_3_user = '3'. 
*    wa_telefondata-country = f_land.                                               "MOBphone 
    APPEND wa_telefondata TO it_telefondata. 
 
    CLEAR:it_email,wa_email. 
    wa_email-e_mail = gs_zcrms0083-e_mail.                                       "E-Mail 
    APPEND wa_email TO it_email. 
 
    CLEAR:lt_return,l_bpartner. 
    CALL FUNCTION 'BAPI_BUPA_CREATE_FROM_DATA' 
      EXPORTING 
        partnercategory   = '1' 
        partnergroup      = 'Z002' 
        centraldata       = centraldata 
        centraldataperson = centraldataperson 
        addressdata       = addressdata 
*       DUPLICATE_MESSAGE_TYPE             = 
*       ACCEPT_ERROR      = ' ' 
      IMPORTING 
        businesspartner   = l_bpartner 
      TABLES 
        telefondata       = it_telefondata 
        e_maildata        = it_email 
        return            = lt_return. 
 
    READ TABLE lt_return WITH KEY type = 'E'. 
    IF sy-subrc <> 0. 
      CLEAR lt_return. 
      CALL FUNCTION 'BUPA_ROLE_ADD_2' 
        EXPORTING 
          iv_partner     = l_bpartner 
*         IV_PARTNER_GUID       = 
*         IV_PARTNERROLECATEGORY       = 
*         iv_x_all_partnerroles = 
          iv_partnerrole = 'BUP003' 
*         IV_DIFFTYPEVALUE      = 
*         IV_VALIDFROM   = 
*         IV_VALIDTO     = '99991231' 
*         IV_X_SAVE      = 'X' 
*         IV_CREATE_CP   = 
        TABLES 
          et_return      = lt_return. 
 
      READ TABLE lt_return WITH KEY type = 'E'. 
      IF sy-subrc <> 0. 
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' 
          EXPORTING 
            wait = 'X'. 
 
        gs_zcrms0083-icon = '@5B@'. 
        gs_zcrms0083-partner = l_bpartner. 
 
        CLEAR: l_partner_guid,l_guid_16. 
        CALL FUNCTION 'BAPI_BUPA_GET_NUMBERS' 
          EXPORTING 
            businesspartner        = l_bpartner 
          IMPORTING 
            businesspartnerguidout = l_partner_guid. 
 
        l_guid_16 = l_partner_guid. 
        CALL FUNCTION 'BP_BUPA_CREATECENTRALPERSON' 
          EXPORTING 
            iv_bu_partner_guid      = l_guid_16 
*           IV_NAME                 = 
*           IV_EMPLOYEE_ID          = 
            iv_user_id              = gs_zcrms0083-username 
*           IV_NO_COMMIT            = ' ' 
*           IV_ASYNCHRON            = ' ' 
*           IV_BUFFER_MODE          = ' ' 
*           IS_BUS000               = 
*       IMPORTING 
*           EV_PERSON_ID            = 
          EXCEPTIONS 
            buffer_mode_not_allowed = 1 
            OTHERS                  = 2. 
        IF sy-subrc <> 0. 
          gv_fail_flag = 'X'. 
          gs_zcrms0083-icon = '@5C@'. 
          gs_zcrms0083-message = 'Assign Username Failed'. 
        ENDIF. 
      ELSE. 
        gv_fail_flag = 'X'. 
        gs_zcrms0083-icon = '@5C@'. 
        gs_zcrms0083-message = lt_return-message. 
      ENDIF. 
    ELSE. 
      gv_fail_flag = 'X'. 
      gs_zcrms0083-icon = '@5C@'. 
      gs_zcrms0083-message = lt_return-message. 
    ENDIF. 
 
    MODIFY gt_zcrms0083 FROM gs_zcrms0083. 
  ENDLOOP. 
 
  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' 
    IMPORTING 
      e_grid = lr_grid. 
 
  CALL METHOD lr_grid->refresh_table_display 
    EXCEPTIONS 
      finished = 1 
      OTHERS   = 2. 
 
  IF gv_fail_flag IS INITIAL. 
    MESSAGE 'All Record Create Successfully' TYPE 'S'. 
  ENDIF. 
ENDFORM.

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/18692.html

(0)
上一篇 2021年7月19日 21:22
下一篇 2021年7月19日 21:22

相关推荐

发表回复

登录后才能评论