* This Program displays the data by production order number and
* gets the user input in the next screen within a table control
* and downloads into zwodownld table.
*& Dialog Program developed to download the Work Orders *
*& Author: Sreeni Meka, M.S.(Mech)
*& Change according to your requirements *
*& Questions??: Sreeni_Meka@yahoo.com
*&---------------------------------------------------------------------*
INCLUDE MZ01TOP . "
* INCLUDE MZ01O01 . *
* INCLUDE MZ01I01 . *
* INCLUDE MZ01F01 . *
INCLUDE MZ01O01.
INCLUDE MZ01I01.
INCLUDE MZ01F01.
*INCLUDE MZ01TOP Follows
*&---------------------------------------------------------------------*
*& Include MZ01TOP *
*& *
*&---------------------------------------------------------------------*
PROGRAM SAPMZ01 MESSAGE-ID ZMM .
TABLES: AFKO,AUFK,MAKT,MARA,RESB,ZWODOWNLD,ZMATTYPECK,T024D.
DATA: OK_CODE(4),
RCODE(5),
LINE_COUNT TYPE I.
CONTROLS: DATAB TYPE TABLEVIEW USING SCREEN 200.
DATA INT_DATAB LIKE ZWODOWNLD OCCURS 1 WITH HEADER LINE.
DATA WA LIKE ZWODOWNLD OCCURS 0 WITH HEADER LINE.
DATA Z_ANSWER(1) TYPE C.
DATA ZDOWNLDPURGE.
* MZ01F01 Follows.....
*----------------------------------------------------------------------*
***INCLUDE MZ01F01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form PAGING
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0179 text *
*----------------------------------------------------------------------*
FORM PAGING USING CODE.
DATA: I TYPE I,
J TYPE I.
CASE CODE.
WHEN 'P--'. DATAB-TOP_LINE = 1.
WHEN 'P-'. DATAB-TOP_LINE = DATAB-TOP_LINE - LINE_COUNT.
IF DATAB-TOP_LINE LE 0. DATAB-TOP_LINE = 1. ENDIF.
WHEN 'P+'. I = DATAB-TOP_LINE + LINE_COUNT.
J = DATAB-LINES - LINE_COUNT + 1.
IF J LE 0. J = 1. ENDIF.
IF I LE J. DATAB-TOP_LINE = I.
ELSE. DATAB-TOP_LINE = J.
ENDIF.
WHEN 'P++'. DATAB-TOP_LINE = DATAB-LINES - LINE_COUNT + 1.
IF DATAB-TOP_LINE LE 0. DATAB-TOP_LINE = 1. ENDIF.
ENDCASE.
ENDFORM. " PAGING
* MZ01o01 Follows below
*----------------------------------------------------------------------*
***INCLUDE MZ01O01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'TD0100'.
SET TITLEBAR '100'.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module STATUS_0200 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_0200 OUTPUT.
SET PF-STATUS 'TD0200'.
SET TITLEBAR '200'.
ENDMODULE. " STATUS_0200 OUTPUT
*&---------------------------------------------------------------------*
*& Module DISPLAY_TAB OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE DISPLAY_TAB OUTPUT.
ZWODOWNLD-MATNR = INT_DATAB-MATNR.
ZWODOWNLD-BDMNG = INT_DATAB-BDMNG.
ZWODOWNLD-MEINS = INT_DATAB-MEINS.
ZWODOWNLD-RSPOS = INT_DATAB-RSPOS.
ZWODOWNLD-ZMATTYPE = INT_DATAB-ZMATTYPE.
ZWODOWNLD-AUFNR = AFKO-AUFNR.
ZWODOWNLD-CHARG = INT_DATAB-CHARG.
ENDMODULE. " DISPLAY_TAB OUTPUT
* MZ01i01 Follows below
*----------------------------------------------------------------------*
***INCLUDE MZ01I01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
CASE OK_CODE.
WHEN 'SHOW'.
CLEAR OK_CODE.
SELECT SINGLE * FROM AFKO WHERE AUFNR = AFKO-AUFNR.
IF SY-SUBRC NE 0.
MESSAGE E006(ZS).
ELSE.
SELECT SINGLE WERKS FROM AUFK
INTO AUFK-WERKS WHERE AUFNR = AFKO-AUFNR.
SELECT SINGLE * FROM MAKT WHERE MATNR = AFKO-PLNBEZ.
SELECT SINGLE DSNAM FROM T024D
INTO T024D-DSNAM WHERE DISPO = AFKO-DISPO.
* Fill the table in the screen 200
SELECT * FROM RESB INTO CORRESPONDING FIELDS OF TABLE INT_DATAB
WHERE AUFNR = AFKO-AUFNR
AND WERKS = '1500'
ORDER BY RSPOS .
LOOP AT INT_DATAB.
MOVE AUFK-WERKS TO INT_DATAB-WERKS.
MOVE 'C' TO INT_DATAB-ZRECSTATUS.
MOVE '00' TO INT_DATAB-ZBCKORDLVL.
MOVE SY-UNAME TO INT_DATAB-ERNAM.
MOVE SY-DATUM TO INT_DATAB-ERDAT.
MOVE SY-UZEIT TO INT_DATAB-ERZET.
MOVE 'U' TO INT_DATAB-ZMATTYPE.
MODIFY INT_DATAB.
ENDLOOP.
DATAB-TOP_LINE = 1.
DESCRIBE TABLE INT_DATAB LINES DATAB-LINES.
CLEAR OK_CODE.
SET SCREEN 0200.
LEAVE SCREEN.
ENDIF.
WHEN 'CANC'.
CLEAR OK_CODE.
SET SCREEN 0. LEAVE SCREEN.
WHEN 'EXIT'.
CLEAR OK_CODE.
SET SCREEN 0. LEAVE SCREEN.
WHEN 'BACK'.
CLEAR OK_CODE.
SET SCREEN 0. LEAVE SCREEN.
WHEN SPACE.
WHEN OTHERS.
CLEAR OK_CODE.
SET SCREEN 0. LEAVE SCREEN.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0200 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0200 INPUT.
CASE OK_CODE.
WHEN 'SAVE'.
CLEAR OK_CODE.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TITLEBAR = 'Are you Sure '
TEXT_QUESTION = 'Are you sure, You want to download?'
TEXT_BUTTON_1 = 'Yes'
ICON_BUTTON_1 = ' '
TEXT_BUTTON_2 = 'No'
ICON_BUTTON_2 = ' '
DEFAULT_BUTTON = '1'
USERDEFINED_F1_HELP = ' '
START_COLUMN = 25
START_ROW = 6
IMPORTING
ANSWER = Z_ANSWER.
IF Z_ANSWER = '1'.
INSERT ZWODOWNLD FROM TABLE INT_DATAB.
INSERT ZDOWNLDPURGE FROM INT_DATAB-AUFNR.
COMMIT WORK.
MESSAGE S000.
CLEAR AFKO-AUFNR.
SET SCREEN 100. LEAVE SCREEN.
ELSEIF Z_ANSWER = '2'.
SET SCREEN 100. LEAVE SCREEN.
ELSE.
* do nothing.
ENDIF.
WHEN 'CANC'.
CLEAR OK_CODE.
SET SCREEN 100. LEAVE SCREEN.
WHEN 'EXIT'.
CLEAR OK_CODE.
SET SCREEN 0. LEAVE SCREEN.
WHEN 'BACK'.
CLEAR OK_CODE.
SET SCREEN 100. LEAVE SCREEN.
WHEN 'NEW'.
CLEAR OK_CODE.
SET SCREEN 100. LEAVE SCREEN.
WHEN 'P--'.
CLEAR OK_CODE.
PERFORM PAGING USING 'P--'.
WHEN 'P-'.
CLEAR OK_CODE.
PERFORM PAGING USING 'P-'.
WHEN 'P+'.
CLEAR OK_CODE.
PERFORM PAGING USING 'P+'.
WHEN 'P++'.
CLEAR OK_CODE.
PERFORM PAGING USING 'P++'.
ENDCASE.
ENDMODULE. " USER_COMMAND_0200 INPUT
*&---------------------------------------------------------------------*
*& Module EXIT_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE EXIT_0100 INPUT.
CASE OK_CODE.
WHEN 'CANC'.
CLEAR OK_CODE.
SET SCREEN 0. LEAVE SCREEN.
WHEN 'EXIT'.
CLEAR OK_CODE.
SET SCREEN 0. LEAVE SCREEN.
ENDCASE.
ENDMODULE. " EXIT_0100 INPUT
*&---------------------------------------------------------------------*
*& Module SET_LINE_COUNT INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE SET_LINE_COUNT INPUT.
LINE_COUNT = SY-LOOPC.
ENDMODULE. " SET_LINE_COUNT INPUT
*&---------------------------------------------------------------------*
*& Module EXIT_0200 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE EXIT_0200 INPUT.
CASE OK_CODE.
WHEN 'CANC'.
CLEAR OK_CODE.
SET SCREEN 100. LEAVE SCREEN.
WHEN 'ENTE'.
CLEAR OK_CODE.
ENDCASE.
ENDMODULE. " EXIT_0200 INPUT
*&---------------------------------------------------------------------*
*& Module CHECK_ZWODOWNLD INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE CHECK_ZWODOWNLD INPUT.
SELECT SINGLE PROD_NUMBER FROM ZDOWNLDPURGE INTO
ZDOWNLDPURGE WHERE PROD_NUMBER = AFKO-AUFNR.
IF SY-SUBRC EQ 0.
MESSAGE W002 WITH AFKO-AUFNR.
ELSE.
ENDIF.
ENDMODULE. " CHECK_ZWODOWNLD INPUT
*&---------------------------------------------------------------------*
*& Module CHECK_RESB INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE CHECK_RESB INPUT.
SELECT SINGLE * FROM RESB WHERE AUFNR = AFKO-AUFNR
AND WERKS = '1500' .
IF SY-SUBRC NE 0. MESSAGE W003 WITH AFKO-AUFNR. ENDIF.
ENDMODULE. " CHECK_RESB INPUT
*&---------------------------------------------------------------------*
*& Module MODIFY_TAB INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module UPDATE_INT_DATAB INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE UPDATE_INT_DATAB INPUT.
INT_DATAB-CHARG = ZWODOWNLD-CHARG.
INT_DATAB-ZMATTYPE = ZWODOWNLD-ZMATTYPE.
MODIFY INT_DATAB INDEX DATAB-CURRENT_LINE.
* aPPEND INT_DATAB.
ENDMODULE. " UPDATE_INT_DATAB INPUT