OLE报表下载

    xiaoxiao2021-11-16  34

    *&—————————————————————————–  & 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.

    转载请注明原文地址: https://ju.6miu.com/read-678280.html

    最新回复(0)