OLE报表下载
*&—————————————————————————–?
& Report ZRSD0005.?
&?
&——————————————————————————?
& Report to display overdue ratio of delivery of supply?
&——————————————————————————
& Modifications :?
& Date | Programmer | Change request | Description?
& | | Initial Implementation?*?
&——————————————————————————?
REPORT ZRSD0005.?
TABLES:VBEP,?
KNA1,?
LIKP,?
LIPS,?
VBAP,?
ADRC,?
VBAK,?
SSCRFIELDS.?
DATA: FIELDCATALOG1 TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,?
FIELDCATALOG2 TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,?
GD_TAB_GROUP TYPE SLIS_T_SP_GROUP_ALV,?
GD_LAYOUT TYPE SLIS_LAYOUT_ALV,?
IT_SORT TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE,?
GD_REPID LIKE SY-REPID,?
GD_PRNTPARAMS TYPE SLIS_PRINT_ALV.?
DATA:BEGIN OF ITAB_OK OCCURS 0,?
BOX TYPE C,?
KUNNR LIKE VBPA-KUNNR,?
NAME1 LIKE KNA1-NAME1,?
ADRNR LIKE KNA1-ADRNR,?
REGION LIKE ADRC-REGION,?
BEZEI1 TYPE CHAR50, ”?
CITYC LIKE KNA1-CITYC, ”?
BEZEI2 TYPE CHAR50, ”?
BSTDK LIKE VBKD-BSTDK, ”?
VBELN LIKE VBAK-VBELN, ”?
BSTKD LIKE VBKD-BSTKD, ”?
IHREZ LIKE VBKD-IHREZ, ”?
BSTKD_E LIKE VBKD-BSTKD_E, ”?
KZWI2 LIKE VBAP-KZWI2, ”?
KZWI1 TYPE VBAP-KZWI1,?
DMBTR LIKE BSEG-DMBTR, ”?
ZCHAR1(30) TYPE C, ”?
ZCHAR2 TYPE C, ”?
ZCHAR3 TYPE N, ”?
ZMESS TYPE STRING,?
AUART LIKE VBAK-AUART,?
ZMENG LIKE VBAP-ZMENG,?
MATNR LIKE VBAP-MATNR,?
END OF ITAB_OK.?
*定義讀入EXCEL的內(nèi)表?
DATA GT_EXCEL TYPE KCDE_INTERN_STRUC OCCURS 0 WITH HEADER LINE.?
INCLUDE OLE2INCL.?
DATA: EXCEL TYPE OLE2_OBJECT,?
BOOKS TYPE OLE2_OBJECT,?
SHEET TYPE OLE2_OBJECT,?
CELL TYPE OLE2_OBJECT.?
********************模板下載相關(guān)定義*************?
*定義變量?
DATA: GC_FILENAME LIKE RLGRAP-FILENAME,?
GC_PATH LIKE RLGRAP-FILENAME,?
GC_FULLPATH LIKE RLGRAP-FILENAME.?
DATA:L_NAME TYPE STRING .?
DATA:L_USER_ACTION TYPE I.?
DATA:L_FILE TYPE STRING .?
“DATA:P_FILE LIKE RLGRAP-FILENAME .?
DATA:G_FILE LIKE RLGRAP-FILENAME.?
DATA:RETURN TYPE TABLE OF BAPIRET2 WITH HEADER LINE,?
ORDER_ITEM_IN TYPE TABLE OF BAPISDITM WITH HEADER LINE,?
ORDER_ITEM_INX TYPE TABLE OF BAPISDITMX WITH HEADER LINE,?
PARTNERS TYPE TABLE OF BAPIPARNR WITH HEADER LINE,?
PARTNERCHANGES TYPE TABLE OF BAPIPARNRC WITH HEADER LINE,?
PARTNERADDRESSES TYPE TABLE OF BAPIADDR1 WITH HEADER LINE,?
SCHEDULE_LINES TYPE TABLE OF BAPISCHDL WITH HEADER LINE,?
SCHEDULE_LINESX TYPE TABLE OF BAPISCHDLX WITH HEADER LINE,?
ORDER_TEXT TYPE TABLE OF BAPISDTEXT WITH HEADER LINE,?
CONDITIONS_IN TYPE TABLE OF BAPICOND WITH HEADER LINE,?
CONDITIONS_INX TYPE TABLE OF BAPICONDX WITH HEADER LINE,?
SALESDOCUMENT LIKE BAPIVBELN-VBELN,?
ORDER_HEADER_IN TYPE BAPISDH1,?
ORDER_HEADER_INX TYPE BAPISDH1X.
DATA : BDCDATA_ITAB LIKE BDCDATA OCCURS 0 WITH HEADER LINE.?
DATA : MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.?
SELECTION-SCREEN BEGIN OF BLOCK BL1 WITH FRAME TITLE TEXT-BL1.?
SELECT-OPTIONS:S_ERDAT FOR KNA1-ERDAT MODIF ID M1,?
S_KUNNR FOR LIKP-KUNNR MODIF ID M1,?
S_REGION FOR ADRC-REGION MODIF ID M1,?
S_CITYC FOR KNA1-CITYC MODIF ID M1.?
PARAMETERS:P_FILE LIKE RLGRAP-FILENAME MODIF ID M2 .?
SELECTION-SCREEN END OF BLOCK BL1.?
SELECTION-SCREEN BEGIN OF BLOCK BL2 WITH FRAME TITLE TEXT-BL2.?
PARAMETERS:R1 RADIOBUTTON GROUP G1 USER-COMMAND RCOMM DEFAULT ‘X’,?
R2 RADIOBUTTON GROUP G1.?
SELECTION-SCREEN END OF BLOCK BL2.?
SELECTION-SCREEN FUNCTION KEY 1. “制作一個下載按鈕?
*———————————————————————–?
* INITIALIZE PARAMETER TO DEFAULT VALUE *?
*———————————————————————–?
INITIALIZATION.?
SSCRFIELDS-FUNCTXT_01 = ‘模板下載’. “設(shè)置按鈕的默認名字
AT SELECTION-SCREEN.?
“下載模板到本地(模板通過SMW0上傳)?
CASE SSCRFIELDS-UCOMM. “判斷按鈕的功能代碼 當為FC01時 就是前臺點擊了默認模板下載按鈕。?
WHEN ‘FC01’.”模板下載按鈕?
L_NAME = ‘保單信息批量修改’.
CALL FUNCTION ‘GUI_FILE_SAVE_DIALOG’?
EXPORTING?
DEFAULT_FILE_NAME = L_NAME?
IMPORTING?
FULLPATH = L_FILE?
USER_ACTION = L_USER_ACTION.
IF L_USER_ACTION = 0.?
PERFORM FM_DOWN_MODEL USING ‘ZRSD0005’ L_FILE.?
WRITE: ‘模板下載成功!’.?
ENDIF.?
WHEN OTHERS.?
ENDCASE.
AT SELECTION-SCREEN OUTPUT.?
PERFORM SUB_MODIFY_SCREEN.
- AT SELECTION-SCREEN?
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.?
PERFORM FRM_OPEN_FILE.
END-OF-SELECTION.?
PERFORM GET_DATA.?
PERFORM OUTPUT_DATA.
FORM GET_DATA.?
DATA:BEGIN OF LT_VBAK OCCURS 0,?
VBELN TYPE VBAK-VBELN,?
AUART TYPE VBAK-AUART,?
AUGRU TYPE VBAK-AUGRU,?
END OF LT_VBAK.?
DATA:BEGIN OF LT_VBPA OCCURS 0,?
VBELN TYPE VBPA-VBELN,?
POSNR TYPE VBPA-POSNR,?
KUNNR TYPE VBPA-KUNNR,?
END OF LT_VBPA.?
DATA:BEGIN OF LT_KNA1 OCCURS 0,?
KUNNR TYPE KNA1-KUNNR,?
NAME1 TYPE KNA1-NAME1,?
REGIO TYPE KNA1-REGIO,?
CITYC TYPE KNA1-CITYC,?
END OF LT_KNA1.?
DATA:BEGIN OF LT_VBAP OCCURS 0,?
VBELN TYPE VBAP-VBELN,?
POSNR TYPE VBAP-POSNR,?
KZWI2 TYPE VBAP-KZWI2,?
KZWI1 TYPE VBAP-KZWI1,?
KWMENG TYPE VBAP-KWMENG,?
MATNR TYPE VBAP-MATNR,?
END OF LT_VBAP.?
DATA:BEGIN OF LT_VBKD OCCURS 0,?
VBELN TYPE VBKD-VBELN,?
POSNR TYPE VBKD-POSNR,?
BSTDK TYPE VBKD-BSTDK,?
BSTKD TYPE VBKD-BSTKD,?
IHREZ TYPE VBKD-IHREZ,?
BSTKD_E TYPE VBKD-BSTKD_E,?
END OF LT_VBKD.?
IF R1 = ‘X’.
* AND VBPA~POSNR = VBUP~POSNR?
WHERE VBPA~PARVW = ‘RG’?
AND VBUP~FKSAA = ‘A’.?
* AND VBPA~KUNNR IN S_KUNNR.
ELSE.?
CALL FUNCTION ‘KCD_EXCEL_OLE_TO_INT_CONVERT’?
EXPORTING?
FILENAME = P_FILE?
I_BEGIN_COL = 1?
I_BEGIN_ROW = 4?
I_END_COL = 13?
I_END_ROW = 65535?
TABLES?
INTERN = GT_EXCEL[]?
EXCEPTIONS?
INCONSISTENT_PARAMETERS = 1?
UPLOAD_OLE = 2?
OTHERS = 3.
* WHEN ‘014’.?
* WRITE GT_EXCEL-VALUE TO ITAB_OK-ZCHAR2.?
* WHEN ‘015’.?
* WRITE GT_EXCEL-VALUE TO ITAB_OK-ZCHAR3.?
ENDCASE.?
AT END OF ROW.?
ITAB_OK-BOX = ‘X’.?
APPEND ITAB_OK.?
CLEAR ITAB_OK.?
ENDAT.?
ENDLOOP.?
ENDIF.?
ENDFORM.?
FORM OUTPUT_DATA .?
GD_REPID = SY-REPID.?
PERFORM BUILD_FIELDCATALOG .?
IF ITAB_OK[] IS INITIAL.?
MESSAGE ‘沒有交貨數(shù)據(jù),謝謝’ TYPE ‘I’ DISPLAY LIKE ‘E’.?
RETURN.?
ENDIF.?
GD_LAYOUT-COLWIDTH_OPTIMIZE = ‘X’.?
GD_LAYOUT-ZEBRA = ‘X’.?
GD_LAYOUT-BOX_FIELDNAME = ‘BOX’.?
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’?
EXPORTING?
I_CALLBACK_PROGRAM = GD_REPID?
I_CALLBACK_USER_COMMAND = ‘USER_COMMAND’?
I_CALLBACK_HTML_TOP_OF_PAGE = ‘ALV_TOP_OF_PAGE’?
IS_LAYOUT = GD_LAYOUT?
IT_FIELDCAT = FIELDCATALOG1[]?
I_SAVE = ‘X’?
IT_SORT = IT_SORT[]?
I_CALLBACK_PF_STATUS_SET = ‘SET_PF’?
TABLES?
T_OUTTAB = ITAB_OK?
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.?
ENDFORM.?
FORM BUILD_FIELDCATALOG .?
* Macro definition?
DEFINE M_FIELDCAT1.?
FIELDCATALOG1-FIELDNAME = &1.?
FIELDCATALOG1-SELTEXT_M = &2.?
FIELDCATALOG1-checkbox = &3.?
FIELDCATALOG1-edit = &4.?
FIELDCATALOG1-input = &5.?
FIELDCATALOG1-no_zero = &6.?
APPEND FIELDCATALOG1.?
END-OF-DEFINITION.
ENDFORM. “BUILD_FIELDCATALOG?
FORM ALV_TOP_OF_PAGE USING CL_DD TYPE REF TO CL_DD_DOCUMENT.?
*form alv_top_of_page using cl_dd type ref to cl_dd_document.?
DATA: M_P TYPE I.?
DATA: M_BUFF TYPE STRING,?
M_BUFF1 TYPE STRING.?
M_BUFF = ‘’.?
CALL METHOD CL_DD->HTML_INSERT?
EXPORTING?
CONTENTS = M_BUFF?
CHANGING?
POSITION = M_P.?
M_BUFF = ‘
保單信息批量修改
’.?
M_BUFF1 = ‘
版本號:1.0
’.?
CALL METHOD CL_DD->HTML_INSERT?
EXPORTING?
CONTENTS = M_BUFF?
CHANGING?
POSITION = M_P.?
CALL METHOD CL_DD->HTML_INSERT?
EXPORTING?
CONTENTS = M_BUFF1?
CHANGING?
POSITION = M_P.?
ENDFORM. ” frm_alvheader?
FORM SET_PF USING EXTAB TYPE SLIS_T_EXTAB.?
*通過SE41,拷貝程序SAPLSLVC_FULLSCREEN的狀態(tài)STANDARD_FULLSCREEN過來?
IF R1 = ‘X’.?
DATA FCODE TYPE TABLE OF SY-UCOMM.?
APPEND ‘DELETE’ TO FCODE.?
APPEND ‘SAVE’ TO FCODE.?
SET PF-STATUS ‘LIST_ALV001’ EXCLUDING FCODE.?
ELSE.?
SET PF-STATUS ‘LIST_ALV001’ EXCLUDING ‘POST’.?
ENDIF.?
ENDFORM. “set_pf?
FORM USER_COMMAND USING I_UCOMM LIKE SY-UCOMM?
IS_SELFIELD TYPE SLIS_SELFIELD.?
DATA: LR_GRID TYPE REF TO CL_GUI_ALV_GRID,?
XML TYPE STRING,?
L_CHAR TYPE STRING.?
CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’?
IMPORTING?
E_GRID = LR_GRID.?
CALL METHOD LR_GRID->CHECK_CHANGED_DATA.?
IS_SELFIELD-REFRESH = ‘X’. “#EC CALLED?
CASE I_UCOMM.?
WHEN ‘&IC1’. ” Pick?
READ TABLE ITAB_OK INDEX IS_SELFIELD-TABINDEX.?
SET PARAMETER ID ‘AUN’ FIELD ITAB_OK-VBELN.?
CALL TRANSACTION ‘VA03’ AND SKIP FIRST SCREEN.?
WHEN ‘ALL’.?
ITAB_OK-BOX = ‘X’.?
MODIFY ITAB_OK TRANSPORTING BOX WHERE BOX = ”.?
WHEN ‘SAL’.?
ITAB_OK-BOX = ”.?
MODIFY ITAB_OK TRANSPORTING BOX WHERE BOX = ‘X’.?
WHEN ‘POST’.?
PERFORM OUT_TO_EXCEL.?
WHEN ‘SAVE’.?
PERFORM CHANGE_SO.?
WHEN ‘DELETE’.?
PERFORM FRM_DELETE_SO.?
ENDCASE.?
ENDFORM.?
**?
FORM BDCTABLE_APPEND USING VALUE(P_DYNBEGIN)?
VALUE(P_NAME)?
VALUE(P_VALUE).?
IF P_DYNBEGIN = ’ ‘.?
BDCDATA_ITAB-FNAM = P_NAME.?
BDCDATA_ITAB-FVAL = P_VALUE.?
ELSE.?
BDCDATA_ITAB-DYNBEGIN = P_DYNBEGIN.?
BDCDATA_ITAB-PROGRAM = P_NAME.?
BDCDATA_ITAB-DYNPRO = P_VALUE.?
ENDIF.?
APPEND BDCDATA_ITAB.?
CLEAR BDCDATA_ITAB.?
ENDFORM. ” BDCTABLE_APPEND
FORM SUB_DOWNLOAD_TEMPLATE USING P_OBJID LIKE WWWDATATAB-OBJID P_DEST LIKE RLGRAP-FILENAME. “sapb-sappfad.?
DATA:LO_OBJDATA LIKE WWWDATATAB,?
LO_MIME LIKE W3MIME,?
LS_DESTINATION LIKE RLGRAP-FILENAME,?
LS_OBJNAM TYPE STRING,?
LI_RC LIKE SY-SUBRC,?
LS_ERRTXT TYPE STRING.?
CONCATENATE P_OBJID ‘.XLS’ INTO LS_OBJNAM.?
CONDENSE LS_OBJNAM NO-GAPS.?
SELECT SINGLE RELID OBJID FROM WWWDATA INTO CORRESPONDING FIELDS OF LO_OBJDATA WHERE SRTF2 = 0 AND RELID = ‘MI’ AND OBJID = P_OBJID.
IF SY-SUBRC NE 0 OR LO_OBJDATA-OBJID EQ SPACE.?
CONCATENATE ‘模板文件:’ LS_OBJNAM ‘不存在,請在TCODE:SMW0進行加載。’ INTO LS_ERRTXT.?
MESSAGE E600(ZDEV) WITH LS_ERRTXT.?
ENDIF.
LS_DESTINATION = P_DEST.?
CALL FUNCTION ‘DOWNLOAD_WEB_OBJECT’?
EXPORTING?
KEY = LO_OBJDATA?
DESTINATION = LS_DESTINATION?
IMPORTING?
RC = LI_RC.?
IF LI_RC NE 0.?
CONCATENATE ‘模板文件:’ LS_OBJNAM ‘下載失敗’ INTO LS_ERRTXT.?
MESSAGE E600(ZDEV) WITH LS_ERRTXT.?
ENDIF.?
ENDFORM. “sub_download_template
FORM FILL_CELL USING P_I?
P_J?
P_VAL.?
CALL METHOD OF EXCEL ‘CELLS’ = CELL?
EXPORTING?
#1 = P_I?
#2 = P_J.?
SET PROPERTY OF CELL ‘VALUE’ = P_VAL.
ENDFORM. ” FILL_CELL?
&———————————————————————?
*& Form OUT_TO_EXCEL?
&———————————————————————?
* text?
———————————————————————-?
* –> p1 text?
* <– p2 text?
———————————————————————-?
FORM OUT_TO_EXCEL .?
DATA:NUM(5) TYPE N,?
L_CHAR TYPE STRING.?
CALL FUNCTION ‘WS_FILENAME_GET’?
EXPORTING?
DEF_FILENAME = ‘保單信息批量修改’?
MASK = ‘,.xls,.XLS.’?
MODE = ‘S’?
TITLE = ‘保存模板’?
IMPORTING?
FILENAME = G_FILE?
EXCEPTIONS?
INV_WINSYS = 1?
NO_BATCH = 2?
SELECTION_CANCEL = 3?
SELECTION_ERROR = 4?
OTHERS = 5.
IF G_FILE NE ’ ‘. “sy-subrc = 0.?
PERFORM SUB_DOWNLOAD_TEMPLATE USING ‘ZRSD0005’ G_FILE.?
P_FILE = G_FILE.?
ENDIF.
CREATE OBJECT EXCEL ‘EXCEL.APPLICATION’.?
CALL METHOD OF EXCEL ‘WORKBOOKS’ = BOOKS.?
CALL METHOD OF BOOKS ‘OPEN’?
EXPORTING?
#1 = P_FILE.?
CALL METHOD OF EXCEL ‘WORKSHEETS’ = SHEET?
EXPORTING?
#1 = 1.?
CALL METHOD OF SHEET ‘ACTIVATE’.?
CALL METHOD OF EXCEL ‘CELLS’ = CELL?
EXPORTING?
#1 = 1?
#2 = 1.?
CONCATENATE ‘信息導(dǎo)出日期:’ SY-DATUM+0(4) ‘年’ SY-DATUM+4(2) ‘月’ SY-DATUM+6(2) ‘日’?
INTO L_CHAR.?
PERFORM FILL_CELL USING 2 1 L_CHAR.?
NUM = 3.?
LOOP AT ITAB_OK WHERE BOX = ‘X’.?
NUM = NUM + 1.?
PERFORM FILL_CELL USING NUM 1 ITAB_OK-KUNNR.?
PERFORM FILL_CELL USING NUM 2 ITAB_OK-NAME1.?
PERFORM FILL_CELL USING NUM 3 ITAB_OK-BEZEI1.?
PERFORM FILL_CELL USING NUM 4 ITAB_OK-BEZEI2.?
IF ITAB_OK-BSTDK IS NOT INITIAL.?
PERFORM FILL_CELL USING NUM 5 ITAB_OK-BSTDK.?
ENDIF.?
PERFORM FILL_CELL USING NUM 6 ITAB_OK-VBELN.?
PERFORM FILL_CELL USING NUM 7 ITAB_OK-BSTKD.?
PERFORM FILL_CELL USING NUM 8 ITAB_OK-IHREZ.?
PERFORM FILL_CELL USING NUM 9 ITAB_OK-BSTKD_E.?
PERFORM FILL_CELL USING NUM 10 ITAB_OK-KZWI2.?
PERFORM FILL_CELL USING NUM 11 ITAB_OK-KZWI1.?
ENDLOOP.?
SET PROPERTY OF EXCEL ‘VISIBLE’ = 1.?
ENDFORM.?
&———————————————————————?
*& Form SUB_MODIFY_SCREEN?
&———————————————————————?
* text?
———————————————————————-?
* –> p1 text?
* <– p2 text?
———————————————————————-?
FORM SUB_MODIFY_SCREEN .?
LOOP AT SCREEN.?
IF R1 IS NOT INITIAL.?
IF SCREEN-GROUP1 = ‘M2’.?
SCREEN-INPUT = 0.?
SCREEN-INVISIBLE = 1.?
ENDIF.?
MODIFY SCREEN.?
ELSE.?
IF SCREEN-GROUP1 = ‘M1’.?
SCREEN-INPUT = 0.?
SCREEN-INVISIBLE = 1.?
ENDIF.?
MODIFY SCREEN.?
ENDIF.?
ENDLOOP.?
ENDFORM.?
&———————————————————————?
*& Form FRM_OPEN_FILE?
&———————————————————————?
* text?
———————————————————————-?
* –> p1 text?
* <– p2 text?
———————————————————————-?
FORM FRM_OPEN_FILE .?
CALL FUNCTION ‘WS_FILENAME_GET’?
EXPORTING?
DEF_FILENAME = SPACE?
DEF_PATH = P_FILE?
MASK = ”?
MODE = ‘O’?
TITLE = ‘查找導(dǎo)入信息文件’?
IMPORTING?
FILENAME = P_FILE?
EXCEPTIONS?
SELECTION_CANCEL = 0.?
ENDFORM.?
&———————————————————————?
*& Form CHANGE_SO?
&———————————————————————?
* text?
———————————————————————-?
* –> p1 text?
* <– p2 text?
———————————————————————-?
FORM CHANGE_SO .
LOOP AT ITAB_OK WHERE BOX = ‘X’.?
SELECT SINGLE MATNR KWMENG MEINS INTO (ITAB_OK-MATNR,ITAB_OK-ZMENG,ORDER_ITEM_IN-TARGET_QU) FROM VBAP?
WHERE VBELN = ITAB_OK-VBELN?
AND POSNR = ‘000010’.
**新增 ZPR1?
ORDER_HEADER_INX-UPDATEFLAG = ‘U’.?
CONDITIONS_IN-ITM_NUMBER = ‘000010’.?
CONDITIONS_IN-COND_TYPE = ‘ZPR1’.?
CONDITIONS_IN-COND_ST_NO = ‘011’.?
CONDITIONS_IN-COND_COUNT = ‘01’.?
CONDITIONS_IN-COND_VALUE = ITAB_OK-DMBTR / 10.?
CONDITIONS_IN-COND_UPDAT = ‘X’.?
APPEND CONDITIONS_IN.?
CLEAR CONDITIONS_IN.
ENDLOOP.?
ENDFORM.?
&———————————————————————?
*& Form MODIFY?
&———————————————————————?
* text?
———————————————————————-?
* –>P_ITAB_OK_VBELN text?
———————————————————————-?
FORM MODIFY USING P_VBELN.?
CALL FUNCTION ‘BAPI_SALESORDER_CHANGE’?
EXPORTING?
SALESDOCUMENT = P_VBELN?
ORDER_HEADER_IN = ORDER_HEADER_IN?
ORDER_HEADER_INX = ORDER_HEADER_INX?
* SIMULATION =?
* BEHAVE_WHEN_ERROR = ’ ’?
* INT_NUMBER_ASSIGNMENT = ’ ’?
* LOGIC_SWITCH =?
* NO_STATUS_BUF_INIT = ’ ’?
TABLES?
RETURN = RETURN?
ORDER_ITEM_IN = ORDER_ITEM_IN?
ORDER_ITEM_INX = ORDER_ITEM_INX?
CONDITIONS_IN = CONDITIONS_IN?
CONDITIONS_INX = CONDITIONS_INX.?
READ TABLE RETURN WITH KEY TYPE = ‘E’.?
IF SY-SUBRC = 0.?
ITAB_OK-ZMESS = RETURN-MESSAGE.?
CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’.?
ELSE.?
ITAB_OK-ZMESS = ‘更改成功!’.?
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’?
EXPORTING?
WAIT = ‘X’.?
ENDIF.?
MODIFY ITAB_OK TRANSPORTING ZMESS WHERE VBELN = P_VBELN.
IF RETURN[] IS NOT INITIAL.?
DATA: BAL_S_LOG TYPE BAL_S_LOG.?
BAL_S_LOG-OBJECT = ‘ZRSD0005’.?
BAL_S_LOG-SUBOBJECT = ‘ZMOD_SO’.?
** define callback routine?
BAL_S_LOG-PARAMS-CALLBACK-USEREXITP = SY-REPID.?
BAL_S_LOG-PARAMS-CALLBACK-USEREXITF = ‘CALLBACK_LOG_DETAIL’.?
BAL_S_LOG-PARAMS-CALLBACK-USEREXITT = ”.?
BAL_S_LOG-EXTNUMBER = ‘MOFIDY_SO’.?
CALL FUNCTION ‘ZMESSAGE’?
EXPORTING?
BAL_S_LOG = BAL_S_LOG?
TABLES?
RETURN = RETURN.?
ENDIF.?
CLEAR: ORDER_HEADER_IN,?
ORDER_HEADER_INX.?
REFRESH : RETURN,?
ORDER_ITEM_IN,?
ORDER_ITEM_INX,?
PARTNERS,?
SCHEDULE_LINES,?
SCHEDULE_LINESX,?
CONDITIONS_IN.?
ENDFORM.
FORM CANCEL_BILLING USING P_VBELN.?
DATA: DOCUMENT_DATA_IN TYPE TABLE OF BAPIKOMFK WITH HEADER LINE,?
RETURNLOG_OUT TYPE TABLE OF BAPIRETURN1 WITH HEADER LINE,?
L_VBELN TYPE VBRK-VBELN.
SELECT SINGLE VBRK~VBELN INTO L_VBELN FROM VBRK?
INNER JOIN VBFA ON VBFA~VBELN = VBRK~VBELN?
WHERE VBFA~VBELV = P_VBELN?
AND VBRK~FKSTO = ”?
AND VBRK~SFAKN = ”.?
PERFORM BDCTABLE_APPEND USING:?
‘X’ ‘SAPMV60A’ ‘0102’,?
’ ’ ‘KOMFK-VBELN(01)’ L_VBELN,?
’ ’ ‘BDC_OKCODE’ ‘=SICH’.?
CALL TRANSACTION ‘VF11’ USING BDCDATA_ITAB?
MODE ‘E’?
UPDATE ‘S’?
MESSAGES INTO MESSTAB.?
FREE BDCDATA_ITAB.
MODIFY ITAB_OK TRANSPORTING ZMESS WHERE VBELN = P_VBELN.?
LOOP AT MESSTAB.?
RETURN-TYPE = MESSTAB-MSGTYP.?
RETURN-ID = MESSTAB-MSGID.?
RETURN-NUMBER = ‘001’ .?
RETURN-MESSAGE = ‘沖銷成功!’.?
RETURN-LOG_MSG_NO = MESSTAB-MSGNR.?
RETURN-MESSAGE_V1 = MESSTAB-MSGV1.?
RETURN-MESSAGE_V2 = MESSTAB-MSGV2.?
RETURN-MESSAGE_V3 = MESSTAB-MSGV3.?
RETURN-MESSAGE_V4 = MESSTAB-MSGV4.?
APPEND RETURN.?
CLEAR RETURN.?
ENDLOOP.
IF RETURN[] IS NOT INITIAL.?
DATA: BAL_S_LOG TYPE BAL_S_LOG.?
BAL_S_LOG-OBJECT = ‘ZRSD0005’.?
BAL_S_LOG-SUBOBJECT = ‘ZCAN_BILL’.?
** define callback routine?
BAL_S_LOG-PARAMS-CALLBACK-USEREXITP = SY-REPID.?
BAL_S_LOG-PARAMS-CALLBACK-USEREXITF = ‘CALLBACK_LOG_DETAIL’.?
BAL_S_LOG-PARAMS-CALLBACK-USEREXITT = ”.?
BAL_S_LOG-EXTNUMBER = ‘ZCAN_BILL’.?
CALL FUNCTION ‘ZMESSAGE’?
EXPORTING?
BAL_S_LOG = BAL_S_LOG?
TABLES?
RETURN = RETURN.?
ENDIF.?
REFRESH:BDCDATA_ITAB,RETURN,MESSTAB.?
ENDFORM.
FORM CREATE_SO USING P_ITAB LIKE LINE OF ITAB_OK.?
DATA:ORDER_HEADER_IN TYPE BAPISDHD1,?
ORDER_HEADER_INX TYPE BAPISDHD1X.?
**抬頭?
SELECT SINGLE BSTKD BSTKD_E INTO (ORDER_HEADER_IN-PURCH_NO_C,ORDER_HEADER_IN-PURCH_NO_S)?
FROM VBKD?
WHERE VBELN = P_ITAB-VBELN.
SELECT SINGLE VKORG VTWEG SPART INTO (ORDER_HEADER_IN-SALES_ORG,ORDER_HEADER_IN-DISTR_CHAN,ORDER_HEADER_IN-DIVISION)?
FROM VBAK?
WHERE VBELN = P_ITAB-VBELN.?
ORDER_HEADER_IN-DOC_TYPE = ‘ZRE2’.?
ORDER_HEADER_IN-ORD_REASON = ‘Z07’.
ORDER_HEADER_INX-PURCH_NO_C = ‘X’.?
ORDER_HEADER_INX-PURCH_NO_S = ‘X’.?
ORDER_HEADER_INX-SALES_ORG = ‘X’.?
ORDER_HEADER_INX-DISTR_CHAN = ‘X’.?
ORDER_HEADER_INX-DIVISION = ‘X’.?
ORDER_HEADER_INX-DOC_TYPE = ‘X’.?
ORDER_HEADER_INX-ORD_REASON = ‘X’.?
ORDER_HEADER_INX-UPDATEFLAG = ‘I’.?
**項目?
ORDER_ITEM_IN-ITM_NUMBER = ‘000010’.?
ORDER_ITEM_IN-MATERIAL = ‘000000000000300003’.?
ORDER_ITEM_IN-PLANT = ‘HBGS’.?
ORDER_ITEM_IN-TARGET_QTY = 1.?
SELECT SINGLE BSTKD_E INTO ORDER_ITEM_IN-PURCH_NO_S?
FROM VBKD?
WHERE VBELN = P_ITAB-VBELN?
AND POSNR = ‘000010’.?
APPEND ORDER_ITEM_IN.?
CLEAR ORDER_ITEM_IN.
ORDER_ITEM_INX-ITM_NUMBER = ‘000010’.?
ORDER_ITEM_INX-UPDATEFLAG = ‘I’.?
ORDER_ITEM_INX-MATERIAL = ‘X’.?
ORDER_ITEM_INX-PLANT = ‘X’.?
ORDER_ITEM_INX-TARGET_QTY = ‘X’.?
ORDER_ITEM_INX-PURCH_NO_S = ‘X’.?
APPEND ORDER_ITEM_INX.?
CLEAR ORDER_ITEM_INX.?
**計劃行?
SCHEDULE_LINES-ITM_NUMBER = ‘000010’.?
SCHEDULE_LINES-REQ_DATE = SY-DATUM.?
SCHEDULE_LINES-REQ_QTY = 1.?
APPEND SCHEDULE_LINES.?
CLEAR SCHEDULE_LINES.
SCHEDULE_LINESX-ITM_NUMBER = ‘000010’.?
SCHEDULE_LINESX-REQ_DATE = ‘X’.?
SCHEDULE_LINESX-REQ_QTY = ‘X’.?
SCHEDULE_LINESX-UPDATEFLAG = ‘I’.?
APPEND SCHEDULE_LINESX.?
CLEAR SCHEDULE_LINESX.?
*條件?
CONDITIONS_IN-ITM_NUMBER = ‘000010’.?
CONDITIONS_IN-COND_TYPE = ‘ZPR1’.?
IF ITAB_OK-ZCHAR3 = 4.?
CONDITIONS_IN-COND_VALUE = P_ITAB-KZWI1 / 20.?
ELSE.?
CONDITIONS_IN-COND_VALUE = P_ITAB-KZWI1 / 10.?
ENDIF.?
CONDITIONS_IN-COND_UPDAT = ”.?
APPEND CONDITIONS_IN.?
CLEAR CONDITIONS_IN.
CONDITIONS_INX-ITM_NUMBER = ‘000010’.?
CONDITIONS_INX-COND_TYPE = ‘ZPR1’.?
CONDITIONS_INX-COND_VALUE = ‘X’.?
CONDITIONS_INX-UPDATEFLAG = ‘I’.?
APPEND CONDITIONS_INX.?
CLEAR CONDITIONS_INX.?
*合作伙伴?
SELECT PARVW KUNNR INTO (PARTNERS-PARTN_ROLE,PARTNERS-PARTN_NUMB)?
FROM VBPA?
WHERE VBELN = P_ITAB-VBELN.?
APPEND PARTNERS.?
ENDSELECT.?
CALL FUNCTION ‘BAPI_CUSTOMERRETURN_CREATE’?
EXPORTING?
* SALESDOCUMENTIN =?
RETURN_HEADER_IN = ORDER_HEADER_IN?
RETURN_HEADER_INX = ORDER_HEADER_INX?
IMPORTING?
SALESDOCUMENT = SALESDOCUMENT?
TABLES?
RETURN = RETURN?
RETURN_ITEMS_IN = ORDER_ITEM_IN?
RETURN_ITEMS_INX = ORDER_ITEM_INX?
RETURN_PARTNERS = PARTNERS?
RETURN_SCHEDULES_IN = SCHEDULE_LINES?
RETURN_SCHEDULES_INX = SCHEDULE_LINESX?
RETURN_CONDITIONS_IN = CONDITIONS_IN?
” ORDER_CONDITIONS_INX = CONDITIONS_INX?
.?
READ TABLE RETURN WITH KEY TYPE = ‘E’.?
IF SY-SUBRC = 0.?
ITAB_OK-ZMESS = RETURN-MESSAGE.?
CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’.?
ELSE.?
ITAB_OK-ZMESS = ‘更改成功!’.?
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’?
EXPORTING?
WAIT = ‘X’.?
ENDIF.?
MODIFY ITAB_OK TRANSPORTING ZMESS WHERE VBELN = P_ITAB-VBELN.
IF RETURN[] IS NOT INITIAL.?
DATA: BAL_S_LOG TYPE BAL_S_LOG.?
BAL_S_LOG-OBJECT = ‘ZRSD0005’.?
BAL_S_LOG-SUBOBJECT = ‘ZBD_RTSO’.?
** define callback routine?
BAL_S_LOG-PARAMS-CALLBACK-USEREXITP = SY-REPID.?
BAL_S_LOG-PARAMS-CALLBACK-USEREXITF = ‘CALLBACK_LOG_DETAIL’.?
BAL_S_LOG-PARAMS-CALLBACK-USEREXITT = ”.?
BAL_S_LOG-EXTNUMBER = ‘ZBD_RTSO’.?
CALL FUNCTION ‘ZMESSAGE’?
EXPORTING?
BAL_S_LOG = BAL_S_LOG?
TABLES?
RETURN = RETURN.?
ENDIF.?
CLEAR: ORDER_HEADER_IN,?
ORDER_HEADER_INX.?
REFRESH : RETURN,?
ORDER_ITEM_IN,?
ORDER_ITEM_INX,?
PARTNERS,?
SCHEDULE_LINES,?
SCHEDULE_LINESX,?
CONDITIONS_IN.?
ENDFORM.?
&———————————————————————?
*& Form FM_DOWN_MODEL?
&———————————————————————?
* text?
———————————————————————-?
* –>P_0441 text?
* –>P_L_FILE text?
———————————————————————-?
FORM FM_DOWN_MODEL USING EXCEL_NAME EXCEL_NAME1.?
DATA:LO_OBJDATA LIKE WWWDATATAB,?
LO_MIME LIKE W3MIME,?
LS_DESTINATION LIKE RLGRAP-FILENAME,?
LS_OBJNAM TYPE STRING,?
LI_RC LIKE SY-SUBRC,?
LS_ERRTXT TYPE STRING.?
DATA:P_OBJID TYPE WWWDATATAB-OBJID,?
P_DEST LIKE SAPB-SAPPFAD.?
CONCATENATE EXCEL_NAME1 ‘.xls’ INTO GC_FULLPATH.?
P_OBJID = EXCEL_NAME.?
IF SY-SUBRC = 0.?
CONCATENATE P_OBJID ‘.XLS’ INTO LS_OBJNAM.?
CONDENSE LS_OBJNAM NO-GAPS.?
SELECT SINGLE RELID OBJID INTO CORRESPONDING FIELDS OF LO_OBJDATA?
FROM WWWDATA WHERE SRTF2 = 0 AND RELID = ‘MI’ AND OBJID = P_OBJID.?
IF SY-SUBRC NE 0 OR LO_OBJDATA-OBJID EQ SPACE.?
CONCATENATE ‘模板文件’ LS_OBJNAM ‘不存在,請用TCODE:SMWO進行加載’ INTO LS_ERRTXT.?
MESSAGE LS_ERRTXT TYPE ‘I’.?
ENDIF.?
CALL FUNCTION ‘DOWNLOAD_WEB_OBJECT’?
EXPORTING?
KEY = LO_OBJDATA?
DESTINATION = GC_FULLPATH ” ‘C:\Temp\test************.xls’ .?
IMPORTING?
RC = LI_RC.?
IF LI_RC NE 0.?
CONCATENATE ‘模板文件:’ LS_OBJNAM ‘下載失敗’ INTO LS_ERRTXT.?
MESSAGE LS_ERRTXT TYPE ‘E’.?
ELSEIF LI_RC EQ 0.?
MESSAGE ‘模板下載成功’ TYPE ‘S’.?
ENDIF.?
ENDIF.?
ENDFORM.?
&———————————————————————?
*& Form FRM_DELETE_SO?
&———————————————————————?
* text?
———————————————————————-?
* –> p1 text?
* <– p2 text?
———————————————————————-?
FORM FRM_DELETE_SO .?
DATA:LV_VBELN TYPE BAPIVBELN-VBELN.?
DATA:ORDER_HEADER_INX TYPE BAPISDH1X.?
DATA:RETURN TYPE TABLE OF BAPIRET2 WITH HEADER LINE.?
DATA: L_ANSWER(1) TYPE C.?
READ TABLE ITAB_OK WITH KEY BOX = ‘X’.?
IF SY-SUBRC <> 0.?
MESSAGE ‘請選擇需要刪除的行!’ TYPE ‘E’.?
ELSE.?
CALL FUNCTION ‘POPUP_TO_CONFIRM’?
EXPORTING?
TITLEBAR = ‘刪除’?
TEXT_QUESTION = ‘是否要刪除該內(nèi)容?’?
DEFAULT_BUTTON = ‘2’?
DISPLAY_CANCEL_BUTTON = ‘X’?
IMPORTING?
ANSWER = L_ANSWER?
EXCEPTIONS?
TEXT_NOT_FOUND = 1?
OTHERS = 2.?
IF L_ANSWER = ‘1’.?
LOOP AT ITAB_OK WHERE BOX = ‘X’.?
LV_VBELN = ITAB_OK-VBELN.?
ORDER_HEADER_INX-UPDATEFLAG = ‘D’.?
CALL FUNCTION ‘BAPI_SALESORDER_CHANGE’?
EXPORTING?
SALESDOCUMENT = LV_VBELN?
ORDER_HEADER_INX = ORDER_HEADER_INX?
TABLES?
RETURN = RETURN.?
READ TABLE RETURN WITH KEY TYPE = ‘E’.?
IF SY-SUBRC = 0.?
SORT RETURN BY ID NUMBER.DELETE ADJACENT DUPLICATES FROM RETURN COMPARING ID NUMBER.?
LOOP AT RETURN.?
CONCATENATE RETURN-MESSAGE ‘;’ ITAB_OK-ZMESS INTO ITAB_OK-ZMESS.?
ENDLOOP.?
CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’.?
ELSE.?
ITAB_OK-ZMESS = ‘刪除成功!’.?
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’?
EXPORTING?
WAIT = ‘X’.?
ENDIF.?
MODIFY ITAB_OK TRANSPORTING ZMESS WHERE VBELN = ITAB_OK-VBELN.?
ENDLOOP.?
ENDIF.?
ENDIF.?
ENDFORM.
總結(jié)
- 上一篇: sap 里的用户菜单是灰色的,不可用的解
- 下一篇: ALV修改单元格