批量修改SO送达方

report  ZSDR006 .
tables VBAK VBAP .
data : begin  of WA_TAB ,
  VBELN  type VBAK -VBELN ,
  posnr  TYPE vbap -posnr ,
  KUNNR  type VBAK -KUNNR ,
   end  of WA_TAB .
data :ITAB  like  table  of WA_TAB  with  header  line .

data SOHD  like BAPISDH1 ,
      SOHDX  like BAPISDH1X ,
      SOITEM  like BAPISDITM  occurs  with  header  line ,
      SOITEMX  like BAPISDITMX  occurs  with  header  line .

data :RT  type  table  of BAPIRET2  with  header  line .
data RT2  type BAPIRET2 .
data :WA_RETURN   type BAPIRET2 .
data :SOBP  type  table  of BAPIPARNRC  with  header  line .
data :SUB_SOBP  type  table  of BAPIPARNRC  with  header  line . .

data :ROWNUM  type  I .
constants :
   C_BEGIN_ROW  type  value  1 ,
   C_BEGIN_COL  type  value  1 ,
   C_END_ROW  type  value  9999 ,
   C_END_COL  type  value  3 .

selection-screen  begin  of  block B1  with  frame  title T1 .
parameters SO_FILE ( 60 ) .
selection-screen  end  of  block B1 .

initialization .
  T1  '选择文件' .

at  selection-screen  on  value-request  for SO_FILE .
   perform GETDATA  using SO_FILE .

start-of-selection .
   perform UPLOADDATA .
   perform EXEUPDATE .

*&---------------------------------------------------------------------*
*&      Form  getdata
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->SO_FILE    text
*----------------------------------------------------------------------*
form GETDATA  using SO_FILE .
* Data for open dialog
   data L_FILETAB    type FILETABLE ,
        L_RC         type  I .
   clear L_FILETAB .
   refresh L_FILETAB .
* Open dialog
   call  method CL_GUI_FRONTEND_SERVICES =>FILE_OPEN_DIALOG
     exporting
*     WINDOW_TITLE         = 'SAP Custom - Open File'
*     DEFAULT_EXTENSION    =
      DEFAULT_FILENAME      '*.xls'
*     FILE_FILTER          = '*.xls'
      INITIAL_DIRECTORY     'd:\'
      MULTISELECTION        ''
     changing
      FILE_TABLE            L_FILETAB
      RC                    L_RC
     exceptions
      CNTL_ERROR            1
      ERROR_NO_GUI          2
      NOT_SUPPORTED_BY_GUI  3
       others                4 .
* Get file path
   check L_RC  eq  1 .
   read  table L_FILETAB  index  into SO_FILE .
endform .                     "getdata

*&---------------------------------------------------------------------*
*&      Form  uploaddata
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
form UPLOADDATA .

   data begin  of I_EXCEL  occurs  0 .
           include  structure ALSMEX_TABLINE .
   data end  of I_EXCEL .
   data L_ANSWER ( 1 type  C .
   data L_COLUMN  type  I .
   field-symbols <FS> .
   data L_PATHNAME  like RLGRAP -FILENAME .

   move SO_FILE  to L_PATHNAME .
   call  function  'ALSM_EXCEL_TO_INTERNAL_TABLE'
     exporting
      FILENAME                 L_PATHNAME
      I_BEGIN_COL              C_BEGIN_COL
      I_BEGIN_ROW              C_BEGIN_ROW
      I_END_COL                C_END_COL
      I_END_ROW                C_END_ROW
     tables
      INTERN                   I_EXCEL
     exceptions
      INCONSISTENT_PARAMETERS  1
      UPLOAD_OLE               2
       others                   3 .
   if SY -SUBRC <>  0 .
     message  id SY -MSGID  type SY -MSGTY  number SY -MSGNO
           with SY -MSGV1 SY -MSGV2 SY -MSGV3 SY -MSGV4 .
   else .
     if I_EXCEL[]  is  initial .
       call  function  'POPUP_TO_CONFIRM_WITH_MESSAGE'
         exporting
*         DEFAULTOPTION  = 'Y'
          DIAGNOSETEXT1   'No data in excel'
*         DIAGNOSETEXT2  = ' '
*         DIAGNOSETEXT3  = ' '
          TEXTLINE1       'No data in excel'
*         TEXTLINE2      = ' '
          TITEL           'Confirm'
*         START_COLUMN   = 25
*         START_ROW      = 6
*         CANCEL_DISPLAY = 'X'
         importing
          ANSWER          L_ANSWER .
     else .
       delete I_EXCEL  where ROW  '0001' .
       sort I_EXCEL  by ROW COL .
       loop  at I_EXCEL .
         move I_EXCEL -COL  to L_COLUMN .
         assign  component L_COLUMN  of  structure ITAB  to <FS> .
         move I_EXCEL - VALUE  to <FS> .
         at  end  of ROW .
           append ITAB .
           clear ITAB .
         endat .
       endloop .
     endif .
   endif .
endform .                     "uploaddata

*&---------------------------------------------------------------------*
*&      Form  exeupdate
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
form EXEUPDATE .
  SOHDX -UPDATEFLAG  'U' .
   loop  at ITAB  into WA_TAB .
    SOBP -DOCUMENT  WA_TAB -VBELN .
    SOBP -ITM_NUMBER  wa_tab -posnr .
    SOBP -UPDATEFLAG  'U' .
    SOBP -PARTN_ROLE  'WE' .
    SOBP -P_NUMB_NEW  WA_TAB -KUNNR .
     append SOBP .
     clear WA_TAB .
   endloop .

LOOP  at sobp .
   sub_sobp  sobp .
    APPEND sub_sobp .
    LOOP  at sub_sobp .
   call  function  'BAPI_SALESORDER_CHANGE'
     exporting
      SALESDOCUMENT     sub_SOBP -DOCUMENT
      ORDER_HEADER_INX  SOHDX
     tables
       RETURN            RT
      PARTNERCHANGES    sub_SOBP .

   loop  at RT .
     if rt - type  'E' .
     write :/ RT - MESSAGE .
     ENDIF .
   endloop .

   call  function  'BAPI_TRANSACTION_COMMIT'
     exporting
       WAIT    'X'
     importing
       RETURN  RT2 .
   CLEAR sub_sobp[] .
   refresh sub_sobp .
   ENDLOOP .
ENDLOOP .
endform .        

你可能感兴趣的:(批量修改SO送达方)