*&---------------------------------------------------------------------* *& Report Z_ARBA_PZB *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT z_arba_pzb. TABLES:mara,ekpo,zbmm0005_po. DATA:gt_mara LIKE TABLE OF mara WITH HEADER LINE. *DATA:gt_mara_show LIKE TABLE OF mara WITH HEADER LINE. DATA:gt_/arba/tvarv LIKE TABLE OF /arba/tvarv WITH HEADER LINE. DATA:gt_/arba/tvarv_del LIKE TABLE OF /arba/tvarv WITH HEADER LINE. DATA:gt_/arba/tvarv_res LIKE TABLE OF /arba/tvarv WITH HEADER LINE. DATA: lc_cursor TYPE cursor. selection-SCREEN BEGIN OF BLOCK bl2 WITH FRAME TITLE TEXT-004. selection-SCREEN: BEGIN OF LINE, COMMENT 3(60) TEXT-005, END OF LINE, BEGIN OF LINE, COMMENT 3(60) TEXT-007, END OF LINE. selection-SCREEN END OF BLOCK bl2. SELECTION-SCREEN BEGIN OF BLOCK 001 WITH FRAME TITLE text-001. SELECT-OPTIONS s_matnr FOR zbmm0005_po-matnr NO INTERVALS . "物料 SELECTION-SCREEN END OF BLOCK 001. */ARBA/EXTERNAL_SID P I EQ CSOTExternalSystemP */ARBA/MATERIAL_MASTER_EXPORT MATNR S 1 I EQ 51CZ8560000001 */ARBA/MATERIAL_MASTER_EXPORT MATNR S 2 I EQ 51CZ8560000002 */ARBA/TEMP_DIRECTORY P I EQ /ARBA/MASTERDATA *DC_WAITTIME P I EQ 1 *FLUSH_MM_DOC_CHANGES P I EQ *&---------------------------------------------------------------------* DATA:lv_numb TYPE /arba/tvarv-numb. OPEN CURSOR WITH HOLD lc_cursor FOR SELECT * FROM mara WHERE matnr IN s_matnr * and ERSDA BETWEEN '20201221' and '20201228' ORDER BY PRIMARY KEY . DO. FETCH NEXT CURSOR lc_cursor INTO TABLE gt_mara PACKAGE SIZE 2000. IF sy-subrc <> 0. EXIT. ENDIF. *->删除配置表上次发送过的数据 FREE:gt_/arba/tvarv. SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_/arba/tvarv FROM /arba/tvarv. LOOP AT gt_/arba/tvarv. IF gt_/arba/tvarv-name = '/ARBA/MATERIAL_MASTER_EXPORT'.. MOVE-CORRESPONDING gt_/arba/tvarv TO gt_/arba/tvarv_del. APPEND gt_/arba/tvarv_del.CLEAR gt_/arba/tvarv_del."删除上次用过的物料相关数据 ELSE. MOVE-CORRESPONDING gt_/arba/tvarv TO gt_/arba/tvarv_res. APPEND gt_/arba/tvarv_res.CLEAR gt_/arba/tvarv_res."其他数据 ENDIF. ENDLOOP. DELETE /arba/tvarv FROM TABLE gt_/arba/tvarv_del."删除上次用过的物料相关数据 EXEC SQL. COMMIT ENDEXEC. CLEAR:lv_numb. LOOP AT gt_mara. lv_numb = lv_numb + 1. gt_/arba/tvarv_res-name = '/ARBA/MATERIAL_MASTER_EXPORT'.. gt_/arba/tvarv_res-fieldname = 'MATNR'. gt_/arba/tvarv_res-type = 'S'. gt_/arba/tvarv_res-numb = lv_numb. gt_/arba/tvarv_res-sign = 'I'. gt_/arba/tvarv_res-opti = 'EQ'. gt_/arba/tvarv_res-low = gt_mara-matnr. APPEND gt_/arba/tvarv_res.CLEAR gt_/arba/tvarv_res."结果表 result ENDLOOP. MODIFY /arba/tvarv FROM TABLE gt_/arba/tvarv_res." 控制哪些物料需要进标准程序 EXEC SQL. COMMIT ENDEXEC. *&---------------------------------------------------------------------* *->调用job进行发送 PERFORM frm_create_job. * SUBMIT z_arba_master_send * * AND RETURN * WITH p_cus3 = 'X' * WITH p_dc = 'X' * WITH p_flo = 'X' * WITH p_werks = 'X' * WITH p_matmas = 'X'. EXEC SQL. COMMIT ENDEXEC. ENDDO." FREE:gt_/arba/tvarv_res. SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_/arba/tvarv FROM /arba/tvarv WHERE name = '/ARBA/MATERIAL_MASTER_EXPORT' AND fieldname = 'MATNR' and type = 'S'. . DELETE /arba/tvarv FROM TABLE gt_/arba/tvarv. COMMIT WORK AND WAIT. *&---------------------------------------------------------------------* FORM frm_create_job. DATA: l_jobnumber TYPE btcjobcnt. DATA: l_jobname TYPE btcjob VALUE 'ZSEND'. CALL FUNCTION 'ENQUE_SLEEP' EXPORTING seconds = 1. " "检查权限 AUTHORITY-CHECK OBJECT 'S_BTCH_ADM' FOR USER sy-uname ID 'BTCADMIN' FIELD 'Y'. IF sy-subrc NE 0. MESSAGE '没有权限' TYPE 'E'. . ELSE. CALL FUNCTION 'JOB_OPEN' EXPORTING jobname = l_jobname IMPORTING jobcount = l_jobnumber EXCEPTIONS cant_create_job = 1 invalid_job_data = 2 jobname_missing = 3 OTHERS = 4. IF sy-subrc = 0. SUBMIT z_arba_master_send USER sy-uname VIA JOB l_jobname NUMBER l_jobnumber AND RETURN WITH p_cus3 = 'X' WITH p_dc = 'X' WITH p_flo = 'X' WITH p_werks = 'X' WITH p_matmas = 'X'. IF sy-subrc = 0. DATA:lv_status TYPE tbtco-status. CALL FUNCTION 'ENQUE_SLEEP' EXPORTING seconds = 55. " * DO . * CLEAR:lv_status. * CALL FUNCTION 'ENQUE_SLEEP' * EXPORTING * seconds = 20. " * SELECT SINGLE status INTO lv_status FROM tbtco WHERE jobname = 'ZSEND' AND jobcount = l_jobnumber. * IF sy-subrc = 0. * IF lv_status = 'F'. * EXIT. * ENDIF. * ENDIF. * ENDDO. CALL FUNCTION 'JOB_CLOSE' EXPORTING jobcount = l_jobnumber jobname = l_jobname strtimmed = 'X' EXCEPTIONS cant_start_immediate = 1 invalid_startdate = 2 jobname_missing = 3 job_close_failed = 4 job_nosteps = 5 job_notex = 6 lock_failed = 7 OTHERS = 8. ENDIF. ENDIF. ENDIF. ENDFORM. "FRM_CREATE_JOB *&---------------------------------------------------------------------* *LOOP AT gt_mara. * lv_numb = lv_numb + 1. * gt_/arba/tvarv_res-name = '/ARBA/MATERIAL_MASTER_EXPORT'.. * gt_/arba/tvarv_res-fieldname = 'MATNR'. * gt_/arba/tvarv_res-type = 'S'. * gt_/arba/tvarv_res-numb = lv_numb. * gt_/arba/tvarv_res-sign = 'I'. * gt_/arba/tvarv_res-opti = 'EQ'. * gt_/arba/tvarv_res-low = gt_mara-matnr. * * APPEND gt_/arba/tvarv_res.CLEAR gt_/arba/tvarv_res. *ENDLOOP.