IF elseif not working

hi sapgurus,
LOOP AT T_KONV INTO W_KONV." WHERE KSCHL+0(3) = 'JIP'
          "OR KSCHL+0(3) = 'ZIP' .
          IF W_KONV-KSCHL =  'JIP1' OR
             W_KONV-KSCHL =  'JIP2' OR
             W_KONV-KSCHL =  'JIP3' OR
             W_KONV-KSCHL =  'JIP4' OR
             W_KONV-KSCHL =  'JIP5' OR
             W_KONV-KSCHL =  'JIP6' OR
             W_KONV-KSCHL =  'JIP7' OR
             W_KONV-KSCHL =  'JIP8' OR
             W_KONV-KSCHL =  'ZIP5' OR
             W_KONV-KSCHL =  'ZIP7'.
            W_VAT = W_KONV-KWERT + W_VAT.
          ELSEIF W_KONV-KSCHL =  'JIP3' OR
                 W_KONV-KSCHL =  'JIP5' OR
                 W_KONV-KSCHL =  'JIP7' OR
                 W_KONV-KSCHL =  'ZIP5' OR
                 W_KONV-KSCHL =  'ZIP7'.
              W_VAT_SET    = W_KONV-KWERT + W_VAT_SET.
          ELSEIF W_KONV-KSCHL =  'JMO1' OR
                 W_KONV-KSCHL =  'JAO1' OR
                 W_KONV-KSCHL =  'JAO2' OR
                 W_KONV-KSCHL =  'JMO2' OR
                 W_KONV-KSCHL =  'JSO1' OR
                 W_KONV-KSCHL =  'JSO2' OR
                 W_KONV-KSCHL =  'JEC1' OR
                 W_KONV-KSCHL =  'JEC2' OR
                 W_KONV-KSCHL =  'JA1S' OR
                 W_KONV-KSCHL =  'JA1I'.
            W_EXC = W_KONV-KWERT + W_EXC.
          ELSEIF W_KONV-KSCHL =  'JMO1' OR
                 W_KONV-KSCHL =  'JAO1' OR
                 W_KONV-KSCHL =  'JEC1' OR
                 W_KONV-KSCHL =  'JSO1' OR
                 W_KONV-KSCHL =  'JA1S' .
            W_EXC_SET = W_KONV-KWERT + W_EXC_SET.
          ELSEIF W_KONV-KSCHL =  'JMO1' OR
                 W_KONV-KSCHL =  'JAO1' OR
                 W_KONV-KSCHL =  'JAO2' OR
                 W_KONV-KSCHL =  'JMO2' OR             "ED
                 W_KONV-KSCHL =  'JSO1' OR
                 W_KONV-KSCHL =  'JSO2' OR
                 W_KONV-KSCHL =  'JEC1' OR
                 W_KONV-KSCHL =  'JEC2' OR
                 W_KONV-KSCHL =  'JA1S' OR
                 W_KONV-KSCHL =  'JA1I'.
            WA_ED = W_KONV-KWERT + WA_ED.
          ELSEIF W_KONV-KSCHL =  'JEC1' OR               "ED CESS
                 W_KONV-KSCHL =  'JSO1' OR
                 W_KONV-KSCHL =  'JA1S'.
            WA_ED_CESS = W_KONV-KWERT + WA_ED_CESS.
          ELSEIF W_KONV-KSCHL =  'JAO2' OR
                 W_KONV-KSCHL =  'JSO1' OR
                 W_KONV-KSCHL =  'JSO2' OR              "CESS
                 W_KONV-KSCHL =  'JEC1' OR
                 W_KONV-KSCHL =  'JEC2' OR
                 W_KONV-KSCHL =  'JA1S' .
            WA_CESS = W_KONV-KWERT + WA_CESS.
          ELSEIF W_KONV-KSCHL =  'JIP1' OR
                 W_KONV-KSCHL =  'JIP2' OR
                 W_KONV-KSCHL =  'JIP3' OR
                 W_KONV-KSCHL =  'ZSRT' OR             "CST
                 W_KONV-KSCHL =  'ZSST' OR
                 W_KONV-KSCHL =  'Z1P4'.
            WA_CST = W_KONV-KWERT + WA_CST.
           ELSE.
            W_OTH = W_KONV-KWERT + W_OTH.
          ENDIF.
        ENDLOOP.
please go thru the code... all the above condition(s) are true still the cursor is not enter from wa_ed. please suggest why?

hi,
try using CASE
                   WHEN
                   WHEN
                   WHEN OTHERS
              ENDCASE
rather than using if...elseif..
regards,
sirisha

Similar Messages

  • Hi ALL i have a BDC code  it is not working properly

    this BDC code is not working properly , when ever the file is transfering BDC is aborting in the case of   invalid material/batch comes into teh picture... so please could you ''Check for invalid material/batch combinations so they are not processed by the BDC in the program and correctly output in an exception report''
    *****************************CODE HERE*****************************
    S E L E C T I O N S C R E E N
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
    PARAMETERS: p_file LIKE rlgrap-filename,
    p_arch LIKE rlgrap-filename. "RM080107
    SELECTION-SCREEN SKIP.
    PARAMETERS: p_mode LIKE ctu_params-dismode DEFAULT 'N'.
    SELECTION-SCREEN END OF BLOCK b1.
    I N C L U D E S
    INCLUDE zwm_np_stock_recon_top.
    INCLUDE zwm_np_stock_recon_f01.
    I N I T I A L I Z A T I O N
    INITIALIZATION.
    PERFORM get_interface_filename USING c_interface_file p_file.
    PERFORM get_interface_filename USING c_archive_file p_arch."RM080107
    S T A R T O F S E L E C T I O N
    START-OF-SELECTION.
    PERFORM read_file USING p_file.
    PERFORM pre_processing.
    E N D O F S E L E C T I O N
    END-OF-SELECTION.
    PERFORM process_checks.
    IF w_no_change = 'X'.
    WRITE: / text-b03.
    WRITE: / sy-uline(34).
    ELSE.
    PERFORM bdc_mi09.
    PERFORM file_check_report.
    PERFORM bdc_report.
    ENDIF.
    PERFORM post_process_checks.
    *-- Move the processed file to archive directory
    PERFORM move_file.
    ...*************.........first include...................************
    INCLUDE ZWM_NP_STOCK_RECON_TOP *
    Data declaration ----------------------------------------------
    TYPES: st_rawdata(2000) TYPE c.
    TYPES: BEGIN OF st_stck_cnt,
    werks TYPE iseg-werks, "plant
    lgort TYPE iseg-lgort, "storage location
    matnr TYPE iseg-matnr, "material number
    charg TYPE iseg-charg, "batch
    vfdat TYPE mch1-vfdat, "Sell by date
    lwedt TYPE mch1-lwedt, "Manufacture date
    quarn(8) TYPE n, "qaunrantine quantity
    menge(8) TYPE n, "quantity on hand
    message(1), "Message Type (E/W/I)
    msg_txt TYPE t100-text, "Message Text
    zerostck(1), "Zero stock identifier "RM220307
    END OF st_stck_cnt.
    TYPES: BEGIN OF st_batch_errors,
    matnr TYPE iseg-matnr, "material number
    charg TYPE iseg-charg, "batch
    clabs TYPE mchb-clabs, "Stock Balance
    END OF st_batch_errors.
    DATA:
    t_rawdata TYPE TABLE OF st_rawdata,
    w_rawdata TYPE st_rawdata,
    t_stck_cnt TYPE TABLE OF st_stck_cnt,
    d_stck_cnt TYPE TABLE OF st_stck_cnt, "RM191006
    w_stck_cnt TYPE st_stck_cnt,
    t_batch_errors TYPE TABLE OF st_batch_errors,
    w_batch_errors TYPE st_batch_errors,
    t_messtab LIKE bdcmsgcoll OCCURS 0,
    w_messtab LIKE LINE OF t_messtab,
    w_no_change.
    CONSTANTS: c_interface_file(26) TYPE c VALUE 'ZNP_STOCK_RECON',
    c_archive_file(26) TYPE c
    VALUE 'ZNP_STOCK_RECON_ARCHIVE'. "RM080107
    .*************................second include..........************
    ***INCLUDE ZWM_NEXTPHARMA_STOKRECON_F01 .
    *& Form read_file
    reads NextPharma file sent through via webmethods
    -->P_FILENAME
    FORM read_file USING p_filename.
    CLEAR: t_rawdata,
    w_rawdata.
    REFRESH: t_rawdata.
    OPEN DATASET p_filename FOR INPUT IN TEXT MODE.
    IF sy-subrc <> 0.
    MESSAGE e720(01).
    ENDIF.
    DO.
    READ DATASET p_filename INTO w_rawdata.
    IF sy-subrc <> 0.
    EXIT.
    ELSE.
    APPEND w_rawdata TO t_rawdata.
    ENDIF.
    ENDDO.
    CLOSE DATASET p_filename.
    ENDFORM. " read_file
    *& Form pre_processing
    Read file values into internal table
    FORM pre_processing.
    DATA: lw_matnr TYPE iseg-matnr.
    LOOP AT t_rawdata INTO w_rawdata.
    lw_matnr = w_rawdata+21(20). "RM031006
    lw_matnr = w_rawdata+22(18). "RM031006
    CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
    EXPORTING
    input = lw_matnr
    IMPORTING
    output = lw_matnr
    EXCEPTIONS
    length_error = 1
    OTHERS = 2.
    MOVE: lw_matnr TO w_stck_cnt-matnr.
    w_stck_cnt-werks = w_rawdata+14(4).
    w_stck_cnt-lgort = w_rawdata+18(4).
    w_stck_cnt-charg = w_rawdata+84(25).
    w_stck_cnt-vfdat = w_rawdata+109(8).
    w_stck_cnt-lwedt = w_rawdata+117(8).
    w_stck_cnt-quarn = w_rawdata+141(8).
    w_stck_cnt-menge = w_rawdata+125(8).
    APPEND w_stck_cnt TO t_stck_cnt.
    CLEAR w_stck_cnt.
    ENDLOOP.
    SORT t_stck_cnt BY werks
    lgort
    matnr
    charg.
    DELETE ADJACENT DUPLICATES FROM t_stck_cnt.
    ENDFORM. " pre_processing
    *& Form bdc_mi09
    Run file data via BDC TCODE: MI09
    FORM bdc_mi09.
    DATA: t_bdcdata TYPE TABLE OF bdcdata,
    w_bdcdata TYPE bdcdata,
    lw_datum(10) TYPE c,
    lw_count(2) TYPE n.
    WRITE sy-datum TO lw_datum DD/MM/YYYY.
    Front Screen
    CLEAR w_bdcdata.
    w_bdcdata-program = 'SAPMM07I'.
    w_bdcdata-dynpro = '0700'.
    w_bdcdata-dynbegin = 'X'.
    APPEND w_bdcdata TO t_bdcdata.
    Enter
    CLEAR w_bdcdata.
    w_bdcdata-fnam = 'BDC_OKCODE'.
    w_bdcdata-fval = '/00'.
    APPEND w_bdcdata TO t_bdcdata.
    Count Date
    CLEAR w_bdcdata.
    w_bdcdata-fnam = 'RM07I-ZLDAT'.
    w_bdcdata-fval = lw_datum.
    APPEND w_bdcdata TO t_bdcdata.
    Document Date
    CLEAR w_bdcdata.
    w_bdcdata-fnam = 'RM07I-BLDAT'.
    w_bdcdata-fval = lw_datum.
    APPEND w_bdcdata TO t_bdcdata.
    Plant
    CLEAR w_bdcdata.
    w_bdcdata-fnam = 'IKPF-WERKS'.
    w_bdcdata-fval = w_stck_cnt-werks.
    APPEND w_bdcdata TO t_bdcdata.
    Storage Location
    CLEAR w_bdcdata.
    w_bdcdata-fnam = 'IKPF-LGORT'.
    w_bdcdata-fval = w_stck_cnt-lgort.
    APPEND w_bdcdata TO t_bdcdata.
    LOOP AT t_stck_cnt INTO w_stck_cnt.
    Do not submit items with Errors against them
    CHECK w_stck_cnt-message NE 'E' AND
    w_stck_cnt-zerostck NE 'X'.
    "RM220307
    lw_count = lw_count + 1.
    Input Screen
    CLEAR w_bdcdata.
    w_bdcdata-program = 'SAPMM07I'.
    w_bdcdata-dynpro = '0731'.
    w_bdcdata-dynbegin = 'X'.
    APPEND w_bdcdata TO t_bdcdata.
    Page Down
    CLEAR w_bdcdata.
    w_bdcdata-fnam = 'BDC_OKCODE'.
    w_bdcdata-fval = '=P+'.
    APPEND w_bdcdata TO t_bdcdata.
    Material
    CLEAR w_bdcdata.
    w_bdcdata-fnam = 'ISEG-MATNR(01)'.
    w_bdcdata-fval = w_stck_cnt-matnr.
    APPEND w_bdcdata TO t_bdcdata.
    Batch
    CLEAR w_bdcdata.
    w_bdcdata-fnam = 'ISEG-CHARG(01)'.
    w_bdcdata-fval = w_stck_cnt-charg.
    APPEND w_bdcdata TO t_bdcdata.
    IF w_stck_cnt-menge NE 0.
    Quantity
    CLEAR w_bdcdata.
    w_bdcdata-fnam = 'ISEG-ERFMG(01)'.
    w_bdcdata-fval = w_stck_cnt-menge.
    APPEND w_bdcdata TO t_bdcdata.
    *-- Begin RM220307 - We need to create an item when the quantity is zero
    *-- in file and is non-zero in SAP
    ELSE.
    Zero Stock indicator
    CLEAR w_bdcdata.
    w_bdcdata-fnam = 'ISEG-XNULL(01)'.
    w_bdcdata-fval = 'X'.
    APPEND w_bdcdata TO t_bdcdata.
    *-- End RM220307
    ENDIF.
    ENDLOOP.
    CHECK lw_count NE 0.
    After all line items have been input
    Final Screen
    CLEAR w_bdcdata.
    w_bdcdata-program = 'SAPMM07I'.
    w_bdcdata-dynpro = '0731'.
    w_bdcdata-dynbegin = 'X'.
    APPEND w_bdcdata TO t_bdcdata.
    Save Document
    CLEAR w_bdcdata.
    w_bdcdata-fnam = 'BDC_OKCODE'.
    w_bdcdata-fval = '=BU'.
    APPEND w_bdcdata TO t_bdcdata.
    CALL TRANSACTION 'MI09' USING t_bdcdata
    MODE p_mode
    MESSAGES INTO t_messtab.
    ENDFORM. " bdc_mi09
    *& Form bdc_report
    Write BDC Messages.
    FORM bdc_report.
    DATA: lw_text TYPE t100-text.
    SKIP.
    WRITE: / text-b01.
    WRITE: / sy-uline(21).
    SKIP.
    Write BDC Messages
    LOOP AT t_messtab INTO w_messtab WHERE msgspra = sy-langu.
    MESSAGE ID w_messtab-msgid TYPE w_messtab-msgtyp
    NUMBER w_messtab-msgnr
    WITH w_messtab-msgv1
    w_messtab-msgv2
    w_messtab-msgv3
    w_messtab-msgv4
    INTO lw_text.
    WRITE: / lw_text.
    ENDLOOP.
    ENDFORM. " bdc_report
    *& Form process_checks
    Perform process check before creating BDC Session
    FORM process_checks.
    DATA: lw_clabs LIKE mchb-clabs,
    lw_menge LIKE mchb-clabs,
    lw_matnr LIKE mara-matnr,
    lw_charg LIKE mch1-charg,
    lw_fail,
    lw_vfdat TYPE mch1-vfdat,
    lv_sell TYPE c, "RM191006
    lv_qty(8) TYPE c. "RM191006
    CLEAR: d_stck_cnt[], d_stck_cnt. "RM191006
    Check if any of the stock figures differ from current stock figures
    LOOP AT t_stck_cnt INTO w_stck_cnt.
    lw_menge = w_stck_cnt-menge.
    SELECT SINGLE clabs INTO lw_clabs
    FROM mchb
    WHERE matnr = w_stck_cnt-matnr
    AND werks = w_stck_cnt-werks
    AND lgort = w_stck_cnt-lgort
    AND charg = w_stck_cnt-charg.
    IF sy-subrc = 0.
    IF lw_clabs NE lw_menge.
    lw_fail = 'X'.
    *-- Begin RM220307 - Do not create PI item if the stock is zero in the
    *-- file and is zero in SAP
    EXIT.
    ELSEIF lw_clabs = 0 AND lw_menge = 0.
    w_stck_cnt-zerostck = 'X'.
    MODIFY t_stck_cnt FROM w_stck_cnt.
    ENDIF.
    *-- End RM220307
    ELSE.
    lw_fail = 'X'.
    ERROR
    ENDIF.
    ENDLOOP.
    If no differences are found set NO CHANGE Flag
    IF lw_fail NE 'X'.
    w_no_change = 'X'.
    EXIT.
    ENDIF.
    Check for Errors in file data
    LOOP AT t_stck_cnt INTO w_stck_cnt.
    CLEAR lv_sell. "RM191006
    SELECT SINGLE matnr INTO lw_matnr
    FROM mara
    WHERE matnr = w_stck_cnt-matnr.
    IF sy-subrc NE 0.
    Invalid Material (E)
    w_stck_cnt-message = 'E'.
    w_stck_cnt-msg_txt = 'Invalid Material'.
    MODIFY t_stck_cnt FROM w_stck_cnt.
    CONTINUE.
    ENDIF.
    SELECT SINGLE charg vfdat
    INTO (lw_charg, lw_vfdat)
    FROM mch1 "KOB01 - changed from MCHA
    WHERE matnr = w_stck_cnt-matnr
    AND charg = w_stck_cnt-charg.
    AND werks = w_stck_cnt-werks.
    IF sy-subrc NE 0.
    Invalid Material Batch (E)
    w_stck_cnt-message = 'E'.
    CONCATENATE 'Invalid Material Batch for plant' w_stck_cnt-werks
    INTO w_stck_cnt-msg_txt SEPARATED BY space.
    MODIFY t_stck_cnt FROM w_stck_cnt.
    CONTINUE.
    ELSE.
    IF w_stck_cnt-vfdat <> lw_vfdat.
    Sell by dates do not match (W)
    w_stck_cnt-message = 'W'.
    w_stck_cnt-msg_txt =
    'Sell by Date does not match Shelf life Expiry Date'.
    MODIFY t_stck_cnt FROM w_stck_cnt.
    lv_sell = 'X'. "RM191006
    CONTINUE. "RM191006
    ENDIF.
    ENDIF.
    IF w_stck_cnt-quarn > 0.
    Quarantine balance not Zero (W)
    w_stck_cnt-message = 'W'.
    *-- Begin RM191006
    *-- We do want all warning messages on the report
    lv_qty = w_stck_cnt-quarn.
    CONDENSE lv_qty NO-GAPS.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
    EXPORTING
    input = lv_qty
    IMPORTING
    output = lv_qty.
    w_stck_cnt-msg_txt = 'Quarantine balance is not zero'.
    CONCATENATE 'Quarantine balance is ' lv_qty '- not zero'
    INTO w_stck_cnt-msg_txt SEPARATED BY space.
    MODIFY t_stck_cnt FROM w_stck_cnt.
    CONTINUE.
    IF lv_sell = 'X'.
    APPEND w_stck_cnt TO d_stck_cnt.
    CLEAR lv_sell.
    ELSE.
    MODIFY t_stck_cnt FROM w_stck_cnt.
    ENDIF.
    *-- End RM191006
    ENDIF.
    ENDLOOP.
    *-- Begin RM191006
    *-- Finally get all the records into dummy table to report
    APPEND LINES OF t_stck_cnt TO d_stck_cnt.
    SORT d_stck_cnt.
    DELETE ADJACENT DUPLICATES FROM d_stck_cnt.
    *-- End RM191006
    ENDFORM. " process_checks
    *& Form file_check_report
    Write warning and Error messages from File checks
    FORM file_check_report.
    WRITE: /2 'Material',
    22 'Batch',
    32 'Sell By',
    45 'Message Text'.
    WRITE: /2 sy-uline(115).
    SKIP.
    LOOP AT t_stck_cnt INTO w_stck_cnt. "RM191006
    LOOP AT d_stck_cnt INTO w_stck_cnt. "RM191006
    CHECK w_stck_cnt-message NE ' '.
    WRITE: /2 w_stck_cnt-matnr,
    22 w_stck_cnt-charg,
    32 w_stck_cnt-vfdat,
    43 w_stck_cnt-message,
    45 w_stck_cnt-msg_txt.
    ENDLOOP.
    ENDFORM. " file_check_report
    *& Form post_process_checks
    Check Material Batches in SAP against NP File
    FORM post_process_checks.
    RANGES: r_matnr FOR mchb-matnr,
    r_lgort FOR mchb-lgort,
    r_werks FOR mchb-werks.
    SORT t_stck_cnt.
    LOOP AT t_stck_cnt INTO w_stck_cnt.
    AT END OF matnr.
    r_lgort-sign = 'I'.
    r_lgort-option = 'EQ'.
    r_lgort-low = w_stck_cnt-lgort.
    APPEND r_lgort.
    r_werks-sign = 'I'.
    r_werks-option = 'EQ'.
    r_werks-low = w_stck_cnt-werks.
    APPEND r_werks.
    r_matnr-sign = 'I'.
    r_matnr-option = 'EQ'.
    r_matnr-low = w_stck_cnt-matnr.
    APPEND r_matnr.
    ENDAT.
    ENDLOOP.
    Select all material batches for NP Materials
    SELECT matnr charg clabs
    INTO TABLE t_batch_errors
    FROM mchb
    WHERE werks IN r_werks
    AND lgort IN r_lgort.
    IF sy-subrc EQ 0.
    Check if the Material Batches are in the NP file
    LOOP AT t_batch_errors INTO w_batch_errors.
    Disregard Batches without positive unrestricted stock
    IF w_batch_errors-clabs LE 0.
    DELETE t_batch_errors.
    CONTINUE.
    ENDIF.
    READ TABLE t_stck_cnt INTO w_stck_cnt
    WITH KEY matnr = w_batch_errors-matnr
    charg = w_batch_errors-charg.
    IF sy-subrc = 0.
    DELETE t_batch_errors.
    ENDIF.
    ENDLOOP.
    ENDIF.
    CHECK NOT t_batch_errors[] IS INITIAL.
    Write Batch chak results to report
    SKIP.
    WRITE: / text-b02.
    WRITE: / sy-uline(74).
    WRITE: /2 'Material',
    22 'Batch'.
    WRITE: /2 sy-uline(32).
    SKIP.
    LOOP AT t_batch_errors INTO w_batch_errors.
    WRITE: /2 w_batch_errors-matnr,
    22 w_batch_errors-charg.
    ENDLOOP.
    ENDFORM. " post_process_checks
    G E T _ I N T E R F A C E _ F I L E N A M E
    FORM get_interface_filename USING filename lw_path.
    DATA: i_file TYPE filename-fileintern,
    out_filename LIKE v_path-pathextern.
    CLEAR: out_filename.
    i_file = filename.
    get the interface filename to be used when creating file
    CALL FUNCTION 'FILE_GET_NAME'
    EXPORTING
    logical_filename = i_file
    IMPORTING
    file_name = out_filename
    EXCEPTIONS
    file_not_found = 1
    OTHERS = 2.
    IF sy-subrc = 0.
    MOVE out_filename TO lw_path.
    IF filename NE c_archive_file. "RM080107
    CONCATENATE lw_path 'NP_StockBalance.dat'
    INTO lw_path.
    *-- Begin RM080107 - Add timestamp to the archived file
    ELSE.
    CONCATENATE lw_path 'NP_StockBalance' sy-datum sy-uzeit '.dat'
    INTO lw_path.
    ENDIF.
    *-- End RM080107
    ELSE.
    ENDIF.
    ENDFORM. "get_interface_filename
    *& Form move_file RM080107
    Move the processed file to archive directory
    FORM move_file.
    *-- At last move the file to archive directory
    OPEN DATASET p_arch FOR OUTPUT IN TEXT MODE.
    IF sy-subrc = 0.
    LOOP AT t_rawdata INTO w_rawdata.
    TRANSFER w_rawdata TO p_arch.
    ENDLOOP.
    ENDIF.
    CLOSE DATASET p_arch.
    DELETE DATASET p_file.
    ENDFORM. " move_file

    Hi,
    S E L E C T I O N S C R E E N
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
    PARAMETERS: p_file LIKE rlgrap-filename,
    p_arch LIKE rlgrap-filename. "RM080107
    SELECTION-SCREEN SKIP.
    PARAMETERS: p_mode LIKE ctu_params-dismode DEFAULT 'N'.
    SELECTION-SCREEN END OF BLOCK b1.
    I N C L U D E S
    INCLUDE zwm_np_stock_recon_top.
    INCLUDE zwm_np_stock_recon_f01.
    I N I T I A L I Z A T I O N
    INITIALIZATION.
    PERFORM get_interface_filename USING c_interface_file p_file.
    PERFORM get_interface_filename USING c_archive_file p_arch."RM080107
    S T A R T O F S E L E C T I O N
    START-OF-SELECTION.
    PERFORM read_file USING p_file.
    PERFORM pre_processing.
    E N D O F S E L E C T I O N
    END-OF-SELECTION.
    PERFORM process_checks.
    IF w_no_change = 'X'.
    WRITE: / text-b03.
    WRITE: / sy-uline(34).
    ELSE.
    PERFORM bdc_mi09.
    PERFORM file_check_report.
    PERFORM bdc_report.
    ENDIF.
    PERFORM post_process_checks.
    *-- Move the processed file to archive directory
    PERFORM move_file.
    ...*************.........first include...................************
    INCLUDE ZWM_NP_STOCK_RECON_TOP *
    Data declaration ----------------------------------------------
    TYPES: st_rawdata(2000) TYPE c.
    TYPES: BEGIN OF st_stck_cnt,
    werks TYPE iseg-werks, "plant
    lgort TYPE iseg-lgort, "storage location
    matnr TYPE iseg-matnr, "material number
    charg TYPE iseg-charg, "batch
    vfdat TYPE mch1-vfdat, "Sell by date
    lwedt TYPE mch1-lwedt, "Manufacture date
    quarn(8) TYPE n, "qaunrantine quantity
    menge(8) TYPE n, "quantity on hand
    message(1), "Message Type (E/W/I)
    msg_txt TYPE t100-text, "Message Text
    zerostck(1), "Zero stock identifier "RM220307
    END OF st_stck_cnt.
    TYPES: BEGIN OF st_batch_errors,
    matnr TYPE iseg-matnr, "material number
    charg TYPE iseg-charg, "batch
    clabs TYPE mchb-clabs, "Stock Balance
    END OF st_batch_errors.
    DATA:
    t_rawdata TYPE TABLE OF st_rawdata,
    w_rawdata TYPE st_rawdata,
    t_stck_cnt TYPE TABLE OF st_stck_cnt,
    d_stck_cnt TYPE TABLE OF st_stck_cnt, "RM191006
    w_stck_cnt TYPE st_stck_cnt,
    t_batch_errors TYPE TABLE OF st_batch_errors,
    w_batch_errors TYPE st_batch_errors,
    t_messtab LIKE bdcmsgcoll OCCURS 0,
    w_messtab LIKE LINE OF t_messtab,
    w_no_change.
    CONSTANTS: c_interface_file(26) TYPE c VALUE 'ZNP_STOCK_RECON',
    c_archive_file(26) TYPE c
    VALUE 'ZNP_STOCK_RECON_ARCHIVE'. "RM080107
    .*************................second include..........************
    ***INCLUDE ZWM_NEXTPHARMA_STOKRECON_F01 .
    *& Form read_file
    reads NextPharma file sent through via webmethods
    -->P_FILENAME
    FORM read_file USING p_filename.
    CLEAR: t_rawdata,
    w_rawdata.
    REFRESH: t_rawdata.
    OPEN DATASET p_filename FOR INPUT IN TEXT MODE.
    IF sy-subrc <> 0.
    MESSAGE e720(01).
    ENDIF.
    DO.
    READ DATASET p_filename INTO w_rawdata.
    IF sy-subrc <> 0.
    EXIT.
    ELSE.
    APPEND w_rawdata TO t_rawdata.
    ENDIF.
    ENDDO.
    CLOSE DATASET p_filename.
    ENDFORM. " read_file
    *& Form pre_processing
    Read file values into internal table
    FORM pre_processing.
    DATA: lw_matnr TYPE iseg-matnr.
    LOOP AT t_rawdata INTO w_rawdata.
    lw_matnr = w_rawdata+21(20). "RM031006
    lw_matnr = w_rawdata+22(18). "RM031006
    CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
    EXPORTING
    input = lw_matnr
    IMPORTING
    output = lw_matnr
    EXCEPTIONS
    length_error = 1
    OTHERS = 2.
    MOVE: lw_matnr TO w_stck_cnt-matnr.
    w_stck_cnt-werks = w_rawdata+14(4).
    w_stck_cnt-lgort = w_rawdata+18(4).
    w_stck_cnt-charg = w_rawdata+84(25).
    w_stck_cnt-vfdat = w_rawdata+109(8).
    w_stck_cnt-lwedt = w_rawdata+117(8).
    w_stck_cnt-quarn = w_rawdata+141(8).
    w_stck_cnt-menge = w_rawdata+125(8).
    APPEND w_stck_cnt TO t_stck_cnt.
    CLEAR w_stck_cnt.
    ENDLOOP.
    SORT t_stck_cnt BY werks
    lgort
    matnr
    charg.
    DELETE ADJACENT DUPLICATES FROM t_stck_cnt.
    ENDFORM. " pre_processing
    *& Form bdc_mi09
    Run file data via BDC TCODE: MI09
    FORM bdc_mi09.
    DATA: t_bdcdata TYPE TABLE OF bdcdata,
    w_bdcdata TYPE bdcdata,
    lw_datum(10) TYPE c,
    lw_count(2) TYPE n.
    WRITE sy-datum TO lw_datum DD/MM/YYYY.
    <b>select single MATNR
                       WERKS
                       CHARG
               from MCHA
               into (l_matnr, l_werks, l_charg)
               where matnr = w_stck_cnt-matnr
                  and werks = w_stck_cnt-werks.
                  and charg =  w_stck_cnt-charg.
    if sy-subrc ne 0.
    continue.
    endif.</b>
    Front Screen
    CLEAR w_bdcdata.
    w_bdcdata-program = 'SAPMM07I'.
    w_bdcdata-dynpro = '0700'.
    w_bdcdata-dynbegin = 'X'.
    APPEND w_bdcdata TO t_bdcdata.
    Enter
    CLEAR w_bdcdata.
    w_bdcdata-fnam = 'BDC_OKCODE'.
    w_bdcdata-fval = '/00'.
    APPEND w_bdcdata TO t_bdcdata.
    Count Date
    CLEAR w_bdcdata.
    w_bdcdata-fnam = 'RM07I-ZLDAT'.
    w_bdcdata-fval = lw_datum.
    APPEND w_bdcdata TO t_bdcdata.
    Document Date
    CLEAR w_bdcdata.
    w_bdcdata-fnam = 'RM07I-BLDAT'.
    w_bdcdata-fval = lw_datum.
    APPEND w_bdcdata TO t_bdcdata.
    Plant
    CLEAR w_bdcdata.
    w_bdcdata-fnam = 'IKPF-WERKS'.
    w_bdcdata-fval = w_stck_cnt-werks.
    APPEND w_bdcdata TO t_bdcdata.
    Storage Location
    CLEAR w_bdcdata.
    w_bdcdata-fnam = 'IKPF-LGORT'.
    w_bdcdata-fval = w_stck_cnt-lgort.
    APPEND w_bdcdata TO t_bdcdata.
    LOOP AT t_stck_cnt INTO w_stck_cnt.
    Do not submit items with Errors against them
    CHECK w_stck_cnt-message NE 'E' AND
    w_stck_cnt-zerostck NE 'X'.
    "RM220307
    lw_count = lw_count + 1.
    Input Screen
    CLEAR w_bdcdata.
    w_bdcdata-program = 'SAPMM07I'.
    w_bdcdata-dynpro = '0731'.
    w_bdcdata-dynbegin = 'X'.
    APPEND w_bdcdata TO t_bdcdata.
    Page Down
    CLEAR w_bdcdata.
    w_bdcdata-fnam = 'BDC_OKCODE'.
    w_bdcdata-fval = '=P+'.
    APPEND w_bdcdata TO t_bdcdata.
    Material
    CLEAR w_bdcdata.
    w_bdcdata-fnam = 'ISEG-MATNR(01)'.
    w_bdcdata-fval = w_stck_cnt-matnr.
    APPEND w_bdcdata TO t_bdcdata.
    Batch
    CLEAR w_bdcdata.
    w_bdcdata-fnam = 'ISEG-CHARG(01)'.
    w_bdcdata-fval = w_stck_cnt-charg.
    APPEND w_bdcdata TO t_bdcdata.
    IF w_stck_cnt-menge NE 0.
    Quantity
    CLEAR w_bdcdata.
    w_bdcdata-fnam = 'ISEG-ERFMG(01)'.
    w_bdcdata-fval = w_stck_cnt-menge.
    APPEND w_bdcdata TO t_bdcdata.
    *-- Begin RM220307 - We need to create an item when the quantity is zero
    *-- in file and is non-zero in SAP
    ELSE.
    Zero Stock indicator
    CLEAR w_bdcdata.
    w_bdcdata-fnam = 'ISEG-XNULL(01)'.
    w_bdcdata-fval = 'X'.
    APPEND w_bdcdata TO t_bdcdata.
    *-- End RM220307
    ENDIF.
    ENDLOOP.
    CHECK lw_count NE 0.
    After all line items have been input
    Final Screen
    CLEAR w_bdcdata.
    w_bdcdata-program = 'SAPMM07I'.
    w_bdcdata-dynpro = '0731'.
    w_bdcdata-dynbegin = 'X'.
    APPEND w_bdcdata TO t_bdcdata.
    Save Document
    CLEAR w_bdcdata.
    w_bdcdata-fnam = 'BDC_OKCODE'.
    w_bdcdata-fval = '=BU'.
    APPEND w_bdcdata TO t_bdcdata.
    CALL TRANSACTION 'MI09' USING t_bdcdata
    MODE p_mode
    MESSAGES INTO t_messtab.
    ENDFORM. " bdc_mi09
    *& Form bdc_report
    Write BDC Messages.
    FORM bdc_report.
    DATA: lw_text TYPE t100-text.
    SKIP.
    WRITE: / text-b01.
    WRITE: / sy-uline(21).
    SKIP.
    Write BDC Messages
    LOOP AT t_messtab INTO w_messtab WHERE msgspra = sy-langu.
    MESSAGE ID w_messtab-msgid TYPE w_messtab-msgtyp
    NUMBER w_messtab-msgnr
    WITH w_messtab-msgv1
    w_messtab-msgv2
    w_messtab-msgv3
    w_messtab-msgv4
    INTO lw_text.
    WRITE: / lw_text.
    ENDLOOP.
    ENDFORM. " bdc_report
    *& Form process_checks
    Perform process check before creating BDC Session
    FORM process_checks.
    DATA: lw_clabs LIKE mchb-clabs,
    lw_menge LIKE mchb-clabs,
    lw_matnr LIKE mara-matnr,
    lw_charg LIKE mch1-charg,
    lw_fail,
    lw_vfdat TYPE mch1-vfdat,
    lv_sell TYPE c, "RM191006
    lv_qty(8) TYPE c. "RM191006
    CLEAR: d_stck_cnt[], d_stck_cnt. "RM191006
    Check if any of the stock figures differ from current stock figures
    LOOP AT t_stck_cnt INTO w_stck_cnt.
    lw_menge = w_stck_cnt-menge.
    SELECT SINGLE clabs INTO lw_clabs
    FROM mchb
    WHERE matnr = w_stck_cnt-matnr
    AND werks = w_stck_cnt-werks
    AND lgort = w_stck_cnt-lgort
    AND charg = w_stck_cnt-charg.
    IF sy-subrc = 0.
    IF lw_clabs NE lw_menge.
    lw_fail = 'X'.
    *-- Begin RM220307 - Do not create PI item if the stock is zero in the
    *-- file and is zero in SAP
    EXIT.
    ELSEIF lw_clabs = 0 AND lw_menge = 0.
    w_stck_cnt-zerostck = 'X'.
    MODIFY t_stck_cnt FROM w_stck_cnt.
    ENDIF.
    *-- End RM220307
    ELSE.
    lw_fail = 'X'.
    ERROR
    ENDIF.
    ENDLOOP.
    If no differences are found set NO CHANGE Flag
    IF lw_fail NE 'X'.
    w_no_change = 'X'.
    EXIT.
    ENDIF.
    Check for Errors in file data
    LOOP AT t_stck_cnt INTO w_stck_cnt.
    CLEAR lv_sell. "RM191006
    SELECT SINGLE matnr INTO lw_matnr
    FROM mara
    WHERE matnr = w_stck_cnt-matnr.
    IF sy-subrc NE 0.
    Invalid Material (E)
    w_stck_cnt-message = 'E'.
    w_stck_cnt-msg_txt = 'Invalid Material'.
    MODIFY t_stck_cnt FROM w_stck_cnt.
    CONTINUE.
    ENDIF.
    SELECT SINGLE charg vfdat
    INTO (lw_charg, lw_vfdat)
    FROM mch1 "KOB01 - changed from MCHA
    WHERE matnr = w_stck_cnt-matnr
    AND charg = w_stck_cnt-charg.
    AND werks = w_stck_cnt-werks.
    IF sy-subrc NE 0.
    Invalid Material Batch (E)
    w_stck_cnt-message = 'E'.
    CONCATENATE 'Invalid Material Batch for plant' w_stck_cnt-werks
    INTO w_stck_cnt-msg_txt SEPARATED BY space.
    MODIFY t_stck_cnt FROM w_stck_cnt.
    CONTINUE.
    ELSE.
    IF w_stck_cnt-vfdat <> lw_vfdat.
    Sell by dates do not match (W)
    w_stck_cnt-message = 'W'.
    w_stck_cnt-msg_txt =
    'Sell by Date does not match Shelf life Expiry Date'.
    MODIFY t_stck_cnt FROM w_stck_cnt.
    lv_sell = 'X'. "RM191006
    CONTINUE. "RM191006
    ENDIF.
    ENDIF.
    IF w_stck_cnt-quarn > 0.
    Quarantine balance not Zero (W)
    w_stck_cnt-message = 'W'.
    *-- Begin RM191006
    *-- We do want all warning messages on the report
    lv_qty = w_stck_cnt-quarn.
    CONDENSE lv_qty NO-GAPS.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
    EXPORTING
    input = lv_qty
    IMPORTING
    output = lv_qty.
    w_stck_cnt-msg_txt = 'Quarantine balance is not zero'.
    CONCATENATE 'Quarantine balance is ' lv_qty '- not zero'
    INTO w_stck_cnt-msg_txt SEPARATED BY space.
    MODIFY t_stck_cnt FROM w_stck_cnt.
    CONTINUE.
    IF lv_sell = 'X'.
    APPEND w_stck_cnt TO d_stck_cnt.
    CLEAR lv_sell.
    ELSE.
    MODIFY t_stck_cnt FROM w_stck_cnt.
    ENDIF.
    *-- End RM191006
    ENDIF.
    ENDLOOP.
    *-- Begin RM191006
    *-- Finally get all the records into dummy table to report
    APPEND LINES OF t_stck_cnt TO d_stck_cnt.
    SORT d_stck_cnt.
    DELETE ADJACENT DUPLICATES FROM d_stck_cnt.
    *-- End RM191006
    ENDFORM. " process_checks
    *& Form file_check_report
    Write warning and Error messages from File checks
    FORM file_check_report.
    WRITE: /2 'Material',
    22 'Batch',
    32 'Sell By',
    45 'Message Text'.
    WRITE: /2 sy-uline(115).
    SKIP.
    LOOP AT t_stck_cnt INTO w_stck_cnt. "RM191006
    LOOP AT d_stck_cnt INTO w_stck_cnt. "RM191006
    CHECK w_stck_cnt-message NE ' '.
    WRITE: /2 w_stck_cnt-matnr,
    22 w_stck_cnt-charg,
    32 w_stck_cnt-vfdat,
    43 w_stck_cnt-message,
    45 w_stck_cnt-msg_txt.
    ENDLOOP.
    ENDFORM. " file_check_report
    *& Form post_process_checks
    Check Material Batches in SAP against NP File
    FORM post_process_checks.
    RANGES: r_matnr FOR mchb-matnr,
    r_lgort FOR mchb-lgort,
    r_werks FOR mchb-werks.
    SORT t_stck_cnt.
    LOOP AT t_stck_cnt INTO w_stck_cnt.
    AT END OF matnr.
    r_lgort-sign = 'I'.
    r_lgort-option = 'EQ'.
    r_lgort-low = w_stck_cnt-lgort.
    APPEND r_lgort.
    r_werks-sign = 'I'.
    r_werks-option = 'EQ'.
    r_werks-low = w_stck_cnt-werks.
    APPEND r_werks.
    r_matnr-sign = 'I'.
    r_matnr-option = 'EQ'.
    r_matnr-low = w_stck_cnt-matnr.
    APPEND r_matnr.
    ENDAT.
    ENDLOOP.
    Select all material batches for NP Materials
    SELECT matnr charg clabs
    INTO TABLE t_batch_errors
    FROM mchb
    WHERE werks IN r_werks
    AND lgort IN r_lgort.
    IF sy-subrc EQ 0.
    Check if the Material Batches are in the NP file
    LOOP AT t_batch_errors INTO w_batch_errors.
    Disregard Batches without positive unrestricted stock
    IF w_batch_errors-clabs LE 0.
    DELETE t_batch_errors.
    CONTINUE.
    ENDIF.
    READ TABLE t_stck_cnt INTO w_stck_cnt
    WITH KEY matnr = w_batch_errors-matnr
    charg = w_batch_errors-charg.
    IF sy-subrc = 0.
    DELETE t_batch_errors.
    ENDIF.
    ENDLOOP.
    ENDIF.
    CHECK NOT t_batch_errors[] IS INITIAL.
    Write Batch chak results to report
    SKIP.
    WRITE: / text-b02.
    WRITE: / sy-uline(74).
    WRITE: /2 'Material',
    22 'Batch'.
    WRITE: /2 sy-uline(32).
    SKIP.
    LOOP AT t_batch_errors INTO w_batch_errors.
    WRITE: /2 w_batch_errors-matnr,
    22 w_batch_errors-charg.
    ENDLOOP.
    ENDFORM. " post_process_checks
    G E T _ I N T E R F A C E _ F I L E N A M E
    FORM get_interface_filename USING filename lw_path.
    DATA: i_file TYPE filename-fileintern,
    out_filename LIKE v_path-pathextern.
    CLEAR: out_filename.
    i_file = filename.
    get the interface filename to be used when creating file
    CALL FUNCTION 'FILE_GET_NAME'
    EXPORTING
    logical_filename = i_file
    IMPORTING
    file_name = out_filename
    EXCEPTIONS
    file_not_found = 1
    OTHERS = 2.
    IF sy-subrc = 0.
    MOVE out_filename TO lw_path.
    IF filename NE c_archive_file. "RM080107
    CONCATENATE lw_path 'NP_StockBalance.dat'
    INTO lw_path.
    *-- Begin RM080107 - Add timestamp to the archived file
    ELSE.
    CONCATENATE lw_path 'NP_StockBalance' sy-datum sy-uzeit '.dat'
    INTO lw_path.
    ENDIF.
    *-- End RM080107
    ELSE.
    ENDIF.
    ENDFORM. "get_interface_filename
    *& Form move_file RM080107
    Move the processed file to archive directory
    FORM move_file.
    *-- At last move the file to archive directory
    OPEN DATASET p_arch FOR OUTPUT IN TEXT MODE.
    IF sy-subrc = 0.
    LOOP AT t_rawdata INTO w_rawdata.
    TRANSFER w_rawdata TO p_arch.
    ENDLOOP.
    ENDIF.
    CLOSE DATASET p_arch.
    DELETE DATASET p_file.
    ENDFORM. " move_file
    Best regards,
    Prashant

  • Print icon not working

    Hi All,
    I have developed a program to display two alv reports. The program when executed displays the first report and on the click of a push button it wud display the second report. The standard icons are all working in the first report but few icons like print, local file save are not working in the second screen. Can anyone help me on this?
    REPORT  ZMY20FCORD    MESSAGE-ID 8I.
    ALV
    TYPE-POOLS: SLIS.
    DATA: TXT_REPORT LIKE DOKHL-OBJECT.   "Reportname für Erläuterungsaufruf
    DATA: GT_FIELDCAT         TYPE SLIS_T_FIELDCAT_ALV,
          GT_EVENTS           TYPE SLIS_T_EVENT,
          GT_SORT             TYPE SLIS_T_SORTINFO_ALV,
          GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
          GS_LAYOUT           TYPE SLIS_LAYOUT_ALV.
    TABLES                 ABAP Internal     Table definitions
    TABLES : T001, T001W, T005, TVST, ZMY20PROD, ZMY20WKFC, TVKO, ZMY20RMRK,
             ZMY20FCVER,    ZMY20GP, VBAK, VBAP, VBEP, VBPA, KNA1.
    INTERNAL TABLES (i_):  ABAP Internal     Internal Table definitions
    DATA: I_ZMY20WKFC LIKE ZMY20WKFC OCCURS 0 WITH HEADER LINE.
    DATA: BEGIN OF I_VBAK OCCURS 0,
            VBELN    LIKE VBAK-VBELN,
            KUNNR    LIKE VBAK-KUNNR,    " Sold-to-Party
          END OF I_VBAK.
    DATA: BEGIN OF I_ORDER OCCURS 0,
            VBELN    LIKE VBAK-VBELN,
            POSNR    LIKE VBAP-POSNR,
            ETENR    LIKE VBEP-ETENR,
            KUNNR    LIKE VBAK-KUNNR,    " Sold-to-Party
            MATNR    LIKE VBAP-MATNR,
            WERKS    LIKE VBAP-WERKS,
            VSTEL    LIKE VBAP-VSTEL,
            WMENG    LIKE VBEP-WMENG,
            VRKME    LIKE VBEP-VRKME,
            LDDAT    LIKE VBEP-LDDAT,
            SHIPTO   LIKE VBPA-KUNNR,
            SOLDCN   LIKE KNA1-LAND1,
            SHIPCN   LIKE KNA1-LAND1,
            PRODUCT  LIKE ZMY20PROD-PRODUCT,
            STCSTP   LIKE ZMY20WKFC-STCSTP,
            SPMON    LIKE ZMY20WKFC-SPMON,
            WEEK     LIKE SCAL-WEEK,
            UPDFLG(1) TYPE C,
          END OF I_ORDER.
    DATA: BEGIN OF I_SHIPTO OCCURS 0,
            CUSTOMER(20) TYPE C,
            SHIPTO       LIKE VBPA-KUNNR,
          END OF I_SHIPTO.
    DATA: BEGIN OF I_OUTPUT OCCURS 0,
            SORTKEY(1) TYPE C,
            STCSTP   LIKE ZMY20WKFC-STCSTP,
            WERKS    LIKE ZMY20WKFC-WERKS,
            SHPPOINT LIKE ZMY20WKFC-SHPPOINT,
            PRODUCT  LIKE ZMY20WKFC-PRODUCT,
            MAKTX    LIKE ZMY20PROD-MAKTX,
            QTY01    LIKE ZMY20WKFC-QTY01,
            ORD01    LIKE ZMY20WKFC-QTY01,
            QTY02    LIKE ZMY20WKFC-QTY01,
            ORD02    LIKE ZMY20WKFC-QTY01,
            QTY03    LIKE ZMY20WKFC-QTY01,
            ORD03    LIKE ZMY20WKFC-QTY01,
            QTY04    LIKE ZMY20WKFC-QTY01,
            ORD04    LIKE ZMY20WKFC-QTY01,
            QTY05    LIKE ZMY20WKFC-QTY01,
            ORD05    LIKE ZMY20WKFC-QTY01,
            QTY06    LIKE ZMY20WKFC-QTY01,
            ORD06    LIKE ZMY20WKFC-QTY01,
            TOTFC1   LIKE ZMY20WKFC-QTY01,
            TOTORD1  LIKE ZMY20WKFC-QTY01,
            FCORD1(5) TYPE P DECIMALS 2,
            QTY07    LIKE ZMY20WKFC-QTY01,
            ORD07    LIKE ZMY20WKFC-QTY01,
            QTY08    LIKE ZMY20WKFC-QTY01,
            ORD08    LIKE ZMY20WKFC-QTY01,
            QTY09    LIKE ZMY20WKFC-QTY01,
            ORD09    LIKE ZMY20WKFC-QTY01,
            QTY10    LIKE ZMY20WKFC-QTY01,
            ORD10    LIKE ZMY20WKFC-QTY01,
            QTY11    LIKE ZMY20WKFC-QTY01,
            ORD11    LIKE ZMY20WKFC-QTY01,
            QTY12    LIKE ZMY20WKFC-QTY01,
            ORD12    LIKE ZMY20WKFC-QTY01,
            TOTFC2   LIKE ZMY20WKFC-QTY01,
            TOTORD2  LIKE ZMY20WKFC-QTY01,
            FCORD2(5) TYPE P DECIMALS 2,
            CELLCOLOR TYPE SLIS_T_SPECIALCOL_ALV,
            DUMMY(1)  TYPE C,
          END OF I_OUTPUT.
    DATA: I_COLOUR TYPE LVC_T_SCOL WITH HEADER LINE.
    DATA: BEGIN OF I_PRDWISE OCCURS 0,
            SORTKEY(1) TYPE C,
            STCSTP     LIKE ZMY20WKFC-STCSTP,
            PRODUCT    LIKE ZMY20WKFC-PRODUCT,
            MAKTX      LIKE ZMY20PROD-MAKTX,
            TOTFC1     LIKE ZMY20WKFC-QTY01,
            TOTORD1    LIKE ZMY20WKFC-QTY01,
            FCORD1(5)  TYPE P DECIMALS 2,
            DIFF1      LIKE ZMY20WKFC-QTY01,
            TOTFC2     LIKE ZMY20WKFC-QTY01,
            TOTORD2    LIKE ZMY20WKFC-QTY01,
            FCORD2(5)  TYPE P DECIMALS 2,
            DIFF2      LIKE ZMY20WKFC-QTY01,
          END OF I_PRDWISE.
    DATA: BEGIN OF I_TVST OCCURS 0,
            VSTEL LIKE TVST-VSTEL,
          END OF I_TVST.
    DATA: BEGIN OF T_STCP OCCURS 0,
            SORTKEY(1) TYPE C,
            STCSTP LIKE ZMY20WKFC-STCSTP,
          END OF T_STCP.
    DATA: BEGIN OF T_PROD OCCURS 0,
            PRODUCT LIKE ZMY20PROD-PRODUCT,
            MAKTX   LIKE ZMY20PROD-MAKTX,
          END OF T_PROD.
    DATA: BEGIN OF T_USER OCCURS 0,
            UNAME LIKE SY-UNAME,
          END OF T_USER.
    DATA: I_FIELDS LIKE SVAL OCCURS 0 WITH HEADER LINE.
    VARIABLES (v_):          ABAP Internal   Variables definitions
    DATA : V_ENDMTH LIKE S125-SPMON,
           V_STRDT1 LIKE SY-DATUM,
           V_STRDT2 LIKE SY-DATUM,
           V_ENDDT1 LIKE SY-DATUM,
           V_ENDDT2 LIKE SY-DATUM,
           V_STRWK1 LIKE SCAL-WEEK,
           V_STRWK2 LIKE SCAL-WEEK,
           V_ENDWK1 LIKE SCAL-WEEK,
           V_ENDWK2 LIKE SCAL-WEEK,
           V_STRMTH LIKE S125-SPMON.    " Only for Report Header
    DATA : BEGIN OF I_WEEKS OCCURS 0,
            SLNO       TYPE I,
            WEEKS      LIKE SCAL-WEEK,
            MONTH(2)   TYPE C,
            HDRWK(13)  TYPE C,
           END OF I_WEEKS.
    DATA : V_TABIX  LIKE SY-TABIX,
           V_VERSN  LIKE ZMY20WKFC-VERSN,
           V_VKORG  LIKE TVKO-VKORG.
    DATA : V_REMARK1    LIKE ZMY20RMRK-REMARK1,
           V_REMARK2    LIKE ZMY20RMRK-REMARK2,
           V_RETCODE    TYPE C,
           V_FNAME(30)  TYPE C,
           V_UPDFLAG(1) TYPE C.
    WORKING VARIABLES (w_):  ABAP Internal   Working Variables definitions
    DATA: W_TOT(5)      TYPE N,
          W_SLNO        TYPE I.
    DATA: W_WEEKS       LIKE SCAL-WEEK.
    DATA: W_WKHDR01(13) TYPE C,
          W_WKHDR02(13) TYPE C,
          W_WKHDR03(13) TYPE C,
          W_WKHDR04(13) TYPE C,
          W_WKHDR05(13) TYPE C,
          W_WKHDR06(13) TYPE C,
          W_WKHDR07(13) TYPE C,
          W_WKHDR08(13) TYPE C,
          W_WKHDR09(13) TYPE C,
          W_WKHDR10(13) TYPE C,
          W_WKHDR11(13) TYPE C,
          W_WKHDR12(13) TYPE C.
    DATA: W_FCHDR01(13) TYPE C,
          W_FCHDR02(13) TYPE C,
          W_FCHDR03(13) TYPE C,
          W_FCHDR04(13) TYPE C,
          W_FCHDR05(13) TYPE C,
          W_FCHDR06(13) TYPE C,
          W_FCHDR07(13) TYPE C,
          W_FCHDR08(13) TYPE C,
          W_FCHDR09(13) TYPE C,
          W_FCHDR10(13) TYPE C,
          W_FCHDR11(13) TYPE C,
          W_FCHDR12(13) TYPE C,
          W_FCHDRT1(13) TYPE C,
          W_FCHDRT2(13) TYPE C,
          W_ORHDR01(13) TYPE C,
          W_ORHDR02(13) TYPE C,
          W_ORHDR03(13) TYPE C,
          W_ORHDR04(13) TYPE C,
          W_ORHDR05(13) TYPE C,
          W_ORHDR06(13) TYPE C,
          W_ORHDR07(13) TYPE C,
          W_ORHDR08(13) TYPE C,
          W_ORHDR09(13) TYPE C,
          W_ORHDR10(13) TYPE C,
          W_ORHDR11(13) TYPE C,
          W_ORHDR12(13) TYPE C,
          W_ORHDRT1(13) TYPE C,
          W_ORHDRT2(13) TYPE C,
          W_HDR%1(13)   TYPE C,
          W_HDR%2(13)   TYPE C,
          W_DIFF1(13)   TYPE C,
          W_DIFF2(13)   TYPE C.
    DATA: W_WKTBL01 LIKE SCAL-WEEK,
          W_WKTBL02 LIKE SCAL-WEEK,
          W_WKTBL03 LIKE SCAL-WEEK,
          W_WKTBL04 LIKE SCAL-WEEK,
          W_WKTBL05 LIKE SCAL-WEEK,
          W_WKTBL06 LIKE SCAL-WEEK,
          W_WKTBL07 LIKE SCAL-WEEK,
          W_WKTBL08 LIKE SCAL-WEEK,
          W_WKTBL09 LIKE SCAL-WEEK,
          W_WKTBL10 LIKE SCAL-WEEK,
          W_WKTBL11 LIKE SCAL-WEEK,
          W_WKTBL12 LIKE SCAL-WEEK.
    DATA: W_SHIPTO  LIKE VBPA-KUNNR,
          W_SOLDCN  LIKE KNA1-LAND1,
          W_SHIPCN  LIKE KNA1-LAND1,
          W_PRODUCT LIKE ZMY20PROD-PRODUCT.
    DATA: W_ORD01   LIKE ZMY20WKFC-QTY01,
          W_ORD02   LIKE ZMY20WKFC-QTY01,
          W_ORD03   LIKE ZMY20WKFC-QTY01,
          W_ORD04   LIKE ZMY20WKFC-QTY01,
          W_ORD05   LIKE ZMY20WKFC-QTY01,
          W_ORD06   LIKE ZMY20WKFC-QTY01,
          W_ORD07   LIKE ZMY20WKFC-QTY01,
          W_ORD08   LIKE ZMY20WKFC-QTY01,
          W_ORD09   LIKE ZMY20WKFC-QTY01,
          W_ORD10   LIKE ZMY20WKFC-QTY01,
          W_ORD11   LIKE ZMY20WKFC-QTY01,
          W_ORD12   LIKE ZMY20WKFC-QTY01,
          W_ORDT1   LIKE ZMY20WKFC-QTY01,
          W_ORDT2   LIKE ZMY20WKFC-QTY01.
    SELECTION SCREEN DATA : ABAP Internal      Select Options&Parameters
              SELECT-OPTIONS (s_)              definitions
              PARAMETERS     (p_)
    SELECTION-SCREEN BEGIN OF BLOCK MYSEL1 WITH FRAME TITLE TEXT-001.
    PARAMETERS     : P_BUKRS  LIKE T001-BUKRS OBLIGATORY DEFAULT 'MY20',
                     P_STRMTH LIKE S125-SPMON OBLIGATORY DEFAULT '200608'.
    SELECT-OPTIONS : S_STCSTP  FOR ZMY20WKFC-STCSTP,
                     S_WERKS   FOR T001W-WERKS,
                     S_PROD    FOR ZMY20PROD-PRODUCT,
                     S_SHP     FOR VBAP-VSTEL.
    SELECTION-SCREEN END OF BLOCK MYSEL1.
    SELECTION-SCREEN BEGIN OF BLOCK MYSEL2 WITH FRAME.
    PARAMETER      : P_ZERO AS CHECKBOX.
    SELECTION-SCREEN END OF BLOCK MYSEL2.
    AT SELECTION-SCREEN
    Begin of Addition by T.Karthikeyan - UIS on 18/01/2007 - Req No - BA3K986971
    AT SELECTION-SCREEN ON P_BUKRS.
      AUTHORITY-CHECK OBJECT 'Z_BASF_SD'
                 ID 'BUKRS'   FIELD P_BUKRS
                 ID 'VKORG'   DUMMY
                 ID 'ZZ_UB'   DUMMY
                 ID 'ZZ_SBU'  DUMMY
                 ID 'WERKS'   DUMMY
                 ID 'ZZ_PROG' FIELD SY-CPROG.
      IF SY-SUBRC NE 0.
        MESSAGE ID 'SD' TYPE 'E' NUMBER '836' WITH
        TEXT-E02 SY-CPROG.
        RETURN.
      ENDIF.
    End of Addition by T.Karthikeyan - UIS on 18/01/2007 - Req No - BA3K986971
    At selection screen F4 help
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_STCSTP-LOW.
      PERFORM F4_HELP_STCSTP.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_STCSTP-HIGH.
      PERFORM F4_HELP_STCSTP.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_PROD-LOW.
      PERFORM F4_HELP_PRODUCT.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_PROD-HIGH.
      PERFORM F4_HELP_PRODUCT.
    START-OF-SELECTION
    START-OF-SELECTION.
      PERFORM 1000_GET_WEEK_DETAILS.
      PERFORM 1500_GET_SHIPTO_CUSTOMER.
      PERFORM 2000_GET_FORECAST_DATA.
      PERFORM 3000_GET_ORDER_DATA.
      PERFORM 4000_CONSOLIDATE_DATA.
    END-OF-SELECTION
    END-OF-SELECTION.
      REFRESH : GT_FIELDCAT, GT_LIST_TOP_OF_PAGE, GT_EVENTS, GT_SORT.
      PERFORM FIELDCAT_INIT USING GT_FIELDCAT[].
      PERFORM LAYOUT_INIT USING GS_LAYOUT.
      PERFORM COMMENT_BUILD USING GT_LIST_TOP_OF_PAGE[].
      PERFORM EVENTTAB_BUILD USING GT_EVENTS[].
      PERFORM SORT_BUILD USING GT_SORT[].
      PERFORM MAIN.
    *&      Form  1000_GET_WEEK_DETAILS
          text
    -->  p1        text
    <--  p2        text
    FORM 1000_GET_WEEK_DETAILS .
      REFRESH : I_WEEKS.
      V_STRMTH = P_STRMTH.
      V_ENDMTH = P_STRMTH + 1.
      IF V_ENDMTH+4(2) GT '12'.
        MOVE '01' TO V_ENDMTH+4(2).
        ADD 1 TO V_ENDMTH+0(4).
      ENDIF.
      CONCATENATE P_STRMTH0(4) P_STRMTH4(2) '01' INTO V_STRDT1.
      CONCATENATE V_ENDMTH0(4) V_ENDMTH4(2) '01' INTO V_ENDDT1.
      CALL FUNCTION 'BKK_GET_MONTH_LASTDAY'
        EXPORTING
          I_DATE = V_STRDT1
        IMPORTING
          E_DATE = V_STRDT2.
      CALL FUNCTION 'BKK_GET_MONTH_LASTDAY'
        EXPORTING
          I_DATE = V_ENDDT1
        IMPORTING
          E_DATE = V_ENDDT2.
      CALL FUNCTION 'DATE_GET_WEEK'
        EXPORTING
          DATE = V_STRDT1
        IMPORTING
          WEEK = V_STRWK1.
      CALL FUNCTION 'DATE_GET_WEEK'
        EXPORTING
          DATE = V_STRDT2
        IMPORTING
          WEEK = V_STRWK2.
      CALL FUNCTION 'DATE_GET_WEEK'
        EXPORTING
          DATE = V_ENDDT1
        IMPORTING
          WEEK = V_ENDWK1.
      CALL FUNCTION 'DATE_GET_WEEK'
        EXPORTING
          DATE = V_ENDDT2
        IMPORTING
          WEEK = V_ENDWK2.
      CLEAR : W_WEEKS, W_SLNO.
      MOVE V_STRWK1 TO W_WEEKS.
      MOVE '1'      TO W_SLNO.
      DO.
        CLEAR : I_WEEKS.
        MOVE W_SLNO  TO I_WEEKS-SLNO.
        MOVE W_WEEKS TO I_WEEKS-WEEKS.
        MOVE P_STRMTH+4(2) TO I_WEEKS-MONTH.
        CONCATENATE I_WEEKS-MONTH '-' W_WEEKS+4(2) INTO I_WEEKS-HDRWK.
        APPEND I_WEEKS.
        ADD 1 TO W_SLNO.
        CALL FUNCTION 'NEXT_WEEK'
          EXPORTING
            CURRENT_WEEK = W_WEEKS
          IMPORTING
            NEXT_WEEK    = W_WEEKS.
        IF W_WEEKS GT V_STRWK2.
          EXIT.
        ENDIF.
      ENDDO.
      CLEAR : W_WEEKS, W_SLNO.
      MOVE V_ENDWK1 TO W_WEEKS.
      MOVE '7'      TO W_SLNO.
      DO.
        CLEAR : I_WEEKS.
        MOVE W_SLNO  TO I_WEEKS-SLNO.
        MOVE W_WEEKS TO I_WEEKS-WEEKS.
        MOVE V_ENDMTH+4(2) TO I_WEEKS-MONTH.
        CONCATENATE I_WEEKS-MONTH '-' W_WEEKS+4(2) INTO I_WEEKS-HDRWK.
        APPEND I_WEEKS.
        ADD 1 TO W_SLNO.
        CALL FUNCTION 'NEXT_WEEK'
          EXPORTING
            CURRENT_WEEK = W_WEEKS
          IMPORTING
            NEXT_WEEK    = W_WEEKS.
        IF W_WEEKS GT V_ENDWK2.
          EXIT.
        ENDIF.
      ENDDO.
      LOOP AT I_WEEKS.
        IF     I_WEEKS-SLNO = '1'.
          MOVE I_WEEKS-HDRWK TO W_WKHDR01.
          MOVE I_WEEKS-WEEKS TO W_WKTBL01.
        ELSEIF I_WEEKS-SLNO = '2'.
          MOVE I_WEEKS-HDRWK TO W_WKHDR02.
          MOVE I_WEEKS-WEEKS TO W_WKTBL02.
        ELSEIF I_WEEKS-SLNO = '3'.
          MOVE I_WEEKS-HDRWK TO W_WKHDR03.
          MOVE I_WEEKS-WEEKS TO W_WKTBL03.
        ELSEIF I_WEEKS-SLNO = '4'.
          MOVE I_WEEKS-HDRWK TO W_WKHDR04.
          MOVE I_WEEKS-WEEKS TO W_WKTBL04.
        ELSEIF I_WEEKS-SLNO = '5'.
          MOVE I_WEEKS-HDRWK TO W_WKHDR05.
          MOVE I_WEEKS-WEEKS TO W_WKTBL05.
        ELSEIF I_WEEKS-SLNO = '6'.
          MOVE I_WEEKS-HDRWK TO W_WKHDR06.
          MOVE I_WEEKS-WEEKS TO W_WKTBL06.
        ELSEIF I_WEEKS-SLNO = '7'.
          MOVE I_WEEKS-HDRWK TO W_WKHDR07.
          MOVE I_WEEKS-WEEKS TO W_WKTBL07.
        ELSEIF I_WEEKS-SLNO = '8'.
          MOVE I_WEEKS-HDRWK TO W_WKHDR08.
          MOVE I_WEEKS-WEEKS TO W_WKTBL08.
        ELSEIF I_WEEKS-SLNO = '9'.
          MOVE I_WEEKS-HDRWK TO W_WKHDR09.
          MOVE I_WEEKS-WEEKS TO W_WKTBL09.
        ELSEIF I_WEEKS-SLNO = '10'.
          MOVE I_WEEKS-HDRWK TO W_WKHDR10.
          MOVE I_WEEKS-WEEKS TO W_WKTBL10.
        ELSEIF I_WEEKS-SLNO = '11'.
          MOVE I_WEEKS-HDRWK TO W_WKHDR11.
          MOVE I_WEEKS-WEEKS TO W_WKTBL11.
        ELSEIF I_WEEKS-SLNO = '12'.
          MOVE I_WEEKS-HDRWK TO W_WKHDR12.
          MOVE I_WEEKS-WEEKS TO W_WKTBL12.
        ENDIF.
      ENDLOOP.
      CONCATENATE W_WKHDR01 'F' INTO W_FCHDR01.
      CONCATENATE W_WKHDR02 'F' INTO W_FCHDR02.
      CONCATENATE W_WKHDR03 'F' INTO W_FCHDR03.
      CONCATENATE W_WKHDR04 'F' INTO W_FCHDR04.
      CONCATENATE W_WKHDR05 'F' INTO W_FCHDR05.
      CONCATENATE W_WKHDR06 'F' INTO W_FCHDR06.
      CONCATENATE W_WKHDR07 'F' INTO W_FCHDR07.
      CONCATENATE W_WKHDR08 'F' INTO W_FCHDR08.
      CONCATENATE W_WKHDR09 'F' INTO W_FCHDR09.
      CONCATENATE W_WKHDR10 'F' INTO W_FCHDR10.
      CONCATENATE W_WKHDR11 'F' INTO W_FCHDR11.
      CONCATENATE W_WKHDR12 'F' INTO W_FCHDR12.
      CONCATENATE W_WKHDR01 'O' INTO W_ORHDR01.
      CONCATENATE W_WKHDR02 'O' INTO W_ORHDR02.
      CONCATENATE W_WKHDR03 'O' INTO W_ORHDR03.
      CONCATENATE W_WKHDR04 'O' INTO W_ORHDR04.
      CONCATENATE W_WKHDR05 'O' INTO W_ORHDR05.
      CONCATENATE W_WKHDR06 'O' INTO W_ORHDR06.
      CONCATENATE W_WKHDR07 'O' INTO W_ORHDR07.
      CONCATENATE W_WKHDR08 'O' INTO W_ORHDR08.
      CONCATENATE W_WKHDR09 'O' INTO W_ORHDR09.
      CONCATENATE W_WKHDR10 'O' INTO W_ORHDR10.
      CONCATENATE W_WKHDR11 'O' INTO W_ORHDR11.
      CONCATENATE W_WKHDR12 'O' INTO W_ORHDR12.
      CONCATENATE P_STRMTH4(2) '/' P_STRMTH0(4) 'F-TOT' INTO W_FCHDRT1.
      CONCATENATE V_ENDMTH4(2) '/' V_ENDMTH0(4) 'F-TOT' INTO W_FCHDRT2.
      CONCATENATE P_STRMTH4(2) '/' P_STRMTH0(4) 'O-TOT' INTO W_ORHDRT1.
      CONCATENATE V_ENDMTH4(2) '/' V_ENDMTH0(4) 'O-TOT' INTO W_ORHDRT2.
      CONCATENATE P_STRMTH4(2) '/' P_STRMTH0(4) '-%'    INTO W_HDR%1.
      CONCATENATE V_ENDMTH4(2) '/' V_ENDMTH0(4) '-%'    INTO W_HDR%2.
      CONCATENATE P_STRMTH4(2) '/' P_STRMTH0(4) '-DIFF' INTO W_DIFF1.
      CONCATENATE V_ENDMTH4(2) '/' V_ENDMTH0(4) '-DIFF' INTO W_DIFF2.
    ENDFORM.                    " 1000_GET_WEEK_DETAILS
    *&      Form  1500_GET_SHIPTO_CUSTOMER
          text
    -->  p1        text
    <--  p2        text
    FORM 1500_GET_SHIPTO_CUSTOMER .
      REFRESH : I_SHIPTO.
      SELECT * FROM ZMY20GP WHERE ZZKEY1 = 'ZMY20FCUP'
                                     AND   ZZKEY3 = 'SHIPTOCUST'.
        CLEAR : I_SHIPTO.
        MOVE ZMY20GP-ZZKEY2 TO I_SHIPTO-CUSTOMER.
        IF ZMY20GP-ZZVAL1 NE SPACE.
          MOVE ZMY20GP-ZZVAL1+0(10) TO I_SHIPTO-SHIPTO.
          APPEND I_SHIPTO.
        ENDIF.
        IF ZMY20GP-ZZVAL2 NE SPACE.
          MOVE ZMY20GP-ZZVAL2+0(10) TO I_SHIPTO-SHIPTO.
          APPEND I_SHIPTO.
        ENDIF.
        IF ZMY20GP-ZZVAL3 NE SPACE.
          MOVE ZMY20GP-ZZVAL3+0(10) TO I_SHIPTO-SHIPTO.
          APPEND I_SHIPTO.
        ENDIF.
        IF ZMY20GP-ZZVAL4 NE SPACE.
          MOVE ZMY20GP-ZZVAL4+0(10) TO I_SHIPTO-SHIPTO.
          APPEND I_SHIPTO.
        ENDIF.
      ENDSELECT.
      PERFORM GET_REMARKENTRY_USER.
    ENDFORM.                    " 1500_GET_SHIPTO_CUSTOMER
    *&      Form  2000_GET_FORECAST_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM 2000_GET_FORECAST_DATA .
    Get the Forecast data for the give input
      REFRESH : I_ZMY20WKFC.
      SELECT * INTO CORRESPONDING FIELDS OF TABLE I_ZMY20WKFC FROM ZMY20WKFC
               WHERE BUKRS    EQ P_BUKRS
               AND   STCSTP   IN S_STCSTP
               AND   WERKS    IN S_WERKS
               AND   PRODUCT  IN S_PROD
               AND   SHPPOINT IN S_SHP
               AND   SPMON    GE P_STRMTH
               AND   SPMON    LE V_ENDMTH.
    Filter the final version of the forecast data
      LOOP AT I_ZMY20WKFC.
        V_TABIX = SY-TABIX.
        SELECT SINGLE VERSN INTO V_VERSN FROM ZMY20FCVER
                            WHERE BUKRS EQ I_ZMY20WKFC-BUKRS
                            AND   STCSTP EQ I_ZMY20WKFC-STCSTP
                            AND   WERKS  EQ I_ZMY20WKFC-WERKS
                            AND   SPMON  EQ I_ZMY20WKFC-SPMON.
        IF I_ZMY20WKFC-VERSN EQ V_VERSN.
        ELSE.
          DELETE I_ZMY20WKFC INDEX V_TABIX.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    " 2000_GET_FORECAST_DATA
    *&      Form  3000_GET_ORDER_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM 3000_GET_ORDER_DATA .
      REFRESH : I_VBAK, I_ORDER.
      CLEAR   : V_VKORG.
      SELECT SINGLE VKORG INTO V_VKORG FROM TVKO WHERE BUKRS EQ P_BUKRS.
      SELECT VBELN KUNNR INTO CORRESPONDING FIELDS OF TABLE I_VBAK FROM VBAK
             WHERE VKORG    EQ V_VKORG
             AND   AUART    EQ 'TA'              "Type OR
             AND   BUKRS_VF EQ P_BUKRS.
      SORT I_VBAK BY VBELN.
      LOOP AT I_VBAK.
        CLEAR : W_SHIPTO, W_SOLDCN, W_SHIPCN.
        SELECT SINGLE KUNNR INTO W_SHIPTO FROM VBPA WHERE VBELN EQ I_VBAK-VBELN
                                                    AND   PARVW EQ 'WE'.
        SELECT SINGLE LAND1 INTO W_SOLDCN FROM KNA1 WHERE KUNNR EQ I_VBAK-KUNNR.
        SELECT SINGLE LAND1 INTO W_SHIPCN FROM KNA1 WHERE KUNNR EQ W_SHIPTO.
        SELECT * FROM VBAP WHERE VBELN EQ I_VBAK-VBELN AND WERKS IN S_WERKS
                           AND   ABGRU EQ SPACE
                           AND   VSTEL IN S_SHP.
          CLEAR : W_PRODUCT.
          SELECT SINGLE PRODUCT INTO W_PRODUCT FROM ZMY20PROD WHERE SAPMATL EQ VBAP-MATNR.
          SELECT * FROM VBEP WHERE VBELN EQ I_VBAK-VBELN
                             AND   POSNR EQ VBAP-POSNR
                             AND   LDDAT GE V_STRDT1
                             AND   LDDAT LE V_ENDDT2
                             AND   WMENG GT 0.
            CLEAR : I_ORDER.
            MOVE I_VBAK-VBELN    TO I_ORDER-VBELN.
            MOVE I_VBAK-KUNNR    TO I_ORDER-KUNNR.
            MOVE W_SHIPTO        TO I_ORDER-SHIPTO.
            MOVE W_SOLDCN        TO I_ORDER-SOLDCN.
            MOVE VBAP-POSNR      TO I_ORDER-POSNR.
            MOVE VBAP-MATNR      TO I_ORDER-MATNR.
            MOVE VBAP-WERKS      TO I_ORDER-WERKS.
            MOVE VBAP-VSTEL      TO I_ORDER-VSTEL.
            MOVE W_PRODUCT       TO I_ORDER-PRODUCT.
            MOVE VBEP-ETENR      TO I_ORDER-ETENR.
            MOVE VBEP-LDDAT+0(6) TO I_ORDER-SPMON.
            MOVE VBEP-WMENG      TO I_ORDER-WMENG.
            MOVE VBEP-VRKME      TO I_ORDER-VRKME.
            MOVE VBEP-LDDAT      TO I_ORDER-LDDAT.
            CALL FUNCTION 'DATE_GET_WEEK'
              EXPORTING
                DATE = VBEP-LDDAT
              IMPORTING
                WEEK = I_ORDER-WEEK.
            READ TABLE I_SHIPTO WITH KEY SHIPTO = I_ORDER-SHIPTO.
            IF SY-SUBRC EQ 0.
              MOVE I_SHIPTO-CUSTOMER TO I_ORDER-STCSTP.
            ELSE.
              MOVE I_ORDER-SOLDCN    TO I_ORDER-STCSTP.
            ENDIF.
            IF W_SOLDCN = 'CN' OR W_SOLDCN = 'HK'.
              MOVE 'CN&HK' TO I_ORDER-STCSTP.
            ENDIF.
            IF I_ORDER-STCSTP IN S_STCSTP AND I_ORDER-PRODUCT IN S_PROD.
              APPEND I_ORDER.
            ENDIF.
          ENDSELECT.
        ENDSELECT.
      ENDLOOP.
    ENDFORM.                    " 3000_GET_ORDER_DATA
    *&      Form  4000_CONSOLIDATE_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM 4000_CONSOLIDATE_DATA .
      REFRESH : I_OUTPUT, I_PRDWISE.
      LOOP AT I_ZMY20WKFC.
        CLEAR : W_ORD01, W_ORD02, W_ORD03, W_ORD04, W_ORD05, W_ORD06,
                W_ORD07, W_ORD08, W_ORD09, W_ORD10, W_ORD11, W_ORD12,
                W_ORDT1, W_ORDT2.
        LOOP AT I_ORDER WHERE STCSTP  EQ I_ZMY20WKFC-STCSTP
                        AND   WERKS   EQ I_ZMY20WKFC-WERKS
                        AND   PRODUCT EQ I_ZMY20WKFC-PRODUCT
                        AND   SPMON   EQ I_ZMY20WKFC-SPMON.
    *BEGIN OF CHANGES BY FAIZAL ON 26/01/07 TR# BA3K987278
         IF I_ORDER-VSTEL CA I_ZMY20WKFC-SHPPOINT.
          IF I_ZMY20WKFC-SHPPOINT CS I_ORDER-VSTEL.
    *END OF CHANGES BY FAIZAL ON 26/01/2007 TR# BA3K987278
          ELSE.
            CONTINUE.
          ENDIF.
          IF I_ORDER-SPMON EQ P_STRMTH.
            IF     I_ORDER-WEEK EQ W_WKTBL01.
              W_ORD01 = W_ORD01 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL02.
              W_ORD02 = W_ORD02 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL03.
              W_ORD03 = W_ORD03 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL04.
              W_ORD04 = W_ORD04 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL05.
              W_ORD05 = W_ORD05 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL06.
              W_ORD06 = W_ORD06 + I_ORDER-WMENG.
            ENDIF.
            W_ORDT1  = W_ORDT1 + I_ORDER-WMENG.
          ELSE.
            IF I_ORDER-WEEK EQ W_WKTBL07.
              W_ORD07 = W_ORD07 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL08.
              W_ORD08 = W_ORD08 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL09.
              W_ORD09 = W_ORD09 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL10.
              W_ORD10 = W_ORD10 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL11.
              W_ORD11 = W_ORD11 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL12.
              W_ORD12 = W_ORD12 + I_ORDER-WMENG.
            ENDIF.
            W_ORDT2  = W_ORDT2 + I_ORDER-WMENG.
          ENDIF.
          MOVE 'X' TO I_ORDER-UPDFLG.
          MODIFY I_ORDER INDEX SY-TABIX.
        ENDLOOP.
        READ TABLE I_OUTPUT WITH KEY STCSTP   = I_ZMY20WKFC-STCSTP
                                     WERKS    = I_ZMY20WKFC-WERKS
                                     PRODUCT  = I_ZMY20WKFC-PRODUCT
                                     SHPPOINT = I_ZMY20WKFC-SHPPOINT.
        IF SY-SUBRC EQ 0.
          IF I_ZMY20WKFC-SPMON EQ P_STRMTH.
            MOVE I_ZMY20WKFC-QTY01  TO I_OUTPUT-QTY01.
            MOVE I_ZMY20WKFC-QTY02  TO I_OUTPUT-QTY02.
            MOVE I_ZMY20WKFC-QTY03  TO I_OUTPUT-QTY03.
            MOVE I_ZMY20WKFC-QTY04  TO I_OUTPUT-QTY04.
            MOVE I_ZMY20WKFC-QTY05  TO I_OUTPUT-QTY05.
            MOVE I_ZMY20WKFC-QTY06  TO I_OUTPUT-QTY06.
            MOVE I_ZMY20WKFC-TOTQTY TO I_OUTPUT-TOTFC1.
            MOVE W_ORD01          TO I_OUTPUT-ORD01.
            MOVE W_ORD02          TO I_OUTPUT-ORD02.
            MOVE W_ORD03          TO I_OUTPUT-ORD03.
            MOVE W_ORD04          TO I_OUTPUT-ORD04.
            MOVE W_ORD05          TO I_OUTPUT-ORD05.
            MOVE W_ORD06          TO I_OUTPUT-ORD06.
            MOVE W_ORDT1          TO I_OUTPUT-TOTORD1.
          ELSE.
            MOVE I_ZMY20WKFC-QTY01  TO I_OUTPUT-QTY07.
            MOVE I_ZMY20WKFC-QTY02  TO I_OUTPUT-QTY08.
            MOVE I_ZMY20WKFC-QTY03  TO I_OUTPUT-QTY09.
            MOVE I_ZMY20WKFC-QTY04  TO I_OUTPUT-QTY10.
            MOVE I_ZMY20WKFC-QTY05  TO I_OUTPUT-QTY11.
            MOVE I_ZMY20WKFC-QTY06  TO I_OUTPUT-QTY12.
            MOVE I_ZMY20WKFC-TOTQTY TO I_OUTPUT-TOTFC2.
            MOVE W_ORD07          TO I_OUTPUT-ORD07.
            MOVE W_ORD08          TO I_OUTPUT-ORD08.
            MOVE W_ORD09          TO I_OUTPUT-ORD09.
            MOVE W_ORD10          TO I_OUTPUT-ORD10.
            MOVE W_ORD11          TO I_OUTPUT-ORD11.
            MOVE W_ORD12          TO I_OUTPUT-ORD12.
            MOVE W_ORDT2          TO I_OUTPUT-TOTORD2.
          ENDIF.
          MODIFY I_OUTPUT INDEX SY-TABIX.
        ELSE.
          CLEAR : I_OUTPUT.
          MOVE I_ZMY20WKFC-STCSTP   TO I_OUTPUT-STCSTP.
          MOVE I_ZMY20WKFC-WERKS    TO I_OUTPUT-WERKS.
          MOVE I_ZMY20WKFC-PRODUCT  TO I_OUTPUT-PRODUCT.
          MOVE I_ZMY20WKFC-SHPPOINT TO I_OUTPUT-SHPPOINT.
          IF I_ZMY20WKFC-SPMON EQ P_STRMTH.
            MOVE I_ZMY20WKFC-QTY01  TO I_OUTPUT-QTY01.
            MOVE I_ZMY20WKFC-QTY02  TO I_OUTPUT-QTY02.
            MOVE I_ZMY20WKFC-QTY03  TO I_OUTPUT-QTY03.
            MOVE I_ZMY20WKFC-QTY04  TO I_OUTPUT-QTY04.
            MOVE I_ZMY20WKFC-QTY05  TO I_OUTPUT-QTY05.
            MOVE I_ZMY20WKFC-QTY06  TO I_OUTPUT-QTY06.
            MOVE I_ZMY20WKFC-TOTQTY TO I_OUTPUT-TOTFC1.
            MOVE W_ORD01          TO I_OUTPUT-ORD01.
            MOVE W_ORD02          TO I_OUTPUT-ORD02.
            MOVE W_ORD03          TO I_OUTPUT-ORD03.
            MOVE W_ORD04          TO I_OUTPUT-ORD04.
            MOVE W_ORD05          TO I_OUTPUT-ORD05.
            MOVE W_ORD06          TO I_OUTPUT-ORD06.
            MOVE W_ORDT1          TO I_OUTPUT-TOTORD1.
          ELSE.
            MOVE I_ZMY20WKFC-QTY01  TO I_OUTPUT-QTY07.
            MOVE I_ZMY20WKFC-QTY02  TO I_OUTPUT-QTY08.
            MOVE I_ZMY20WKFC-QTY03  TO I_OUTPUT-QTY09.
            MOVE I_ZMY20WKFC-QTY04  TO I_OUTPUT-QTY10.
            MOVE I_ZMY20WKFC-QTY05  TO I_OUTPUT-QTY11.
            MOVE I_ZMY20WKFC-QTY06  TO I_OUTPUT-QTY12.
            MOVE I_ZMY20WKFC-TOTQTY TO I_OUTPUT-TOTFC2.
            MOVE W_ORD07          TO I_OUTPUT-ORD07.
            MOVE W_ORD08          TO I_OUTPUT-ORD08.
            MOVE W_ORD09          TO I_OUTPUT-ORD09.
            MOVE W_ORD10          TO I_OUTPUT-ORD10.
            MOVE W_ORD11          TO I_OUTPUT-ORD11.
            MOVE W_ORD12          TO I_OUTPUT-ORD12.
            MOVE W_ORDT2          TO I_OUTPUT-TOTORD2.
          ENDIF.
          APPEND I_OUTPUT.
        ENDIF.
      ENDLOOP.
    Process the Order data which Forecast not available
      LOOP AT I_ORDER WHERE UPDFLG NE 'X'.
        READ TABLE I_OUTPUT WITH KEY STCSTP   = I_ORDER-STCSTP
                                     WERKS    = I_ORDER-WERKS
                                     PRODUCT  = I_ORDER-PRODUCT
                                     SHPPOINT = I_ORDER-VSTEL.
        IF SY-SUBRC EQ 0.
          IF I_ORDER-SPMON EQ P_STRMTH.
            IF     I_ORDER-WEEK EQ W_WKTBL01.
              I_OUTPUT-ORD01 = I_OUTPUT-ORD01 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL02.
              I_OUTPUT-ORD02 = I_OUTPUT-ORD02 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL03.
              I_OUTPUT-ORD03 = I_OUTPUT-ORD03 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL04.
              I_OUTPUT-ORD04 = I_OUTPUT-ORD04 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL05.
              I_OUTPUT-ORD05 = I_OUTPUT-ORD05 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL06.
              I_OUTPUT-ORD06 = I_OUTPUT-ORD06 + I_ORDER-WMENG.
            ENDIF.
            I_OUTPUT-TOTORD1  = I_OUTPUT-TOTORD1 + I_ORDER-WMENG.
          ELSE.
            IF     I_ORDER-WEEK EQ W_WKTBL07.
              I_OUTPUT-ORD07 = I_OUTPUT-ORD07 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL08.
              I_OUTPUT-ORD08 = I_OUTPUT-ORD08 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL09.
              I_OUTPUT-ORD09 = I_OUTPUT-ORD09 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL10.
              I_OUTPUT-ORD10 = I_OUTPUT-ORD10 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL11.
              I_OUTPUT-ORD11 = I_OUTPUT-ORD11 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL12.
              I_OUTPUT-ORD12 = I_OUTPUT-ORD12 + I_ORDER-WMENG.
            ENDIF.
            I_OUTPUT-TOTORD2  = I_OUTPUT-TOTORD2 + I_ORDER-WMENG.
          ENDIF.
          MODIFY I_OUTPUT INDEX SY-TABIX.
        ELSE.
          CLEAR : I_OUTPUT.
          MOVE I_ORDER-STCSTP   TO I_OUTPUT-STCSTP.
          MOVE I_ORDER-WERKS    TO I_OUTPUT-WERKS.
          MOVE I_ORDER-PRODUCT  TO I_OUTPUT-PRODUCT.
          MOVE I_ORDER-VSTEL    TO I_OUTPUT-SHPPOINT.
          IF I_ORDER-SPMON EQ P_STRMTH.
            IF     I_ORDER-WEEK EQ W_WKTBL01.
              I_OUTPUT-ORD01 = I_OUTPUT-ORD01 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL02.
              I_OUTPUT-ORD02 = I_OUTPUT-ORD02 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL03.
              I_OUTPUT-ORD03 = I_OUTPUT-ORD03 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL04.
              I_OUTPUT-ORD04 = I_OUTPUT-ORD04 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL05.
              I_OUTPUT-ORD05 = I_OUTPUT-ORD05 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL06.
              I_OUTPUT-ORD06 = I_OUTPUT-ORD06 + I_ORDER-WMENG.
            ENDIF.
            I_OUTPUT-TOTORD1  = I_OUTPUT-TOTORD1 + I_ORDER-WMENG.
          ELSE.
            IF     I_ORDER-WEEK EQ W_WKTBL07.
              I_OUTPUT-ORD07 = I_OUTPUT-ORD07 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL08.
              I_OUTPUT-ORD08 = I_OUTPUT-ORD08 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL09.
              I_OUTPUT-ORD09 = I_OUTPUT-ORD09 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL10.
              I_OUTPUT-ORD10 = I_OUTPUT-ORD10 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL11.
              I_OUTPUT-ORD11 = I_OUTPUT-ORD11 + I_ORDER-WMENG.
            ELSEIF I_ORDER-WEEK EQ W_WKTBL12.
              I_OUTPUT-ORD12 = I_OUTPUT-ORD12 + I_ORDER-WMENG.
            ENDIF.
            I_OUTPUT-TOTORD2  = I_OUTPUT-TOTORD2 + I_ORDER-WMENG.
          ENDIF.
          APPEND I_OUTPUT.
        ENDIF.
      ENDLOOP.
    Convert the Order Qty from KG to MT and calculate the %
      LOOP AT I_OUTPUT.
        V_TABIX = SY-TABIX.
        SELECT SINGLE MAKTX INTO I_OUTPUT-MAKTX FROM ZMY20PROD WHERE PRODUCT EQ I_OUTPUT-PRODUCT.
        I_OUTPUT-ORD01   = I_OUTPUT-ORD01 / 1000.
        I_OUTPUT-ORD02   = I_OUTPUT-ORD02 / 1000.
        I_OUTPUT-ORD03   = I_OUTPUT-ORD03 / 1000.
        I_OUTPUT-ORD04   = I_OUTPUT-ORD04 / 1000.
        I_OUTPUT-ORD05   = I_OUTPUT-ORD05 / 1000.
        I_OUTPUT-ORD06   = I_OUTPUT-ORD06 / 1000.
        I_OUTPUT-ORD07   = I_OUTPUT-ORD07 / 1000.
        I_OUTPUT-ORD08   = I_OUTPUT-ORD08 / 1000.
        I_OUTPUT-ORD09   = I_OUTPUT-ORD09 / 1000.
        I_OUTPUT-ORD10   = I_OUTPUT-ORD10 / 1000.
        I_OUTPUT-ORD11   = I_OUTPUT-ORD11 / 1000.
        I_OUTPUT-ORD12   = I_OUTPUT-ORD12 / 1000.
        I_OUTPUT-TOTORD1 = I_OUTPUT-TOTORD1 / 1000.
        I_OUTPUT-TOTORD2 = I_OUTPUT-TOTORD2 / 1000.
        IF I_OUTPUT-TOTFC1 GT 0.
          I_OUTPUT-FCORD1 = I_OUTPUT-TOTORD1 / I_OUTPUT-TOTFC1 * 100.
        ENDIF.
        IF I_OUTPUT-TOTFC2 GT 0.
          I_OUTPUT-FCORD2 = I_OUTPUT-TOTORD2 / I_OUTPUT-TOTFC2 * 100.
        ENDIF.
        MOVE '1'   TO I_OUTPUT-SORTKEY.
        SELECT SINGLE * FROM ZMY20GP WHERE ZZKEY1 EQ 'ZMY20FCUP'
                                              AND   ZZKEY2 EQ I_OUTPUT-STCSTP
                                              AND   ZZKEY3 EQ 'SHIPTOCUST'.
        IF SY-SUBRC EQ 0.
          MOVE '2' TO I_OUTPUT-SORTKEY.
        ENDIF.
        MODIFY I_OUTPUT INDEX SY-TABIX.
      ENDLOOP.
      LOOP AT I_OUTPUT.
        READ TABLE I_PRDWISE WITH KEY SORTKEY = I_OUTPUT-SORTKEY
                                      STCSTP  = I_OUTPUT-STCSTP
                                      PRODUCT = I_OUTPUT-PRODUCT.
        IF SY-SUBRC EQ 0.
          I_PRDWISE-TOTFC1  = I_PRDWISE-TOTFC1  + I_OUTPUT-TOTFC1.
          I_PRDWISE-TOTORD1 = I_PRDWISE-TOTORD1 + I_OUTPUT-TOTORD1.
          I_PRDWISE-TOTFC2  = I_PRDWISE-TOTFC2  + I_OUTPUT-TOTFC2.
          I_PRDWISE-TOTORD2 = I_PRDWISE-TOTORD2 + I_OUTPUT-TOTORD2.
          MODIFY I_PRDWISE INDEX SY-TABIX.
        ELSE.
          CLEAR : I_PRDWISE.
          MOVE I_OUTPUT-SORTKEY TO I_PRDWISE-SORTKEY.
          MOVE I_OUTPUT-STCSTP  TO I_PRDWISE-STCSTP.
          MOVE I_OUTPUT-PRODUCT TO I_PRDWISE-PRODUCT.
          MOVE I_OUTPUT-MAKTX   TO I_PRDWISE-MAKTX.
          I_PRDWISE-TOTFC1  = I_PRDWISE-TOTFC1  + I_OUTPUT-TOTFC1.
          I_PRDWISE-TOTORD1 = I_PRDWISE-TOTORD1 + I_OUTPUT-TOTORD1.
          I_PRDWISE-TOTFC2  = I_PRDWISE-TOTFC2  + I_OUTPUT-TOTFC2.
          I_PRDWISE-TOTORD2 = I_PRDWISE-TOTORD2 + I_OUTPUT-TOTORD2.
          APPEND I_PRDWISE.
        ENDIF.
      ENDLOOP.
      LOOP AT I_PRDWISE.
        IF I_PRDWISE-TOTFC1 GT 0.
          I_PRDWISE-FCORD1 = I_PRDWISE-TOTORD1 / I_PRDWISE-TOTFC1 * 100.
        ENDIF.
        IF I_PRDWISE-TOTFC2 GT 0.
          I_PRDWISE-FCORD2 = I_PRDWISE-TOTORD2 / I_PRDWISE-TOTFC2 * 100.
        ENDIF.
        I_PRDWISE-DIFF1 = I_PRDWISE-TOTORD1 - I_PRDWISE-TOTFC1.
        I_PRDWISE-DIFF2 = I_PRDWISE-TOTORD2 - I_PRDWISE-TOTFC2.
        MODIFY I_PRDWISE INDEX SY-TABIX.
      ENDLOOP.
      SORT I_OUTPUT BY SORTKEY STCSTP WERKS PRODUCT.
    Begin of Changes by Karthikeyan on 09/03/2007 - Req No -BA3K988704
    SORT I_PRDWISE BY SORTKEY STCSTP PRODUCT.
      SORT I_PRDWISE BY PRODUCT STCSTP.
    End of Changes by Karthikeyan on 09/03/2007 - Req No -BA3K988704
      IF P_ZERO = 'X'.
        DELETE I_OUTPUT  WHERE TOTFC1  EQ 0
                         AND   TOTORD1 EQ 0
                         AND   TOTFC2  EQ 0
                         AND   TOTORD2 EQ 0.
        DELETE I_PRDWISE WHERE TOTFC1  EQ 0
                         AND   TOTORD1 EQ 0
                         AND   TOTFC2  EQ 0
                         AND   TOTORD2 EQ 0.
      ENDIF.
    Set Cell colour for Remark entries
      LOOP AT I_OUTPUT.
        V_TABIX = SY-TABIX.
        SELECT * FROM ZMY20RMRK  WHERE BUKRS    EQ P_BUKRS
                               AND   STCSTP   EQ I_OUTPUT-STCSTP
                               AND   WERKS    EQ I_OUTPUT-WERKS
                               AND   SHPPOINT EQ I_OUTPUT-SHPPOINT
                               AND   PRODUCT  EQ I_OUTPUT-PRODUCT.
          CLEAR : V_FNAME.
          IF ZMY20RMRK-SPMON = P_STRMTH.
            READ TABLE I_WEEKS WITH KEY WEEKS = ZMY20RMRK-WEEK
                                        MONTH = P_STRMTH+4(2).
            IF     I_WEEKS-SLNO = '1'.
              IF ZMY20RMRK-FC_ORDER = 'FC'.
                MOVE 'QTY01' TO V_FNAME.
              ELSE.
                MOVE 'ORD01' TO V_FNAME.
              ENDIF.
            ELSEIF I_WEEKS-SLNO = '2'.
              IF ZMY20RMRK-FC_ORDER = 'FC'.
                MOVE 'QTY02' TO V_FNAME.
              ELSE.
                MOVE 'ORD02' TO V_FNAME.
              ENDIF.
            ELSEIF I_WEEKS-SLNO = '3'.
              IF ZMY20RMRK-FC_ORDER = 'FC'.
                MOVE 'QTY03' TO V_FNAME.
              ELSE.
                MOVE 'ORD03' TO V_FNAME.
              ENDIF.
            ELSEIF I_WEEKS-SLNO = '4'.
              IF ZMY20RMRK-FC_ORDER = 'FC'.
                MOVE 'QTY04' TO V_FNAME.
              ELSE.
                MOVE 'ORD04' TO V_FNAME.
              ENDIF.
            ELSEIF I_WEEKS-SLNO = '5'.
              IF ZMY20RMRK-FC_ORDER = 'FC'.
                MOVE 'QTY05' TO V_FNAME.
              ELSE.
                MOVE 'ORD05' TO V_FNAME.
              ENDIF.
            ELSEIF I_WEEKS-SLNO = '6'.
              IF ZMY20RMRK-FC_ORDER = 'FC'.
                MOVE 'QTY06' TO V_FNAME.
              ELSE.
                MOVE 'ORD06' TO V_FNAME.
              ENDIF.
            ENDIF.
          ELSEIF ZMY20RMRK-SPMON = V_ENDMTH.
            READ TABLE I_WEEKS WITH KEY WEEKS = ZMY20RMRK-WEEK
                                        MONTH = V_ENDMTH+4(2).
            IF     I_WEEKS-SLNO = '7'.
              IF ZMY20RMRK-FC_ORDER = 'FC'.
                MOVE 'QTY07' TO V_FNAME.
              ELSE.
                MOVE 'ORD07' TO V_FNAME.
              ENDIF.
            ELSEIF I_WEEKS-SLNO = '8'.
              IF ZMY20RMRK-FC_ORDER = 'FC'.
                MOVE 'QTY08' TO V_FNAME.
              ELSE.
                MOVE 'ORD08' TO V_FNAME.
              ENDIF.
            ELSEIF I_WEEKS-SLNO = '9'.
              IF ZMY20RMRK-FC_ORDER = 'FC'.
                MOVE 'QTY09' TO V_FNAME.
              ELSE.
                MOVE 'ORD09' TO V_FNAME.
              ENDIF.
            ELSEIF I_WEEKS-SLNO = '10'.
              IF ZMY20RMRK-FC_ORDER = 'FC'.
                MOVE 'QTY10' TO V_FNAME.
              ELSE.
                MOVE 'ORD10' TO V_FNAME.
              ENDIF.
            ELSEIF I_WEEKS-SLNO = '11'.
              IF ZMY20RMRK-FC_ORDER = 'FC'.
                MOVE 'QTY11' TO V_FNAME.
              ELSE.
                MOVE 'ORD11' TO V_FNAME.
              ENDIF.
            ELSEIF I_WEEKS-SLNO = '12'.
              IF ZMY20RMRK-FC_ORDER = 'FC'.
                MOVE 'QTY12' TO V_FNAME.
              ELSE.
                MOVE 'ORD12' TO V_FNAME.
              ENDIF.
            ENDIF.
          ENDIF.
          IF V_FNAME NE SPACE.
            PERFORM ALV_COLOR USING V_FNAME 6 0 0 CHANGING I_OUTPUT-CELLCOLOR.
          ENDIF.
        ENDSELECT.
        MODIFY I_OUTPUT INDEX V_TABIX.
      ENDLOOP.
    ENDFORM.                    " 4000_CONSOLIDATE_DATA
    *&      Form  f4_help_stcstp
          text
    -->  p1        text
    <--  p2        text
    FORM F4_HELP_STCSTP.
    *Initialize screen values
      DATA: PROGNAME LIKE SY-REPID,
            DYNNUM   LIKE SY-DYNNR.
      PROGNAME = SY-REPID.
      DYNNUM   = SY-DYNNR.
      CLEAR   : T_STCP.
      REFRESH : T_STCP.
      SELECT * FROM  T005 WHERE LAND1 NE SPACE.
        CLEAR : T_STCP.
        MOVE T005-LAND1 TO T_STCP-STCSTP.
        MOVE '1'        TO T_STCP-SORTKEY.
        APPEND T_STCP.
      ENDSELECT.
      SELECT * FROM ZMY20GP WHERE ZZKEY1 = 'ZMY20FCUP'
                                     AND   ZZKEY3 = 'SHIPTOCUST'.
        CLEAR : T_STCP.
        MOVE ZMY20GP-ZZKEY2 TO T_STCP-STCSTP.
        MOVE '2'        TO T_STCP-SORTKEY.
        APPEND T_STCP.
      ENDSELECT.
      SORT T_STCP BY SORTKEY STCSTP.
      DELETE ADJACENT DUPLICATES FROM T_STCP COMPARING SORTKEY STCSTP.
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          RETFIELD    = 'STCSTP'
          DYNPPROG    = PROGNAME
          DYNPNR      = DYNNUM
          DYNPROFIELD = 'S_STCSTP'
          VALUE_ORG   = 'S'
        TABLES
          VALUE_TAB   = T_STCP.
    ENDFORM.                    " f4_help_stcstp
    *&      Form  f4_help_product
          text
    -->  p1        text
    <--  p2        text
    FORM F4_HELP_PRODUCT.
    *Initialize screen values
      DATA: PROGNAME LIKE SY-REPID,
            DYNNUM   LIKE SY-DYNNR.
      PROGNAME = SY-REPID.
      DYNNUM   = SY-DYNNR.
      CLEAR   : T_PROD.
      REFRESH : T_PROD.
      SELECT * INTO CORRESPONDING FIELDS OF TABLE T_PROD FROM ZMY20PROD
                                             WHERE PRODUCT NE SPACE.
      SORT T_PROD BY PRODUCT.
      DELETE ADJACENT DUPLICATES FROM T_PROD COMPARING PRODUCT.

    in st pf-status place the FCT code below the icon
    for save - SAVE.
    reward if useful.

  • Top_of_page is not working in ALV hierarchy?

    Hi,
          I have written following code for top_of_page using event but which is not working...This report is developed for interactive report.
    Note: passed the it_events into ALV hierarchy functional module.
    FORM build_event_tab .
       CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
         EXPORTING
           i_list_type = 1
         IMPORTING
           et_events   = it_events[].
       READ TABLE it_events INTO wa_events WITH KEY form = 'TOP_OF_PAGE'.
       IF sy-subrc = 0.
         wa_events-form = 'TOP_OF_PAGE'.
         APPEND wa_events TO it_events.
       ENDIF.
    ENDFORM. "Get_events
    FORM top_of_page USING document TYPE REF TO cl_dd_document.
       DATA: dl_text(255) TYPE c,
             lv_cutime TYPE sy-uzeit,
             lv_cudt(20) TYPE c.
       lv_cudt = sy-datum.
    *--Passing Date----*
       WRITE  lv_cudt TO dl_text.
       CONCATENATE 'Date : ' lv_cudt+6(2) '-'
                             lv_cudt+4(2) '-'
                             lv_cudt+0(4) INTO dl_text.
       CALL METHOD document->add_text
         EXPORTING
           text = dl_text.
       CLEAR : dl_text.
       CALL METHOD document->add_gap
         EXPORTING
           width = 50.
       WRITE 'Company Name' TO dl_text.
       CALL METHOD document->add_text
         EXPORTING
           text         = dl_text
           sap_emphasis = cl_dd_area=>heading
           sap_style    = cl_dd_area=>heading
           sap_color    = cl_dd_area=>list_total_inv.
       CLEAR : dl_text.
       CALL METHOD document->add_gap
         EXPORTING
           width = 150.
       lv_cutime = sy-uzeit.
       CONCATENATE 'Time : ' lv_cutime+0(2) ':'
                             lv_cutime+2(2) ':'
                             lv_cutime+4(2) INTO dl_text.
       CALL METHOD document->add_text
         EXPORTING
           text = dl_text.
       CALL METHOD document->add_gap
         EXPORTING
           width = 60.
       WRITE 'Title' TO dl_text.
       CALL METHOD document->add_text
         EXPORTING
           text         = dl_text
           sap_emphasis = cl_dd_area=>heading
           sap_style    = cl_dd_area=>heading
           sap_color    = cl_dd_area=>list_total_inv.
       CLEAR : dl_text.
       CALL METHOD document->add_gap
         EXPORTING
           width = 50.
    ENDFORM.                    "html_top_of_page
    Thanks
    Shree

    PERFORM build_fieldcat.
      PERFORM build_event_tab.
      PERFORM alv_display.
    *---Build fieldcat
    FORM build_fieldcat.
      wa_fieldcat-tabname = 'IT_VENDOR'.
      wa_fieldcat-fieldname = 'LIFNR'.
      wa_fieldcat-col_pos   = '2'.
      wa_fieldcat-seltext_l = 'SUPPLIER'.
      wa_fieldcat-outputlen = 20.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'IT_VENDOR'.
      wa_fieldcat-fieldname = 'NAME1'.
      wa_fieldcat-col_pos   = '2'.
      wa_fieldcat-seltext_l = 'VENDOR NAME'.
      wa_fieldcat-outputlen = 40.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'IT_FINAL'.
      wa_fieldcat-fieldname = 'WERKS'.
      wa_fieldcat-col_pos   = '1'.
      wa_fieldcat-seltext_l = 'Plant'.
      wa_fieldcat-outputlen = 5.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'IT_FINAL'.
      wa_fieldcat-fieldname = 'AWKEY'.
      wa_fieldcat-col_pos   = '2'.
      wa_fieldcat-seltext_l = ' Document'.
      wa_fieldcat-hotspot = 'X'.
      wa_fieldcat-outputlen = 16.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'IT_FINAL'.
      wa_fieldcat-fieldname = 'BELNR'.
      wa_fieldcat-col_pos   = '3'.
      wa_fieldcat-seltext_l = 'A/c Document'.
      wa_fieldcat-hotspot = 'X'.
      wa_fieldcat-outputlen = 16.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'IT_FINAL'.
      wa_fieldcat-fieldname = 'BUDAT'.
      wa_fieldcat-col_pos   = '4'.
      wa_fieldcat-seltext_l = 'PJ Date'.
      wa_fieldcat-outputlen = 16.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'IT_FINAL'.
      wa_fieldcat-fieldname = 'XBLNR'.
      wa_fieldcat-col_pos   = '5'.
      wa_fieldcat-seltext_l = 'Inv'.
      wa_fieldcat-outputlen = 16.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'IT_FINAL'.
      wa_fieldcat-fieldname = 'BLDAT'.
      wa_fieldcat-col_pos   = '6'.
      wa_fieldcat-seltext_l = 'PJ Date'.
      wa_fieldcat-outputlen = 16.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'IT_FINAL'.
      wa_fieldcat-fieldname = 'DMBTR'.
      wa_fieldcat-col_pos   = '7'.
      wa_fieldcat-seltext_l = 'Bill.Amount'.
      wa_fieldcat-outputlen = 19.
      wa_fieldcat-do_sum   = 'X'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'IT_FINAL'.
      wa_fieldcat-fieldname = 'HKONT'.
      wa_fieldcat-col_pos   = '8'.
      wa_fieldcat-seltext_l = 'Cost Ctr'.
      wa_fieldcat-outputlen = 16.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ENDFORM.                    "Build_fieldcat
    *----ALV Display-----*
    FORM alv_display.
      key-header01 = 'LIFNR'.
      key-item01   = 'LIFNR'.
      DELETE ADJACENT DUPLICATES FROM it_vendor.
      DELETE ADJACENT DUPLICATES FROM it_final.
      CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
        EXPORTING
          i_callback_program       = sy-repid
          i_callback_user_command  = 'USER_COMMAND'
          i_callback_pf_status_set = 'PFSTATUS'
          it_fieldcat              = it_fieldcat[]
          i_tabname_header         = 'IT_VENDOR'
          i_tabname_item           = 'IT_FINAL'
          it_events                = it_events[]
          is_keyinfo               = key
        TABLES
          t_outtab_header          = it_vendor[]
          t_outtab_item            = it_final[].
    ENDFORM.                    "alv_display
    *----interactive method--
    FORM user_command USING r_ucomm TYPE sy-ucomm
                            rs_selfield TYPE slis_selfield.
      CASE r_ucomm.
        WHEN '&IC1'.
          READ TABLE it_final INTO wa_final INDEX rs_selfield-tabindex.
          IF sy-subrc = 0.
            IF rs_selfield-fieldname = 'BELNR'.
              SET PARAMETER ID 'BLN' FIELD wa_final-belnr.
              SET PARAMETER ID 'BUK' FIELD pa_bukrs.
              SET PARAMETER ID 'GJA' FIELD pa_gjahr.
              CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
            ELSEIF rs_selfield-fieldname = 'AWKEY'.
              SET PARAMETER ID 'RBN' FIELD wa_final-awkey.
              SET PARAMETER ID 'GJR' FIELD pa_gjahr.
              CALL TRANSACTION 'MIR4' AND SKIP FIRST SCREEN.
            ELSEIF rs_selfield-fieldname = 'LFBNR'.
              SET PARAMETER ID 'BLN' FIELD it_bsak-lfbnr.
              SET PARAMETER ID 'BUK' FIELD pa_bukrs.
              SET PARAMETER ID 'GJA' FIELD pa_gjahr.
              CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
            ELSEIF rs_selfield-fieldname = 'EBELN'.
              SELECT SINGLE
                     ebeln
                     INTO wk_ebeln
                     FROM ekko
                     WHERE ebeln = it_bsak-ebeln
                     AND bstyp = 'F'.
              IF sy-subrc EQ 0.
                SET PARAMETER ID 'BES' FIELD it_bsak-ebeln.
                CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
              ELSE.
                SET PARAMETER ID 'VRT' FIELD it_bsak-ebeln.
                CALL TRANSACTION 'ME33' AND SKIP FIRST SCREEN.
              ENDIF.
            ENDIF.
          ENDIF.
      ENDCASE.
    ENDFORM.                    "user_command
    FORM pfstatus USING ut_extab TYPE slis_t_extab.
      SET PF-STATUS 'STANDARD_FULLSCREEN' OF PROGRAM 'SAPLKKBL'.
    ENDFORM.                    "pfstatus
    *---Authorization check---
    FORM bukrs_check.
      SELECT SINGLE
             butxt "Name of the Company Code / Company
             ort01 "City
             INTO (wk_company, wk_city) FROM t001
             WHERE  bukrs = pa_bukrs.
      IF sy-subrc <> 0.
        MESSAGE 'create your own message' TYPE 'I'.
      ENDIF.
    ENDFORM.                    " BUKRS_CHECK
    FORM build_event_tab.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type = 0
        IMPORTING
          et_events   = it_events[].
      READ TABLE it_events INTO wa_events
         WITH KEY name = 'SLIS_EV_TOP_OF_PAGE'.
      IF sy-subrc = 0.
        wa_events-form = 'TOP_OF_PAGE'.
        MODIFY it_events FROM wa_events INDEX sy-tabix.
      ENDIF.
      READ TABLE it_events INTO wa_events WITH KEY name =
                    'SLIS_EV_END_OF_PAGE'.
      IF sy-subrc = 0.
        wa_events-form = 'END_OF_PAGE'.
        MODIFY it_events FROM wa_events INDEX sy-tabix.
      ENDIF.
    ENDFORM. "Get_events
    FORM end_of_page.
      DATA: it_header TYPE slis_t_listheader,
            wa_header TYPE slis_listheader.
      wa_header-typ = 'S'.
      wa_header-key = 'MATERIAL'.
    *  wa_line-info = p1.
      APPEND wa_header TO it_header.
      CLEAR wa_header.
    *  READ TABLE it_maktx WITH KEY matnr = p1.
      wa_header-typ = 'S'.
      wa_header-key = 'DESCRIPTION'.
    *  wa_line-info = it_maktx-maktx.
      APPEND  wa_header TO it_header.
      CLEAR wa_header.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
         EXPORTING
    *      i_logo             = 'ENJOYSAP_LOGO'
           it_list_commentary = it_header.
    ENDFORM.                    "END_OF_PAGE
    FORM top_of_page USING document TYPE REF TO cl_dd_document.
      DATA: dl_text(255) TYPE c,
            lv_cutime TYPE sy-uzeit,
            lv_cudt(20) TYPE c.
      lv_cudt = sy-datum.
    *--Passing Date----*
      WRITE  lv_cudt TO dl_text.
      CONCATENATE 'Date : ' lv_cudt+6(2) '-'
                            lv_cudt+4(2) '-'
                            lv_cudt+0(4) INTO dl_text.
      CALL METHOD document->add_text
        EXPORTING
          text = dl_text.
      CLEAR : dl_text.
      CALL METHOD document->add_gap
        EXPORTING
          width = 50.
      WRITE 'INCAP CON MFG SER (P) LTD' TO dl_text.
      CALL METHOD document->add_text
        EXPORTING
          text         = dl_text
          sap_emphasis = cl_dd_area=>heading
          sap_style    = cl_dd_area=>heading
          sap_color    = cl_dd_area=>list_total_inv.
      CLEAR : dl_text.
      CALL METHOD document->add_gap
        EXPORTING
          width = 150.
      lv_cutime = sy-uzeit.
      CONCATENATE 'Time : ' lv_cutime+0(2) ':'
                            lv_cutime+2(2) ':'
                            lv_cutime+4(2) INTO dl_text.
      CALL METHOD document->add_text
        EXPORTING
          text = dl_text.
      CALL METHOD document->add_gap
        EXPORTING
          width = 60.
      WRITE 'Purchase Journal' TO dl_text.
      CALL METHOD document->add_text
        EXPORTING
          text         = dl_text
          sap_emphasis = cl_dd_area=>heading
          sap_style    = cl_dd_area=>heading
          sap_color    = cl_dd_area=>list_total_inv.
      CLEAR : dl_text.
      CALL METHOD document->add_gap
        EXPORTING
          width = 50.
    ENDFORM.                    "html_top_of_page

  • Bapi_document_create2 does not work correctly with attached file.

    Hi all.
    I hava a problem with bapi. I programmed below.
            ls_docdata-documenttype = 'BBS'.
            ls_docdata-description  = 'JJW test'.
            ls_file-documenttype = 'BBS'.
            ls_file-ORIGINALTYPE = 1.
            ls_file-storagecategory = 'ZSTW_KPRO'.
            ls_file-wsapplication = 'TXT'.
            ls_file-docfile = entity_filename.
            append ls_file to lt_files.
            CALL FUNCTION 'BAPI_DOCUMENT_CREATE2'
              EXPORTING
                documentdata       = ls_docdata
                PF_FTP_DEST = 'SAPFTP'
                PF_HTTP_DEST = 'SAPHTTP'
              IMPORTING
                documenttype               =      lv_documenttype
                documentnumber           =     lv_documentnumber
                documentpart                =     lv_documentpart
                documentversion           =     lv_documentversion
                return                           =     ls_return
              tables
                documentfiles     = lt_files.
            call function 'BAPI_TRANSACTION_COMMIT'.
    If I don't attach the file, DIR is created but if attach some files, it does not work. What should I do??
    regards.

    Hi,
    You can use the below to attach the file from BSP to SAP. But it doesnt use the BAPI - 'BAPI_DOCUMENT_CREATE2'. It works perfectly for me. Let me know if you have any questions.
    Note: This code put the file into SAP Directory "/userapps/master_data/" as well as it upload the file into Transaction WTY since i am using Business object:BUS2222. You may need to modify the Business object if you ahve the one, otherwise you can just put it into SAP DIR.
    FUNCTION ZATTACH_CREATE.
    *"*"Update function module:
    *"*"Local interface:
    *"  IMPORTING
    *"     VALUE(FILE) TYPE  SAPB-SAPFILES
    *"     VALUE(STR_FILE_CONTENT) TYPE  XSTRING
    *"     VALUE(OBJECT_KEY) TYPE  BAPIBDS01-OBJKEY
      DATA: LOGICAL_SYSTEM TYPE BAPIBDS01-LOG_SYSTEM,
            CLASSNAME TYPE  BAPIBDS01-CLASSNAME,
            CLASSTYPE TYPE  BAPIBDS01-CLASSTYPE.
      DATA:  IT_FILES TYPE TABLE OF  BAPIFILES,
            IT_SIGNATURE TYPE TABLE OF  BAPISIGNAT,
       FILES TYPE  BAPIFILES,
      SIGNATURE TYPE   BAPISIGNAT.
      DATA: I_TOADD TYPE TOADD,
            FILENAME_ALL TYPE SAPB-SAPFILES,
            FILE_PATH TYPE SAPB-SAPFILES,
            FILE_PATH_MEMORY(250) TYPE C,  " path für SAP memory
            FILE_PATH_LENGTH TYPE I,       " length of the file_path
           FILE_CONTENT_LENGTH TYPE I,       " length of the file_CONTENT
           FILE_NAME TYPE SAPB-SAPFILES,
            FILE_EXTENSION TYPE TOADD-DOC_TYPE.     " file-extension.
      DATA: I_FILE_CONTENT TYPE TABLE OF BAPICONTEN.
      DATA: WA_FILE_CONTENT TYPE  BAPICONTEN,
       STRING_CONTENT TYPE STRING,
       STRING_CONTENT1 TYPE STRING.
      DATA:
       I_FILES TYPE TABLE OF BAPIFILES ,
            I_SIGNATURE TYPE TABLE OF BAPISIGNAT ,
            I_COMPONENTS TYPE TABLE OF BAPICOMPON ,
           COMPONENTS TYPE BAPICOMPON ,
            I_PROPERTIES TYPE TABLE OF SDOKPROPTY ,
            I_PROPERTIES2 TYPE TABLE OF BAPIPROPER ,
            I_PROPERTIES_DEL TYPE TABLE OF BAPIDPROPT ,
           MIMETYPE TYPE TOADD-MIMETYPE,
      COMPID TYPE BAPICOMPON-COMP_ID,  " compid for popup
            COMPID_FLAG(1) TYPE C,           " compid can't be changed
            MODIFY_FLAG(1) TYPE C,           " document is modified
            ATTRI_FLAG(1) TYPE C,            " attri can't be changed
            TITLE_FLAG(1) TYPE C,            " titel of the popup
            CANCEL_FLAG(1) TYPE C,           " cancel button Yes/No
            BUTTON_TEXT(10) TYPE C,
            INFO_TEXT(100) TYPE C,
      VERSION_NR TYPE BDN_CON-DOC_VER_NO,     " version_nr for popup
            VERSION_LANGU2 TYPE T002T-SPTXT, " language field in POPUP
            VERSION_LANGU TYPE BDN_CON-LANGU," SPRAS language field
            TITLE_TEXT(100) TYPE C,          " title of the popup
            DESCRIPTION TYPE BDN_CON-DESCRIPT.      " descr. for popup
    *FILENAME_ALL = fileUpload_event->file_name.
    * Transfering into SAP File server.
      FILE_CONTENT_LENGTH = XSTRLEN( STR_FILE_CONTENT ).
      FILENAME_ALL = FILE .
      STRING_CONTENT = STR_FILE_CONTENT.
      DATA: OUT_LINES TYPE TABLE OF XSTRING.
      CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
        EXPORTING
          BUFFER                = STR_FILE_CONTENT
    *   APPEND_TO_TABLE       = ' '
    * IMPORTING
    *   OUTPUT_LENGTH         =
        TABLES
          BINARY_TAB            = I_FILE_CONTENT.
      DELETE DATASET '/userapps/master_data/claim1.txt'.
      OPEN DATASET '/userapps/master_data/claim1.txt' FOR APPENDING
        IN TEXT MODE ENCODING DEFAULT.
    *  LOOP AT I_FILE_CONTENT INTO WA_FILE_CONTENT.
    *    TRANSFER STR_FILE_CONTENT TO '/userapps/master_data/claim1.txt'.
      TRANSFER STRING_CONTENT TO '/userapps/master_data/claim1.txt'.
    *  ENDLOOP.
      CLOSE DATASET '/userapps/master_data/claim1.txt'.
      OPEN DATASET '/userapps/master_data/claim1.txt' FOR INPUT
           IN TEXT MODE ENCODING DEFAULT.
      READ DATASET '/userapps/master_data/claim1.txt'  into STRING_CONTENT1.
    * -- split filename                                                 -- *
        DATA: LENGTH TYPE I.
      DATA: PATH2(1200).  " LIKE sapb-sapfiles.
      DATA: L_FILE(1200),
            L_DIR(1200),
            L_DELIMITER        TYPE C,
            L_OFFSET           TYPE I,
            L_BYTES            TYPE I,
            L_DELIMITER_OFFSET TYPE I,
            L_DELIMITER_BYTES  TYPE I,
            L_CHAR             TYPE C,
            L_PREVIOUS_CHAR    TYPE C,
            L_LAST_CHAR        TYPE C.
      PATH2 = FILENAME_ALL.
      LENGTH = STRLEN( PATH2 ).
      L_OFFSET = 0.
      WHILE L_OFFSET < LENGTH.
        L_LAST_CHAR = L_CHAR. "remember last character
        L_BYTES = CHARLEN( PATH2+L_OFFSET ).
        L_CHAR = PATH2+L_OFFSET(L_BYTES). "get current character
        IF L_CHAR = '/' OR L_CHAR = '' OR L_CHAR = ':'.
          IF L_DELIMITER IS INITIAL OR L_DELIMITER = ':'.
            "Typically we deal with absolute paths, so the first
            "delimiter is best. This allows for UNIX paths with
            "'' in the directory or file name
            L_DELIMITER = L_CHAR.
          ENDIF.
          IF L_CHAR = L_DELIMITER.
            L_DELIMITER_OFFSET = L_OFFSET.
            L_DELIMITER_BYTES = L_BYTES.
            "remember character in front of delimiter:
            L_PREVIOUS_CHAR = L_LAST_CHAR.
          ENDIF.
        ENDIF.
        L_OFFSET = L_OFFSET + L_BYTES.
      ENDWHILE.
      IF NOT L_DELIMITER IS INITIAL.
        L_OFFSET = L_DELIMITER_OFFSET + L_DELIMITER_BYTES.
        L_FILE = PATH2+L_OFFSET.
        IF L_PREVIOUS_CHAR = ':' OR L_DELIMITER = ':'.
          "path ends with or after drive identifer, include the delimiter
          L_DIR = PATH2(L_OFFSET).
        ELSEIF NOT L_DELIMITER_OFFSET IS INITIAL.
          "do not include a trailing delimiter for compatibility reasons
          L_DIR = PATH2(L_DELIMITER_OFFSET).
        ELSE.
          CLEAR L_DIR.
        ENDIF.
      ELSE.
        L_DIR = SPACE.
        L_FILE = PATH2.
      ENDIF.
      FILE_PATH = L_DIR.
      FILE_NAME = L_FILE.
    * -- set new file_path to SAP memory                                -- *
      FILE_PATH_LENGTH = STRLEN( FILE_PATH ).
      IF FILE_PATH <> SPACE AND FILE_PATH_LENGTH < 250.
        FILE_PATH_MEMORY = FILE_PATH.
        SET PARAMETER ID 'OAP' FIELD FILE_PATH_MEMORY.
      ELSE.
        FILE_PATH_MEMORY = SPACE.
        SET PARAMETER ID 'OAP' FIELD FILE_PATH_MEMORY.
      ENDIF.
    * -- data declaration ------------------------------------------------ *
      DATA:
            SINGLE_C TYPE C.
      CLEAR: SINGLE_C.
      LENGTH = STRLEN( FILE_NAME ).
      IF LENGTH > 0.
        WHILE LENGTH > 0.
          SINGLE_C = FILE_NAME+LENGTH(1).
          IF SINGLE_C CO '.'.
            LENGTH = LENGTH + 1.
            EXIT.
          ELSE.
            LENGTH = LENGTH - 1.
          ENDIF.
        ENDWHILE.
        IF LENGTH > 0.
          FILE_EXTENSION = FILE_NAME+LENGTH.
        ELSE.
          FILE_EXTENSION = SPACE.
        ENDIF.
      ELSE.
        FILE_EXTENSION = SPACE.
      ENDIF.
      IF FILE_EXTENSION <> SPACE.
        SET LOCALE LANGUAGE SY-LANGU.
        TRANSLATE FILE_EXTENSION TO UPPER CASE.              "#EC TRANSLANG
        SET LOCALE LANGUAGE SPACE.
      ENDIF.
    * TR001++
      DATA: I_TOADV TYPE TABLE OF TOADV.
      DATA: WA_TOADV TYPE TOADV.
      DATA: OBJECT TYPE SAEOBJART.
      SELECT * FROM TOADV INTO CORRESPONDING FIELDS OF TABLE
              I_TOADV WHERE STANDARD = 'X'.
      DELETE I_TOADV WHERE AR_OBJECT CS 'BDS' OR AR_OBJECT CS 'ZSEST'.
      READ TABLE I_TOADV INTO WA_TOADV WITH KEY DOC_TYPE = FILE_EXTENSION.
    * -- get name and description for the document                      -- *
      CLEAR: COMPID,
             DESCRIPTION,
             VERSION_NR,
             MODIFY_FLAG,
             COMPID_FLAG,
             ATTRI_FLAG,
             TITLE_FLAG.
      COMPID_FLAG    = ' '.              " -> compid can't be changed
      MODIFY_FLAG    = 'S'.              " -> popup in save modus
      ATTRI_FLAG     = 'X'.              " -> attri's can be changed
      COMPID         = FILE_NAME.
      VERSION_NR     = '00000001'.
      VERSION_LANGU2 = SY-LANGU.
      TITLE_FLAG     = '1'.              " -> BDN
    * -- get the mimetype of the docuclass                              -- *
    *PERFORM MIMETYPE_GET(OAALL) USING FILE_EXTENSION
    *                            CHANGING I_TOADD.
      DATA: I_DOCUMENTCLASS TYPE TOADD-DOC_TYPE.
      MOVE FILE_EXTENSION TO I_DOCUMENTCLASS.
      SET LOCALE LANGUAGE SY-LANGU.
      TRANSLATE I_DOCUMENTCLASS TO UPPER CASE.               "#EC TRANSLANG
      SET LOCALE LANGUAGE SPACE.
      SELECT SINGLE * FROM TOADD INTO I_TOADD WHERE
                                 DOC_TYPE EQ I_DOCUMENTCLASS.
      IF SY-SUBRC NE 0.                    " nothing found -> default!
        I_TOADD-DOC_TYPE = I_DOCUMENTCLASS.
        I_TOADD-MIMETYPE = 'application/x-docType'.             "#EC NOTEXT
      ENDIF.
      MOVE I_TOADD-MIMETYPE TO MIMETYPE.
    * -- fill file and signature structure                              -- *
      CLEAR: I_FILES, I_SIGNATURE.
      REFRESH : I_FILES, I_SIGNATURE.
      DESCRIPTION = FILE_NAME.
      FILES-DOC_COUNT = 1.
      FILES-DIRECTORY = FILE_PATH.
      FILES-FILENAME  = FILE_NAME.
      FILES-MIMETYPE  = MIMETYPE.
      APPEND FILES TO I_FILES.
    * -- fill components and signature structure                        -- *
      COMPONENTS-DOC_COUNT  = 1.
      COMPONENTS-COMP_COUNT = 1.
      COMPONENTS-MIMETYPE   = MIMETYPE.
      COMPONENTS-COMP_ID         = FILE_NAME.
      APPEND COMPONENTS TO I_COMPONENTS.
      SIGNATURE-DOC_COUNT  = 1.
      SIGNATURE-PROP_NAME  = 'BDS_DOCUMENTCLASS'.
      SIGNATURE-PROP_VALUE = FILE_EXTENSION.
      APPEND SIGNATURE TO I_SIGNATURE.
      SIGNATURE-PROP_NAME = 'BDS_CONTREP'.
    *IF BDS_DOCTYPE_LIST-CONTREP = SPACE.
      SIGNATURE-PROP_VALUE = ' '.                               "#EC NOTEXT
    *ELSE.
    *  I_SIGNATURE-PROP_VALUE = BDS_DOCTYPE_LIST-CONTREP.
    *ENDIF.
      APPEND SIGNATURE TO I_SIGNATURE.
      SIGNATURE-PROP_NAME  = 'BDS_DOCUMENTTYPE'.
      SIGNATURE-PROP_VALUE = WA_TOADV-AR_OBJECT. "'ZSRVCXLS'."TR001+
      APPEND SIGNATURE TO I_SIGNATURE.
      SIGNATURE-PROP_NAME  = 'DESCRIPTION'.
      SIGNATURE-PROP_VALUE = DESCRIPTION.
      APPEND SIGNATURE TO I_SIGNATURE.
      SIGNATURE-PROP_NAME  = 'LANGUAGE'.
      SIGNATURE-PROP_VALUE = VERSION_LANGU.
      APPEND SIGNATURE TO I_SIGNATURE.
      CALL FUNCTION 'BDS_BUSINESSDOCUMENT_CREA_TAB'
        EXPORTING
    *   LOGICAL_SYSTEM        =
          CLASSNAME             = 'BUS2222' "classname_select
          CLASSTYPE             = 'BO'" classtype_select
        CLIENT                = SY-MANDT
          OBJECT_KEY            = OBJECT_KEY
        BINARY_FLAG           = 'X'
    * IMPORTING
    *   OBJECT_KEY            =
        TABLES
          SIGNATURE             = I_SIGNATURE
          COMPONENTS            = I_COMPONENTS
        CONTENT               = I_FILE_CONTENT
    *   ASCII_CONTENT         =
    * EXCEPTIONS
    *   NOTHING_FOUND         = 1
    *   PARAMETER_ERROR       = 2
    *   NOT_ALLOWED           = 3
    *   ERROR_KPRO            = 4
    *   INTERNAL_ERROR        = 5
    *   NOT_AUTHORIZED        = 6
    *   OTHERS                = 7
      COMMIT WORK AND WAIT.
      IF SY-SUBRC <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFUNCTION.
    Message was edited by:
            Raja T

  • HFM Rules - Variable not working

    Hi,
    I am trying to setup a rule to calculate using balances from other scenarios. Instead of writing 100's of rows of rules I have created a variable. For some reason the variable is not working as it should. Below is what I have
    If value="<Entity Currency>" or value = "<Entity Curr Total>" then
    'Define prior forecast variable "PrForecast"
    If pov_scenario = "S#JANFCST" then CrForecast = "S#JANFCST" and PrForecast = "S#BUDGETV1"
    ElseIf pov_scenario = "S#FEBFCST" then CrForecast = "S#FEBFCST" and PrForecast = "S#JANFCST"
    ElseIf pov_scenario = "S#MARFCST" then CrForecast = "S#MARFCST" and PrForecast = "S#FEBFCST"
    ElseIf pov_scenario = "S#APRFCST" then CrForecast = "S#APRFCST" and PrForecast = "S#MARFCST"
    ElseIf pov_scenario = "S#MAYFCST" then CrForecast = "S#MAYFCST" and PrForecast = "S#APRFCST"
    ElseIf pov_scenario = "S#JUNFCST" then CrForecast = "S#JUNFCST" and PrForecast = "S#MAYFCST"
    ElseIf pov_scenario = "S#JULFCST" then CrForecast = "S#JULFCST" and PrForecast = "S#JUNFCST"
    ElseIf pov_scenario = "S#AUGFCST" then CrForecast = "S#AUGFCST" and PrForecast = "S#JULFCST"
    ElseIf pov_scenario = "S#SEPFCST" then CrForecast = "S#SEPFCST" and PrForecast = "S#AUGFCST"
    ElseIf pov_scenario = "S#OCTFCST" then CrForecast = "S#OCTFCST" and PrForecast = "S#SEPFCST"
    ElseIf pov_scenario = "S#NOVFCST" then CrForecast = "S#NOVFCST" and PrForecast = "S#OCTFCST"
    ElseIf pov_scenario = "S#DECFCST" then CrForecast = "S#DECFCST" and PrForecast = "S#NOVFCST"
    End if
      If Right(pov_Scenario,4) = "FCST" then
       HS.EXP "A#YVR_SALES" &Dync3& ".C3#YVR_CY_IMP = A#YVR_CUSTPRICE_TOT.S#" &CrForecast & ".Y#CUR.P#CUR" &Dync3& ".C3#YVR_CY_IMP"
       HS.EXP "A#YVR_SALES" &Dync3& ".C3#YVR_CY_POT = A#YVR_CUSTPRICE_TOT.S#" &CrForecast & ".Y#CUR.P#CUR" &Dync3& ".C3#YVR_CY_POT"
       HS.EXP "A#YVR_SALES" &Dync3& ".C3#YVR_PY = A#NET_SALES.S#Actual.Y#PRIOR.P#CUR.W#YTD" &Tops
       HS.EXP "A#YVR_SALES" &Dync3& ".C3#YVR_CY_FCST = A#NET_SALES.S#" &CrForecast & ".Y#CUR.P#CUR.W#YTD" &Tops
       HS.EXP "A#YVR_SALES" &Dync3& ".C3#YVR_PR_FCST = A#NET_SALES.S#" &PrForecast & ".Y#CUR.P#CUR.W#YTD" &Tops
    The rule loads fine without any error but after the calculation is performed the values are only pulled from the POV_Scenario not the scenario referenced in the variable. Any suggestion on how this could be fixed would be greatly appreciated.
    Thanks

    Hi,
    You have already defined CrForecast = "S#JANFCST"
    In that case, your right hand side should just be A#YVR_CUSTPRICE_TOT." &CrForecast & ".Y#CUR.P#CUR" &Dync3& ".C3#YVR_CY_IMP" and not A#YVR_CUSTPRICE_TOT.S#" &CrForecast & ".Y#CUR.P#CUR" &Dync3& ".C3#YVR_CY_IMP"
    Regards,
    S

  • Select statment not working with variables

    Hi experts,
    Iam trying to select some data using the follwoing code
    with radio buttons r6 & r7.
    If r6 selected,it takes from parameter and
    if r7 selected it takes from select options...
    data: l_datbi type a005-datbi,l_datab type a005-datab.
        if r6 = 'X'.
          l_datbi = pvalid.
          l_datab = pvalid.
        elseif r7 = 'X'.
          l_datab = svalid-low.
          l_datbi = svalid-high.
        endif.
    select vtweg matnr knumh datbi datab                      into corresponding fields of i_itab
                          from A004
                          where kappl eq 'V'
                          and kschl eq pkschl
                          and vkorg eq pvkorg
                          and vtweg in svtweg
                          and matnr in smatnr
                          and datab le l_datab    ####### 
                          and datbi ge l_databi.  #######
    This select statement is not working.
    It is taking only one value at a time.(r6 value or r7value)
    What might be the reason...?
    reward gurarenteed
    maggy

    Hi,
    You are trying to equate your low value with end date and high value with start date..
    The correct logic will be,
    data: l_datbi type a005-datbi,l_datab type a005-datab.
    if r6 = 'X'.
    l_datbi = pvalid.  "Start Date
    l_datab = pvalid.  "End Date
    elseif r7 = 'X'.
    <b>*l_datab = svalid-low. "Wrong</b>
    <b>l_datab = svalid-high. "Right</b>
    <b>*l_datbi = svalid-high.  "Wrong</b>
    <b>l_datbi = svalid-low.  "Right</b>
    endif.
    select vtweg matnr knumh datbi datab into corresponding fields of i_itab
    from A004
    where kappl eq 'V'
    and kschl eq pkschl
    and vkorg eq pvkorg
    and vtweg in svtweg
    and matnr in smatnr
    and datab le l_datab #######   "This also doesnt look
    and datbi ge l_databi. ####### "right to me, please check
    Hope this helps..
    Sri

  • Custom app working with CRE 8.5, not working after migration to BOE XI

    Hello,
    I have this custom legacy app coming from way back in time, which -among other things- connects to a CRE 8.5 APS to get the list of available reports and the rights of a given user over those reports (view instances, request on demand, and so on). The logic of this custom application works quite well, though it's a bit cryptic (to me at least).
    Now, I have the task of migrating the app from CRE 8.5 to BOE XI R2. The migration itself was rather easy, thanks to the migration wizards, and all the users, groups, permission settings, and everything else seems to have been properly replicated in the BOE XI CMS. However the custom app is not working so well after the migration: it can retrieve all the info about the reports and do pretty much the same it was doing before the migration, but when it comes to user's security settings (permissions to see or request a given report) the app just can't get the proper info.
    To properly explain what's going on, I will have to go into detail with some lengthy description of the code.
    Here it goes. This is the (partial) code that queries if a given user (UserID) has permission to view and/or request on demand a set of reports in the server:
    Qry2 = &quot;Select SI_ID, SI_NAME From CI_INFOOBJECTS&quot;
      Qry2 = Qry2 & &quot; Where SI_PROGID = &quot; & &quot;'&quot; & &quot;CrystalEnterprise.Folder&quot; & &quot;'&quot; _
             & &quot;and SI_PARENT_FOLDER in &quot; & GetFirstLevelFolder(iStore, FolderProperty)
      Set varFolders = iStore.Query(Qry2)
      For Each Item In varFolders   'First level displayed folder
          Set infoSLevelFolders = GetSubfoldersByParentID(iStore, Item.ID) 'Second level displayed folders
          intFolderRightsCount = GetRightsCount(iStore, UserID, Item.ID)
          For Each infoSLevelFolder In infoSLevelFolders
               Set infoReports = GetReportsByFolderID(iStore, infoSLevelFolder.ID)
               For Each infoReport In infoReports
                      rsOutput.AddNew   'Set output recordset fields
                      rsOutput.Fields("FOLDERID") = Item.ID
                      rsOutput.Fields("FOLDERNAME") = Item.Title
    (not sure why, but the message won't accept more text than the above... I will have to post a second message with the rest of it)
    Edited by: Marcelo Rybertt on Mar 30, 2010 8:39 PM
    Edited by: Marcelo Rybertt on Mar 30, 2010 8:49 PM

                      rsOutput.Fields("FOLDER2ID") = infoSLevelFolder.ID
                      rsOutput.Fields("FOLDERNAME2") = infoSLevelFolder.Title
                      rsOutput.Fields("REPORTID") = infoReport.ID
                      rsOutput.Fields("REPORTNAME") = infoReport.Title
                      If UserID = 0 Or intFolderRightsCount > 1 Then 'no this user or rights on the folder level
                         rsOutput.Fields("ROD") = False
                         rsOutput.Fields("VRI") = False
                      Else
                         intReportRightsCount = GetRightsCount(iStore, UserID, infoReport.ID)
                         If intReportRightsCount = 4 Then
                            rsOutput.Fields("ROD") = False
                            rsOutput.Fields("VRI") = True
                         ElseIf intReportRightsCount = 5 Then
                            rsOutput.Fields("ROD") = True
                            rsOutput.Fields("VRI") = False
                         ElseIf intReportRightsCount > 5 Then
                            rsOutput.Fields("ROD") = True
                            rsOutput.Fields("VRI") = True
                         Else
                            rsOutput.Fields("ROD") = False
                            rsOutput.Fields("VRI") = False
                         End If
                     End If
               Next
         Next
      Next
    I have two scenarios, for the same user. The first scenario is the custom app working against a CRE 8.5 server. The second scenario is the same app against a BOE XI server, and the data in that server is the result of running the import wizard, using the 8.5 server as the source of data. The app was done with VB6, and the only difference between working against 8.5 or XI, is the set of dll's used in each case (code compiles flawlessly with either set of libraries).
    ROD stands for Request On Demand. True means the user can ROD. False, the user can't.
    VRI stands for View Report Instance. Same deal.
    intFolderRightsCount and intReportRightsCount are both calculated from the GetRightsCount function, like this:
    Set iReports = iStore.Query("Select SI_ID From CI_INFOOBJECTS Where SI_ID=" & REPORTID)
    u2026
    Set principal = iReport.SecurityInfo.AnyPrincipal(UserID)
    u2026
    GetRightsCount = principal.Rights.Count
    (again, same issue with the message... need to continue this in a third -and last I hope- post)

  • F3 function key not work in this ALV pgm

    Hi,
    How to make the F3 function key (go back to previous screen) work in this ALV program?
    Thanks,
    Helen
    REPORT  z_pgm.
    TYPE-POOLS : slis.
    INITIALIZATION.
      PERFORM sub_fieldcat_init CHANGING gi_fieldcat.
      PERFORM sub_eventtab_build USING gi_events[].
      PERFORM sub_event_exit_build CHANGING gi_event_exit.
      CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
        EXPORTING
          i_save     = g_save
        CHANGING
          cs_variant = g_xvariant
        EXCEPTIONS
          not_found  = 2.
    *EVENT : AT SELECTION-SCREEN OUTPUT                                    *
    AT SELECTION-SCREEN OUTPUT.
               EVENT : START-OF-SELECTION
    START-OF-SELECTION.
      PERFORM sub_comment_build  USING gi_list_top_of_page.
      PERFORM sub_get_data.
               EVENT : END-OF-SELECTION
    END-OF-SELECTION.
      IF l_error IS INITIAL.
        PERFORM sub_grid_display USING gi_adrc_disp.
      ENDIF.
    *&      Form  sub_fieldcat_init
    FORM sub_fieldcat_init CHANGING li_fieldcat LIKE gi_fieldcat[]."#EC *
      DATA : lw_fieldcat TYPE slis_fieldcat_alv.
      REFRESH gi_fieldcat[].
      CLEAR lw_fieldcat.
      lw_fieldcat-fieldname = 'SELKZ'.
      lw_fieldcat-tabname   = 'gi_adrc_disp'.
      lw_fieldcat-hotspot   = 'X'.
      lw_fieldcat-outputlen = '8'.
      APPEND lw_fieldcat TO li_fieldcat.
      CLEAR lw_fieldcat.
      lw_fieldcat-fieldname = 'LOCATION'.
      lw_fieldcat-tabname   = 'gi_adrc_disp'.
      lw_fieldcat-seltext_s = text-002.
      lw_fieldcat-seltext_m = text-002.
      lw_fieldcat-seltext_l = text-002.
      lw_fieldcat-outputlen = '20'.
      APPEND lw_fieldcat TO li_fieldcat.
    ENDFORM.                    " sub_fieldcat_init
    *&      Form  SUB_EVENTTAB_BUILD
    FORM sub_eventtab_build  USING    li_events TYPE slis_t_event.
      DATA: lw_event TYPE slis_alv_event.
    *to call top_of_page event
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type = 0
        IMPORTING
          et_events   = li_events.
      READ TABLE li_events WITH KEY name =  slis_ev_top_of_page
                               INTO lw_event.
      IF sy-subrc = 0.
        MOVE c_formname_top_of_page TO lw_event-form.
        APPEND lw_event TO li_events.
      ENDIF.
    ENDFORM.                    " SUB_EVENTTAB_BUILD
          FORM SUB_COMMENT_BUILD                                        *
    FORM sub_comment_build USING li_lt_top_of_page TYPE slis_t_listheader.
      DATA: lw_line TYPE slis_listheader.
    Listenüberschrift: Typ H
      CLEAR lw_line.
      lw_line-typ  = 'H'.
      lw_line-info = text-013.
      APPEND lw_line TO li_lt_top_of_page.
    Kopfinfo: Typ S
      CLEAR lw_line.
      lw_line-typ  = 'S'.
      lw_line-key  = text-014.
      lw_line-info = text-015.
      APPEND lw_line TO li_lt_top_of_page.
    ENDFORM.                    "SUB_COMMENT_BUILD
    *&      Form  sub_VARIANT_INIT
    FORM sub_variant_init .
      CLEAR g_variant.
      g_variant-report = g_repid.
    ENDFORM.                    " sub_VARIANT_INIT
    *&      Form  SUB_F4_FOR_VARIANT
          To get the existing variant
    FORM sub_f4_for_variant .
      g_variant-report = g_repid.
      CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
             EXPORTING
                  is_variant          = g_variant
                  i_save              = g_save
                it_default_fieldcat =
             IMPORTING
                  e_exit              = g_exit
                  es_variant          = g_xvariant
             EXCEPTIONS
                  not_found = 2.
      IF sy-subrc = 2.
        MESSAGE ID sy-msgid TYPE 'S'      NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ELSE.
      ENDIF.
    ENDFORM.                    " SUB_F4_FOR_VARIANT
          FORM TOP_OF_PAGE
    FORM top_of_page.                                           "#EC CALLED
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = gi_list_top_of_page.
    ENDFORM.                    "TOP_OF_PAGE
    FORM sub_grid_display USING li_final_disp LIKE gi_final_disp.
        CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'                  "#EC *
          EXPORTING
            i_callback_pf_status_set = 'SET_PF_STATUS'
            i_callback_program       = g_repid
            i_callback_user_command  = 'SUB_CB_USER_COMMAND'
          i_grid_title       = l_title
            it_fieldcat              = gi_fieldcat
           is_layout          = gw_layout
            i_save                   = g_save
            is_variant               = g_variant
            it_events                = gi_events[]
            it_event_exit            = gi_event_exit[]
          IMPORTING
            e_exit_caused_by_caller  = g_exit_caused_by_caller
            es_exit_caused_by_user   = gs_exit_caused_by_user
          TABLES
            t_outtab                 = gi_adrc_disp
          EXCEPTIONS
            program_error            = 1
            OTHERS                   = 2.
    ENDFORM.                    " sub_grid_display
    *&      Form                                          *
    FORM sub_get_data .
      CLEAR l_error.
      IF NOT rb_loc IS INITIAL.
        IF p_loc EQ space.
          MESSAGE i100(zm01) WITH
                  'Please Enter Location Code and SET ID'.
          l_error = 'X'.
        ENDIF.
        SELECT addrnumber location name1 name2 building floor
                   name_co country street str_suppl1 str_suppl3 city1
                   city2 region post_code1 transpzone
                INTO TABLE gi_adrc_disp
                FROM adrc
                WHERE region = p_region
                  AND str_suppl3 = p_loc.
      ELSEIF NOT rb_all IS INITIAL.
        SELECT addrnumber location name1 name2 building floor
                   name_co country street str_suppl1 str_suppl3 city1
                   city2 region post_code1 transpzone
                INTO TABLE gi_adrc_disp
                FROM adrc
                WHERE transpzone NE space.
      ENDIF.
      IF sy-subrc NE 0.
        l_error = 'X'.
        MESSAGE i100(zm01) WITH
                  'No Record Exists for Input'.
        EXIT.
      ENDIF.
      lw_adrc-selkz = c_add.
      MODIFY gi_adrc_disp FROM lw_adrc TRANSPORTING selkz
            WHERE transpzone = space.
      lw_adrc-selkz = c_remove.
      MODIFY gi_adrc_disp FROM lw_adrc TRANSPORTING selkz
            WHERE transpzone NE space.
    ENDFORM.                    " sub_get_data
    *&      Form  sub_cb_user_command
    FORM sub_cb_user_command  USING r_ucomm LIKE sy-ucomm                               rs_selfield TYPE slis_selfield.
       l_index = rs_selfield-tabindex.
      ENDFORM.                        "sub_cb_user_command
    *&      Form  sub_cb_user_command
    FORM set_pf_status USING rt_extab TYPE slis_t_extab.
      SET PF-STATUS 'MAIN'.
    ENDFORM.                        "set_pf_status

    Hi,
    this is for setting the PF-status.
    FORM set_pf_status USING rt_extab TYPE slis_t_extab.
    SET PF-STATUS 'MAIN'.
    ENDFORM. "set_pf_status
    and double click on main and see what is the Function key and function code associated for BACK.
    FORM sub_cb_user_command USING r_ucomm LIKE sy-ucomm
    rs_selfield TYPE slis_selfield.
    case r_ucomm.
    when <b>'BACK'.</b>  <<<<i assumed Focde is BACK for BACK
    leave to screen 0.
    endform.
    Regards
    vijay

  • Scrolling not working in BDC for ME22N

    Dear All,
    i record BDC using Tcode "SHDB" for ME22N ( only for Type stock transfer ).
    in recording i select tab "delivery schedule" and it showing 4 rows as default rows and
    after that i scroll one by  one to put requisition Closed Flag.
    after successfull completion of recording when run "Process" to test (without change any coding),
    it's not working for scrolling even if i tried for page down the result is same.
    can you please suggest for :
    1- what could be the problem, though BDC recorded with scrolling but process not working.
    2- is there any option to increase no. of fixed rows in tab "schedule delivery"
    Pls help.
    Thanks a lot,
    Radhashyam

    see my code below it might help you, i have also used a flag and i have populated the data manually from where i need scrolling, i guess in recording you cannot catch sscorlling you have to do it manually.
    loop at t_final_data into fs_final_data.
        if fs_final_data-acopc = 'Y'.
          lw_flag = 'X'.
        elseif fs_final_data-acopc = 'N'.
          lw_flag = ' '.
        endif.                            
    refresh t_bdcdata.
    perform bdc_dynpro      using 'SAPMP50A' '1000'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=INS'.
    perform bdc_field       using 'RP50G-PERNR'
                                  fs_final_data-pernr.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RP50G-ENDDA'.
    perform bdc_field       using 'RP50G-BEGDA'
                                  fs_final_data-begda.
    perform bdc_field       using 'RP50G-ENDDA'
                                  fs_final_data-endda.
    perform bdc_field       using 'RP50G-CHOIC'
                                  lw_info.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_dynpro      using 'SAPMP50A' '1000'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=INS'.
    perform bdc_dynpro      using 'MP058500' '2000'.
    clear w_curr.
    w_curr =  fs_final_data-pcntr1.
    perform bdc_field       using 'Q0585-PCNTR(01)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-acntr1.
    perform bdc_field       using 'Q0585-ACNTR(01)'
                                 w_curr.
    clear w_curr.
    w_curr =  fs_final_data-pcntr2.
    perform bdc_field       using 'Q0585-PCNTR(02)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-acntr2.
    perform bdc_field       using 'Q0585-ACNTR(02)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-pcntr3.
    perform bdc_field       using 'Q0585-PCNTR(03)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-acntr3.
    perform bdc_field       using 'Q0585-ACNTR(03)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-pcntr4.
    perform bdc_field       using 'Q0585-PCNTR(04)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-acntr4.
    perform bdc_field       using 'Q0585-ACNTR(04)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-pcntr5.
    perform bdc_field       using 'Q0585-PCNTR(05)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-acntr5.
    perform bdc_field       using 'Q0585-ACNTR(05)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-pcntr6.
    perform bdc_field       using 'Q0585-PCNTR(06)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-acntr6.
    perform bdc_field       using 'Q0585-ACNTR(06)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-pcntr7.
    perform bdc_field       using 'Q0585-PCNTR(07)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-acntr6.
    perform bdc_field       using 'Q0585-ACNTR(07)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-pcntr8.
    perform bdc_field       using 'Q0585-PCNTR(08)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-acntr8.
    perform bdc_field       using 'Q0585-ACNTR(08)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-pcntr9.
    perform bdc_field       using 'Q0585-PCNTR(09)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-acntr9.
    perform bdc_field       using 'Q0585-ACNTR(09)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-pcntr10.
    perform bdc_field       using 'Q0585-PCNTR(10)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-acntr10.
    perform bdc_field       using 'Q0585-ACNTR(10)'
                                   w_curr.
    *" from here i have done it manually
    perform bdc_field       using 'BDC_OKCODE'
                                  'P+' .
    perform bdc_dynpro      using 'MP058500' '2000'.
    clear w_curr.
    w_curr =  fs_final_data-pcntr11.
    perform bdc_field       using 'Q0585-PCNTR(01)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-acntr11.
    perform bdc_field       using 'Q0585-ACNTR(01)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-pcntr12.
    perform bdc_field       using 'Q0585-PCNTR(02)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-acntr12.
    perform bdc_field       using 'Q0585-ACNTR(02)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-pcntr13.
    perform bdc_field       using 'Q0585-PCNTR(03)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-acntr13.
    perform bdc_field       using 'Q0585-ACNTR(03)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-pcntr14.
    perform bdc_field       using 'Q0585-PCNTR(04)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-acntr14.
    perform bdc_field       using 'Q0585-ACNTR(04)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-pcntr15.
    perform bdc_field       using 'Q0585-PCNTR(05)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-acntr15.
    perform bdc_field       using 'Q0585-ACNTR(05)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-pcntr16.
    perform bdc_field       using 'Q0585-PCNTR(06)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-acntr16.
    perform bdc_field       using 'Q0585-ACNTR(06)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-pcntr17.
    perform bdc_field       using 'Q0585-PCNTR(07)'
                                   w_curr.
    clear w_curr.
    w_curr =  fs_final_data-acntr17.
    perform bdc_field       using 'Q0585-ACNTR(07)'
                                   w_curr.
    *" i have used a flag here
    perform bdc_field       using 'Q0585-ACOPC'
                                   lw_flag.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=UPD'.
    perform bdc_dynpro      using 'MP058500' '2000'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/EBCK'.
    perform bdc_dynpro      using 'SAPMP50A' '1000'.
      call transaction 'PA30' using t_bdcdata
                               mode 'A'
                           messages into t_messtab.

  • Not work tablet UI on Prestigio 5080 PRO tablet

    I read that browser.ui.layout.tablet = "1" can fix this problem. But it not works. I can work only in pnone interface that is not good for my 8'' tablet.

    Would it be possible for you to share the problematic pdf and OS information  with us at [email protected] so that we may investigate?
    Thanks,
    Adobe Reader Team

  • Why self-defined access sequences of free goods can not work?

    Hi gurus,
    I have maintained access sequences of free goods self-defined.but when i creat the SO it does not work!
    when i used the standard access sequences ,it is OK .
    Can anybody tell me why?
    thanks in advance

    Dear Sandy,
    Go to V/N1 transaction select your self defined access sequence then go in to the accesses and fields and check all fields are activated.
    Make sure that these fields are flowing in your sales order.
    I hope this will help you,
    Regards,
    Murali.

  • Adobe bridge raw not working with windows vista in photoshop cc, why?

    adobe bridge raw not working in photoshop cc, is there a fix?

    Your sure your using photoshop cc on windows vista?
    I was under the impression that photoshop cc would not even install on windows vista.
    What version of camera raw do you have?
    In photoshop under Help>About Plugin does it list Camera Raw and if so which version is it?
    (click on the words Camera Raw to see the version)
    Camera raw doesn't work if it's a camera raw file or some other file type such as jpeg or tif?
    What camera are the camera raw files from?
    Officially camera raw 8.3 is the latest version of camera raw that will work on windows vista.

  • Adobe Bridge CS5 in windows 7 not working?

    Adobe Bridge CS5 in windows 7 not working. I was using bridge perfectly for last 2 years. It stops working since 3 days. I tried to install updates. Showing some error to install.
    Tried to install creative cloud..again some error. Error code : 82
    Could you please advice how I can fix my adobe bridge.

    https://www.youtube.com/watch?v=xDYpTOoV81Q&feature=youtu.be
    please check this video I uploaded..this is what happens when I click adobe bridge.. just blinks and go off. bridge not working on task manager

  • ADOBE CLOUD ON MY DESKTOP WILL NOT WORK. IT LOADS UP BUT NOTHING FILLS THE WINDOW

    ADOBE CLOUD ON MY DESKTOP WILL NOT WORK. IT LOADS UP BUT NOTHING FILLS THE WINDOW

    BLANK Cloud Screen http://forums.adobe.com/message/5484303 may help
    -and step by step http://forums.adobe.com/thread/1440508?tstart=0
    -and http://helpx.adobe.com/creative-cloud/kb/blank-white-screen-ccp.html

Maybe you are looking for