PROGRM97

Embed Size (px)

DESCRIPTION

PROGRM97

Citation preview

  • 7/17/2019 PROGRM97

    1/52

    *&---------------------------------------------------------------------**& Program Name : ZROTC0097_01 **& Author : Prashanth Raghava Dasyam **& Creation Date : June-10-2004 **& Program Type : Report (R) **& SAP Release : 4.7 **& Description : Active PHO Detail Report **& Transport No : DR1K904159 **& Transaction : ZOQAPHO0097 **&---------------------------------------------------------------------**& Revision Log **& Date : 25/06/2004 **& Author : Prashanth Raghava Dasyam **& Description : Changed the layout of the Report from List **& display to ALV grid **& **&---------------------------------------------------------------------**&---------------------------------------------------------------------**& Revision Log **& Date : 07/07/2004 **& Author : Satya Ravi **& Description : 1.Added the GUI status to make sure that excel **& download works properly **& 2. Business and Product number added to seletion*

    *& screen. **& 3. added reserved quantity to output from RESB **& REVISIONFLAG :CHG02 **&---------------------------------------------------------------------**&---------------------------------------------------------------------**& Revision Log **& Date : 07/27/2004 **& Author : Satya Ravi **& Description : The report is modified to address the issues **& raised in the CRD such as **& 1 Able search the PHO holds on material number ** batch number, and serial number though the **& hold does not correspond to the selection *

    *& made in the selection screen. **& 2.Some of the selections on selections were **& deleted.( userid in detail, initiator in header**& transaction time in Messages) **& 3.Diffrent stock columns are removed and now only**& total stock is present in the columns and the **& logic to calculate the total stock is changed **& REVISIONFLAG :CHG03 **&---------------------------------------------------------------------*************satya***********COMMENT****CHG02 START*****************REPORT ZROTC0097_01 NO STANDARD PAGE HEADING* MESSAGE-ID ZO* LINE-COUNT 65

    * LINE-SIZE 325.************satya***********COMMENT****CHG02 END****************INCLUDE RMMMBTOP. "CHG03

    *&---------------------------------------------------------------------**& TABLES:*&---------------------------------------------------------------------*TABLES: ZOQAPHO_HDR, "PHO header ZOQAPHO_DTL, "PHO Detail

  • 7/17/2019 PROGRM97

    2/52

    ZOQAPHO_MSGS, "PHO messages ZOQAPHO_STATUS, "PHO status table* MARA, "General Material Data"CHG03 AUSP, "Characteristic Values USR01. "User master record (runtime data)

    * Begin of change on 25/06/2004

    *--------------------------------------------------------------------** Type pool declaration **--------------------------------------------------------------------*TYPE-POOLS: SLIS. "For ALV ReportINCLUDE RVREUSE_GLOBAL_DATA. "satya ravi CHG02* End of change on 25/06/2004

    *&---------------------------------------------------------------------**& Declaration of types*&---------------------------------------------------------------------*TYPES:

    * Type declaration for internal table containing PHO header data* retrieved from custom table ZOQAPHO_HDR (PHO header). BEGIN OF TY_PHO_HEADER, DIVISION TYPE SPART, "Division

    PHONBR TYPE Z_OQAPHONBR, "Business Hold Number BU TYPE Z_OQABU, "Business Unit REVISION TYPE Z_OQAREV, "Business Hold Revision HOLDCODE TYPE Z_OQAHOLDCODE, "Hold Code INITIATOR TYPE Z_OQAINIT, "Initiator USERID TYPE UNAME, "Initiator MDT ID HOLDTITLE TYPE Z_OQAHOLDTITLE, "Hold Title/Reason END OF TY_PHO_HEADER,

    * Type declaration for internal table containing PHO detail data* retrieved from custom table ZOQAPHO_DTL (PHO Detail). BEGIN OF TY_PHO_DETAIL, DIVISION TYPE SPART, "Division

    PHONBR TYPE Z_OQAPHONBR, "Business Hold Number ITEM TYPE Z_OQAITEM, "Item number SERIAL_NBR TYPE Z_OQASERIAL, "Serial Characteristic number STATUS TYPE Z_OQASTATUS, "PHO status REV_HELD TYPE Z_OQAREVHELD, "Revision held REV_LAST TYPE Z_OQAREVLAST, "Revision last ERDAT TYPE ERDAT, "Initial Hold Date ERZET TYPE ERZET, "Entry time ERNAM TYPE ERNAM, "User ID* Begin of change on 24/06/2004 AEDAT TYPE AEDAT, "Date of Last Change AEZET TYPE AEZET, "Time last change was made* End of change on 24/06/2004

    END OF TY_PHO_DETAIL,

    * Type declaration for internal table containing PHO messages* retrieved from custom table ZOQAPHO_MSGS (PHO messages). BEGIN OF TY_PHO_MESSAGES, DIVISION TYPE SPART, "Division PHONBR TYPE Z_OQAPHONBR, "Business Hold Number ITEM TYPE Z_OQAITEM, "Item number

    * Begin of change on 24/06/2004

  • 7/17/2019 PROGRM97

    3/52

    ERDAT TYPE ERDAT, "Date on which the record was created ERZET TYPE ERZET, "Entry time* End of change on 24/06/2004 MATNR TYPE MATNR, "Material Number CHARG TYPE CHARG_D, "Batch Number ERDAT_1ST TYPE ERDAT, "Transaction Date ERZET_1ST TYPE ERZET, "Transaction Time END OF TY_PHO_MESSAGES,

    * Type declaration for internal table containing all PHO data. BEGIN OF TY_PHO_FINAL, DIVISION TYPE SPART, "Division PHONBR TYPE Z_OQAPHONBR, "Business Hold Number BU TYPE Z_OQABU, "Business Unit REVISION TYPE Z_OQAREV, "Business Hold Revision HOLDCODE TYPE Z_OQAHOLDCODE, "Hold Code INITIATOR TYPE Z_OQAINIT, "Initiator USERID TYPE UNAME, "Initiator MDT ID HOLDTITLE TYPE Z_OQAHOLDTITLE, "Hold Title/Reason SERIAL_NBR TYPE Z_OQASERIAL, "Serial Characteristic number STATUS TYPE Z_OQASTATUS, "PHO status REV_HELD TYPE Z_OQAREVHELD, "Revision held REV_LAST TYPE Z_OQAREVLAST, "Revision last ERDAT TYPE ERDAT, "Initial Hold Date

    ERNAM TYPE ERNAM, "User ID MATNR TYPE MATNR, "Material Number CHARG TYPE CHARG_D, "Batch Number ERDAT_1ST TYPE ERDAT, "Transaction Date ERZET_1ST TYPE ERZET, "Transaction Time PRODNUMBER TYPE ATWRT, "product number CLABS TYPE LABST, "Valuated stock with unrestricted use* "changed on 30/06/2004 CEINM TYPE EINME, "Total Stock of All Restricted Batches* "changed on 30/06/2004 BDMNG TYPE BDMNG, END OF TY_PHO_FINAL.

    * Type declaration for internal table contains information from* Structure AUSP(Characteristic Values)

    TYPES:BEGIN OF TY_MARA. INCLUDE STRUCTURE AUSP. "Characteristic ValuesTYPES:END OF TY_MARA.

    * Begin of change on 30/06/2004

    TYPES: BEGIN OF TY_QNTY_DETAILS, MATNR TYPE MATNR, "Material Number CHARG TYPE CHARG_D, "Batch Number WERKS TYPE WERKS_D, "Plant

    LGORT TYPE LGORT_D, "storage location CLABS TYPE LABST, "Valuated stock with unrestricted use CEINM TYPE EINME, "Total Stock of All Restricted Batches END OF TY_QNTY_DETAILS.*****CHG02 BEGINTYPES: BEGIN OF TY_RESB_DETAILS, MATNR TYPE MATNR, "Material Number CHARG TYPE CHARG_D, "Batch Number WERKS TYPE WERKS_D, "Plant LGORT TYPE LGORT_D, "storage location

  • 7/17/2019 PROGRM97

    4/52

    BDMNG TYPE BDMNG, "Total Stock of All Restricted Batches END OF TY_RESB_DETAILS.******CHG02 ENDTYPES: BEGIN OF TY_QNTY_FINAL, MATNR TYPE MATNR, "Material Number CHARG TYPE CHARG_D, "Batch Number CLABS TYPE LABST, "Valuated stock with unrestricted use CEINM TYPE EINME, "Total Stock of All Restricted Batches BDMNG TYPE BDMNG, " Total reserved stock END OF TY_QNTY_FINAL.*********CHG02 BEGINTYPES: BEGIN OF TY_RESB_FINAL, MATNR TYPE MATNR, "Material Number CHARG TYPE CHARG_D, "Batch Number BDMNG TYPE BDMNG, " Total reserved stock END OF TY_RESB_FINAL.*******CHG02 END************satya***********insert****CHG03 START****************TYPES: BEGIN OF TY_MCH1, MATNR TYPE MATNR, "Material Number CHARG TYPE CHARG_D, "Batch Number SERNR TYPE ZOQAPHO_DTL-SERIAL_NBR, " SERIAL NUMBER END OF TY_MCH1.************satya***********insert****CHG03 END****************

    * End of change on 30/06/2004

    *&---------------------------------------------------------------------**& Declaration of CONSTANTS*&---------------------------------------------------------------------*CONSTANTS: C_MAFID TYPE KLMAF VALUE 'O', "Const 'O' C_CLASSTY TYPE KLASSENART VALUE '001', "Const '001' C_ONE(1) TYPE C VALUE '1', "Constant 1.* C_PRONUMBER(18) TYPE C VALUE 'MDT_MATERIAL_UPN', "'MDT_MATERIAL_UPN'. C_PRONUMBER(18) TYPE C VALUE 'PRODUCT_NUMBER', "'MDT_MATERIAL_UPN'. "Product No

    * Begin of change on 25/06/2004

    C_DIVISION TYPE SLIS_FIELDNAME VALUE 'DIVISION', "divisonC_PHONBR TYPE SLIS_FIELDNAME VALUE 'PHONBR', "Business Hold NumberC_BU TYPE SLIS_FIELDNAME VALUE 'BU', "Business UnitC_REVISION TYPE SLIS_FIELDNAME VALUE 'REVISION', "Business Hold RevisionC_HOLDCODE TYPE SLIS_FIELDNAME VALUE 'HOLDCODE', "Hold CodeC_INITIATOR TYPE SLIS_FIELDNAME VALUE 'INITIATOR',

    "InitiatorC_USERID TYPE SLIS_FIELDNAME VALUE 'USERID', "Initiator MDT IDC_HOLDTITLE TYPE SLIS_FIELDNAME VALUE 'HOLDTITLE', "Hold Title/ReasonC_SERIAL_NBR TYPE SLIS_FIELDNAME VALUE 'SERIAL_NBR', "Serial Characteristic numberC_STATUS TYPE SLIS_FIELDNAME VALUE 'STATUS', "PHO statusC_REV_HELD TYPE SLIS_FIELDNAME VALUE 'REV_HELD',

  • 7/17/2019 PROGRM97

    5/52

    "Revision heldC_REV_LAST TYPE SLIS_FIELDNAME VALUE 'REV_LAST', "Revision lastC_ERDAT TYPE SLIS_FIELDNAME VALUE 'ERDAT', "Initial Hold DateC_ERNAM TYPE SLIS_FIELDNAME VALUE 'ERNAM', "User IDC_MATNR TYPE SLIS_FIELDNAME VALUE 'MATNR', "Material NumberC_CHARG TYPE SLIS_FIELDNAME VALUE 'CHARG', "Batch NumberC_ERDAT_1ST TYPE SLIS_FIELDNAME VALUE 'ERDAT_1ST', "Transaction DateC_ERZET_1ST TYPE SLIS_FIELDNAME VALUE 'ERZET_1ST', "Transaction TimeC_PRODNUMBER TYPE SLIS_FIELDNAME VALUE 'PRODNUMBER', "product numberC_TABNAME TYPE SLIS_TABNAME VALUE 'T_PHO_FINAL', " Field catalog tableC_CHECKED(1) TYPE C VALUE 'X', " Flag On

    C_SPACE(1) TYPE C VALUE ' ', " space* End of change on 25/06/2004

    * Begin of change on 30/06/2004C_CLABS TYPE SLIS_FIELDNAME VALUE 'CLABS', "changed on 30/06/2004C_CEINM TYPE SLIS_FIELDNAME VALUE 'CEINM',"changed on 30/06/2004C_BDMNG TYPE SLIS_FIELDNAME VALUE 'BDMNG'.* End of change on 30/06/2004*&---------------------------------------------------------------------**& Decalration of INTERNAL TABLES*&---------------------------------------------------------------------*

    DATA :

    * Internal table for containing PHO header data retrieved from custom* table ZOQAPHO_HDR (PHO header). T_PHO_HEADER TYPE STANDARD TABLE OF TY_PHO_HEADER INITIAL SIZE 0,

    * Internal table for containing PHO Detail data retrieved from custom* table ZOQAPHO_DTL (PHO Detail). T_PHO_DETAIL TYPE STANDARD TABLE OF TY_PHO_DETAIL INITIAL SIZE 0,

    * Internal table for containing PHO Detail data retrieved from custom* table ZOQAPHO_DTL (PHO Detail). T_PHO_MESSAGES_TEMP TYPE STANDARD TABLE OF TY_PHO_MESSAGES INITIAL SIZE 0,

    * Internal table for containing PHO messages retrieved from custom* table ZOQAPHO_MSGS (PHO messages). T_PHO_MESSAGES TYPE STANDARD TABLE OF TY_PHO_MESSAGES INITIAL SIZE 0,

    * Internal table for containing the final data T_PHO_FINAL TYPE STANDARD TABLE OF TY_PHO_FINAL INITIAL SIZE 0,

    * Declaration of internal table contains information for* Product number T_MARA TYPE STANDARD TABLE OF TY_MARA INITIAL SIZE 0,

  • 7/17/2019 PROGRM97

    6/52

    * Declaration of internal table contains information for* product number T_MARA_TEMP TYPE STANDARD TABLE OF TY_MARA INITIAL SIZE 0,

    * Begin of change on 25/06/2004

    * Internal Table for the ALV Report Field Catalog T_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, "field catalog

    * Internal Table for the ALV Report Event T_EVENT TYPE SLIS_T_EVENT, "for event handling

    * Internal Table for the ALV Header for Medtronic T_HEADER TYPE SLIS_T_LISTHEADER, "Report Header table

    * End of change on 25/06/2004

    * Begin of change on 30/06/2004* internal table for quantity details T_QNTY_DETAILS TYPE STANDARD TABLE OF TY_QNTY_DETAILS INITIAL SIZE 0, " for quantity details

    * internal table for quantity details

    T_QNTY_FINAL TYPE STANDARD TABLE OF TY_QNTY_FINAL INITIAL SIZE 0, " for quantity details* end of change on 30/06/2004********CHG02 BEGIN T_RESB_DETAILS TYPE STANDARD TABLE OF TY_RESB_DETAILS INITIAL SIZE 0, " for RESB quantity details T_RESB_FINAL TYPE STANDARD TABLE OF TY_RESB_FINAL INITIAL SIZE 0. " for quantity details*******CHG02 END************satya***********insert****CHG03 START****************DATA: T_ZOQAPHO_STATUS LIKE ZOQAPHO_STATUS OCCURS 0 WITH HEADER LINE.DATA: FT_ZOQAPHO_HDRH TYPE ZOQAPHO_HDRH OCCURS 0 WITH HEADER LINE, FT_ZOQAPHO_DTLH TYPE ZOQAPHO_DTLH OCCURS 0 WITH HEADER LINE,

    FT_ZOQAPHO_MSGS TYPE ZOQAPHO_MSGS OCCURS 0 WITH HEADER LINE.DATA:T_MCH1_TAB TYPE TY_MCH1 OCCURS 0 WITH HEADER LINE.************satya***********INSERT****CHG03 END***************************satya***********insert****CHG02 START****************DATA: W_CALLBACK_PF_STATUS_SET TYPE SLIS_FORMNAME VALUE 'F_PF_STATUS_SET'.DATA: W_CALLBACK_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'F_USER_COMMAND'.************satya***********insert***CHG02*end*********************&---------------------------------------------------------------------**& Decalration of INTERNAL TABLE WORK AREAS*&---------------------------------------------------------------------*DATA:

    * Work area for internal table t_pho_header. W_PHO_HEADER TYPE TY_PHO_HEADER,

    * Work area for internal table t_pho_detail. W_PHO_DETAIL TYPE TY_PHO_DETAIL,

    * Work area for internal table t_pho_detail. W_PHO_MESSAGES_TEMP TYPE TY_PHO_MESSAGES,

    * Work area for internal table t_pho_messages.

  • 7/17/2019 PROGRM97

    7/52

    W_PHO_MESSAGES TYPE TY_PHO_MESSAGES,

    * Work area declaration for internal table that contains*information for product number W_MARA TYPE TY_MARA,

    * Work area declaration for internal table that contains* information for product number W_MARA_TEMP TYPE TY_MARA,

    * Work area for internal table t_pho_messages. W_PHO_FINAL TYPE TY_PHO_FINAL,

    * Begin of change on 25/06/2004

    * Work Area for the ALV Report Layout W_LAYOUT TYPE SLIS_LAYOUT_ALV, "work area for layout

    * Work Area for the Internal Table for the ALV Report Field Catalog W_FIELDCAT TYPE SLIS_FIELDCAT_ALV, "work area for Field catalog

    * Work Area for the Internal Table for the ALV Report Event W_EVENT TYPE SLIS_ALV_EVENT, "work area for Event

    * End of change on 25/06/2004

    * Begin of change on 30/06/2004* work area for quantity details W_QNTY_DETAILS TYPE TY_QNTY_DETAILS, "for quantity details** work area for reservation quantity details W_RESB_DETAILS TYPE TY_RESB_DETAILS, "for quantity details W_RESB_FINAL TYPE TY_RESB_FINAL, "for RESB quantity final* work area for quantity details W_QNTY_FINAL TYPE TY_QNTY_FINAL. "for quantity final

    * end of change on 30/06/2004DATA:W_SY_TITLE LIKE SY-TITLE. "satya ravi

    DATA: W_ERZET LIKE ZOQAPHO_DTLH-ERZET. "CHG03DATA:W_MCH1 TYPE TY_MCH1. "CHG03*&---------------------------------------------------------------------**& Decalration of GLOBAL VARIABLES*&---------------------------------------------------------------------*DATA: G_MATNR TYPE OBJNUM, "Key of object to be classified G_PRONUM TYPE ATINN. "Internal characteristicDATA:G_STRING(4) TYPE C. "CHG03********SATYA****INSERT*********BEGIN********************CHG03**********&---------------------------------------------------------------------**& Decalration of RANGES*&---------------------------------------------------------------------*

    RANGES: R_STATUS_H FOR ZOQAPHO_STATUS-STATUS, R_STATUS_R FOR ZOQAPHO_STATUS-STATUS, R_STATUS_C FOR ZOQAPHO_STATUS-STATUS, R_STATUS_1 FOR ZOQAPHO_STATUS-STATUS, R_STATUS_9 FOR ZOQAPHO_STATUS-STATUS.********SATYA****INSERT*********END********************CHG03*********

    *&---------------------------------------------------------------------*

  • 7/17/2019 PROGRM97

    8/52

    *& SELECTION SCREEN:*&---------------------------------------------------------------------*

    *&---------------------------------------------------------------------**& Select-options:*&---------------------------------------------------------------------**********************SATYA*****INSERT***BEGIN******CHG03***************SELECTION-SCREEN BEGIN OF BLOCK B_NOTE WITH FRAME TITLE TEXT-004.SELECTION-SCREEN BEGIN OF LINE.

    SELECTION-SCREEN COMMENT 10(79) TEXT-005.SELECTION-SCREEN END OF LINE.SELECTION-SCREEN BEGIN OF LINE.

    SELECTION-SCREEN COMMENT 10(79) TEXT-006.SELECTION-SCREEN END OF LINE.

    SELECTION-SCREEN END OF BLOCK B_NOTE.*********************SATYA*****INSERT***END******CHG03**************** For PHO Header data selection criteria.SELECTION-SCREEN BEGIN OF BLOCK B_PHO_HEADER WITH FRAME TITLE TEXT-001.

    SELECT-OPTIONS: S_BU FOR ZOQAPHO_HDR-BU, "Business "CHG02 S_DVSN FOR ZOQAPHO_HDR-DIVISION, "Division S_PHONBR FOR ZOQAPHO_HDR-PHONBR, "Business Hold Number S_REVISN FOR ZOQAPHO_HDR-REVISION, "Business Hold Revision S_HTITLE FOR ZOQAPHO_HDR-HOLDTITLE, "Hold Title/Reason* S_INTUSR FOR ZOQAPHO_HDR-INITIATOR, "Initiator "CHG03 COMMENT S_INTMDT FOR ZOQAPHO_HDR-USERID, "Initiator MDT S_HDCODE FOR ZOQAPHO_HDR-HOLDCODE. "Hold CodeSELECTION-SCREEN END OF BLOCK B_PHO_HEADER.

    * For PHO Detail data selection criteria.SELECTION-SCREEN BEGIN OF BLOCK B_PHO_DETAIL

    WITH FRAME TITLE TEXT-002.SELECT-OPTIONS: S_SRLNBR FOR ZOQAPHO_DTL-SERIAL_NBR, "Serial Number S_STATUS FOR ZOQAPHO_DTL-STATUS, "Status S_HLDATE FOR ZOQAPHO_DTL-ERDAT. "Initial Hold Date* S_USRID FOR ZOQAPHO_DTL-ERNAM. "User ID"CHG03 COMMENTSELECTION-SCREEN END OF BLOCK B_PHO_DETAIL.

    * For PHO messages selection criteria.SELECTION-SCREEN BEGIN OF BLOCK B_PHO_MESSAGES WITH FRAME TITLE TEXT-003.SELECT-OPTIONS: S_MATNR FOR ZOQAPHO_MSGS-MATNR, "Material Number

    S_CHARG FOR ZOQAPHO_MSGS-CHARG, "Batch Number S_PRODNR FOR AUSP-ATWRT, "Product number CHG02 S_TRDATE FOR ZOQAPHO_MSGS-ERDAT_1ST. "Transaction Date* S_TRTIME FOR ZOQAPHO_MSGS-ERZET_1ST. "Transaction Time"CHG03 COMMSELECTION-SCREEN END OF BLOCK B_PHO_MESSAGES.

    *&--------------------------------------------------------------------** INITIALIZATION EVENT:*&--------------------------------------------------------------------*

  • 7/17/2019 PROGRM97

    9/52

    INITIALIZATION.* Initialize and clear all type of data variable used in program. PERFORM SUB_INITIALIZE.

    *&--------------------------------------------------------------------* AT SELECTION SCREEN EVENT:*&--------------------------------------------------------------------AT SELECTION-SCREEN.* Stop further processing if user has not restricted the selection. PERFORM SUB_RESTRICT_SELECTION.

    * Validate the selection screen fields. PERFORM SUB_VALIDATE.

    * Begin of change on 25/06/2004*&------------------------------------------------------------------**& TOP OF PAGE EVENT:*&------------------------------------------------------------------**TOP-OF-PAGE.

    * Write Header of the report.* PERFORM sub_report_header.

    * End of change on 25/06/2004

    *&--------------------------------------------------------------------* START-OF-SELECTION*&--------------------------------------------------------------------

    START-OF-SELECTION.* Retrive PHO header data from custom table ZOQAPHO_HDR (PHO Header)* satisfying the selection criteria entered by the user. PERFORM SUB_RETRIVE_PHO_HEADER_DATA.

    * Retrive PHO Detail data from custom table ZOQAPHO_DTL (PHO Detail)* satisfying the selection criteria entered by the user. PERFORM SUB_RETRIVE_PHO_DETAIL_DATA.

    * Retrive PHO messages from custom table ZOQAPHO_MSGS (PHO messages)* satisfying the selection criteria entered by the user. PERFORM SUB_RETRIVE_PHO_MESSAGES.*************SATYA *********INSERT *****BEGIN****CHG03*********** here the data gathered from exclusive selcetions is merged into main* stream data that is fetched from PHO header path PERFORM SUB_MERGE_DATA.*************SATYA *********INSERT *****BEGIN****CHG03*********** Retrieve the feature(ATINN) Product number from function module PERFORM SUB_PRODUCT_NUMBER.

    * get the product number and store in an internal table

    PERFORM SUB_GET_PRODNUMBER1.

    * Begin of change on 30/06/2004* get the unrestricted and restricted quantity details from MCHB (Batch* Stocks) table and store in internal table PERFORM SUB_GETQUANTITY.* End of change on 30/06/2004

    *&--------------------------------------------------------------------* END-OF-SELECTION

  • 7/17/2019 PROGRM97

    10/52

    *&--------------------------------------------------------------------

    END-OF-SELECTION.*integrate the data retrived from PHO header, detail and messages into*one internal table PERFORM SUB_INTEGRATE_DATA.

    IF NOT T_PHO_FINAL[] IS INITIAL.

    *display the final report in required format PERFORM SUB_DISPLAY_REPORT.

    ELSE. MESSAGE i213(ZO). "No record exists for given selection criteria LEAVE LIST-PROCESSING. ENDIF.

    *&---------------------------------------------------------------------**& Form sub_initialize*&---------------------------------------------------------------------** This subroutine initializes all the global variables, work area* and internal tables.*----------------------------------------------------------------------** PARAMETERS: NONE

    *----------------------------------------------------------------------*FORM SUB_INITIALIZE .

    * Refresh all internal tables REFRESH: T_PHO_HEADER, T_PHO_DETAIL, T_PHO_MESSAGES, T_PHO_FINAL, T_FIELDCAT, "changed on 25/06/2004 T_EVENT, "changed on 25/06/2004 T_HEADER, "changed on 25/06/2004 T_QNTY_DETAILS, "changed on 30/06/2004

    T_QNTY_FINAL. "changed on 30/06/2004

    * Clear all work areas CLEAR: W_PHO_HEADER, W_PHO_DETAIL, W_PHO_MESSAGES, W_PHO_FINAL, W_FIELDCAT, "changed on 25/06/2004 W_EVENT, "changed on 25/06/2004 W_LAYOUT, "changed on 25/06/2004 W_QNTY_DETAILS, "changed on 30/06/2004

    W_QNTY_FINAL. "changed on 30/06/2004

    * Clear all global variables CLEAR: G_MATNR, G_PRONUM.

    ENDFORM. " sub_initialize

    *&---------------------------------------------------------------------*

  • 7/17/2019 PROGRM97

    11/52

    *& Form sub_restrict_selection*&---------------------------------------------------------------------** This routine will stop further processing if user has not made* even a single entry at selection screen to restrict the* selection*----------------------------------------------------------------------** PARAMETERS: NONE*----------------------------------------------------------------------*FORM SUB_RESTRICT_SELECTION .************satya***********COMMENT*************begin***CHG03*********** IF s_dvsn IS INITIAL AND s_phonbr IS INITIAL AND* s_revisn IS INITIAL AND s_htitle IS INITIAL AND* s_intusr IS INITIAL AND s_intmdt IS INITIAL AND* s_hdcode IS INITIAL AND s_srlnbr IS INITIAL AND* s_status IS INITIAL AND s_hldate IS INITIAL AND* s_usrid IS INITIAL AND s_matnr IS INITIAL AND* s_charg IS INITIAL AND s_trdate IS INITIAL AND* s_trtime IS INITIAL .** MESSAGE e184.* ENDIF.************satya***********COMMENT*************END***CHG03**********************satya***********insert***************begin***CHG03**********

    IF S_PHONBR IS INITIAL AND S_DVSN IS INITIAL AND S_REVISN IS INITIAL AND S_HTITLE IS INITIAL AND S_INTMDT IS INITIAL AND S_HDCODE IS INITIAL AND S_SRLNBR IS INITIAL AND S_MATNR IS INITIAL AND S_CHARG IS INITIAL. MESSAGE I184(ZO). LEAVE LIST-PROCESSING.

    ENDIF.

    CLEAR G_STRING. IF NOT S_MATNR IS INITIAL. CONCATENATE G_STRING 'M' INTO G_STRING.

    ENDIF. IF NOT S_CHARG IS INITIAL. CONCATENATE G_STRING 'L' INTO G_STRING. ENDIF. IF NOT S_SRLNBR IS INITIAL. CONCATENATE G_STRING 'S' INTO G_STRING. ENDIF.************satya***********insert***************END***CHG03**********ENDFORM. " sub_restrict_selection

    *&---------------------------------------------------------------------**& Form sub_validate_division*&---------------------------------------------------------------------*

    * this routine validates division using check table TSPA* (Organizational Unit: Sales Divisions).*----------------------------------------------------------------------** PARAMETERS: NONE*----------------------------------------------------------------------*FORM SUB_VALIDATE.

    DATA: L_DIVISION TYPE SPART, "Division L_CHARG TYPE CHARG_D. "Batch

  • 7/17/2019 PROGRM97

    12/52

    * Validate division (DIVISION) using check table TSPA(Organizational* Unit: Sales Divisions). IF NOT S_DVSN IS INITIAL. SELECT SINGLE SPART "Division FROM TSPA "Sales Divisions table INTO L_DIVISION WHERE SPART IN S_DVSN.

    IF SY-SUBRC NE 0. MESSAGE I185(ZO). LEAVE LIST-PROCESSING. ENDIF. ENDIF.

    * validate hold code IF NOT S_HDCODE IS INITIAL. SELECT HOLDCODE UP TO 1 ROWS "holdcode FROM ZOQAPHO_HDR INTO ZOQAPHO_HDR-HOLDCODE WHERE HOLDCODE IN S_HDCODE.

    ENDSELECT.

    *Give an error message for incorrect value entered IF SY-SUBRC NE 0. MESSAGE I190(ZO). LEAVE LIST-PROCESSING.

    ENDIF. ENDIF.************satya***********insert***************begin***CHG03*********** validate Serial Number

    * IF NOT S_SRLNBR IS INITIAL.* SELECT SERIAL_NBR UP TO 1 ROWS "Serail number* FROM ZOQAPHO_DTL

    * INTO ZOQAPHO_DTL-SERIAL_NBR* WHERE SERIAL_NBR IN S_SRLNBR.* ENDSELECT.***Give an error message for incorrect value entered* IF SY-SUBRC NE 0.* MESSAGE E189.* ENDIF.** ENDIF.************satya***********insert***************END*****CHG03*********** validate Log Status

    IF NOT S_STATUS IS INITIAL. SELECT SINGLE STATUS "status INTO ZOQAPHO_STATUS-STATUS FROM ZOQAPHO_STATUS WHERE STATUS IN S_STATUS.

    * Display and error message for in correct log status IF SY-SUBRC NE 0. MESSAGE I188(ZO). LEAVE LIST-PROCESSING.

  • 7/17/2019 PROGRM97

    13/52

    ENDIF. ENDIF.

    ************satya***********insert***************begin***CHG03************ validate User-ID.* IF NOT S_USRID IS INITIAL.** SELECT SINGLE BNAME "User name* FROM USR01* INTO USR01-BNAME* WHERE BNAME IN S_USRID.***Give an error message for incorrect value entered* IF SY-SUBRC NE 0.* MESSAGE E191.* ENDIF.* ENDIF.************satya***********insert***************END***CHG03*********** Validate Material Number

    IF NOT S_MATNR IS INITIAL. SELECT SINGLE MATNR "Material number INTO MARA-MATNR

    FROM MARA WHERE MATNR IN S_MATNR.

    * Display an error message if in correct error message is entered IF SY-SUBRC NE 0. MESSAGE I186(ZO). LEAVE LIST-PROCESSING.

    ENDIF. ENDIF.

    * Validate Batch Number IF NOT S_CHARG IS INITIAL.

    SELECT SINGLE CHARG INTO L_CHARG "Batch number FROM MCH1 WHERE CHARG IN S_CHARG.

    **Give an error message for incorrect value entered IF SY-SUBRC NE 0. MESSAGE I187(ZO). LEAVE LIST-PROCESSING.

    ENDIF. ENDIF.

    ENDFORM. " sub_validate

    *&---------------------------------------------------------------------**& Form sub_retrive_pho_header_data*&---------------------------------------------------------------------** This routine retrieves PHO header data from custom table* ZOQAPHO_HDR (PHO Header) satisfying the selection criteria* entered by the user at selection screen.*----------------------------------------------------------------------** PARAMETERS: NONE*----------------------------------------------------------------------*

  • 7/17/2019 PROGRM97

    14/52

    FORM SUB_RETRIVE_PHO_HEADER_DATA .

    * Retrive PHO Header data from ZOQAPHO_HDR (PHO Header) into internal* table t_pho_header satisfying the selection criteria for header data* entered at selection screen.************satya***********insert***************begin***CHG03********** IF S_DVSN IS INITIAL AND S_PHONBR IS INITIAL AND S_REVISN IS INITIAL AND S_HDCODE IS INITIAL AND S_INTMDT IS INITIAL AND S_BU IS INITIAL AND S_HTITLE IS INITIAL.* if there is no selections in PHO header then look for exclusive* selections such as Material number , Serial number and batch number

    PERFORM SUB_CHECK_OTHER_OPTIONS. ELSE.************satya***********insert***************END***CHG03********** SELECT DIVISION "Division PHONBR "Business Hold Number BU "Business REVISION "Business Hold Revision HOLDCODE "Hold Code INITIATOR "Initiator USERID "Initiator MDT ID HOLDTITLE "Hold Title/Reason

    FROM ZOQAPHO_HDR INTO TABLE T_PHO_HEADER WHERE DIVISION IN S_DVSN AND PHONBR IN S_PHONBR AND BU IN S_BU AND "satya CHG02 REVISION IN S_REVISN AND HOLDCODE IN S_HDCODE AND* INITIATOR IN S_INTUSR AND USERID IN S_INTMDT AND HOLDTITLE IN S_HTITLE.

    * Check for the success of select database operation. IF SY-SUBRC NE 0.

    ************satya***********insert***************begin***CHG03*********** if there is no selections in PHO header then look for exclusive* selections such as Material number , Serial number and batch number

    PERFORM SUB_CHECK_OTHER_OPTIONS.************satya***********insert***************END***CHG03**********

    ELSE.

    * Sort the internal table t_pho_header if data exists. SORT T_PHO_HEADER BY DIVISION PHONBR. ENDIF. ENDIF.

    ENDFORM. " sub_retrive_pho_header_data

    *&---------------------------------------------------------------------**& Form sub_retrive_pho_detail_data*&---------------------------------------------------------------------** This routine retrieves PHO Detail data from custom table* ZOQAPHO_HDR (PHO Detail) satisfying the selection criteria* entered by the user at selection screen.*----------------------------------------------------------------------** PARAMETERS: NONE

  • 7/17/2019 PROGRM97

    15/52

    *----------------------------------------------------------------------*FORM SUB_RETRIVE_PHO_DETAIL_DATA .

    * Retrive PHO Detail data from ZOQAPHO_DTL (PHO Detail) into internal* table t_pho_detail satisfying the selection criteria for Detail data* entered at selection screen. IF NOT T_PHO_HEADER[] IS INITIAL. SELECT DIVISION "Division PHONBR "Business Hold Number ITEM "Item number SERIAL_NBR "Serial Characteristic number STATUS "PHO status REV_HELD "Revision held REV_LAST "Revision last ERDAT "Initial Hold Date ERZET "Entry time ERNAM "User ID AEDAT "Date of Last Change* "changed on 24/06/2004 AEZET "Time last change was made* "changed on 24/06/2004 FROM ZOQAPHO_DTL INTO TABLE T_PHO_DETAIL FOR ALL ENTRIES IN T_PHO_HEADER WHERE DIVISION = T_PHO_HEADER-DIVISION AND

    PHONBR = T_PHO_HEADER-PHONBR AND SERIAL_NBR IN S_SRLNBR AND STATUS IN S_STATUS AND ERDAT IN S_HLDATE.* AND ERNAM IN S_USRID. "CHG03 COMMENT

    * Check for the success of select database operation. IF SY-SUBRC NE 0.

    * Give message and stop further processing if no data found. MESSAGE I193(ZO). LEAVE LIST-PROCESSING. ELSE.

    * Sort the internal table t_pho_detail if data exists. SORT T_PHO_DETAIL BY DIVISION PHONBR ITEM. ENDIF. ENDIF.ENDFORM. " sub_retrive_pho_detail_data

    *&---------------------------------------------------------------------**& Form sub_retrive_pho_messages*&---------------------------------------------------------------------** This routine retrieves PHO messages data from custom table* ZOQAPHO_MSGS (PHO messages) satisfying the selection criteria* entered by the user at selection screen.

    *----------------------------------------------------------------------** PARAMETERS: NONE*----------------------------------------------------------------------*FORM SUB_RETRIVE_PHO_MESSAGES .

    * Retrive PHO messages from ZOQAPHO_MSGS (PHO messages) into internal* table t_pho_message satisfying the selection criteria for messages* entered at selection screen. IF NOT T_PHO_DETAIL[] IS INITIAL. SELECT DIVISION "Division

  • 7/17/2019 PROGRM97

    16/52

    PHONBR "Business Hold Number ITEM "Item number ERDAT "Date on which the record was created* "changed on 24/06/2004 ERZET "Entry time* "changed on 24/06/2004 MATNR "Material Number CHARG "Batch Number ERDAT_1ST "Transaction Date ERZET_1ST "Transaction Time FROM ZOQAPHO_MSGS INTO TABLE T_PHO_MESSAGES FOR ALL ENTRIES IN T_PHO_DETAIL WHERE DIVISION = T_PHO_DETAIL-DIVISION AND PHONBR = T_PHO_DETAIL-PHONBR AND ITEM = T_PHO_DETAIL-ITEM AND MATNR IN S_MATNR AND CHARG IN S_CHARG AND ERDAT_1ST IN S_TRDATE.* ERZET_1ST IN S_TRTIME. "COMMENT CHG03

    * Check for the success of select database operation. IF SY-SUBRC NE 0.* Give message and stop further processing if no data found. MESSAGE I194(ZO).

    LEAVE LIST-PROCESSING. ELSE.

    * Sort the internal table t_pho_messages if data exists. SORT T_PHO_MESSAGES BY DIVISION PHONBR ITEM ERDAT "changed on 24/06/2004 ERZET "changed on 24/06/2004 MATNR. ENDIF. ENDIF.ENDFORM. " sub_retrive_pho_messages

    *&---------------------------------------------------------------------**& Form sub_product_number*&---------------------------------------------------------------------** form to retrieve the feature (ATINN) for product number*----------------------------------------------------------------------** No parameters*----------------------------------------------------------------------*FORM SUB_PRODUCT_NUMBER .

    * CONVERSION_EXIT_ATINN_INPUT(Conversion exits for chars)

    CALL FUNCTION 'CONVERSION_EXIT_ATINN_INPUT'

    EXPORTING INPUT = C_PRONUMBER "Product Number IMPORTING OUTPUT = G_PRONUM. "Product Number

    ENDFORM. " sub_product_number

    *&---------------------------------------------------------------------**& Form sub_get_prodnumber1

  • 7/17/2019 PROGRM97

    17/52

    *&---------------------------------------------------------------------** Form to get the product number*----------------------------------------------------------------------** No parameters*----------------------------------------------------------------------*FORM SUB_GET_PRODNUMBER1 .

    T_PHO_MESSAGES_TEMP[] = T_PHO_MESSAGES[].

    SORT T_PHO_MESSAGES_TEMP BY MATNR.

    *Delete duplicate material numbers. DELETE ADJACENT DUPLICATES FROM T_PHO_MESSAGES_TEMP COMPARING MATNR.

    LOOP AT T_PHO_MESSAGES_TEMP INTO W_PHO_MESSAGES_TEMP.

    *to get the product number using material. PERFORM SUB_GET_PRODNUMBER.

    ENDLOOP.

    *free the un used temp tables for more performance

    FREE: T_PHO_MESSAGES_TEMP, T_MARA_TEMP. CLEAR: W_PHO_MESSAGES_TEMP, W_MARA_TEMP.ENDFORM. " sub_get_prodnumber1

    *&---------------------------------------------------------------------**& Form sub_get_prodnumber*&---------------------------------------------------------------------** Form to get product number using material*----------------------------------------------------------------------** No Parameters*----------------------------------------------------------------------*

    FORM SUB_GET_PRODNUMBER .

    CLEAR :W_MARA, W_MARA_TEMP, G_MATNR.

    * Retrieve the product Number from Function Module* table into internal table t_mara

    G_MATNR = W_PHO_MESSAGES_TEMP-MATNR.

    CALL FUNCTION 'CLFM_SELECT_AUSP' EXPORTING

    MAFID = C_MAFID CLASSTYPE = C_CLASSTY OBJECT = G_MATNR FEATURE = G_PRONUM TABLES EXP_AUSP = T_MARA_TEMP EXCEPTIONS NO_VALUES = 1 OTHERS = 2.

  • 7/17/2019 PROGRM97

    18/52

    IF SY-SUBRC = 0. READ TABLE T_MARA_TEMP INTO W_MARA_TEMP INDEX C_ONE. IF SY-SUBRC = 0.

    * move the data from t_mara_temp into t_mara. W_MARA = W_MARA_TEMP. APPEND W_MARA TO T_MARA. ENDIF. ENDIF.

    ENDFORM. " sub_get_prodnumber

    * Begin of change on 30/06/2004*&---------------------------------------------------------------------**& Form sub_getquantity*&---------------------------------------------------------------------** to get restricted/unrestricted quantity details from table MCHB*----------------------------------------------------------------------** No parameters*----------------------------------------------------------------------*FORM SUB_GETQUANTITY . DATA:LV_STOCK TYPE EINME. "CHG03

    REFRESH : T_PHO_MESSAGES_TEMP[]. T_PHO_MESSAGES_TEMP[] = T_PHO_MESSAGES[].

    SORT T_PHO_MESSAGES_TEMP BY MATNR CHARG.

    *Delete duplicate material numbers. DELETE ADJACENT DUPLICATES FROM T_PHO_MESSAGES_TEMP COMPARING MATNR CHARG.

    IF NOT T_PHO_MESSAGES_TEMP[] IS INITIAL.************satya***********insert***************begin***CHG03********** LOOP AT T_PHO_MESSAGES_TEMP INTO W_PHO_MESSAGES. PERFORM SUB_GET_STOCK_DATA.

    W_QNTY_FINAL-MATNR = W_PHO_MESSAGES-MATNR. W_QNTY_FINAL-CHARG = W_PHO_MESSAGES-CHARG.* w_qnty_details-lgort = cbe-lgort.* w_qnty_details-werks = cbe-werks. CLEAR LV_STOCK. LOOP AT CBE. LV_STOCK = LV_STOCK + CBE-LABST + CBE-UMLME + CBE-INSME + CBE-EINME + CBE-SPEME + CBE-RETME + CBE-KINSM + CBE-KEINM + CBE-KSPEM.

    ENDLOOP. W_QNTY_FINAL-CEINM = LV_STOCK / 1000.

    . APPEND W_QNTY_FINAL TO T_QNTY_FINAL. ENDLOOP.

    LOOP AT T_MCH1_TAB. CLEAR W_PHO_MESSAGES. W_PHO_MESSAGES-MATNR = T_MCH1_TAB-MATNR. W_PHO_MESSAGES-CHARG = T_MCH1_TAB-CHARG.

    PERFORM SUB_GET_STOCK_DATA.

  • 7/17/2019 PROGRM97

    19/52

    W_QNTY_FINAL-MATNR = W_PHO_MESSAGES-MATNR. W_QNTY_FINAL-CHARG = W_PHO_MESSAGES-CHARG.* w_qnty_details-lgort = cbe-lgort.* w_qnty_details-werks = cbe-werks. CLEAR LV_STOCK. LOOP AT CBE. LV_STOCK = LV_STOCK + CBE-LABST + CBE-UMLME + CBE-INSME + CBE-EINME + CBE-SPEME + CBE-RETME + CBE-KINSM + CBE-KEINM + CBE-KSPEM.

    ENDLOOP. W_QNTY_FINAL-CEINM = LV_STOCK / 1000. . APPEND W_QNTY_FINAL TO T_QNTY_FINAL.

    ENDLOOP.************satya***********insert***************END***CHG03**********************satya***********COMMENT*************begin***CHG03**********

    ** SELECT MATNR "Material Number* CHARG "Batch Number* WERKS "Plant

    * LGORT "storage location* CLABS "Valuated stock with unrestricted use* CEINM "Total Stock of All Restricted Batches* INTO TABLE T_QNTY_DETAILS* FROM MCHB* FOR ALL ENTRIES IN T_PHO_MESSAGES_TEMP* WHERE MATNR = T_PHO_MESSAGES_TEMP-MATNR* AND CHARG = T_PHO_MESSAGES_TEMP-CHARG.** IF SY-SUBRC = 0.* SORT T_QNTY_DETAILS BY MATNR CHARG.* ENDIF.********** CHG02 BEGIN

    * SELECT MATNR "Material Number* CHARG "Batch Number* WERKS "Plant* LGORT "storage location* BDMNG "Valuated stock with unrestricted use* INTO TABLE T_RESB_DETAILS* FROM RESB* FOR ALL ENTRIES IN T_PHO_MESSAGES_TEMP* WHERE MATNR = T_PHO_MESSAGES_TEMP-MATNR* AND CHARG = T_PHO_MESSAGES_TEMP-CHARG.** IF SY-SUBRC = 0.* SORT T_RESB_DETAILS BY MATNR CHARG.

    * ENDIF.* ENDIF.* IF NOT T_RESB_DETAILS[] IS INITIAL.** LOOP AT T_RESB_DETAILS INTO W_RESB_DETAILS.** AT END OF CHARG.* W_RESB_FINAL-MATNR = W_RESB_DETAILS-MATNR.* W_RESB_FINAL-CHARG = W_RESB_DETAILS-CHARG.* SUM.

  • 7/17/2019 PROGRM97

    20/52

    ** W_RESB_FINAL-BDMNG = W_RESB_DETAILS-BDMNG.** APPEND W_RESB_FINAL TO T_RESB_FINAL.* CLEAR W_RESB_FINAL.* ENDAT.* CLEAR : W_RESB_DETAILS.** ENDLOOP.* ENDIF.********** CHG02 END*** sum up the quantities for the combination of material** and batch number.** IF NOT T_QNTY_DETAILS[] IS INITIAL.** LOOP AT T_QNTY_DETAILS INTO W_QNTY_DETAILS.** AT END OF CHARG.* W_QNTY_FINAL-MATNR = W_QNTY_DETAILS-MATNR.* W_QNTY_FINAL-CHARG = W_QNTY_DETAILS-CHARG.* SUM.*

    * W_QNTY_FINAL-CLABS = W_QNTY_DETAILS-CLABS.* W_QNTY_FINAL-CEINM = W_QNTY_DETAILS-CEINM.*****CHG02 START* READ TABLE T_RESB_FINAL INTO W_RESB_FINAL WITH KEY* MATNR = W_QNTY_DETAILS-MATNR* CHARG = W_QNTY_DETAILS-CHARG.* IF SY-SUBRC = 0.* W_QNTY_FINAL-BDMNG = W_RESB_FINAL-BDMNG.* ENDIF.*****CHG02 END* APPEND W_QNTY_FINAL TO T_QNTY_FINAL.* CLEAR W_QNTY_FINAL.* ENDAT.

    * CLEAR : W_QNTY_DETAILS.** ENDLOOP.************satya***********COMMENT*************END***CHG03********** ENDIF.

    *free the un used temp tables for more performance FREE: T_PHO_MESSAGES_TEMP.

    ENDFORM. " sub_getquantity

    * End of change on 30/06/2004

    *&---------------------------------------------------------------------**& Form sub_integrate_data*&---------------------------------------------------------------------** To integrate the data retrived form PHO header, detail and ** messages tables*----------------------------------------------------------------------** No Parameters*----------------------------------------------------------------------*FORM SUB_INTEGRATE_DATA .DATA: LV_MCH1_SUCCESS TYPE C.

  • 7/17/2019 PROGRM97

    21/52

    SORT T_MCH1_TAB. DELETE ADJACENT DUPLICATES FROM T_MCH1_TAB COMPARING ALL FIELDS. SORT T_MARA BY OBJEK. SORT T_QNTY_FINAL BY MATNR CHARG. "changed on 30/06/2004* check whether the header table is initial or not IF NOT T_PHO_DETAIL[] IS INITIAL.

    LOOP AT T_PHO_DETAIL INTO W_PHO_DETAIL. CLEAR : W_PHO_HEADER, W_PHO_MESSAGES, W_MARA, W_QNTY_FINAL. "changed on 30/06/2004

    *Read the header table information READ TABLE T_PHO_HEADER INTO W_PHO_HEADER WITH KEY DIVISION = W_PHO_DETAIL-DIVISION PHONBR = W_PHO_DETAIL-PHONBR BINARY SEARCH.

    IF SY-SUBRC = 0.

    * Begin of change on 24/06/2004

    ** LOOP AT t_pho_messages INTO w_pho_messages

    ** WHERE division = w_pho_detail-division** AND phonbr = w_pho_detail-phonbr** AND item = w_pho_detail-item.

    IF W_PHO_DETAIL-AEDAT IS INITIAL.

    READ TABLE T_PHO_MESSAGES INTO W_PHO_MESSAGES WITH KEY DIVISION = W_PHO_DETAIL-DIVISION PHONBR = W_PHO_DETAIL-PHONBR ITEM = W_PHO_DETAIL-ITEM ERDAT = W_PHO_DETAIL-ERDAT ERZET = W_PHO_DETAIL-ERZET

    BINARY SEARCH. IF SY-SUBRC 0. clear W_PHO_MESSAGES. endif.* End of change on 24/06/2004

    *get the product number using material number. CLEAR W_MARA. READ TABLE T_MARA INTO W_MARA WITH KEY OBJEK = W_PHO_MESSAGES-MATNR BINARY SEARCH. IF NOT W_MARA-ATWRT IN S_PRODNR. CONTINUE.

    ENDIF.* here sy-subrc check is not required as the data is passed into* final internal table even with out product number

    * Begin of change on 30/06/2004 READ TABLE T_QNTY_FINAL INTO W_QNTY_FINAL WITH KEY MATNR = W_PHO_MESSAGES-MATNR CHARG = W_PHO_MESSAGES-CHARG BINARY SEARCH.

  • 7/17/2019 PROGRM97

    22/52

    * Here No sy-subrc check is required as the data can be passed into* final internal table even with out any qauntity.

    * End of change on 30/06/2004

    * send the data into final internal table

    W_PHO_FINAL-DIVISION = W_PHO_HEADER-DIVISION. W_PHO_FINAL-BU = W_PHO_HEADER-BU. W_PHO_FINAL-PHONBR = W_PHO_HEADER-PHONBR. W_PHO_FINAL-REVISION = W_PHO_HEADER-REVISION. W_PHO_FINAL-HOLDCODE = W_PHO_HEADER-HOLDCODE. W_PHO_FINAL-INITIATOR = W_PHO_HEADER-INITIATOR. W_PHO_FINAL-USERID = W_PHO_HEADER-USERID. W_PHO_FINAL-HOLDTITLE = W_PHO_HEADER-HOLDTITLE. W_PHO_FINAL-SERIAL_NBR = W_PHO_DETAIL-SERIAL_NBR. W_PHO_FINAL-STATUS = W_PHO_DETAIL-STATUS. W_PHO_FINAL-REV_HELD = W_PHO_DETAIL-REV_HELD. W_PHO_FINAL-REV_LAST = W_PHO_DETAIL-REV_LAST. W_PHO_FINAL-ERDAT = W_PHO_DETAIL-ERDAT. W_PHO_FINAL-ERNAM = W_PHO_DETAIL-ERNAM. W_PHO_FINAL-MATNR = W_PHO_MESSAGES-MATNR. W_PHO_FINAL-CHARG = W_PHO_MESSAGES-CHARG. W_PHO_FINAL-ERDAT_1ST = W_PHO_MESSAGES-ERDAT_1ST.

    W_PHO_FINAL-ERZET_1ST = W_PHO_MESSAGES-ERZET_1ST. W_PHO_FINAL-PRODNUMBER = W_MARA-ATWRT. W_PHO_FINAL-CLABS = W_QNTY_FINAL-CLABS.* "changed on 30/06/2004 W_PHO_FINAL-CEINM = W_QNTY_FINAL-CEINM.* "changed on 30/06/2004 W_PHO_FINAL-BDMNG = W_QNTY_FINAL-BDMNG.* APPEND W_PHO_FINAL TO T_PHO_FINAL.************satya***********insert***************begin***CHG03*********** add the details of serial numbers, and batch numbers that are under* this HOLD which user is interested to see in report selection CLEAR LV_MCH1_SUCCESS. LOOP AT T_MCH1_TAB.

    * select only material that is in the final. IF NOT W_PHO_MESSAGES-MATNR is INITIAL. IF W_PHO_MESSAGES-MATNR T_MCH1_TAB-MATNR. CONTINUE. ENDIF. ENDIF.* select only batch that is in the final. IF NOT W_PHO_MESSAGES-CHARG is INITIAL. IF W_PHO_MESSAGES-CHARG T_MCH1_TAB-CHARG. CONTINUE. ENDIF. ENDIF.* select only serial number that is in the final.

    IF NOT W_PHO_DETAIL-SERIAL_NBR is INITIAL. IF W_PHO_DETAIL-SERIAL_NBR T_MCH1_TAB-SERNR. CONTINUE. ENDIF. ENDIF. CLEAR:W_PHO_FINAL-CEINM.

    READ TABLE T_QNTY_FINAL INTO W_QNTY_FINAL WITH KEY MATNR = T_MCH1_TAB-MATNR CHARG = T_MCH1_TAB-CHARG

  • 7/17/2019 PROGRM97

    23/52

    BINARY SEARCH. IF SY-SUBRC = 0. W_PHO_FINAL-CEINM = W_QNTY_FINAL-CEINM.

    ENDIF.* W_PHO_FINAL-PRODNUMBER = '>>>>>>>>>'. W_PHO_FINAL-CHARG = T_MCH1_TAB-CHARG. W_PHO_FINAL-SERIAL_NBR = T_MCH1_TAB-SERNR. LV_MCH1_SUCCESS = 'X'. APPEND W_PHO_FINAL TO T_PHO_FINAL.

    ENDLOOP.************satya***********insert***************END*****CHG03********** IF LV_MCH1_SUCCESS = ' '. APPEND W_PHO_FINAL TO T_PHO_FINAL. ENDIF.

    CLEAR : W_PHO_FINAL.

    * ENDIF.* Begin of change on 24/06/2004* ENDLOOP. ELSE.

    READ TABLE T_PHO_MESSAGES INTO W_PHO_MESSAGES WITH KEY DIVISION = W_PHO_DETAIL-DIVISION PHONBR = W_PHO_DETAIL-PHONBR ITEM = W_PHO_DETAIL-ITEM ERDAT = W_PHO_DETAIL-AEDAT ERZET = W_PHO_DETAIL-AEZET BINARY SEARCH. IF SY-SUBRC 0. clear W_PHO_MESSAGES.* these values are required for the items which do not batches/serial ** numbers in SAP as of date W_PHO_MESSAGES-ERDAT_1ST = W_PHO_DETAIL-AEDAT. W_PHO_MESSAGES-ERZET_1ST = W_PHO_DETAIL-AEZET.

    endif.*get the product number using material number. READ TABLE T_MARA INTO W_MARA WITH KEY OBJEK = W_PHO_MESSAGES-MATNR BINARY SEARCH. IF NOT W_MARA-ATWRT IN S_PRODNR. CONTINUE. ENDIF.* here sy-subrc check is not required as the data is passed into* final internal table even with out product number

    * Begin of change on 30/06/2004 READ TABLE T_QNTY_FINAL INTO W_QNTY_FINAL

    WITH KEY MATNR = W_PHO_MESSAGES-MATNR CHARG = W_PHO_MESSAGES-CHARG BINARY SEARCH.

    * Here No sy-subrc check is required as the data can be passed into* final internal table even with out any qauntity.

    * End of change on 30/06/2004

    * send the data into final internal table

  • 7/17/2019 PROGRM97

    24/52

    W_PHO_FINAL-DIVISION = W_PHO_HEADER-DIVISION. W_PHO_FINAL-BU = W_PHO_HEADER-BU. W_PHO_FINAL-PHONBR = W_PHO_HEADER-PHONBR. W_PHO_FINAL-REVISION = W_PHO_HEADER-REVISION. W_PHO_FINAL-HOLDCODE = W_PHO_HEADER-HOLDCODE. W_PHO_FINAL-INITIATOR = W_PHO_HEADER-INITIATOR. W_PHO_FINAL-USERID = W_PHO_HEADER-USERID. W_PHO_FINAL-HOLDTITLE = W_PHO_HEADER-HOLDTITLE. W_PHO_FINAL-SERIAL_NBR = W_PHO_DETAIL-SERIAL_NBR. W_PHO_FINAL-STATUS = W_PHO_DETAIL-STATUS. W_PHO_FINAL-REV_HELD = W_PHO_DETAIL-REV_HELD. W_PHO_FINAL-REV_LAST = W_PHO_DETAIL-REV_LAST. W_PHO_FINAL-ERDAT = W_PHO_DETAIL-ERDAT. W_PHO_FINAL-ERNAM = W_PHO_DETAIL-ERNAM. W_PHO_FINAL-MATNR = W_PHO_MESSAGES-MATNR. W_PHO_FINAL-CHARG = W_PHO_MESSAGES-CHARG. W_PHO_FINAL-ERDAT_1ST = W_PHO_MESSAGES-ERDAT_1ST. W_PHO_FINAL-ERZET_1ST = W_PHO_MESSAGES-ERZET_1ST. W_PHO_FINAL-PRODNUMBER = W_MARA-ATWRT. W_PHO_FINAL-CLABS = W_QNTY_FINAL-CLABS.* "changed on 30/06/2004 W_PHO_FINAL-CEINM = W_QNTY_FINAL-CEINM.* "changed on 30/06/2004 W_PHO_FINAL-BDMNG = W_QNTY_FINAL-BDMNG.

    * APPEND W_PHO_FINAL TO T_PHO_FINAL.

    ************satya***********insert***************begin***CHG03*********** add the details of serial numbers, and batch numbers that are under* this HOLD which user is interested to see in report selection CLEAR LV_MCH1_SUCCESS. LOOP AT T_MCH1_TAB.* select only material that is in the final. IF NOT W_PHO_MESSAGES-MATNR is INITIAL. IF W_PHO_MESSAGES-MATNR T_MCH1_TAB-MATNR. CONTINUE. ENDIF. ENDIF.

    * select only batch that is in the final. IF NOT W_PHO_MESSAGES-CHARG is INITIAL. IF W_PHO_MESSAGES-CHARG T_MCH1_TAB-CHARG. CONTINUE. ENDIF. ENDIF.* select only serial number that is in the final. IF NOT W_PHO_DETAIL-SERIAL_NBR is INITIAL. IF W_PHO_DETAIL-SERIAL_NBR T_MCH1_TAB-SERNR. CONTINUE. ENDIF. ENDIF.

    CLEAR:W_PHO_FINAL-CEINM.

    READ TABLE T_QNTY_FINAL INTO W_QNTY_FINAL WITH KEY MATNR = T_MCH1_TAB-MATNR CHARG = T_MCH1_TAB-CHARG BINARY SEARCH. IF SY-SUBRC = 0. W_PHO_FINAL-CEINM = W_QNTY_FINAL-CEINM.

    ENDIF.

  • 7/17/2019 PROGRM97

    25/52

    * W_PHO_FINAL-PRODNUMBER = '>>>>>>>>>'. W_PHO_FINAL-CHARG = T_MCH1_TAB-CHARG. W_PHO_FINAL-SERIAL_NBR = T_MCH1_TAB-SERNR. LV_MCH1_SUCCESS = 'X'. APPEND W_PHO_FINAL TO T_PHO_FINAL.

    ENDLOOP.

    ************satya***********insert***************END***CHG03********** IF LV_MCH1_SUCCESS = ' '. APPEND W_PHO_FINAL TO T_PHO_FINAL. ENDIF. CLEAR : W_PHO_FINAL.

    * End of change on 24/06/2004* ENDIF. ENDIF. ENDIF. ENDLOOP. ENDIF.ENDFORM. " sub_integrate_data*&---------------------------------------------------------------------**& Form sub_display_report*&---------------------------------------------------------------------*

    * form to display the final report*----------------------------------------------------------------------** No parameters*----------------------------------------------------------------------*FORM SUB_DISPLAY_REPORT .

    * Begin of change on 25/06/2004

    * DATA : l_flag(1) TYPE c VALUE 'X', "Flag* l_flg_head(1) TYPE c VALUE 'X'. "Flag for header data*

    SORT T_PHO_FINAL BY DIVISION

    BU PHONBR REVISION MATNR CHARG SERIAL_NBR.

    * Populating field catalog PERFORM SUB_CREATE_CATALOG USING: C_DIVISION TEXT-019 C_SPACE, C_BU TEXT-022 C_SPACE, C_PHONBR TEXT-020 C_SPACE, C_REV_HELD TEXT-023 C_SPACE,

    C_REV_LAST TEXT-024 C_SPACE, C_REVISION TEXT-021 C_SPACE, C_HOLDTITLE TEXT-025 C_SPACE, C_PRODNUMBER TEXT-026 C_SPACE, C_MATNR TEXT-027 C_SPACE, C_CHARG TEXT-028 C_SPACE, C_SERIAL_NBR TEXT-029 C_SPACE,* C_CLABS TEXT-017 C_SPACE, "COMMENT CHG03 C_CEINM TEXT-018 C_SPACE, "changed on 30/06/2004* C_BDMNG TEXT-038 C_SPACE, "COMMENT CHG03

  • 7/17/2019 PROGRM97

    26/52

    C_INITIATOR TEXT-030 C_SPACE, C_HOLDCODE TEXT-037 C_SPACE, C_STATUS TEXT-032 C_SPACE, C_ERDAT TEXT-033 C_SPACE, C_ERDAT_1ST TEXT-034 C_SPACE, C_ERZET_1ST TEXT-035 C_SPACE, C_ERNAM TEXT-036 C_SPACE.* C_USERID TEXT-031 C_SPACE, "comment CHG03 .

    * Populating the Layout for the ALV Report PERFORM SUB_POPULATE_LAYOUT.

    * Setting the Events PERFORM SUB_EVENT_BULID .

    * Displaying the ALV Reoport using 'REUSE_ALV_LIST_DISPLAY' PERFORM SUB_DISPLAY_ALV.

    * DATA : l_cnt_matnr TYPE i, "Count for Material* l_cnt_batch TYPE i, "Count for Batch* l_cnt_srlno TYPE i. "Count for Serial number

    ** IF NOT t_pho_final IS INITIAL.

    ** SORT t_pho_final BY division bu** phonbr revision matnr charg serial_nbr.*****write the line items to the list** LOOP AT t_pho_final INTO w_pho_final.*****on change of division write division** ON CHANGE OF w_pho_final-division.**** IF l_flag IS INITIAL.** FORMAT COLOR COL_TOTAL ON.*****here we print materials if batch numbers and serial number fields

    ***are initial perhold number***else we print batch numbers if serial number field is initial per***hold number** IF l_cnt_batch IS INITIAL AND** l_cnt_srlno IS INITIAL.** WRITE:/40(300) text-013, 64 l_cnt_matnr.** ELSE.** IF l_cnt_srlno IS INITIAL.** WRITE:/40(300) text-014, 60 l_cnt_batch.** ELSE.** WRITE:/40(300) text-015, 62 l_cnt_srlno.** ENDIF.** ENDIF.

    ** SKIP.** FORMAT COLOR COL_TOTAL OFF.** ELSE.** CLEAR l_flag.** ENDIF.** l_flg_head = 'X'.** WRITE: w_pho_final-division,** 10 w_pho_final-bu,** 20 w_pho_final-phonbr.**

  • 7/17/2019 PROGRM97

    27/52

    ** CLEAR : l_cnt_matnr,** l_cnt_batch,** l_cnt_srlno.** ENDON.***on change of bussiness write bussiness to the list** ON CHANGE OF w_pho_final-bu.** WRITE: 10 w_pho_final-bu.** ENDON.*****on change of phone number write phone number to the list**** ON CHANGE OF w_pho_final-phonbr.**** IF l_flg_head IS INITIAL.** IF l_flag IS INITIAL.** FORMAT COLOR COL_TOTAL ON.***here we print materials if batch numbers and serial number fields***are initial perhold number***else we print batch numbers if serial number field is initial per***hold number** IF l_cnt_batch IS INITIAL AND** l_cnt_srlno IS INITIAL.** WRITE:/40(300) text-013, 64 l_cnt_matnr.** ELSE.

    ** IF l_cnt_srlno IS INITIAL.** WRITE:/40(300) text-014, 60 l_cnt_batch.** ELSE.** WRITE:/40(300) text-015, 62 l_cnt_srlno.** ENDIF.** ENDIF.** SKIP.** FORMAT COLOR COL_TOTAL OFF.** ELSE.** CLEAR l_flag.** ENDIF.**** WRITE: 20 w_pho_final-phonbr.

    ** ELSE.** CLEAR l_flg_head.** ENDIF.**** CLEAR : l_cnt_matnr,** l_cnt_batch,** l_cnt_srlno.** ENDON.***count the number of materials per hold number** IF NOT w_pho_final-matnr IS INITIAL.** l_cnt_matnr = l_cnt_matnr + 1.** ENDIF.**

    ***count the batch number per hold number** IF NOT w_pho_final-charg IS INITIAL.** l_cnt_batch = l_cnt_batch + 1.** ENDIF.*****count the Serial number per hold number** IF NOT w_pho_final-serial_nbr IS INITIAL.** l_cnt_srlno = l_cnt_srlno + 1.** ENDIF.**

  • 7/17/2019 PROGRM97

    28/52

    ***write all the items to the list output** WRITE: 31 w_pho_final-revision, "Business Hold Revision** 40 w_pho_final-rev_held, "revision held** 49 w_pho_final-rev_last, "revision last** 58 w_pho_final-holdtitle, "Hold Title/Reason** 108 w_pho_final-prodnumber, "product number** 128 w_pho_final-matnr, "Material Number** 147 w_pho_final-charg, "Batch Number** 158 w_pho_final-serial_nbr, "Serial Characteristic*number** 189 w_pho_final-initiator, "Initiator** 220 w_pho_final-userid, "Initiator MDT ID** 243 w_pho_final-holdcode, "Hold Code** 252 w_pho_final-status, "PHO status** 274 w_pho_final-erdat, "Initial Hold Date** 288 w_pho_final-erdat_1st, "Transaction Date** 300 w_pho_final-erzet_1st, "Transaction Time** 312 w_pho_final-ernam, / . "User ID*****to write the summation of material or batch number or serial number*at***the end report** AT LAST.** FORMAT COLOR COL_TOTAL ON.

    ** IF l_cnt_batch IS INITIAL AND** l_cnt_srlno IS INITIAL.** WRITE:/40(300) text-013, 64 l_cnt_matnr.** ELSE.** IF l_cnt_srlno IS INITIAL.** WRITE:/40(300) text-014, 60 l_cnt_batch.** ELSE.** WRITE:/40(300) text-015, 62 l_cnt_srlno.** ENDIF.** ENDIF.** SKIP.** FORMAT COLOR COL_TOTAL OFF.** ENDAT.

    ** ENDLOOP.** ELSE.** MESSAGE i213. "no record exists for given selection criteria** ENDIF.

    * End of change on 25/06/2004

    ENDFORM. " sub_display_report

    * Begin of change on 25/06/2004

    *&---------------------------------------------------------------------**& Form sub_populate_layout

    *&---------------------------------------------------------------------** Form to populate the laypout for ALV grid*----------------------------------------------------------------------** No para meters*----------------------------------------------------------------------*FORM SUB_POPULATE_LAYOUT .

    W_LAYOUT-ZEBRA = C_CHECKED. " Layout zebra W_LAYOUT-COLWIDTH_OPTIMIZE = C_CHECKED. " Optimize column width W_LAYOUT-LIGHTS_CONDENSE = C_CHECKED. " Lights Condense

  • 7/17/2019 PROGRM97

    29/52

    W_LAYOUT-LIGHTS_TABNAME = C_TABNAME. " Lights table name

    ENDFORM. " sub_populate_layout

    *&---------------------------------------------------------------------**& Form sub_event_bulid*&---------------------------------------------------------------------** Form to create the event*----------------------------------------------------------------------** No parameters*----------------------------------------------------------------------*FORM SUB_EVENT_BULID .

    * Top-of-page event is added to the internal table t_event W_EVENT-FORM = SLIS_EV_TOP_OF_PAGE. W_EVENT-NAME = SLIS_EV_TOP_OF_PAGE.

    APPEND W_EVENT TO T_EVENT. CLEAR W_EVENT.

    ENDFORM. " sub_event_bulid

    *&---------------------------------------------------------------------**& Form sub_create_catalog

    *&---------------------------------------------------------------------** Form to craete the catalog*----------------------------------------------------------------------** -->P_fname for field* -->P_desc for field description* -->P_space for space* -->P_leng for length*----------------------------------------------------------------------*FORM SUB_CREATE_CATALOG USING P_FNAME TYPE ANY P_DESC TYPE ANY P_SPACE TYPE ANY.

    * Populate the fileds to the work area W_FIELDCAT-TABNAME = C_TABNAME. W_FIELDCAT-FIELDNAME = P_FNAME. W_FIELDCAT-SELTEXT_M = P_DESC. W_FIELDCAT-JUST = P_SPACE. APPEND W_FIELDCAT TO T_FIELDCAT. CLEAR: W_FIELDCAT.

    ENDFORM. " sub_create_catalog*&---------------------------------------------------------------------**& Form sub_report_header*&---------------------------------------------------------------------*

    * Form to write the standard Medtronic header for the report*----------------------------------------------------------------------** No para meters*----------------------------------------------------------------------*FORM TOP_OF_PAGE.

    * Pouplate the header table t_header IF T_HEADER[] IS INITIAL.

    CALL FUNCTION 'ZXCAP_REPORT_HEADER_ALV_GRID'

  • 7/17/2019 PROGRM97

    30/52

    EXPORTING DATUM = SY-DATUM TITLE1 = SY-TITLE TITLE2 = SPACE TITLE3 = SPACE TITLE4 = SPACE UNAME = SY-UNAME BUKRS = SPACE TABLES HEADER = T_HEADER. ENDIF.

    * Display the header CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING IT_LIST_COMMENTARY = T_HEADER.

    ENDFORM. " top_of_page

    *&---------------------------------------------------------------------**& Form sub_display_alv*&---------------------------------------------------------------------** Form to display the report in ALV grid

    *----------------------------------------------------------------------** NO parameters*----------------------------------------------------------------------*FORM SUB_DISPLAY_ALV .

    ** Local Variable declaration for Program name DATA: L_PROGID TYPE SYCPROG. "Hold the program name

    CLEAR: L_PROGID. L_PROGID = SY-CPROG.

    * Check if the field catalog is not empty IF NOT T_FIELDCAT[] IS INITIAL.

    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = L_PROGID*******************satya ravi ****insert***********start******CHG02 I_CALLBACK_USER_COMMAND = W_CALLBACK_USER_COMMAND I_CALLBACK_PF_STATUS_SET = W_CALLBACK_PF_STATUS_SET*******************satya ravi ****insert***********end*******CHG02 IS_LAYOUT = W_LAYOUT IT_FIELDCAT = T_FIELDCAT IT_EVENTS = T_EVENT TABLES T_OUTTAB = T_PHO_FINAL

    EXCEPTIONS PROGRAM_ERROR = 1 OTHERS = 2.

    * If ALV Report Display is unsuccessful, display an Information* message and come back to the selection screen

    IF SY-SUBRC 0. MESSAGE I202(ZO). " error while displaying ALV LEAVE LIST-PROCESSING.

  • 7/17/2019 PROGRM97

    31/52

    ENDIF. ENDIF.ENDFORM. " sub_display_alv* End of change on 25/06/2004************satya***********insert***************start****CHG02*********---------------------------------------------------------------------** FORM F_PF_STATUS_SET **---------------------------------------------------------------------*FORM F_PF_STATUS_SET USING FP_ALV_EXCL TYPE KKBLO_T_EXTAB. DATA: LW_FCODE LIKE SY-UCOMM.* Allow DELETE FP_ALV_EXCL WHERE FCODE = '&SUM'. DELETE FP_ALV_EXCL WHERE FCODE = '&FG_SUBTOT'. DELETE FP_ALV_EXCL WHERE FCODE = '&LFO'.* Disallow LW_FCODE = '&ALL '. APPEND LW_FCODE TO FP_ALV_EXCL. LW_FCODE = '&SALL '. APPEND LW_FCODE TO FP_ALV_EXCL. LW_FCODE = 'ANL2 '. APPEND LW_FCODE TO FP_ALV_EXCL. LW_FCODE = 'AEN2 '. APPEND LW_FCODE TO FP_ALV_EXCL. LW_FCODE = 'ANZ2 '. APPEND LW_FCODE TO FP_ALV_EXCL. LW_FCODE = 'REFR '. APPEND LW_FCODE TO FP_ALV_EXCL. LW_FCODE = 'PRUE '. APPEND LW_FCODE TO FP_ALV_EXCL.

    SET PF-STATUS 'ALV_PF_STATUS' EXCLUDING FP_ALV_EXCL.

    SET TITLEBAR '001' WITH W_SY_TITLE.

    ENDFORM. "F_PF_STATUS_SET*---------------------------------------------------------------------** FORM f_user_command **---------------------------------------------------------------------*FORM F_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM RS_SELFIELD TYPE SLIS_SELFIELD.* Local data DATA : LD_VBTYP LIKE VBRK-VBTYP.

    * Command CASE R_UCOMM.

    WHEN 'ZXXL'. PERFORM Z_XXL_SIMPLE_API TABLES T_PHO_FINAL USING T_FIELDCAT. WHEN OTHERS.

    ENDCASE.

    ENDFORM. "f_user_command*&--------------------------------------------------------------------*

    *& Form z_XXL_SIMPLE_API*&--------------------------------------------------------------------** text*---------------------------------------------------------------------** -->FT_DATA text* -->FP_CATLG text*---------------------------------------------------------------------*FORM Z_XXL_SIMPLE_API TABLES FT_DATA USING FP_CATLG.

  • 7/17/2019 PROGRM97

    32/52

    CALL FUNCTION 'ZOQA0009_10_XXL_SIMPLE_API' EXPORTING FP_FIELDCAT = FP_CATLG TABLES FT_DATA = FT_DATA EXCEPTIONS FATAL_ERROR = 01 NO_DISPLAY_POSSIBLE = 02.

    ENDFORM. "z_XXL_SIMPLE_API************satya***********insert***************end*****CHG02**********************satya***********insert***************begin***CHG03***********&---------------------------------------------------------------------**& Form SUB_CHECK_OTHER_OPTIONS*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* p1 text*

  • 7/17/2019 PROGRM97

    33/52

    FORM SUB_CHECK_HOLDS . DATA: LT_ZOQAPHO_HDRH TYPE ZOQAPHO_HDRH OCCURS 0 WITH HEADER LINE, LT_ZOQAPHO_DTLH TYPE ZOQAPHO_DTLH OCCURS 0 WITH HEADER LINE, LT_ZOQAPHO_MSGS TYPE ZOQAPHO_MSGS OCCURS 0 WITH HEADER LINE, LC_GET_CHARGS_Y TYPE C VALUE 'X', LC_GET_CHARGS_N TYPE C VALUE ' '. DATA:LW_PHO_MESSAGES TYPE ZOQAPHO_MSGS. DATA:LW_PHO_DETAIL TYPE ZOQAPHO_DTLH. DATA:FP_BATCH TYPE CHARG. DATA:LV_COUNT TYPE I.* If nothing passed then I raise an exception to that IF G_STRING = ' '. MESSAGE I184(ZO). LEAVE LIST-PROCESSING.

    ENDIF.

    * Build status ranges for SELECTs PERFORM F_BUILD_STATUS_RANGES.

    * Refresh results table REFRESH: FT_ZOQAPHO_HDRH, FT_ZOQAPHO_DTLH,

    FT_ZOQAPHO_MSGS.

    *=== Check if material only passed ===================== IF G_STRING = 'M'. PERFORM F_CHECK_FOR_MATERIALS TABLES LT_ZOQAPHO_HDRH LT_ZOQAPHO_DTLH LT_ZOQAPHO_MSGS USING 'XXXXXXXXXXXXXXXXXX' LC_GET_CHARGS_Y.

    *=== Check if only lot_nbr passed ======================== ELSEIF G_STRING = 'L'.

    SELECT * INTO CORRESPONDING FIELDS OF TABLE FT_ZOQAPHO_DTLH FROM ZOQAPHO_DTL WHERE LOT_NBR IN S_CHARG AND MATNR = ' ' AND SERIAL_NBR = ' '.

    *=== Check if only serial_nbr passed ===================== ELSEIF G_STRING = 'S'. SELECT * INTO CORRESPONDING FIELDS OF TABLE FT_ZOQAPHO_DTLH FROM ZOQAPHO_DTL WHERE SERIAL_NBR IN S_SRLNBR AND MATNR = ' ' AND LOT_NBR = ' '.

    *=== Check if lot_nbr & serial nbr passed ================ ELSEIF G_STRING = 'LS'.* For lot SELECT * INTO CORRESPONDING FIELDS OF TABLE FT_ZOQAPHO_DTLH FROM ZOQAPHO_DTL WHERE LOT_NBR IN S_CHARG AND MATNR = ' ' AND SERIAL_NBR = ' '.* For serial

  • 7/17/2019 PROGRM97

    34/52

    SELECT * APPENDING CORRESPONDING FIELDS OF TABLE FT_ZOQAPHO_DTLH FROM ZOQAPHO_DTL WHERE LOT_NBR = ' ' AND MATNR = ' ' AND SERIAL_NBR = S_SRLNBR.* For both SELECT * APPENDING CORRESPONDING FIELDS OF TABLE FT_ZOQAPHO_DTLH FROM ZOQAPHO_DTL WHERE LOT_NBR IN S_CHARG AND MATNR = ' ' AND SERIAL_NBR IN S_SRLNBR.

    *=== Check if lot_nbr & matnr passed === ELSEIF G_STRING = 'ML'.* If it exists without a material it is also on hold SELECT * INTO CORRESPONDING FIELDS OF TABLE FT_ZOQAPHO_DTLH FROM ZOQAPHO_DTL WHERE LOT_NBR IN S_CHARG AND MATNR = ' ' AND SERIAL_NBR = ' '.* Now check with the material SELECT * APPENDING CORRESPONDING FIELDS OF TABLE FT_ZOQAPHO_DTLH FROM ZOQAPHO_DTL WHERE LOT_NBR IN S_CHARG

    AND MATNR IN S_MATNR AND SERIAL_NBR = ' '.

    *=== Check if matnr & serial nbr passed ====================== ELSEIF G_STRING = 'MS'.* If it exists without a material it is also on hold SELECT * INTO CORRESPONDING FIELDS OF TABLE FT_ZOQAPHO_DTLH FROM ZOQAPHO_DTL WHERE LOT_NBR = ' ' AND MATNR = ' ' AND SERIAL_NBR IN S_SRLNBR.* Now check with the material SELECT * APPENDING CORRESPONDING FIELDS OF TABLE FT_ZOQAPHO_DTLH

    FROM ZOQAPHO_DTL WHERE LOT_NBR = ' ' AND MATNR IN S_MATNR AND SERIAL_NBR IN S_SRLNBR.

    *=== Check if matnr & lot_nbr & serial nbr passed ============ ELSEIF G_STRING = 'MLS'.* If lot_nbr only SELECT * INTO CORRESPONDING FIELDS OF TABLE FT_ZOQAPHO_DTLH FROM ZOQAPHO_DTL WHERE LOT_NBR IN S_CHARG AND MATNR = ' '

    AND SERIAL_NBR = ' '.* If serial nbr only SELECT * APPENDING CORRESPONDING FIELDS OF TABLE FT_ZOQAPHO_DTLH FROM ZOQAPHO_DTL WHERE LOT_NBR = ' ' AND MATNR = ' ' AND SERIAL_NBR IN S_SRLNBR.* If lot_nbr & serial nbr exist without a material it is also on hold SELECT * APPENDING CORRESPONDING FIELDS OF TABLE FT_ZOQAPHO_DTLH FROM ZOQAPHO_DTL

  • 7/17/2019 PROGRM97

    35/52

    WHERE LOT_NBR IN S_CHARG AND MATNR = ' ' AND SERIAL_NBR IN S_SRLNBR.* Now check with material & serial SELECT * APPENDING CORRESPONDING FIELDS OF TABLE FT_ZOQAPHO_DTLH FROM ZOQAPHO_DTL WHERE LOT_NBR = ' ' AND MATNR IN S_MATNR AND SERIAL_NBR IN S_SRLNBR.* Now check with material & lot SELECT * APPENDING CORRESPONDING FIELDS OF TABLE FT_ZOQAPHO_DTLH FROM ZOQAPHO_DTL WHERE LOT_NBR IN S_CHARG AND MATNR IN S_MATNR AND SERIAL_NBR = ' '.* Now check with the material SELECT * APPENDING CORRESPONDING FIELDS OF TABLE FT_ZOQAPHO_DTLH FROM ZOQAPHO_DTL WHERE LOT_NBR IN S_CHARG AND MATNR IN S_MATNR AND SERIAL_NBR IN S_SRLNBR. ENDIF.

    * Not done yet. If a serial or batch # check, then look for material

    IF S_CHARG ' ' OR S_SRLNBR ' '.* But was a material passed? IF S_MATNR ' '. PERFORM F_CHECK_FOR_MATERIALS TABLES LT_ZOQAPHO_HDRH LT_ZOQAPHO_DTLH LT_ZOQAPHO_MSGS USING 'XXXXXXXXXXXXXXXXXX' LC_GET_CHARGS_N. ELSE. PERFORM F_SELECT_BTCHS_TO_UPDATE TABLES T_MCH1_TAB. ENDIF. ENDIF.

    IF FP_BATCH ' '. PERFORM F_SELECT_BTCHS TABLES T_MCH1_TAB USING S_MATNR FP_BATCH. ENDIF.

    IF NOT T_MCH1_TAB[] IS INITIAL.* Only want one occurence of the material number DELETE ADJACENT DUPLICATES FROM T_MCH1_TAB COMPARING MATNR CHARGSERNR. LOOP AT T_MCH1_TAB.* get all the details if it is Material Hold

    PERFORM F_CHECK_FOR_MATERIALS TABLES LT_ZOQAPHO_HDRH LT_ZOQAPHO_DTLH LT_ZOQAPHO_MSGS USING T_MCH1_TAB-MATNR LC_GET_CHARGS_N.* Get all the details if it is a Batch hold PERFORM SUB_CHECK_FOR_LOTNBR TABLES LT_ZOQAPHO_HDRH LT_ZOQAPHO_DTLH LT_ZOQAPHO_MSGS USING T_MCH1_TAB-CHARG

  • 7/17/2019 PROGRM97

    36/52

    LC_GET_CHARGS_N. ENDLOOP.

    ENDIF.

    * Now get all headers for the details LOOP AT FT_ZOQAPHO_DTLH. IF FT_ZOQAPHO_DTLH-AEDAT IS INITIAL.* current header? SELECT SINGLE * INTO CORRESPONDING FIELDS OF FT_ZOQAPHO_HDRH FROM ZOQAPHO_HDR WHERE DIVISION = FT_ZOQAPHO_DTLH-DIVISION AND PHONBR = FT_ZOQAPHO_DTLH-PHONBR AND AEDAT = FT_ZOQAPHO_DTLH-ERDAT AND AEZET = FT_ZOQAPHO_DTLH-ERZET. IF SY-SUBRC 0. SELECT SINGLE * INTO CORRESPONDING FIELDS OF FT_ZOQAPHO_HDRH FROM ZOQAPHO_HDRH WHERE DIVISION = FT_ZOQAPHO_DTLH-DIVISION AND PHONBR = FT_ZOQAPHO_DTLH-PHONBR AND AEDAT = FT_ZOQAPHO_DTLH-ERDAT AND AEZET = FT_ZOQAPHO_DTLH-ERZET.

    ENDIF. ELSE.* current header? SELECT SINGLE * INTO CORRESPONDING FIELDS OF FT_ZOQAPHO_HDRH FROM ZOQAPHO_HDR WHERE DIVISION = FT_ZOQAPHO_DTLH-DIVISION AND PHONBR = FT_ZOQAPHO_DTLH-PHONBR AND AEDAT = FT_ZOQAPHO_DTLH-AEDAT AND AEZET = FT_ZOQAPHO_DTLH-AEZET. IF SY-SUBRC 0. SELECT SINGLE * INTO CORRESPONDING FIELDS OF FT_ZOQAPHO_HDRH FROM ZOQAPHO_HDRH WHERE DIVISION = FT_ZOQAPHO_DTLH-DIVISION

    AND PHONBR = FT_ZOQAPHO_DTLH-PHONBR AND AEDAT = FT_ZOQAPHO_DTLH-AEDAT AND AEZET = FT_ZOQAPHO_DTLH-AEZET. ENDIF. ENDIF.* Save it APPEND FT_ZOQAPHO_HDRH.

    * Now the detail messages IF FT_ZOQAPHO_DTLH-AEDAT IS INITIAL. SELECT * APPENDING TABLE FT_ZOQAPHO_MSGS FROM ZOQAPHO_MSGS WHERE DIVISION = FT_ZOQAPHO_DTLH-DIVISION

    AND PHONBR = FT_ZOQAPHO_DTLH-PHONBR AND ITEM = FT_ZOQAPHO_DTLH-ITEM AND ERDAT = FT_ZOQAPHO_DTLH-ERDAT AND ERZET = FT_ZOQAPHO_DTLH-ERZET. ELSE. SELECT * APPENDING TABLE FT_ZOQAPHO_MSGS FROM ZOQAPHO_MSGS WHERE DIVISION = FT_ZOQAPHO_DTLH-DIVISION AND PHONBR = FT_ZOQAPHO_DTLH-PHONBR AND ITEM = FT_ZOQAPHO_DTLH-ITEM

  • 7/17/2019 PROGRM97

    37/52

    AND ERDAT = FT_ZOQAPHO_DTLH-AEDAT AND ERZET = FT_ZOQAPHO_DTLH-AEZET. ENDIF. ENDLOOP.

    * Append any material holds APPEND LINES OF LT_ZOQAPHO_HDRH TO FT_ZOQAPHO_HDRH. APPEND LINES OF LT_ZOQAPHO_DTLH TO FT_ZOQAPHO_DTLH. APPEND LINES OF LT_ZOQAPHO_MSGS TO FT_ZOQAPHO_MSGS.

    * Now make sure no extra headers SORT FT_ZOQAPHO_HDRH BY DIVISION PHONBR ERDAT_HIST ERZET_HIST. DELETE ADJACENT DUPLICATES FROM FT_ZOQAPHO_HDRH COMPARING DIVISION PHONBR ERDAT_HIST ERZET_HIST.

    * Make sure only 1 of each DTL SORT FT_ZOQAPHO_DTLH BY DIVISION PHONBR ITEM ERDAT_HIST ERZET_HIST. DELETE ADJACENT DUPLICATES FROM FT_ZOQAPHO_DTLH COMPARING DIVISION PHONBR ITEM ERDAT_HIST ERZET_HIST.

    * Do MSGS SORT FT_ZOQAPHO_MSGS BY DIVISION PHONBR ITEM MATNR CHARG ERDAT ERZETMCOUNT.

    DELETE ADJACENT DUPLICATES FROM FT_ZOQAPHO_MSGS COMPARING DIVISION PHONBR ITEM MATNR CHARG ERDAT ERZETMCOUNT.

    *

    ENDFORM. " sub_check_holds*&--------------------------------------------------------------------**& Form f_check_for_materials*&--------------------------------------------------------------------** text*---------------------------------------------------------------------*

    * -->FT_ZOQAPHO_text* -->FT_ZOQAPHO_text* -->FT_ZOQAPHO_text* -->FP_MATNR text* -->FP_HIST_ALStext*---------------------------------------------------------------------*FORM F_CHECK_FOR_MATERIALS TABLES FT_ZOQAPHO_HDRH STRUCTURE ZOQAPHO_HDRH FT_ZOQAPHO_DTLH STRUCTURE ZOQAPHO_DTLH FT_ZOQAPHO_MSGS STRUCTURE ZOQAPHO_MSGS USING FP_MATNR FP_GET_CHARGS.* Local DATA: LT_ZOQAPHO_HDRH TYPE ZOQAPHO_HDRH OCCURS 0 WITH HEADER LINE,

    LT_ZOQAPHO_DTLH TYPE ZOQAPHO_DTLH OCCURS 0 WITH HEADER LINE, LT_ZOQAPHO_MSGS TYPE ZOQAPHO_MSGS OCCURS 0 WITH HEADER LINE.

    * Get from detail table IF FP_MATNR = 'XXXXXXXXXXXXXXXXXX'. IF NOT S_MATNR[] IS INITIAL. SELECT * APPENDING CORRESPONDING FIELDS OF TABLE LT_ZOQAPHO_DTLH FROM ZOQAPHO_DTL WHERE MATNR IN S_MATNR AND LOT_NBR = ' '

  • 7/17/2019 PROGRM97

    38/52

    AND SERIAL_NBR = ' '. ENDIF. ELSE. SELECT * APPENDING CORRESPONDING FIELDS OF TABLE LT_ZOQAPHO_DTLH FROM ZOQAPHO_DTL WHERE MATNR = FP_MATNR AND LOT_NBR = ' ' AND SERIAL_NBR = ' '.

    ENDIF.

    * The next condition is if batches are requested, use MSGS table IF FP_GET_CHARGS = 'X'. "YeS IF FP_MATNR = 'XXXXXXXXXXXXXXXXXX'. IF NOT S_MATNR[] IS INITIAL. SELECT * APPENDING CORRESPONDING FIELDS OF TABLE LT_ZOQAPHO_MSGS FROM ZOQAPHO_MSGS WHERE MATNR IN S_MATNR AND CHARG ' '. ENDIF. ELSE. SELECT * APPENDING CORRESPONDING FIELDS OF TABLE LT_ZOQAPHO_MSGS FROM ZOQAPHO_MSGS WHERE MATNR = FP_MATNR

    AND CHARG ' '. ENDIF. ENDIF.

    * The next condition is if plant hold, use MSGS table IF FP_MATNR = 'XXXXXXXXXXXXXXXXXX'. IF NOT S_MATNR[] IS INITIAL. SELECT * APPENDING CORRESPONDING FIELDS OF TABLE LT_ZOQAPHO_MSGS FROM ZOQAPHO_MSGS WHERE MATNR IN S_MATNR AND ITEM = '0' "Header item AND VKORG = ' '. "Only main MARA update ENDIF.

    ELSE. SELECT * APPENDING CORRESPONDING FIELDS OF TABLE LT_ZOQAPHO_MSGS FROM ZOQAPHO_MSGS WHERE MATNR = FP_MATNR AND ITEM = '0' "Header item AND VKORG = ' '. "Only main MARA update ENDIF.

    * ------------------------------------------------* Now bring the 2 tables together, DTL & MSGS* ------------------------------------------------

    * Sort

    SORT LT_ZOQAPHO_MSGS BY DIVISION PHONBR ITEM MATNR.

    * loop on the messages and add the header & dtl if not selected LOOP AT LT_ZOQAPHO_MSGS.* dtl? (Could be either date) READ TABLE LT_ZOQAPHO_DTLH WITH KEY DIVISION = LT_ZOQAPHO_MSGS-DIVISION PHONBR = LT_ZOQAPHO_MSGS-PHONBR ITEM = LT_ZOQAPHO_MSGS-ITEM ERDAT = LT_ZOQAPHO_MSGS-ERDAT

  • 7/17/2019 PROGRM97

    39/52

    ERZET = LT_ZOQAPHO_MSGS-ERZET. IF SY-SUBRC 0. READ TABLE LT_ZOQAPHO_DTLH WITH KEY DIVISION = LT_ZOQAPHO_MSGS-DIVISION PHONBR = LT_ZOQAPHO_MSGS-PHONBR ITEM = LT_ZOQAPHO_MSGS-ITEM AEDAT = LT_ZOQAPHO_MSGS-ERDAT AEZET = LT_ZOQAPHO_MSGS-ERZET. ENDIF.

    * If found it then skip rest because DTL will do it. CHECK SY-SUBRC 0.

    * Get detail if not a plant hold/release IF LT_ZOQAPHO_MSGS-ITEM 0.* Get from current first & date check. SELECT SINGLE * INTO CORRESPONDING FIELDS OF LT_ZOQAPHO_DTLH FROM ZOQAPHO_DTL WHERE DIVISION = LT_ZOQAPHO_MSGS-DIVISION AND PHONBR = LT_ZOQAPHO_MSGS-PHONBR AND ITEM = LT_ZOQAPHO_MSGS-ITEM AND ERDAT = LT_ZOQAPHO_MSGS-ERDAT AND ERZET = LT_ZOQAPHO_MSGS-ERZET.* If didn't find it then try other date.

    IF SY-SUBRC 0. SELECT SINGLE * INTO CORRESPONDING FIELDS OF LT_ZOQAPHO_DTLH FROM ZOQAPHO_DTL WHERE DIVISION = LT_ZOQAPHO_MSGS-DIVISION AND PHONBR = LT_ZOQAPHO_MSGS-PHONBR AND ITEM = LT_ZOQAPHO_MSGS-ITEM AND AEDAT = LT_ZOQAPHO_MSGS-ERDAT AND AEZET = LT_ZOQAPHO_MSGS-ERZET. ENDIF.

    * If didn't find it then skip rest & delete because from history IF SY-SUBRC 0. DELETE LT_ZOQAPHO_MSGS.

    CONTINUE. ENDIF.

    * Append detail rec APPEND LT_ZOQAPHO_DTLH TO FT_ZOQAPHO_DTLH.

    ENDIF.

    * First get header if not done it yet IF LT_ZOQAPHO_HDRH-DIVISION LT_ZOQAPHO_MSGS-DIVISION OR LT_ZOQAPHO_HDRH-PHONBR LT_ZOQAPHO_MSGS-PHONBR OR LT_ZOQAPHO_HDRH-AEDAT LT_ZOQAPHO_MSGS-ERDAT OR LT_ZOQAPHO_HDRH-AEZET LT_ZOQAPHO_MSGS-ERZET.

    SELECT SINGLE * INTO CORRESPONDING FIELDS OF LT_ZOQAPHO_HDRH FROM ZOQAPHO_HDR WHERE DIVISION = LT_ZOQAPHO_MSGS-DIVISION AND PHONBR = LT_ZOQAPHO_MSGS-PHONBR AND AEDAT = LT_ZOQAPHO_MSGS-ERDAT AND AEZET = LT_ZOQAPHO_MSGS-ERZET.* If still didn't find it then check history IF SY-SUBRC 0. SELECT SINGLE * INTO CORRESPONDING FIELDS OF LT_ZOQAPHO_HDRH

  • 7/17/2019 PROGRM97

    40/52

    FROM ZOQAPHO_HDRH WHERE DIVISION = LT_ZOQAPHO_MSGS-DIVISION AND PHONBR = LT_ZOQAPHO_MSGS-PHONBR AND AEDAT = LT_ZOQAPHO_MSGS-ERDAT AND AEZET = LT_ZOQAPHO_MSGS-ERZET. ENDIF. ENDIF.

    * If item 0 then can only have hist header if requested. IF LT_ZOQAPHO_MSGS-ITEM = '0'.* IF fp_hist_also = ' '. CHECK LT_ZOQAPHO_HDRH-ERDAT_HIST IS INITIAL.* ENDIF. ENDIF.

    * Now OK to append header rec APPEND LT_ZOQAPHO_HDRH TO FT_ZOQAPHO_HDRH.

    * If Item = 0 then from plant hold so create a detail. CHECK LT_ZOQAPHO_MSGS-ITEM = '0'.

    * If we already created a detail then skip rest CHECK FT_ZOQAPHO_DTLH-DIVISION LT_ZOQAPHO_MSGS-DIVISION OR FT_ZOQAPHO_DTLH-PHONBR LT_ZOQAPHO_MSGS-PHONBR

    OR FT_ZOQAPHO_DTLH-MATNR LT_ZOQAPHO_MSGS-MATNR OR FT_ZOQAPHO_DTLH-ERDAT LT_ZOQAPHO_MSGS-ERDAT OR FT_ZOQAPHO_DTLH-ERZET LT_ZOQAPHO_MSGS-ERZET.

    * build CLEAR FT_ZOQAPHO_DTLH. FT_ZOQAPHO_DTLH-DIVISION = LT_ZOQAPHO_MSGS-DIVISION. FT_ZOQAPHO_DTLH-PHONBR = LT_ZOQAPHO_MSGS-PHONBR. FT_ZOQAPHO_DTLH-MATNR = LT_ZOQAPHO_MSGS-MATNR. FT_ZOQAPHO_DTLH-ERDAT = LT_ZOQAPHO_MSGS-ERDAT. FT_ZOQAPHO_DTLH-ERZET = LT_ZOQAPHO_MSGS-ERZET. ADD 1 TO W_ERZET. FT_ZOQAPHO_DTLH-ERZET_HIST = W_ERZET.

    IF LT_ZOQAPHO_MSGS-ERDAT = LT_ZOQAPHO_HDRH-ERDAT. FT_ZOQAPHO_DTLH-ERNAM = LT_ZOQAPHO_HDRH-ERNAM. ELSE. FT_ZOQAPHO_DTLH-ERNAM = LT_ZOQAPHO_HDRH-AENAM. ENDIF.* Get the status - If plant then hold IF LT_ZOQAPHO_HDRH-WERKS ' '. LOOP AT T_ZOQAPHO_STATUS WHERE STATUS IN R_STATUS_H.* if find an initial status with action then use as priority CHECK T_ZOQAPHO_STATUS-ACTION1 ' '. CHECK T_ZOQAPHO_STATUS-STATUS IN R_STATUS_1. EXIT. ENDLOOP.

    ELSE. LOOP AT T_ZOQAPHO_STATUS WHERE STATUS IN R_STATUS_R.* if find a final status with action then use as priority CHECK T_ZOQAPHO_STATUS-ACTION1 ' '. CHECK T_ZOQAPHO_STATUS-STATUS IN R_STATUS_9. EXIT. ENDLOOP. ENDIF.

    FT_ZOQAPHO_DTLH-STATUS = T_ZOQAPHO_STATUS-STATUS.

  • 7/17/2019 PROGRM97

    41/52

    APPEND FT_ZOQAPHO_DTLH.

    ENDLOOP.

    * Loop at local detail and add to output tables LOOP AT LT_ZOQAPHO_DTLH.* Get header IF LT_ZOQAPHO_HDRH-DIVISION LT_ZOQAPHO_DTLH-DIVISION OR LT_ZOQAPHO_HDRH-PHONBR LT_ZOQAPHO_DTLH-PHONBR OR ( LT_ZOQAPHO_HDRH-AEDAT LT_ZOQAPHO_DTLH-ERDAT AND LT_ZOQAPHO_HDRH-AEDAT LT_ZOQAPHO_DTLH-AEDAT ) OR ( LT_ZOQAPHO_HDRH-AEZET LT_ZOQAPHO_DTLH-ERZET AND LT_ZOQAPHO_HDRH-AEZET LT_ZOQAPHO_DTLH-AEZET ).* Check if from history or current IF LT_ZOQAPHO_DTLH-AEDAT IS INITIAL. SELECT SINGLE * INTO CORRESPONDING FIELDS OF LT_ZOQAPHO_HDRH FROM ZOQAPHO_HDR WHERE DIVISION = LT_ZOQAPHO_DTLH-DIVISION AND PHONBR = LT_ZOQAPHO_DTLH-PHONBR AND AEDAT = LT_ZOQAPHO_DTLH-ERDAT AND AEZET = LT_ZOQAPHO_DTLH-ERZET. IF SY-SUBRC 0. SELECT SINGLE * INTO CORRESPONDING FIELDS OF LT_ZOQAPHO_HDRH FROM ZOQAPHO_HDRH

    WHERE DIVISION = LT_ZOQAPHO_DTLH-DIVISION AND PHONBR = LT_ZOQAPHO_DTLH-PHONBR AND AEDAT = LT_ZOQAPHO_DTLH-ERDAT AND AEZET = LT_ZOQAPHO_DTLH-ERZET. ENDIF. ELSE. SELECT SINGLE * INTO CORRESPONDING FIELDS OF LT_ZOQAPHO_HDRH FROM ZOQAPHO_HDR WHERE DIVISION = LT_ZOQAPHO_DTLH-DIVISION AND PHONBR = LT_ZOQAPHO_DTLH-PHONBR AND AEDAT = LT_ZOQAPHO_DTLH-AEDAT AND AEZET = LT_ZOQAPHO_DTLH-AEZET. IF SY-SUBRC 0.

    SELECT SINGLE * INTO CORRESPONDING FIELDS OF LT_ZOQAPHO_HDRH FROM ZOQAPHO_HDRH WHERE DIVISION = LT_ZOQAPHO_DTLH-DIVISION AND PHONBR = LT_ZOQAPHO_DTLH-PHONBR AND AEDAT = LT_ZOQAPHO_DTLH-AEDAT AND AEZET = LT_ZOQAPHO_DTLH-AEZET. ENDIF. ENDIF.

    * Append header rec APPEND LT_ZOQAPHO_HDRH TO FT_ZOQAPHO_HDRH. ENDIF.

    * Append detail rec APPEND LT_ZOQAPHO_DTLH TO FT_ZOQAPHO_DTLH.

    * Get detail recs. IF LT_ZOQAPHO_DTLH-AEDAT IS INITIAL. SELECT * APPENDING CORRESPONDING FIELDS OF TABLE FT_ZOQAPHO_MSGS FROM ZOQAPHO_MSGS WHERE DIVISION = LT_ZOQAPHO_DTLH-DIVISION AND PHONBR = LT_ZOQAPHO_DTLH-PHONBR AND ITEM = LT_ZOQAPHO_DTLH-ITEM

  • 7/17/2019 PROGRM97

    42/52

    AND ERDAT = LT_ZOQAPHO_DTLH-ERDAT AND ERZET = LT_ZOQAPHO_DTLH-ERZET. ELSE. SELECT * APPENDING CORRESPONDING FIELDS OF TABLE FT_ZOQAPHO_MSGS FROM ZOQAPHO_MSGS WHERE DIVISION = LT_ZOQAPHO_DTLH-DIVISION AND PHONBR = LT_ZOQAPHO_DTLH-PHONBR AND ITEM = LT_ZOQAPHO_DTLH-ITEM AND ERDAT = LT_ZOQAPHO_DTLH-AEDAT AND ERZET = LT_ZOQAPHO_DTLH-AEZET. ENDIF.

    ENDLOOP.

    ENDFORM. "f_check_for_materials*&---------------------------------------------------------------------**& Form f_build_status_ranges*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text*

  • 7/17/2019 PROGRM97

    43/52

    APPEND R_STATUS_9. ENDCASE.

    ENDLOOP.

    ENDFORM. "f_build_status_ranges

    *&--------------------------------------------------------------------**& Form f_select_btchs*&--------------------------------------------------------------------** text*---------------------------------------------------------------------** -->Ft_mch1_TAB text* -->FP_MATNR text* -->FP_CHARG text*---------------------------------------------------------------------*FORM F_SELECT_BTCHS TABLES FT_MCH1_TAB STRUCTURE W_MCH1 USING FP_MATNR FP_CHARG.

    IF FP_MATNR = ' '. SELECT MATNR CHARG APPENDING CORRESPONDING FIELDS OF TABLE FT_MCH1_TAB FROM MCH1

    WHERE CHARG = FP_CHARG. ELSE. SELECT MATNR CHARG APPENDING CORRESPONDING FIELDS OF TABLE FT_MCH1_TAB FROM MCH1 WHERE MATNR = FP_MATNR AND CHARG = FP_CHARG. ENDIF.

    ENDFORM. "f_select_btchs

    *&--------------------------------------------------------------------**& Form f_select_btchs_to_update

    *&--------------------------------------------------------------------** text*---------------------------------------------------------------------** -->Ft_mch1_TAB text* -->FP_LOT_NBR text* -->FP_SERIAL_Ntext*---------------------------------------------------------------------*FORM F_SELECT_BTCHS_TO_UPDATE TABLES FT_MCH1_TAB STRUCTURE W_MCH1. . DATA: LT_CABN LIKE CABN OCCURS 0 WITH HEADER LINE, LW_CABN_B LIKE CABN, LW_CABN_S LIKE CABN,

    LT_AUSP LIKE AUSP OCCURS 0 WITH HEADER LINE, LT_AUSP_B LIKE AUSP OCCURS 0 WITH HEADER LINE, LT_EQUI_TAB TYPE EQUI OCCURS 0 WITH HEADER LINE, LT_INOB LIKE INOB OCCURS 0 WITH HEADER LINE, L_MATNR_LEN TYPE I, L_ATWRT LIKE AUSP-ATWRT. RANGES:R_ATWRT FOR AUSP-ATWRT.* Need matnr length DESCRIBE FIELD FT_MCH1_TAB-MATNR LENGTH L_MATNR_LEN IN CHARACTER MODE.

  • 7/17/2019 PROGRM97

    44/52

    * Need to get the characteristic numbers SELECT ATINN ATNAM INTO CORRESPONDING FIELDS OF TABLE LT_CABN FROM CABN WHERE ATNAM = 'SERIAL_NUMBER' OR ATNAM = 'SOURCE_BATCH_NUMBER'.

    * Advance reads READ TABLE LT_CABN INTO LW_CABN_B WITH KEY ATNAM = 'SOURCE_BATCH_NUMBER'. READ TABLE LT_CABN INTO LW_CABN_S WITH KEY ATNAM = 'SERIAL_NUMBER'.

    * Refresh main table REFRESH LT_AUSP.

    * Scenerio #1 - Only have lot_nbr IF S_SRLNBR[] IS INITIAL.* l_atwrt = fp_lot_nbr. CLEAR R_ATWRT. REFRESH R_ATWRT. LOOP AT S_CHARG. R_ATWRT-LOW = S_CHARG-LOW. R_ATWRT-HIGH = S_CHARG-HIGH. R_ATWRT-SIGN = S_CHARG-SIGN.

    R_ATWRT-OPTION = S_CHARG-OPTION. APPEND R_ATWRT. ENDLOOP.* AUSP holds the characteristic value SELECT OBJEK ATINN KLART ATWRT INTO CORRESPONDING FIELDS OF TABLE LT_AUSP FROM AUSP WHERE KLART = '023' AND ATINN = LW_CABN_B-ATINN AND ATWRT IN R_ATWRT.. CHECK SY-SUBRC = 0.

    * Scenerio #2 - Only have serial_nbr

    ELSEIF S_CHARG[] IS INITIAL.* Try this way first SELECT MATNR SERNR CHARGE INTO CORRESPONDING FIELDS OF TABLE LT_EQUI_TAB FROM EQUI WHERE SERNR IN S_SRLNBR.* if not found then try the slow way to make sure IF SY-SUBRC 0.* l_atwrt = fp_serial_nbr. CLEAR R_ATWRT. REFRESH R_ATWRT. LOOP AT S_SRLNBR. R_ATWRT-LOW = S_SRLNBR-LOW. R_ATWRT-HIGH = S_SRLNBR-HIGH.

    R_ATWRT-SIGN = S_SRLNBR-SIGN. R_ATWRT-OPTION = S_SRLNBR-OPTION. APPEND R_ATWRT. ENDLOOP.

    * AUSP holds the characteristic value SELECT OBJEK ATINN KLART ATWRT INTO CORRESPONDING FIELDS OF TABLE LT_AUSP FROM AUSP WHERE KLART = '023'

  • 7/17/2019 PROGRM97

    45/52

    AND ATINN = LW_CABN_S-ATINN AND ATWRT IN R_ATWRT. CHECK SY-SUBRC = 0. ENDIF.

    * Scenerio #2 - Have both so 2 step process ELSE.* l_atwrt = fp_lot_nbr. CLEAR R_ATWRT. REFRESH R_ATWRT. LOOP AT S_CHARG. R_ATWRT-LOW = S_CHARG-LOW. R_ATWRT-HIGH = S_CHARG-HIGH. R_ATWRT-SIGN = S_CHARG-SIGN. R_ATWRT-OPTION = S_CHARG-OPTION. APPEND R_ATWRT. ENDLOOP.

    * AUSP holds the characteristic value SELECT OBJEK ATINN KLART ATWRT INTO CORRESPONDING FIELDS OF TABLE LT_AUSP_B FROM AUSP WHERE KLART = '023' AND ATINN = LW_CABN_B-ATINN AND ATWRT IN R_ATWRT.

    CHECK SY-SUBRC = 0.* Use the same objects and check if have serial number LOOP AT LT_AUSP_B.* l_atwrt = fp_serial_nbr. CLEAR R_ATWRT. REFRESH R_ATWRT. LOOP AT S_SRLNBR. R_ATWRT-LOW = S_SRLNBR-LOW. R_ATWRT-HIGH = S_SRLNBR-HIGH. R_ATWRT-SIGN = S_SRLNBR-SIGN. R_ATWRT-OPTION = S_SRLNBR-OPTION. APPEND R_ATWRT. ENDLOOP.

    * AUSP holds the characteristic value SELECT OBJEK ATINN KLART ATWRT APPENDING CORRESPONDING FIELDS OF TABLE LT_AUSP FROM AUSP WHERE OBJEK = LT_AUSP_B-OBJEK AND KLART = '023' AND ATINN = LW_CABN_S-ATINN AND ATWRT IN R_ATWRT. ENDLOOP. ENDIF.

    * Check on serial number table LOOP AT LT_EQUI_TAB.

    FT_MCH1_TAB-MATNR = LT_EQUI_TAB-MATNR. FT_MCH1_TAB-CHARG = LT_EQUI_TAB-CHARGE. FT_MCH1_TAB-SERNR = LT_EQUI_TAB-SERNR. APPEND FT_MCH1_TAB. ENDLOOP.

    * Use INOB to get Material/Batch LOOP AT LT_AUSP. SELECT CUOBJ KLART OBTAB OBJEK

  • 7/17/2019 PROGRM97

    46/52

    INTO CORRESPONDING FIELDS OF TABLE LT_INOB FROM INOB WHERE CUOBJ = LT_AUSP-OBJEK AND KLART = '023'. CHECK SY-SUBRC = 0.* Now add to table LOOP AT LT_INOB. CHECK LT_INOB-OBTAB(3) = 'MCH'. FT_MCH1_TAB-MATNR = LT_INOB-OBJEK(L_MATNR_LEN). FT_MCH1_TAB-CHARG = LT_INOB-OBJEK+L_MATNR_LEN. FT_MCH1_TAB-SERNR = LT_AUSP-ATWRT. APPEND FT_MCH1_TAB. ENDLOOP.

    ENDLOOP.

    * Make sure only one occurence of the batch SORT FT_MCH1_TAB BY MATNR CHARG SERNR. DELETE ADJACENT DUPLICATES FROM FT_MCH1_TAB COMPARING MATNR CHARG SERNR.

    ENDFORM. "f_select_btchs_to_update*&---------------------------------------------------------------------**& Form sub_merge_data

    *&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text*

  • 7/17/2019 PROGRM97

    47/52

    ENDLOOP.* Merge the Messages data LOOP AT FT_ZOQAPHO_MSGS. W_PHO_MESSAGES-DIVISION = FT_ZOQAPHO_MSGS-DIVISION. W_PHO_MESSAGES-PHONBR = FT_ZOQAPHO_MSGS-PHONBR. W_PHO_MESSAGES-ITEM = FT_ZOQAPHO_MSGS-ITEM. W_PHO_MESSAGES-ERDAT = FT_ZOQAPHO_MSGS-ERDAT. W_PHO_MESSAGES-ERZET = FT_ZOQAPHO_MSGS-ERZET. W_PHO_MESSAGES-MATNR = FT_ZOQAPHO_MSGS-MATNR. W_PHO_MESSAGES-CHARG = FT_ZOQAPHO_MSGS-CHARG. W_PHO_MESSAGES-ERDAT_1ST = FT_ZOQAPHO_MSGS-ERDAT_1ST. W_PHO_MESSAGES-ERZET_1ST = FT_ZOQAPHO_MSGS-ERZET_1ST. APPEND W_PHO_MESSAGES TO T_PHO_MESSAGES. CLEAR W_PHO_MESSAGES. ENDLOOP. SORT T_PHO_HEADER . DELETE ADJACENT DUPLICATES FROM T_PHO_HEADER COMPARING ALL FIELDS. SORT T_PHO_DETAIL . DELETE ADJACENT DUPLICATES FROM T_PHO_DETAIL COMPARING ALL FIELDS. SORT T_PHO_MESSAGES . DELETE ADJACENT DUPLICATES FROM T_PHO_MESSAGES COMPARING ALL FIELDS.ENDFORM. " sub_merge_data*&--------------------------------------------------------------------**& Form sub_check_for_lotnbr

    *&--------------------------------------------------------------------** text*---------------------------------------------------------------------** -->FT_ZOQAPHO_text* -->FT_ZOQAPHO_text* -->FT_ZOQAPHO_text* -->FP_MATNR text* -->FP_HIST_ALStext*---------------------------------------------------------------------*FORM SUB_CHECK_FOR_LOTNBR TABLES FT_ZOQAPHO_HDRH STRUCTURE ZOQAPHO_HDRH FT_ZOQAPHO_DTLH STRUCTURE ZOQAPHO_DTLH FT_ZOQAPHO_MSGS STRUCTURE ZOQAPHO_MSGS USING FP_CHARG

    FP_GET_CHARGS.* Local DATA: LT_ZOQAPHO_HDRH TYPE ZOQAPHO_HDRH OCCURS 0 WITH HEADER LINE, LT_ZOQAPHO_DTLH TYPE ZOQAPHO_DTLH OCCURS 0 WITH HEADER LINE, LT_ZOQAPHO_MSGS TYPE ZOQAPHO_MSGS OCCURS 0 WITH HEADER LINE.

    * Get from detail table IF FP_CHARG = 'XXXXXXXXXXXXXXXXXX'. IF NOT S_MATNR[] IS INITIAL. SELECT * APPENDING CORRESPONDING FIELDS OF TABLE LT_ZOQAPHO_DTLH FROM ZOQAPHO_DTL WHERE MATNR IN S_MATNR AND LOT_NBR = ' '

    AND SERIAL_NBR = ' '. ENDIF. ELSE. SELECT * APPENDING CORRESPONDING FIELDS OF TABLE LT_ZOQAPHO_DTLH FROM ZOQAPHO_DTL WHERE MATNR = ' ' AND LOT_NBR = FP_CHARG AND SERIAL_NBR = ' '.

    ENDIF.

  • 7/17/2019 PROGRM97

    48/52

    SELECT * APPENDING CORRESPONDING FIELDS OF TABLE LT_ZOQAPHO_MSGS FROM ZOQAPHO_MSGS WHERE CHARG = FP_CHARG.

    * ------------------------------------------------* Now bring the 2 tables together, DTL & MSGS* ------------------------------------------------

    * Sort SORT LT_ZOQAPHO_MSGS BY DIVISION PHONBR ITEM MATNR.

    * loop on the messages and add the header & dtl if not selected LOOP AT LT_ZOQAPHO_MSGS.* dtl? (Could be either date) READ TABLE LT_ZOQAPHO_DTLH WITH KEY DIVISION = LT_ZOQAPHO_MSGS-DIVISION PHONBR = LT_ZOQAPHO_MSGS-PHONBR ITEM = LT_ZOQAPHO_MSGS-ITEM ERDAT = LT_ZOQAPHO_MSGS-ERDAT ERZET = LT_ZOQAPHO_MSGS-ERZET. IF SY-SUBRC 0. READ TABLE LT_ZOQAPHO_DTLH WITH KEY DIVISION = LT_ZOQAPHO_MSGS-DIVISION PHONBR = LT_ZOQAPHO_MSGS-PHONBR

    ITEM = LT_ZOQAPHO_MSGS-ITEM AEDAT = LT_ZOQAPHO_MSGS-ERDAT AEZET = LT_ZOQAPHO_MSGS-ERZET. ENDIF.

    * If found it then skip rest because DTL will do it. CHECK SY-SUBRC 0.

    * Get detail if not a plant hold/release IF LT_ZOQAPHO_MSGS-ITEM 0.* Get from current first & date check. SELECT SINGLE * INTO CORRESPONDING FIELDS OF LT_ZOQAPHO_DTLH FROM ZOQAPHO_DTL

    WHERE DIVISION = LT_ZOQAPHO_MSGS-DIVISION AND PHONBR = LT_ZOQAPHO_MSGS-PHONBR AND ITEM = LT_ZOQAPHO_MSGS-ITEM AND ERDAT = LT_ZOQAPHO_MSGS-ERDAT AND ERZET = LT_ZOQAPHO_MSGS-ERZET.* If didn't find it then try other date. IF SY-SUBRC 0. SELECT SINGLE * INTO CORRESPONDING FIELDS OF LT_ZOQAPHO_DTLH FROM ZOQAPHO_DTL WHERE DIVISION = LT_ZOQAPHO_MSGS-DIVISION AND PHONBR = LT_ZOQAPHO_MSGS-PHONBR AND ITEM = LT_ZOQAPHO_MSGS-ITEM AND AEDAT = LT_ZOQAPHO_MSGS-ERDAT

    AND AEZET = LT_ZOQAPHO_MSGS-ERZET. ENDIF.

    * If didn't find it then skip rest & delete because from history IF SY-SUBRC 0. DELETE LT_ZOQAPHO_MSGS. CONTINUE. ENDIF.* Append detail rec APPEND LT_ZOQAPHO_DTLH TO FT_ZOQAPHO_DTLH.

  • 7/17/2019 PROGRM97

    49/52

    ENDIF.

    * First get header if not done it yet IF LT_ZOQAPHO_HDRH-DIVISION LT_ZOQAPHO_MSGS-DIVISION OR LT_ZOQAPHO_HDRH-PHONBR LT_ZOQAPHO_MSGS-PHONBR OR LT_ZOQAPHO_HDRH-AEDAT LT_ZOQAPHO_MSGS-ERDAT OR LT_ZOQAPHO_HDRH-AEZET LT_ZOQAPHO_MSGS-ERZET.

    SELECT SINGLE * INTO CORRESPONDING FIELDS OF LT_ZOQAPHO_HDRH FROM ZOQAPHO_HDR WHERE DIVISION = LT_ZOQAPHO_MSGS-DIVISION AND PHONBR = LT_ZOQAPHO_MSGS-PHONBR AND AEDAT = LT_ZOQAPHO_MSGS-ERDAT AND AEZET = LT_ZOQAPHO_MSGS-ERZET.* If still didn't find it then check history IF SY-SUBRC 0. SELECT SINGLE * INTO CORRESPONDING FIELDS OF LT_ZOQAPHO_HDRH FROM ZOQAPHO_HDRH WHERE DIVISION = LT_ZOQAPHO_MSGS-DIVISION AND PHONBR = LT_ZOQAPHO_MSGS-PHONBR AND AEDAT = LT_ZOQAPHO_MSGS-ERDAT AND AEZET = LT_ZOQAPHO_MSGS-ERZET. ENDIF.

    ENDIF.

    * If item 0 then can only have hist header if requested. IF LT_ZOQAPHO_MSGS-ITEM = '0'.

    CHECK LT_ZOQAPHO_HDRH-ERDAT_HIST IS INITIAL. ENDIF.

    * Now OK to append header rec APPEND LT_ZOQAPHO_HDRH TO FT_ZOQAPHO_HDRH.

    * If Item = 0 then from plant hold so create a detail. CHECK LT_ZOQAPHO_MSGS-ITEM = '0'.

    * If we already created a detail then skip rest CHECK FT_ZOQAPHO_DTLH-DIVISION LT_ZOQAPHO_MSGS-DIVISION OR FT_ZOQAPHO_DTLH-PHONBR LT_ZOQAPHO_MSGS-PHONBR OR FT_ZOQAPHO_DTLH-MATNR LT_ZOQAPHO_MSGS-MATNR OR FT_ZOQAPHO_DTLH-ERDAT LT_ZOQAPHO_MSGS-ERDAT OR FT_ZOQAPHO_DTLH-ERZET LT_ZOQAPHO_MSG