OLE报表下载

来源:互联网 发布:linux指令速查手册 编辑:程序博客网 时间:2024/05/09 23:28

*&—————————————————————————–
& 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的内表
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.
********************模板下载相关定义*************
*定义变量
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 = ‘模板下载’. “设置按钮的默认名字

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’.

SELECT VBELN AUART AUGRU  INTO CORRESPONDING FIELDS OF TABLE LT_VBAK  FROM VBAK  WHERE ERDAT IN S_ERDAT    AND AUART IN ('ZOR2','ZRE2')    AND AUGRU IN ('','Z07')    AND FAKSK = ''    AND KUNNR IN S_KUNNR.SELECT VBPA~VBELN VBPA~POSNR KUNNR  INTO CORRESPONDING FIELDS OF TABLE LT_VBPA  FROM VBPA  INNER JOIN VBUP  ON VBPA~VBELN = VBUP~VBELN

* AND VBPA~POSNR = VBUP~POSNR
WHERE VBPA~PARVW = ‘RG’
AND VBUP~FKSAA = ‘A’.
* AND VBPA~KUNNR IN S_KUNNR.

SELECT KUNNR NAME1 REGIO CITYC  INTO CORRESPONDING FIELDS OF TABLE LT_KNA1  FROM KNA1  WHERE KUNNR IN S_KUNNR    AND REGIO IN S_REGION    AND CITYC IN S_CITYC. SELECT VBELN POSNR KZWI2 KZWI1 KWMENG MATNR   INTO CORRESPONDING FIELDS OF TABLE LT_VBAP   FROM VBAP   WHERE ABGRU = ''     AND FAKSP = ''.SELECT VBELN POSNR BSTDK BSTKD BSTKD_E IHREZ  INTO CORRESPONDING FIELDS OF TABLE LT_VBKD  FROM VBKD  WHERE POSNR = '000010'.SORT LT_VBAK BY VBELN AUART AUGRU.SORT LT_VBPA BY KUNNR.SORT LT_KNA1 BY KUNNR.SORT LT_VBAP BY VBELN.SORT LT_VBKD BY VBELN.LOOP AT LT_VBPA.  CLEAR LT_VBAK.  READ TABLE LT_VBAK WITH KEY VBELN = LT_VBPA-VBELN AUART = 'ZOR2' AUGRU = '' BINARY SEARCH.  IF SY-SUBRC = 0.      ITAB_OK-VBELN = LT_VBAK-VBELN.      ITAB_OK-AUART = LT_VBAK-AUART.      ITAB_OK-KUNNR = LT_VBPA-KUNNR.      CLEAR LT_KNA1.      READ TABLE LT_KNA1 WITH KEY KUNNR = LT_VBPA-KUNNR BINARY SEARCH.      IF SY-SUBRC = 0.        ITAB_OK-NAME1 = LT_KNA1-NAME1.        ITAB_OK-REGION = LT_KNA1-REGIO.        ITAB_OK-CITYC = LT_KNA1-CITYC.        CLEAR LT_VBAP.        READ TABLE LT_VBAP WITH KEY VBELN = LT_VBPA-VBELN BINARY SEARCH." POSNR = LT_VBPA-POSNR      IF SY-SUBRC = 0 AND LT_VBAP-KZWI1 > 0.         ITAB_OK-KZWI2 = LT_VBAP-KZWI2.         ITAB_OK-KZWI1 = LT_VBAP-KZWI1.         ITAB_OK-ZMENG = LT_VBAP-KWMENG.         ITAB_OK-MATNR = LT_VBAP-MATNR.         CLEAR LT_VBKD.         READ TABLE LT_VBKD WITH KEY VBELN = LT_VBPA-VBELN BINARY SEARCH.        IF SY-SUBRC = 0.          ITAB_OK-BSTDK = LT_VBKD-BSTDK.          ITAB_OK-BSTKD = LT_VBKD-BSTKD.          ITAB_OK-BSTKD_E = LT_VBKD-BSTKD_E.          ITAB_OK-IHREZ = LT_VBKD-IHREZ.          APPEND ITAB_OK.CLEAR ITAB_OK.        ENDIF.      ENDIF.      ENDIF.  ENDIF.  CLEAR LT_VBAK.  READ TABLE LT_VBAK WITH KEY VBELN = LT_VBPA-VBELN AUART = 'ZRE2' AUGRU = 'Z07' BINARY SEARCH.  IF SY-SUBRC = 0.    ITAB_OK-VBELN = LT_VBAK-VBELN.    ITAB_OK-AUART = LT_VBAK-AUART.    ITAB_OK-KUNNR = LT_VBPA-KUNNR.    CLEAR LT_KNA1.    READ TABLE LT_KNA1 WITH KEY KUNNR = LT_VBPA-KUNNR BINARY SEARCH.    IF SY-SUBRC = 0.      ITAB_OK-NAME1 = LT_KNA1-NAME1.      ITAB_OK-REGION = LT_KNA1-REGIO.      ITAB_OK-CITYC = LT_KNA1-CITYC.      CLEAR LT_VBAP.      READ TABLE LT_VBAP WITH KEY VBELN = LT_VBPA-VBELN BINARY SEARCH."POSNR = LT_VBPA-POSNR      IF SY-SUBRC = 0. "AND LT_VBAP-KZWI1 < 0.        ITAB_OK-KZWI2 = LT_VBAP-KZWI2.        ITAB_OK-KZWI1 = LT_VBAP-KZWI1.        ITAB_OK-ZMENG = LT_VBAP-KWMENG.        ITAB_OK-MATNR = LT_VBAP-MATNR.        CLEAR LT_VBKD.        READ TABLE LT_VBKD WITH KEY VBELN = LT_VBPA-VBELN BINARY SEARCH.        IF SY-SUBRC = 0.          ITAB_OK-BSTDK = LT_VBKD-BSTDK.          ITAB_OK-BSTKD = LT_VBKD-BSTKD.          ITAB_OK-BSTKD_E = LT_VBKD-BSTKD_E.          ITAB_OK-IHREZ = LT_VBKD-IHREZ.          APPEND ITAB_OK.CLEAR ITAB_OK.        ENDIF.      ENDIF.    ENDIF.  ENDIF.  CLEAR LT_VBPA.ENDLOOP.LOOP AT ITAB_OK.  ITAB_OK-BOX = 'X'.  IF ITAB_OK-AUART = 'ZRE2'.    ITAB_OK-KZWI1 = -1 * ITAB_OK-KZWI1.  ENDIF.  IF ITAB_OK-REGION IS NOT INITIAL.    SELECT SINGLE BEZEI INTO ITAB_OK-BEZEI1 FROM T005U          WHERE SPRAS = SY-LANGU    AND LAND1 = 'CN'    AND BLAND = ITAB_OK-REGION.    CONCATENATE ITAB_OK-REGION ITAB_OK-BEZEI1 INTO ITAB_OK-BEZEI1.  ENDIF.  IF ITAB_OK-REGION IS NOT INITIAL AND ITAB_OK-CITYC IS NOT INITIAL.    SELECT SINGLE BEZEI INTO ITAB_OK-BEZEI2 FROM T005H        WHERE SPRAS = SY-LANGU          AND LAND1 = 'CN'    AND REGIO = ITAB_OK-REGION    AND CITYC = ITAB_OK-CITYC.    CONCATENATE ITAB_OK-CITYC ITAB_OK-BEZEI2 INTO ITAB_OK-BEZEI2.  ENDIF.  MODIFY ITAB_OK.  CLEAR ITAB_OK.ENDLOOP.

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.

IF SY-SUBRC <> 0.  MESSAGE  '打开文件错误,请检查文件,确保关闭文件!' TYPE 'E'.  STOP.ENDIF.LOOP AT GT_EXCEL.  CASE GT_EXCEL-COL.    WHEN '001'.      WRITE GT_EXCEL-VALUE TO ITAB_OK-KUNNR.    WHEN '002'.      WRITE GT_EXCEL-VALUE TO ITAB_OK-NAME1.    WHEN '003'.      WRITE GT_EXCEL-VALUE TO ITAB_OK-BEZEI1.    WHEN '004'.      WRITE GT_EXCEL-VALUE TO ITAB_OK-BEZEI2.    WHEN '005'.      CONCATENATE GT_EXCEL-VALUE+0(4) GT_EXCEL-VALUE+5(2) GT_EXCEL-VALUE+8(2) INTO ITAB_OK-BSTDK.    WHEN '006'.      WRITE GT_EXCEL-VALUE TO ITAB_OK-VBELN.      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'        EXPORTING          INPUT  = ITAB_OK-VBELN        IMPORTING          OUTPUT = ITAB_OK-VBELN.    WHEN '007'.      WRITE GT_EXCEL-VALUE TO ITAB_OK-BSTKD.    WHEN '008'.      WRITE GT_EXCEL-VALUE TO  ITAB_OK-IHREZ.    WHEN '009'.      WRITE GT_EXCEL-VALUE TO ITAB_OK-BSTKD_E.    WHEN '010'.      ITAB_OK-KZWI2 = GT_EXCEL-VALUE.    WHEN '011'.      ITAB_OK-KZWI1 = GT_EXCEL-VALUE.    WHEN '012'.      ITAB_OK-DMBTR = GT_EXCEL-VALUE.    WHEN '013'.      WRITE GT_EXCEL-VALUE TO ITAB_OK-ZCHAR1.

* 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 ‘没有交货数据,谢谢’ 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的状态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 ‘信息导出日期:’ 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 = ‘查找导入信息文件’
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’.

IF ITAB_OK-DMBTR <> ''.

**新增 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.

  CONDITIONS_INX-ITM_NUMBER  = '000010'.  CONDITIONS_INX-COND_ST_NO = '011'.  CONDITIONS_INX-COND_COUNT = '01'.  CONDITIONS_INX-COND_TYPE   = 'ZPR1'.  CONDITIONS_INX-COND_VALUE  = 'X'.  CONDITIONS_INX-UPDATEFLAG  = 'U'.  APPEND CONDITIONS_INX.  CLEAR CONDITIONS_INX.  "  AT END OF VBELN.  PERFORM MODIFY USING ITAB_OK-VBELN.  " ENDAT.ENDIF.IF ITAB_OK-ZCHAR1 <> ''.  ORDER_HEADER_INX-UPDATEFLAG  = 'U'.  ORDER_ITEM_IN-ITM_NUMBER  = '000010'.  ORDER_ITEM_IN-MATERIAL   = ITAB_OK-MATNR.  ORDER_ITEM_IN-TARGET_QTY = ITAB_OK-ZMENG.  " ORDER_ITEM_IN-TARGET_QU  = ITAB_OK-ZMENG.  ORDER_ITEM_IN-PLANT      = 'HBGS'.  ORDER_ITEM_IN-REF_1  = ITAB_OK-ZCHAR1.  APPEND ORDER_ITEM_IN.  CLEAR ORDER_ITEM_IN.  ORDER_ITEM_INX-ITM_NUMBER  = '000010'.  ORDER_ITEM_INX-REF_1  = 'X'.  ORDER_ITEM_INX-MATERIAL   = 'X'.  ORDER_ITEM_INX-TARGET_QTY = 'X'.  ORDER_ITEM_INX-TARGET_QU  = 'X'.  ORDER_ITEM_INX-TARGET_QU  = 'X'.  ORDER_ITEM_INX-PLANT      = 'X'.  ORDER_ITEM_INX-UPDATEFLAG  = 'U'.  APPEND ORDER_ITEM_INX.  CLEAR ORDER_ITEM_INX.  "  AT END OF VBELN.  PERFORM MODIFY USING ITAB_OK-VBELN.  " ENDAT.ENDIF.

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 = ‘是否要删除该内容?’
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.

0 0
原创粉丝点击