zoukankan      html  css  js  c++  java
  • 批量修改物料的产品层次,ABAP代码

    REPORT ZMMR024.
    tables:MARA,T179T.
    *定义ALV变量
    TYPE-POOLS: SLIS.
    DATA: FIELDCATALOG   TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
          GD_TAB_GROUP   TYPE SLIS_T_SP_GROUP_ALV,
          GD_LAYOUT      TYPE SLIS_LAYOUT_ALV,
          GD_REPID       LIKE SY-REPID,
          GT_EVENTS      TYPE SLIS_T_EVENT,
          GD_PRNTPARAMS  TYPE SLIS_PRINT_ALV,
          GT_SORT        TYPE SLIS_T_SORTINFO_ALV,
          GS_SORT        TYPE SLIS_SORTINFO_ALV,
          G_TITLE        TYPE LVC_TITLE.

    DATABEGIN OF HEADDATA OCCURS 10.
            INCLUDE STRUCTURE BAPIMATHEAD.
    DATAEND OF HEADDATA.

    DATABEGIN OF CLIENTDATA OCCURS 10.
            INCLUDE STRUCTURE BAPI_MARA.
    DATAEND OF CLIENTDATA.

    DATABEGIN OF CLIENTDATAX OCCURS 10.
            INCLUDE STRUCTURE BAPI_MARAX.
    DATAEND OF CLIENTDATAX.

    DATABEGIN OF SALESDATA OCCURS 10.
            INCLUDE STRUCTURE BAPI_MVKE.
    DATAEND OF SALESDATA.

    DATABEGIN OF SALESDATAX OCCURS 10.
            INCLUDE STRUCTURE BAPI_MVKEX.
    DATAEND OF SALESDATAX.

    DATABEGIN OF RETURN  OCCURS 10.
            INCLUDE STRUCTURE BAPIRET2.
    DATAEND OF RETURN .

    DATABEGIN OF RETURN1  OCCURS 10.
            INCLUDE STRUCTURE BAPI_MATRETURN2.
    DATAEND OF RETURN1 .


    DATA:BEGIN OF GT_out OCCURS 0,
          matnr like mara-matnr,
          TYPE like BAPIRET2-TYPE ,
          ID like BAPIRET2-ID ,
          NUMBER like BAPIRET2-NUMBER ,
          MESSAGE like BAPIRET2-MESSAGE ,
          LOG_NO like BAPIRET2-LOG_NO ,
          LOG_MSG_NO like BAPIRET2-LOG_MSG_NO ,
          MESSAGE_V1 like BAPIRET2-MESSAGE_V1 ,
          MESSAGE_V2 like BAPIRET2-MESSAGE_V2 ,
          MESSAGE_V3 like BAPIRET2-MESSAGE_V3 ,
          MESSAGE_V4 like BAPIRET2-MESSAGE_V4 ,
          PARAMETER like BAPIRET2-PARAMETER ,
          ROW like BAPIRET2-ROW ,
          FIELD like BAPIRET2-FIELD ,
          SYSTEM like BAPIRET2-SYSTEM ,
          END OF GT_OUT .

    DATA:BEGIN OF GT_MVKE OCCURS 0,
      MATNR like MVKE-MATNR,"
      VKORG like MVKE-VKORG,"
      VTWEG like MVKE-VTWEG,"
      END OF GT_MVKE.

    DATA: total TYPE i,
    num type i.
    num 0.



    SELECTION-SCREEN BEGIN OF BLOCK BLOCK1 WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS matnr FOR MARA-MATNR ."
    PARAMETERS PRODH like T179T-PRODH ."

    SELECTION-SCREEN END OF BLOCK BLOCK1.


    INITIALIZATION.


    START-OF-SELECTION.

      data gt_T179T like table of T179T with header line.
      DATA: GP_TXT.
      select
        *
        into corresponding fields of table gt_T179T
        from T179T
        where PRODH = PRODH.
        if gt_T179T[] is initial.
          CONCATENATE '无此产品批次!' GP_TXT INTO GP_TXT."连接字符串
          MESSAGE GP_TXT TYPE 'E'.
        endif.
        CLEAR:GP_TXT.

      "获得数据
      PERFORM GET_DATA.
    *调用BAPI
      PERFORM DEAL_DATA.
    *  "ALV显示
      PERFORM FRM_DISPLAY.

    END-OF-SELECTION.

    *&---------------------------------------------------------------------*
    *&      Form  GET_DATA
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM GET_DATA .




      select
        matnr
        VKORG
        VTWEG
        into corresponding fields of table gt_MVKE
        from MVKE
        where matnr in matnr
        and vkorg '4110'.

    endform.
    *&---------------------------------------------------------------------*
    *&      Form  DEAL_DATA
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM DEAL_DATA .
    loop at gt_MVKE .

      HEADDATA-MATERIAL = gt_MVKE-matnr.
      CLIENTDATA-PROD_HIER = PRODH.
      CLIENTDATAX-PROD_HIER 'X'.
      SALESDATA-PROD_HIER = PRODH.
      SALESDATAX-PROD_HIER 'X'.
      SALESDATA-SALES_ORG '4110'.
      SALESDATAX-SALES_ORG '4110'.
      SALESDATA-DISTR_CHAN = gt_MVKE-VTWEG.
      SALESDATAX-DISTR_CHAN = gt_MVKE-VTWEG.

    CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
      EXPORTING
        HEADDATA                   = HEADDATA
        CLIENTDATA                 = CLIENTDATA
        CLIENTDATAX                = CLIENTDATAX
    *   PLANTDATA                  =
    *   PLANTDATAX                 =
    *   FORECASTPARAMETERS         =
    *   FORECASTPARAMETERSX        =
    *   PLANNINGDATA               =
    *   PLANNINGDATAX              =
    *   STORAGELOCATIONDATA        =
    *   STORAGELOCATIONDATAX       =
    *   VALUATIONDATA              =
    *   VALUATIONDATAX             =
    *   WAREHOUSENUMBERDATA        =
    *   WAREHOUSENUMBERDATAX       =
        SALESDATA                  = SALESDATA
        SALESDATAX                 = SALESDATAX
    *   STORAGETYPEDATA            =
    *   STORAGETYPEDATAX           =
    *   FLAG_ONLINE                = ' '
    *   FLAG_CAD_CALL              = ' '
    *   NO_DEQUEUE                 = ' '
    *   NO_ROLLBACK_WORK           = ' '
      IMPORTING
        RETURN                     RETURN
      TABLES
    *   MATERIALDESCRIPTION        =
    *   UNITSOFMEASURE             =
    *   UNITSOFMEASUREX            =
    *   INTERNATIONALARTNOS        =
    *   MATERIALLONGTEXT           =
    *   TAXCLASSIFICATIONS         =
       RETURNMESSAGES             = RETURN1
    *   PRTDATA                    =
    *   PRTDATAX                   =
    *   EXTENSIONIN                =
    *   EXTENSIONINX               =
              .
    if sy-subrc 0.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait 'X'.
    endif.

      read table RETURN1 with key TYPE 'E'.
      if sy-subrc <> 0.
        GT_OUT-matnr = gt_MVKE-matnr.
        GT_OUT-type 'S'.
        GT_OUT-MESSAGE '修改成功'.
        APPEND GT_OUT.
      else.
        MOVE-CORRESPONDING RETURN1 TO GT_OUT.
        GT_OUT-matnr = gt_MVKE-matnr.
        APPEND GT_OUT.
      ENDIF.
      CLEAR:matnr,RETURN[],GT_OUT,HEADDATA,gt_MVKE,RETURN1[],
              CLIENTDATA,CLIENTDATAX,SALESDATA,SALESDATAX.

    ENDLOOP.
    ENDFORM.
            " DEAL_DATA
    *&---------------------------------------------------------------------*
    *&      Form  FRM_DISPLAY
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM FRM_DISPLAY .
    *创建字段宏定义和输出字段赋值   
    PERFORM FRM_BUILD_FIELDCATALOG.

    *定义输出模式   GD_LAYOUT
    -NO_INPUT           'X'.   GD_LAYOUT
    -COLWIDTH_OPTIMIZE  'X'.   GD_LAYOUT
    -F2CODE             '&IC1'.  "Sets fcode for when double click(press f2)   
    "gd_layout-box_fieldname      = 'BOX'.   GD_LAYOUT
    -CELL_MERGE         'X'.   GD_LAYOUT
    -ZEBRA              'X'.
    *  GD_LAYOUT-INFO_FIELDNAME = 'CLR'.

    *使用ALV输出函数   GD_REPID 
    = SY-REPID.   
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'        
    EXPORTING             I_CALLBACK_PROGRAM       
    = GD_REPID
    *用户操作的参数             I_CALLBACK_USER_COMMAND  
    'USER_COMMAND_4000' "自定义指向代码
    *ALV输出状态的参数             I_CALLBACK_PF_STATUS_SET 
    'MY_STATUS'"菜单
    *输出模式参数             IS_LAYOUT                
    = GD_LAYOUT             IT_FIELDCAT              
    = FIELDCATALOG[]             IS_PRINT                 
    = GD_PRNTPARAMS             I_GRID_TITLE             
    = G_TITLE             I_SAVE                   
    'X'             
    "it_sort                  = gt_sort[]        
    TABLES
    *用于输出ALV的内表             T_OUTTAB                 
    = GT_OUT        
    EXCEPTIONS
    *定义输出异常时的信息,配合MESSAGE语句使用             PROGRAM_ERROR            
    1             
    OTHERS                   2.
    ENDFORM.                    " FRM_DISPLAY
    *&---------------------------------------------------------------------*
    *&      Form  FRM_BUILD_FIELDCATALOG
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM FRM_BUILD_FIELDCATALOG .   
    "创建字段宏定义   
    DEFINE ADD_FIELD.     FIELDCATALOG
    -FIELDNAME =  &1.   "内表字段名称     FIELDCATALOG
    -SELTEXT_M =  &2.    "字段输出名称     FIELDCATALOG
    -NO_ZERO   =  &3.    "是否显示零     FIELDCATALOG
    -JUST      =  &4.    "对齐方式     FIELDCATALOG
    -EMPHASIZE =  &5.    "是否高亮     FIELDCATALOG
    -CHECKBOX    = &6.  "是否带单选框     FIELDCATALOG
    -EDIT      =  &7.    "可编辑     
    APPEND FIELDCATALOG.     
    CLEAR FIELDCATALOG.   
    END-OF-DEFINITION.
    *输出字段赋值   ADD_FIELD 
    'MATNR'                    '物料号'         'X' 'L' '' '' ''.   ADD_FIELD 
    'TYPE'                    '消息类型'         'X' 'L' '' '' ''.   ADD_FIELD 
    'ID'                    '消息类'         'X' 'L' '' '' ''.   ADD_FIELD 
    'NUMBER'                    '消息编号'         '' 'L' '' '' ''.   ADD_FIELD 
    'MESSAGE'                    '消息文本'         '' 'L' '' '' ''.   ADD_FIELD 
    'LOG_NO'                    '日志号'         '' 'L' '' '' ''.   ADD_FIELD 
    'LOG_MSG_NO'                    '内部邮件序列号'         'X' 'L' '' '' ''.   ADD_FIELD 
    'MESSAGE_V1'                    '消息变量'         '' 'L' '' '' ''.   ADD_FIELD 
    'MESSAGE_V2'                    '消息变量'         'X' 'L' '' '' ''.   ADD_FIELD 
    'MESSAGE_V3'                    '消息变量'         '' 'L' '' '' ''.   ADD_FIELD 
    'MESSAGE_V4'                    '消息变量'         '' 'L' '' '' ''.   ADD_FIELD 
    'PARAMETER'                    '参数名称'         '' 'L' '' '' ''.   ADD_FIELD 
    'ROW'                    '参数中的行'         '' 'L' '' '' ''.   ADD_FIELD 
    'FIELD'                    '参数中的字段'         '' 'L' '' '' ''.   ADD_FIELD 
    'SYSTEM'                    '引发消息的逻辑系统'         '' 'L' '' '' ''.
    ENDFORM.                    " FRM_BUILD_FIELDCATALOG
    *&---------------------------------------------------------------------*
    *&      Form  user_command_4000
    *&---------------------------------------------------------------------*
    *       gui的响应事件
    *----------------------------------------------------------------------*
    *      -->RF_UCOMM     text
    *      -->RS_SELFIELD  text
    *----------------------------------------------------------------------*
    FORM USER_COMMAND_4000 USING RF_UCOMM    LIKE SY-UCOMM                              RS_SELFIELD 
    TYPE SLIS_SELFIELD.   
    DATA: LR_GRID TYPE REF TO CL_GUI_ALV_GRID.   
    CASE RF_UCOMM.     
    WHEN 'PRINT'.
    *      PERFORM prf_print.   

    ENDCASE.

    *--修改内表后刷新ALV屏幕   
    CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'     
    IMPORTING       E_GRID 
    = LR_GRID.   
    CALL METHOD LR_GRID->CHECK_CHANGED_DATA.   RS_SELFIELD
    -REFRESH 'X'.  "自动刷新   
    FREE GD_LAYOUT.
    ENDFORM.
    " INIT_HEADER_DATA
    *&---------------------------------------------------------------------*
    *&      Form  my_status
    *&---------------------------------------------------------------------*
    *       标准ALV状态栏和标题栏设置子程序
    *----------------------------------------------------------------------*
    *      -->EXTAB      text
    *----------------------------------------------------------------------*
    FORM my_status USING extab TYPE slis_t_extab.   
    SET PF-STATUS 'MYSTATUS'."状态栏设置   
    SET TITLEBAR 'MYTITLE'."标题栏设置
    ENDFORM.

  • 相关阅读:
    铬族元素
    Linux下安装虚拟环境
    Flask之路由系统
    Flask之CSRF
    【原创】关于Azure Storage Simulator 不能启动的问题
    今天终于搞清楚了正则表达式
    模型权重的保存与加载 回调函数的使用
    卷积神经网络结构
    滑动窗口与R-CNN
    模型权重记录与恢复
  • 原文地址:https://www.cnblogs.com/275147378abc/p/6586779.html
Copyright © 2011-2022 走看看