• BDC批量修改物料描述


    一、定义变量

    type-POOLs:TRUXS,slis.
    
    TYPES: BEGIN OF ty_input ,
            matnr  TYPE  mara-matnr ,  " 物料号
            maktx  TYPE  makt-maktx,"物料描述
          END OF ty_input .
    
    DATA: gt_input TYPE STANDARD TABLE OF ty_input.
    FIELD-SYMBOLS: <gs_input> TYPE ty_input.         
    DATA: gt_bdcdata TYPE STANDARD TABLE OF bdcdata,"bdc
          gt_msg TYPE STANDARD TABLE OF bdcmsgcoll,"消息
          gs_msg TYPE bdcmsgcoll."消息
    
    TYPES: BEGIN OF ty_message ,
            matnr  TYPE  mara-matnr ,  " 物料号
            maktx TYPE makt-maktx, "描述
            msg    TYPE  string ,
          END OF ty_message .
    
    DATA: gt_message TYPE STANDARD TABLE OF ty_message,
          gs_message TYPE ty_message.
    *alv
    DATA: gt_fieldcat TYPE slis_t_fieldcat_alv.
    DATA: gs_fieldcat TYPE LINE OF slis_t_fieldcat_alv.
    DATA: gs_layout TYPE slis_layout_alv.


     

    二、屏幕元素

    SELECTION-SCREEN BEGIN OF BLOCK bk1 WITH FRAME TITLE text-001.      "选择文件路径
    PARAMETERS: p_ufile LIKE rlgrap-filename OBLIGATORY MEMORY ID p_ufile.
    SELECTION-SCREEN END OF BLOCK bk1.

    三、调用代码

    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_ufile.
      PERFORM get_filepath.
    
    START-OF-SELECTION.
    
      PERFORM upload_data. "上载文本资料
    
      PERFORM f_bdc.
    
    END-OF-SELECTION.
    
      PERFORM f_alv_fieldcat.
      PERFORM f_layout.
      PERFORM f_display.

    四、调用的form

    FORM get_filepath .
    
      CALL FUNCTION 'TB_LIMIT_WS_FILENAME_GET'
        EXPORTING
          def_path         = ''
          mask             = ',Excel Files,*.xls,All Files,*.*.'
          title            = 'Select the File'
        IMPORTING
          filename         = p_ufile
        EXCEPTIONS
          selection_cancel = 1
          selection_error  = 2
          OTHERS           = 3.
      IF sy-subrc <> 0.
        MESSAGE '请输入文件名' TYPE 'S'.
      ELSEIF sy-subrc = 0.
        MESSAGE '成功' TYPE 'S'.
      ENDIF.
    
    ENDFORM.
    
     
    
    FORM upload_data .
    
      DATA:t_raw_data TYPE truxs_t_text_data.
    
      CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'    "读取excel到sap的函数
        EXPORTING
          i_line_header        = 'X'
          i_tab_raw_data       = t_raw_data
          i_filename           = p_ufile
        TABLES
          i_tab_converted_data = gt_input
        EXCEPTIONS
          conversion_failed    = 1
          OTHERS               = 2.
      IF sy-subrc <> 0.
      ENDIF.
    
    
      IF gt_input IS INITIAL.
        MESSAGE '无数据' TYPE 'S' DISPLAY LIKE 'E'.
      ENDIF.
    
    ENDFORM.                    " UPLOAD_DATA
    
    
    FORM f_bdc .
    
      DATA: inx TYPE sy-tabix.
    
      LOOP AT gt_input ASSIGNING <gs_input>.
    
        CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
          EXPORTING
            input        = <gs_input>-matnr
          IMPORTING
            output       = <gs_input>-matnr
          EXCEPTIONS
            length_error = 1
            OTHERS       = 2.
        IF sy-subrc <> 0.
    * Implement suitable error handling here
        ENDIF.
    
        FREE:gt_bdcdata,gt_msg.
    
    
    "这些步骤都是根据bdc里面生成的来写的,类似BDC_SUBSCR之类的可以省去不写
    
        PERFORM f_bdcdata TABLES gt_bdcdata  USING : 'SAPLMGMM' '0060' 'X' '' ''."打开屏幕
        PERFORM f_bdcdata TABLES gt_bdcdata  USING : '' '' '' 'BDC_CURSOR' 'RMMG1-MATNR'. "光标
        PERFORM f_bdcdata TABLES gt_bdcdata  USING : '' '' '' 'BDC_OKCODE' '=ENTR'."操作按钮(回车)
        PERFORM f_bdcdata TABLES gt_bdcdata  USING : '' '' '' 'RMMG1-MATNR' <gs_input>-matnr."输入数据(物料号)
        "PERFORM f_bdcdata TABLES gt_bdcdata  USING : '' '' '' 'R62CLORD-FLG_OVIEW' 'X'.
    
        PERFORM f_bdcdata TABLES gt_bdcdata  USING : 'SAPLMGMM' '0070' 'X' '' ''."打开屏幕
        PERFORM f_bdcdata TABLES gt_bdcdata  USING : '' '' '' 'BDC_OKCODE' '=ENTR'."操作按钮(回车)
        PERFORM f_bdcdata TABLES gt_bdcdata  USING : '' '' '' 'MSICHTAUSW-KZSEL(01)' 'X'."选择视图01(基本数据)
       " PERFORM f_bdcdata TABLES gt_bdcdata  USING : '' '' '' 'R62CLORD-FLG_OVIEW' 'X'.
    
        PERFORM f_bdcdata TABLES gt_bdcdata  USING : 'SAPLMGMM' '4004' 'X' '' ''.
        PERFORM f_bdcdata TABLES gt_bdcdata  USING : '' '' '' 'BDC_OKCODE' '=BU'."操作组件按钮
        PERFORM f_bdcdata TABLES gt_bdcdata  USING : '' '' '' 'MAKT-MAKTX' <gs_input>-maktx."输入数据(物料描述)
    
    
        FREE: gt_msg.
        CALL TRANSACTION 'MM02' USING gt_bdcdata
                                MODE  'N'    "执行事务,传递bdc参数,模式为后台模式
                                "MODE  'A'       "前台模式,用户可以看到执行的过程,需要自己点enter键
                                MESSAGES INTO gt_msg.  "message可省去
        READ TABLE gt_msg INTO gs_msg WITH KEY msgtyp = 'E'.
        IF sy-subrc = 0.
          MOVE-CORRESPONDING <gs_input> TO gs_message.
          LOOP AT gt_msg INTO gs_msg.
            DATA: return TYPE  bapiret2.
            CLEAR: return.
            PERFORM f_msg USING gs_msg-msgtyp gs_msg-msgid gs_msg-msgnr gs_msg-msgv1 gs_msg-msgv2 gs_msg-msgv3 gs_msg-msgv4 CHANGING return.
            IF return-message IS NOT INITIAL.
              gs_message-msg = return-message.
            ENDIF.
            APPEND gs_message TO gt_message.
          ENDLOOP.
          ROLLBACK WORK.
        ELSE.
          CLEAR: gs_message.
          MOVE-CORRESPONDING <gs_input> TO gs_message.
          gs_message-msg = 'OK'.
          APPEND gs_message TO gt_message.
          COMMIT WORK.
        ENDIF.
    
    
      ENDLOOP.
    
     
    
    ENDFORM.
    
    FORM f_alv_fieldcat .
    
      DATA: pos TYPE i.
    
    
      DEFINE fieldcat.
        clear gs_fieldcat.
        pos = pos + 1.
        gs_fieldcat-col_pos = pos.
        gs_fieldcat-fieldname = &1.
        gs_fieldcat-ref_tabname = &2.
        gs_fieldcat-ref_fieldname = &3.
    *    gs_fieldcat-seltext_l = &4.
    *    gs_fieldcat-no_zero = &5.
    *    gs_fieldcat-key = &6.
        gs_fieldcat-just = 'L'.
        append gs_fieldcat to gt_fieldcat.
      END-OF-DEFINITION.
    
    
      fieldcat 'MATNR' 'MARA' 'MATNR'.
      fieldcat 'MAKTX' 'MAKT' 'MAKTX' .
      fieldcat 'MSG' '' '消息' .
    
    ENDFORM.
    
    FORM f_layout .
      gs_layout-zebra = 'X'.
      gs_layout-colwidth_optimize = 'X'.
    *  gs_layout-box_fieldname = 'BOX'.
    ENDFORM.
    
    FORM f_display .
    
    *  可以保存格式
      DATA:gs_variant   TYPE disvariant.
      gs_variant-report = sy-repid.
    
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program          = sy-repid
          i_save                      = 'A'         "可以保存格式
          is_variant                  = gs_variant  "LAYOUT参数 可以保存格式
          is_layout                   = gs_layout
          it_fieldcat                 = gt_fieldcat
        TABLES
          t_outtab                    = gt_message
        EXCEPTIONS
          program_error               = 1
          OTHERS                      = 2.
    
    ENDFORM.
    
    
    FORM f_msg USING itype icl inumber ipar1 ipar2 ipar3 ipar4 CHANGING return.
    
      DATA: type          TYPE  bapireturn-type,
            cl            TYPE  sy-msgid,
            number        TYPE  sy-msgno,
            par1          TYPE  sy-msgv1,
            par2          TYPE  sy-msgv2,
            par3          TYPE  sy-msgv3,
            par4          TYPE  sy-msgv4.
    
      CLEAR: type,cl,number,par1,par2,par3,par4.
    
      type   = itype.
      cl     = icl.
      number = inumber.
      par1   = ipar1.
      par2   = ipar2.
      par3   = ipar3.
      par4   = ipar4.
    
      CALL FUNCTION 'BALW_BAPIRETURN_GET2'
        EXPORTING
          type   = type
          cl     = cl
          number = number
          par1   = par1
          par2   = par2
          par3   = par3
          par4   = par4
        IMPORTING
          return = return.
    
    ENDFORM.
    
    FORM f_bdcdata TABLES gt_bdcdata STRUCTURE bdcdata
                    USING p_program
                          p_dynpro
                          p_dynbegin
                          p_fnam
                          p_fval.
      DATA: gs_bdcdata TYPE bdcdata.
    
      CLEAR gs_bdcdata.
    
      gs_bdcdata-program = p_program.
      gs_bdcdata-dynpro = p_dynpro.
      gs_bdcdata-dynbegin = p_dynbegin.
      gs_bdcdata-fnam = p_fnam.
      gs_bdcdata-fval = p_fval.
      APPEND gs_bdcdata TO gt_bdcdata.
    
    ENDFORM.
  • 相关阅读:
    SQL中的选择判断
    Rsync
    LAMP性能优化的一些建议
    Toad9.7与Oracle11g在X86的Win7下的情况
    IIS中IUSR_和IWAM_:计算机名帐户的用户名和密码的用途
    winform编程中的跨线程访问资源(转)
    MSTDC服务的应用及相关错误的解决方案(转载)
    SQL Server 错误代码详解
    poj 1777梅森素数
    hdu 2815 baby_step c可为非素数
  • 原文地址:https://www.cnblogs.com/cindyLu/p/3397153.html
Copyright © 2020-2023  润新知