文件对话框选择文件
DATA P_FILE TYPE RLGRAP-FILENAME."设置为全局变量
DATA:"局部变量
L_RC TYPE I,
L_FILETABLE TYPE FILETABLE.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE = '选择文件'
DEFAULT_EXTENSION = 'xls'
FILE_FILTER = CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL
MULTISELECTION = ''
CHANGING
FILE_TABLE = L_FILETABLE " 文件名(全路径)
RC = L_RC.
IF SY-SUBRC = 0 AND L_RC = 1.
READ TABLE L_FILETABLE INTO P_FILE INDEX 1."读取一个文件
ENDIF.
进度 和 将excel数据传输到内表
DATA: IT_RAW TYPE TRUXS_T_TEXT_DATA.
CLEAR IT_RAW.
REFRESH IT_RAW[].
REFRESH IT_EXCEL.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' "进度条
EXPORTING
PERCENTAGE = 0
TEXT = '正在上载Excel文件并检查数据,请等待......'.
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
* I_FIELD_SEPERATOR =
I_LINE_HEADER = 'X' "X表示带抬头行的EXCEL的抬头行不传进内表,否则EXCEL不要带抬头
I_TAB_RAW_DATA = IT_RAW " WORK TABLE
I_FILENAME = P_FILE
TABLES
I_TAB_CONVERTED_DATA = IT_EXCEL "EXCEL表格内容上传到IT
EXCEPTIONS
CONVERSION_FAILED = 1 "转化失败1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
重画alv
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IS_LAYOUT = LAYOUT
IT_FIELDCAT = FIELDCAT[]
TABLES
T_OUTTAB = IT_OUT
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
*------------ 刷新ALV--------------------
DATA: LV_ANSWER TYPE C,
LV_QUESTION(200) TYPE C.
DATA REF1 TYPE REF TO CL_GUI_ALV_GRID.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = REF1.
CALL METHOD REF1->CHECK_CHANGED_DATA.
RS_SELFIELD-REFRESH = 'X'.
CASE R_UCOMM.
WHEN '&IC1'. "双击物料号,跳转进入VA02的详细信息
CASE RS_SELFIELD-FIELDNAME.
WHEN 'VBELN'.
SET PARAMETER ID 'AUN' FIELD RS_SELFIELD-VALUE. "将订单号传递给 VA02中要输入的选项
CALL TRANSACTION 'VA02' AND SKIP FIRST SCREEN. "调用T-CODE MM02 并跳过第一个需要输入的屏幕,直接进入物料显示界面
ENDCASE.
WHEN 'EXE'.
LV_QUESTION = '确认要更新交货日期?'. "是否修改交货日期确认对话框
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TEXT_QUESTION = LV_QUESTION
DISPLAY_CANCEL_BUTTON = ''
DEFAULT_BUTTON = '2'
IMPORTING
ANSWER = LV_ANSWER
EXCEPTIONS
TEXT_NOT_FOUND = 1
OTHERS = 2.
CHECK LV_ANSWER = 1.
PERFORM PROCESS_DATA."处理数据
WHEN 'BACK'.
LEAVE LIST-PROCESSING AND RETURN TO SCREEN 0 .
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'ALL'.
CLEAR WA_OUT.
LOOP AT IT_OUT INTO WA_OUT .
IF WA_OUT-CHECK = ' '.
WA_OUT-CHECK = 'X'.
MODIFY IT_OUT FROM WA_OUT.
ENDIF.
ENDLOOP.
WHEN 'SAL'.
CLEAR WA_OUT.
LOOP AT IT_OUT INTO WA_OUT .
IF WA_OUT-CHECK = 'X'.
WA_OUT-CHECK = ' '.
MODIFY IT_OUT FROM WA_OUT.
ENDIF.
ENDLOOP.
ENDCASE.
ENDFORM. "USER_COMMAND
需要重新设置两个form 一个叫 SET_PF_STATUS 另一个叫USER_COMMAND 这是用来设置gui的状态栏和按键事件 因为此时不是开始的屏幕
确认对话框
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TEXT_QUESTION = LV_QUESTION
DISPLAY_CANCEL_BUTTON = ''
DEFAULT_BUTTON = '2'
IMPORTING
ANSWER = LV_ANSWER
EXCEPTIONS
TEXT_NOT_FOUND = 1
OTHERS = 2.
CHECK LV_ANSWER = 1.
PERFORM PROCESS_DATA."处理数据
创建或者修改物料主数据
DATA:FLAG TYPE C,
MESSAGE TYPE MAKTX.
CLEAR WA_OUT.
DATA: HEADDATA LIKE BAPIMATHEAD,
STORAGELOCATIONDATA LIKE BAPI_MARD,
STORAGELOCATIONDATAX LIKE BAPI_MARDX.
DATA RETURN LIKE BAPIRET2.
LOOP AT IT_OUT INTO WA_OUT .
IF WA_OUT-CHECK <> 'X' .
WA_OUT-FLAG = 'E'.
WA_OUT-MESSAGE = '未被选中'.
MODIFY IT_OUT FROM WA_OUT.
ELSE.
HEADDATA-MATERIAL = WA_OUT-MATNR.
HEADDATA-WAREHOUSE_VIEW = 'X'.
STORAGELOCATIONDATA-PLANT = WA_OUT-WERKS.
STORAGELOCATIONDATA-STGE_LOC = WA_OUT-LGORT.
STORAGELOCATIONDATA-STGE_BIN = WA_OUT-LGPBE.
STORAGELOCATIONDATAX-PLANT = WA_OUT-WERKS.
STORAGELOCATIONDATAX-STGE_LOC = WA_OUT-LGORT.
STORAGELOCATIONDATAX-STGE_BIN = 'X'.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
HEADDATA = HEADDATA
STORAGELOCATIONDATA = STORAGELOCATIONDATA
STORAGELOCATIONDATAX = STORAGELOCATIONDATAX
IMPORTING
RETURN = RETURN
.
IF RETURN-TYPE = 'E'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
WA_OUT-FLAG ='失败'.
MODIFY IT_OUT FROM WA_OUT.
ELSEIF RETURN-TYPE = 'S'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
WA_OUT-FLAG ='成功'.
MODIFY IT_OUT FROM WA_OUT.
ENDIF.
ENDIF.
ENDLOOP.