Assign Output Types
Assign the output types to represent the following conditions. These output types then result in the creation of IDocs – EDI 870.
- Change in Delivery date
- Delivery drop
- Post Goods Issue
- Order Cancellation
View the Sample Program
REPORT ZNDCOUT NO STANDARD PAGE HEADING LINE-SIZE 132. ************************************************************************ * Program : Assign the output types to represent the following * conditions. These output types then result in the creation * of IDocs - EDI 870. * - Change in Delivery date * - Delivery drop * - Post Goods Issue * - Order Cancellation * Author : Arnigs * ********************************Tables********************************** TABLES: ZNOPENORD, VBAK, VBAP, VBEP, VBFA, LIKP, * mkpf, NAST, KNVP, VBUV. ************************************************************************ *************************Selection-Screen******************************* SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001. PARAMETERS : P_KUNN2 LIKE KNVP-KUNN2 OBLIGATORY. * select-options : s_kunnr for knvp-kunnr. C:NDVK932932 PARAMETERS : P_ORDMET LIKE VBAK-BSARK. SELECTION-SCREEN END OF BLOCK B1. SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT (31) TEXT-015 FOR FIELD P_KS_OCR. PARAMETERS: P_KS_OCR LIKE TNAPR-KSCHL. SELECTION-SCREEN POSITION 47. SELECTION-SCREEN COMMENT (10) TEXT-016 FOR FIELD P_KS_OCR. PARAMETERS: TIME LIKE SY-UZEIT. SELECTION-SCREEN END OF LINE. PARAMETERS: P_KS_IO LIKE TNAPR-KSCHL, "I:NDVK932735 P_KS_R LIKE TNAPR-KSCHL, P_KS_DCH LIKE TNAPR-KSCHL, P_KS_DCR LIKE TNAPR-KSCHL, P_KS_GI LIKE TNAPR-KSCHL. SELECTION-SCREEN END OF BLOCK B2. SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-003. SELECT-OPTIONS: S_ERDAT FOR SY-DATUM, S_ERZET FOR LIKP-ERZET OBLIGATORY. SELECTION-SCREEN END OF BLOCK B3. SELECTION-SCREEN BEGIN OF BLOCK B5 WITH FRAME TITLE TEXT-005. PARAMETERS : P_DIFF TYPE I. SELECTION-SCREEN END OF BLOCK B5. SELECTION-SCREEN BEGIN OF BLOCK B6 WITH FRAME TITLE TEXT-006. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT (31) TEXT-007 FOR FIELD UP_OCR. PARAMETERS: UP_OCR AS CHECKBOX. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT (31) TEXT-008 FOR FIELD UP_REJ. PARAMETERS: UP_REJ AS CHECKBOX. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT (31) TEXT-009 FOR FIELD UP_DCH. PARAMETERS: UP_DCH AS CHECKBOX. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT (31) TEXT-010 FOR FIELD UP_DCR. PARAMETERS: UP_DCR AS CHECKBOX. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT (31) TEXT-011 FOR FIELD UP_GI. PARAMETERS: UP_GI AS CHECKBOX. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN END OF BLOCK B6. ************************************************************************ ************************Internal Tables********************************* DATA: BEGIN OF ITAB_OPEN_ORDERS OCCURS 0, VBELN LIKE VBAK-VBELN, MAHDT LIKE VBAK-MAHDT, END OF ITAB_OPEN_ORDERS. DATA : BEGIN OF TEMP_ITAB_ORDERS OCCURS 0, VBELN LIKE VBAK-VBELN, MAHDT LIKE VBAK-MAHDT, END OF TEMP_ITAB_ORDERS. DATA : BEGIN OF ITAB_REJ_ORDERS OCCURS 0, VBELN LIKE VBAK-VBELN, END OF ITAB_REJ_ORDERS. DATA : ITAB_DCH_ORDERS LIKE ITAB_REJ_ORDERS OCCURS 0 WITH HEADER LINE. DATA : ITAB_DCR_ORDERS LIKE ITAB_REJ_ORDERS OCCURS 0 WITH HEADER LINE. DATA : ITAB_GI_ORDERS LIKE ITAB_REJ_ORDERS OCCURS 0 WITH HEADER LINE. DATA : ITAB_NEW_ORDERS LIKE ITAB_REJ_ORDERS OCCURS 0 WITH HEADER LINE. *NDVK932735 begins DATA : BEGIN OF ITAB_ORDERS OCCURS 0, VBELN LIKE VBAK-VBELN, KSCHL LIKE TNAPR-KSCHL, END OF ITAB_ORDERS. DATA : TEMP_INC_ORDERS LIKE ITAB_REJ_ORDERS OCCURS 0 WITH HEADER LINE. DATA : ITAB_INC_ORDERS LIKE ITAB_REJ_ORDERS OCCURS 0 WITH HEADER LINE. * NDVK932735 ends DATA : BEGIN OF ITAB_FINAL_ORDERS OCCURS 0, VBELN LIKE VBAK-VBELN, KSCHL LIKE TNAPR-KSCHL, PSTATUS TYPE C, END OF ITAB_FINAL_ORDERS . DATA : BEGIN OF ITAB_NAST OCCURS 0, OBJKY LIKE NAST-OBJKY, VSTAT LIKE NAST-VSTAT, END OF ITAB_NAST. DATA : BEGIN OF ITAB_KNVP OCCURS 0, KUNNR LIKE KNVP-KUNNR, END OF ITAB_KNVP. * NDVK932932 Begins DATA : BEGIN OF TEMP_OPEN_ORDERS OCCURS 0, OBJKY LIKE NAST-OBJKY, END OF TEMP_OPEN_ORDERS. * NDVK932932 Ends DATA: I_TLINE LIKE TLINE OCCURS 1 WITH HEADER LINE. ************************************************************************ ***************************Variables************************************ DATA : DAT LIKE SY-DATUM, DIFF TYPE I, OBJ_NAME LIKE THEAD-TDNAME. * data : time like sy-uzeit value '003000'. DATA : DATE LIKE SY-DATUM. ************************************************************************ start-of-selection. * if s_kunnr is initial. "C:NDVK932932 PERFORM GET_SOLD-TO. * endif. "C:NDVK932932 * NDVK932932 Begins * IF UP_OCR <> SPACE. * PERFORM GET_ORDERS. "I:NDVK932735 * PERFORM GET_INC_ORDERS. "I:NDVK932735 * PERFORM GET_ITAB_NEW_ORDERS. ** perform del_inc_orders. "I:NDVK932735 * ENDIF. * NDVK932932 Ends * if up_dch <> space or up_dcr <> space. "C:NDVK932932 IF UP_DCH <> SPACE OR UP_DCR <> SPACE OR UP_OCR <> SPACE."I:NDVK932932 PERFORM GET_ITAB_OPEN_ORDERS. IF NOT ITAB_OPEN_ORDERS[] IS INITIAL. * NDVK932932 Begins IF UP_OCR <> SPACE. PERFORM GET_ORDERS. PERFORM GET_INC_ORDERS. PERFORM GET_ITAB_NEW_ORDERS. ENDIF. * NDVK932932 Ends IF UP_DCH <> SPACE. PERFORM GET_PROMISED_DDATES. PERFORM GET_ITAB_DCH_ORDERS. ENDIF. IF UP_DCR <> SPACE. PERFORM GET_ITAB_DCR_ORDERS. ENDIF. ELSE. WRITE:/ 'NO NEW DELIVERIES OR DELIVERY CHANGE TO SEND ACKNLGEMNT'. ENDIF. ENDIF. IF UP_GI <> SPACE. PERFORM GET_ITAB_GI_ORDERS. ENDIF. IF UP_REJ <> SPACE. PERFORM GET_ITAB_REJ_ORDERS. ENDIF. PERFORM GET_ITAB_FINAL_ORDERS. IF NOT ITAB_FINAL_ORDERS[] IS INITIAL. PERFORM SEND_ACK. ELSE. WRITE:/ 'NO ORDERS AVAILABLE TO SEND ACKNOWLEDGEMENT'. ENDIF. *---------------------------------------------------------------------* * FORM SEND_ACKNOWLEDGEMENT * *---------------------------------------------------------------------* * This form sends the acknowledgement to the Sold-to party * *---------------------------------------------------------------------* FORM SEND_ACK. DATA: TMP_KSCHL LIKE NAST-KSCHL. WRITE:/35 'Error Report'. SKIP. WRITE:/10 ' Orders', 35 'Message Type', 55 'Status'. SKIP. LOOP AT ITAB_FINAL_ORDERS. IF ( ITAB_FINAL_ORDERS-KSCHL NE P_KS_OCR AND "I:NDVK932735 ITAB_FINAL_ORDERS-KSCHL NE P_KS_IO ). "I:NDVK932735 SELECT OBJKY VSTAT INTO TABLE ITAB_NAST FROM NAST WHERE KAPPL = 'V1' AND OBJKY = ITAB_FINAL_ORDERS-VBELN AND KSCHL = ITAB_FINAL_ORDERS-KSCHL AND SPRAS = 'E' AND PARNR = P_KUNN2 AND PARVW = 'RE'. IF ITAB_NAST[] IS INITIAL. ITAB_FINAL_ORDERS-PSTATUS = 'E'. MODIFY ITAB_FINAL_ORDERS. ELSE. READ TABLE ITAB_NAST WITH KEY VSTAT = '0'. IF SY-SUBRC <> 0. ITAB_FINAL_ORDERS-PSTATUS = 'A'. MODIFY ITAB_FINAL_ORDERS. ENDIF. ENDIF. REFRESH ITAB_NAST. ENDIF. "I:NDVK932735 IF ITAB_FINAL_ORDERS-PSTATUS = SPACE. MOVE ITAB_FINAL_ORDERS-KSCHL TO TMP_KSCHL. EXPORT TMP_KSCHL TO MEMORY ID 'OUTPUT_TYPE_STATUS1'. SUBMIT RSNAST00 WITH S_KAPPL EQ 'V1' WITH S_OBJKY EQ ITAB_FINAL_ORDERS-VBELN WITH S_KSCHL EQ ITAB_FINAL_ORDERS-KSCHL WITH S_NACHA EQ '6' AND RETURN. ELSEIF ITAB_FINAL_ORDERS-PSTATUS = 'E'. WRITE:/10 ITAB_FINAL_ORDERS-VBELN, 35 ITAB_FINAL_ORDERS-KSCHL, 55 'ENTRY NOT AVAILABLE IN NAST'. ELSE. WRITE:/10 ITAB_FINAL_ORDERS-VBELN, 35 ITAB_FINAL_ORDERS-KSCHL, 55 'ALREADY PROCESSED'. ENDIF. ENDLOOP. ENDFORM. *&---------------------------------------------------------------------* *& Form GET_ITAB_DCR_ORDERS *&---------------------------------------------------------------------* * This form creates the list of lowes special order for which delivery * has been created within the specified time period. If the period is * not specified, this form will select the orders for which the * delivery has been created either yesterday or today. *----------------------------------------------------------------------* FORM GET_ITAB_DCR_ORDERS. IF S_ERDAT IS INITIAL. DAT = SY-DATUM - 1. SELECT A~VBELV INTO TABLE ITAB_DCR_ORDERS FROM VBFA AS A INNER JOIN LIKP AS B ON A~VBELN = B~VBELN FOR ALL ENTRIES IN ITAB_OPEN_ORDERS WHERE A~VBELV = ITAB_OPEN_ORDERS-VBELN AND A~VBTYP_N = 'J' AND ( ( B~ERDAT => DAT AND B~ERZET => S_ERZET-LOW ) AND ( B~ERDAT <= SY-DATUM AND B~ERZET <= S_ERZET-HIGH ) ). ELSE. SELECT A~VBELV INTO TABLE ITAB_DCR_ORDERS FROM VBFA AS A INNER JOIN LIKP AS B ON A~VBELN = B~VBELN FOR ALL ENTRIES IN ITAB_OPEN_ORDERS WHERE A~VBELV = ITAB_OPEN_ORDERS-VBELN AND A~VBTYP_N = 'J' AND ( ( B~ERDAT => S_ERDAT-LOW AND B~ERZET => S_ERZET-LOW ) AND ( B~ERDAT <= S_ERDAT-HIGH AND B~ERZET <= S_ERZET-HIGH ) ). ENDIF. SORT ITAB_DCR_ORDERS. DELETE ADJACENT DUPLICATES FROM ITAB_DCR_ORDERS. ENDFORM. " GET_ITAB_DCR_ORDERS *&---------------------------------------------------------------------* *& Form GET_ITAB_REJ_ORDERS *&---------------------------------------------------------------------* * This form selects orders which were rejected either yesterday or * today. It can also select order which were rejected during a * specific period if the period is entered on the selection * screen. *----------------------------------------------------------------------* FORM GET_ITAB_REJ_ORDERS. IF S_ERDAT IS INITIAL. DAT = SY-DATUM - 1. SELECT A~VBELN FROM VBAK AS A INNER JOIN VBAP AS B ON A~VBELN = B~VBELN INTO TABLE ITAB_REJ_ORDERS FOR ALL ENTRIES IN ITAB_KNVP "I:NDVK932932 * where ( a~kunnr in S_KUNNR and "C:NDVK932932 WHERE ( A~KUNNR = ITAB_KNVP-KUNNR AND "I:NDVK932932 A~BSARK = P_ORDMET AND B~ABGRU <> SPACE AND ( B~AEDAT => DAT AND B~AEDAT <= SY-DATUM ) ). ELSE. SELECT A~VBELN FROM VBAK AS A INNER JOIN VBAP AS B ON A~VBELN = B~VBELN INTO TABLE ITAB_REJ_ORDERS FOR ALL ENTRIES IN ITAB_KNVP "I:NDVK932932 * where a~kunnr in S_KUNNR and "C:NDVK932932 WHERE A~KUNNR = ITAB_KNVP-KUNNR AND "I:NDVK932932 A~BSARK = P_ORDMET AND B~ABGRU <> SPACE AND ( B~AEDAT => S_ERDAT-LOW AND B~AEDAT <= S_ERDAT-HIGH ). ENDIF. SORT ITAB_REJ_ORDERS. DELETE ADJACENT DUPLICATES FROM ITAB_REJ_ORDERS. ENDFORM. " GET_ITAB_REJ_ORDERS *&---------------------------------------------------------------------* *& Form GET_ITAB_GI_ORDERS *&---------------------------------------------------------------------* * This form selects the orders belonging to a particular sold-to * and ordering method, which have been goods issued either * yesterday or today. It can also select orders which were goods * issued in a certain period if the period is entered on * the selection screen. *----------------------------------------------------------------------* FORM GET_ITAB_GI_ORDERS. IF S_ERDAT IS INITIAL. DAT = SY-DATUM - 1. SELECT A~VBELN INTO TABLE ITAB_GI_ORDERS FROM VBAK AS A INNER JOIN VBFA AS B ON A~VBELN = B~VBELV * inner join mkpf as c on b~vbeln = c~mblnr "C:NDVK932735 FOR ALL ENTRIES IN ITAB_KNVP "I:NDVK932932 * where a~kunnr in s_kunnr and "C:NDVK932932 WHERE A~KUNNR = ITAB_KNVP-KUNNR AND "I:NDVK932932 A~BSARK = P_ORDMET AND B~VBTYP_N = 'R' AND * NDVK932735 Begins * ( ( c~cpudt => dat and c~cputm => s_erzet-low ) and * ( c~cpudt <= sy-datum and c~cputm <= s_erzet-high ) ). ( ( B~ERDAT => DAT AND B~ERZET => S_ERZET-LOW ) AND ( B~ERDAT <= SY-DATUM AND B~ERZET <= S_ERZET-HIGH ) ). * NDVK932735 Ends ELSE. SELECT A~VBELN INTO TABLE ITAB_GI_ORDERS FROM VBAK AS A INNER JOIN VBFA AS B ON A~VBELN = B~VBELV * inner join mkpf as c on b~vbeln = c~mblnr "C:NDVK932735 FOR ALL ENTRIES IN ITAB_KNVP "I:NDVK932932 * where a~kunnr in S_KUNNR and "C:NDVK932932 WHERE A~KUNNR = ITAB_KNVP-KUNNR AND "I:NDVK932932 A~BSARK = P_ORDMET AND B~VBTYP_N = 'R' AND * NDVK932735 Begins * ( ( c~cpudt => s_erdat-low and c~cputm => s_erzet-low ) and * ( c~cpudt <= s_erdat-high and c~cputm <= s_erzet-high ) ). ( ( B~ERDAT => S_ERDAT-LOW AND B~ERZET => S_ERZET-LOW ) AND ( B~ERDAT <= S_ERDAT-HIGH AND B~ERZET <= S_ERZET-HIGH ) ). * NDVK932735 Ends ENDIF. SORT ITAB_GI_ORDERS. DELETE ADJACENT DUPLICATES FROM ITAB_GI_ORDERS. ENDFORM. " GET_ITAB_GI_ORDERS *&---------------------------------------------------------------------* *& Form GET_ITAB_DCH_ORDERS *&---------------------------------------------------------------------* * This form first stores all the orders for which the difference * between the promised delivery date and the current date is less * than the number of days specified in the selection screen in an * internal table (temp_itab_orders). * Then if there is a change in the delivery dates for those orders * the orders are selected to send acknowledgement. *----------------------------------------------------------------------* FORM GET_ITAB_DCH_ORDERS. LOOP AT ITAB_OPEN_ORDERS. DIFF = ITAB_OPEN_ORDERS-MAHDT - SY-DATUM . IF DIFF >= 0 AND DIFF <= P_DIFF. TEMP_ITAB_ORDERS = ITAB_OPEN_ORDERS. APPEND TEMP_ITAB_ORDERS. ENDIF. ENDLOOP. * Check for the change in the delivery date. If this date is different * from the promised date, we need to send the acknowledgement. IF NOT TEMP_ITAB_ORDERS[] IS INITIAL. SELECT VBELN INTO TABLE ITAB_DCH_ORDERS FROM VBEP FOR ALL ENTRIES IN TEMP_ITAB_ORDERS WHERE VBELN = TEMP_ITAB_ORDERS-VBELN AND * edatu <> temp_itab_orders-mahdt. "C:NDVK933006 EDATU > TEMP_ITAB_ORDERS-MAHDT. "I:NDVK933006 SORT ITAB_DCH_ORDERS BY VBELN. DELETE ADJACENT DUPLICATES FROM ITAB_DCH_ORDERS. ENDIF. ENDFORM. " GET_ITAB_DCH_ORDERS *&---------------------------------------------------------------------* *& Form GET_ITAB_OPEN_ORDERS *&---------------------------------------------------------------------* * This Forms retrieves all the open orders for a given sold-to, * ordering method. It only selects the orders that have not been * rejected. *----------------------------------------------------------------------* FORM GET_ITAB_OPEN_ORDERS. SELECT B~VBELN INTO TABLE ITAB_OPEN_ORDERS FROM ZNOPENORD AS A INNER JOIN VBAK AS B ON A~VBELN = B~VBELN INNER JOIN VBAP AS C ON A~VBELN = C~VBELN * NDVK932932 begins FOR ALL ENTRIES IN ITAB_KNVP * where a~kunnr in s_kunnr and "I:NDVK932735 WHERE A~KUNNR = ITAB_KNVP-KUNNR AND * NDVK932932 ends B~BSARK = P_ORDMET AND C~ABGRU = SPACE. SORT ITAB_OPEN_ORDERS BY VBELN. DELETE ADJACENT DUPLICATES FROM ITAB_OPEN_ORDERS COMPARING VBELN. CLEAR ITAB_OPEN_ORDERS. ENDFORM. " GET_ITAB_OPEN_ORDERS *&---------------------------------------------------------------------* *& Form GET_ITAB_FINAL_ORDERS *&---------------------------------------------------------------------* * This form collects all the orders which were selected earlier * * into an final internal table. * *----------------------------------------------------------------------* FORM GET_ITAB_FINAL_ORDERS. LOOP AT ITAB_NEW_ORDERS. ITAB_FINAL_ORDERS-VBELN = ITAB_NEW_ORDERS-VBELN. ITAB_FINAL_ORDERS-KSCHL = p_ks_ocr. APPEND ITAB_FINAL_ORDERS. ENDLOOP. * NDVK932735 Begins LOOP AT ITAB_INC_ORDERS. ITAB_FINAL_ORDERS-VBELN = ITAB_INC_ORDERS-VBELN. ITAB_FINAL_ORDERS-KSCHL = P_KS_IO. APPEND ITAB_FINAL_ORDERS. ENDLOOP. * NDVK932735 Ends LOOP AT ITAB_DCH_ORDERS. ITAB_FINAL_ORDERS-VBELN = ITAB_DCH_ORDERS-VBELN. ITAB_FINAL_ORDERS-KSCHL = P_KS_DCH. APPEND ITAB_FINAL_ORDERS. ENDLOOP. LOOP AT ITAB_DCR_ORDERS. ITAB_FINAL_ORDERS-VBELN = ITAB_DCR_ORDERS-VBELN. ITAB_FINAL_ORDERS-KSCHL = P_KS_DCR. APPEND ITAB_FINAL_ORDERS. ENDLOOP. LOOP AT ITAB_REJ_ORDERS. ITAB_FINAL_ORDERS-VBELN = ITAB_REJ_ORDERS-VBELN. ITAB_FINAL_ORDERS-KSCHL = P_KS_R. APPEND ITAB_FINAL_ORDERS. ENDLOOP. LOOP AT ITAB_GI_ORDERS. ITAB_FINAL_ORDERS-VBELN = ITAB_GI_ORDERS-VBELN. ITAB_FINAL_ORDERS-KSCHL = P_KS_GI. APPEND ITAB_FINAL_ORDERS. ENDLOOP. SORT ITAB_FINAL_ORDERS BY VBELN. ENDFORM. " GET_ITAB_FINAL_ORDERS *&---------------------------------------------------------------------* *& Form GET_ITAB_NEW_ORDERS *&---------------------------------------------------------------------* * This section of the code is to retrieve all the new Lowe's * Special orders. It can retrieve the orders which were created in * last 30 minutes or during a specific time period. *----------------------------------------------------------------------* FORM GET_ITAB_NEW_ORDERS. * IF S_ERDAT IS INITIAL. * * TIME = SY-UZEIT - TIME. * * IF SY-UZEIT < '120000' AND TIME > '120000'. * DATE = SY-DATUM - 1. * ELSE. * DATE = SY-DATUM. * ENDIF. * * SELECT B~VBELN * INTO TABLE ITAB_NEW_ORDERS * FROM ZNOPENORD AS A * INNER JOIN VBAK AS B ON A~VBELN = B~VBELN * INNER JOIN VBAP AS C ON A~VBELN = C~VBELN * WHERE A~KUNNR IN S_KUNNR AND "NDVK932735 * B~BSARK = P_ORDMET AND * B~ERDAT => DATE AND * B~ERZET => TIME AND * C~ABGRU = SPACE. * * ELSE. * SELECT B~VBELN * INTO TABLE ITAB_NEW_ORDERS * FROM ZNOPENORD AS A * INNER JOIN VBAK AS B ON A~VBELN = B~VBELN * INNER JOIN VBAP AS C ON A~VBELN = C~VBELN * WHERE A~KUNNR IN S_KUNNR AND "NDVK932735 * B~BSARK = P_ORDMET AND * ( ( B~ERDAT => S_ERDAT-LOW AND B~ERZET => S_ERZET-LOW ) AND * ( B~ERDAT <= S_ERDAT-HIGH AND B~ERZET <= S_ERZET-HIGH ) ) AND * C~ABGRU = SPACE. * * ENDIF. * SORT ITAB_NEW_ORDERS. * * DELETE ADJACENT DUPLICATES FROM ITAB_NEW_ORDERS. LOOP AT ITAB_ORDERS WHERE KSCHL = P_KS_OCR. READ TABLE TEMP_INC_ORDERS WITH KEY VBELN = ITAB_ORDERS-VBELN BINARY SEARCH. IF SY-SUBRC <> 0. ITAB_NEW_ORDERS-VBELN = ITAB_ORDERS-VBELN. APPEND ITAB_NEW_ORDERS. ENDIF. ENDLOOP. ENDFORM. " GET_ITAB_NEW_ORDERS *&---------------------------------------------------------------------* *& Form GET_PROMISED_DDATES *&---------------------------------------------------------------------* * This form reads the Text field (Z222) 'Reuested delivery date' * of sales orders and gets the promised delivery dates. *----------------------------------------------------------------------* FORM GET_PROMISED_DDATES. LOOP AT ITAB_OPEN_ORDERS. OBJ_NAME = ITAB_OPEN_ORDERS-VBELN. CALL FUNCTION 'READ_TEXT' EXPORTING * CLIENT = SY-MANDT ID = 'Z222' LANGUAGE = 'E' NAME = OBJ_NAME OBJECT = 'VBBK' * ARCHIVE_HANDLE = 0 * IMPORTING * header = TABLES LINES = I_TLINE EXCEPTIONS ID = 1 LANGUAGE = 2 NAME = 3 NOT_FOUND = 4 OBJECT = 5 REFERENCE_CHECK = 6 WRONG_ACCESS_TO_ARCHIVE = 7 OTHERS = 8. READ TABLE I_TLINE INDEX 1. ITAB_OPEN_ORDERS-MAHDT = I_TLINE-TDLINE. MODIFY ITAB_OPEN_ORDERS. CLEAR OBJ_NAME. CLEAR I_TLINE. REFRESH I_TLINE. ENDLOOP. ENDFORM. " GET_PROMISED_DDATES *&---------------------------------------------------------------------* *& Form GET_SOLD-TO *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM GET_SOLD-TO. SELECT KUNNR INTO TABLE ITAB_KNVP FROM KNVP WHERE KUNN2 = P_KUNN2 AND PARVW = 'RE' AND VKORG = '0300'. * sort itab_knvp. "C:NDVK932735 * delete adjacent duplicates from itab_knvp. "C:NDVK932735 IF SY-SUBRC = 0. SORT ITAB_KNVP BY KUNNR. DELETE ADJACENT DUPLICATES FROM ITAB_KNVP. * NDVK932932 Begins * loop at itab_knvp. * s_kunnr-sign = 'I'. * s_kunnr-option = 'EQ'. * s_kunnr-low = itab_knvp-kunnr. * append s_kunnr. * endloop. * NDVK932932 Ends ENDIF. ENDFORM. " GET_SOLD-TO *&---------------------------------------------------------------------* *& Form GET_INC_ORDERS *&---------------------------------------------------------------------* * This form gets the incomplete orders *----------------------------------------------------------------------* FORM GET_INC_ORDERS. * NDVK932932 Begins *loop at itab_orders where kschl = p_ks_io. * temp_inc_orders-vbeln = itab_orders-vbeln. * append temp_inc_orders. * endloop. * NDVK932932 Ends SELECT VBELN * into table itab_inc_orders "C:NDVK932932 INTO TABLE TEMP_INC_ORDERS "I:NDVK932932 FROM VBUV * for all entries in temp_inc_orders "C:NDVK932932 FOR ALL ENTRIES IN ITAB_ORDERS "I:NDVK932932 * where vbeln = temp_inc_orders-vbeln. "C:NDVK932932 WHERE VBELN = ITAB_ORDERS-VBELN. "I:NDVK932932 * NDVK932932 Begins SORT TEMP_INC_ORDERS. LOOP AT ITAB_ORDERS WHERE KSCHL = P_KS_IO. READ TABLE TEMP_INC_ORDERS WITH KEY VBELN = ITAB_ORDERS-VBELN BINARY SEARCH. IF SY-SUBRC = 0. ITAB_INC_ORDERS-VBELN = ITAB_ORDERS-VBELN. APPEND ITAB_INC_ORDERS. ENDIF. ENDLOOP. * NDVK932932 Begins ENDFORM. " GET_INC_ORDERS *&---------------------------------------------------------------------* *& Form DEL_INC_ORDERS *&---------------------------------------------------------------------* * Deletes incomplete orders from the new orders internal table *----------------------------------------------------------------------* FORM DEL_INC_ORDERS. LOOP AT ITAB_INC_ORDERS. READ TABLE ITAB_NEW_ORDERS WITH KEY VBELN = ITAB_INC_ORDERS-VBELN BINARY SEARCH. IF SY-SUBRC = 0. DELETE ITAB_NEW_ORDERS WHERE VBELN = ITAB_INC_ORDERS-VBELN. ENDIF. ENDLOOP. ENDFORM. " DEL_INC_ORDERS *&---------------------------------------------------------------------* *& Form GET_ORDERS *&---------------------------------------------------------------------* * This form gets all the orders from NAST entries for which we * need to send either the order creation acknowledgement or * incomplete order acknowledgement *----------------------------------------------------------------------* FORM GET_ORDERS. * Open order internal table cannot be used in the select statement * below because of type mismatch between nast-objky and vbak-vbeln. LOOP AT ITAB_OPEN_ORDERS. TEMP_OPEN_ORDERS-OBJKY = ITAB_OPEN_ORDERS-VBELN. "I:NDVK932932 APPEND TEMP_OPEN_ORDERS. "I:NDVK932932 ENDLOOP. SELECT OBJKY KSCHL INTO TABLE ITAB_ORDERS FROM NAST FOR ALL ENTRIES IN TEMP_OPEN_ORDERS "I:NDVK932932 WHERE KAPPL = 'V1' AND OBJKY = TEMP_OPEN_ORDERS-OBJKY AND "I:NDVK932932 KSCHL IN (P_KS_OCR, P_KS_IO) AND SPRAS = 'E' AND PARNR = P_KUNN2 AND PARVW = 'RE' AND VSTAT = '0'. SORT ITAB_ORDERS. ENDFORM. " GET_ORDERS
If you like this post, you may as well like these too:
- ASSIGN: ABAP Keyword a day ASSIGN Variants:1. ASSIGN f TO .2. ASSIGN (f) TO .3. ASSIGN TABLE FIELD (f) TO .4. ASSIGN LOCAL COPY OF MAIN TABLE FIELD (f) TO .5. ASSIGN COMPONENT idx OF...
- How to Assign Materials to Vendor Information Record links materials to the vendor, thus facilitating the process of selecting quotations. Use Transaction Code ME11 or Logistics –> Material Management –> Purchasing and then Master Data –>...
















Leave a Reply