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 0 with header line,
SOITEMX like BAPISDITMX occurs 0 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 I value 1,
C_BEGIN_COL type I value 1,
C_END_ROW type I value 9999,
C_END_COL type I 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 1 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.
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 0 with header line,
SOITEMX like BAPISDITMX occurs 0 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 I value 1,
C_BEGIN_COL type I value 1,
C_END_ROW type I value 9999,
C_END_COL type I 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 1 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.