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_fileHi,
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 -
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
ShreePERFORM 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.
ThanksHi,
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
maggyHi,
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 = "Select SI_ID, SI_NAME From CI_INFOOBJECTS"
Qry2 = Qry2 & " Where SI_PROGID = " & "'" & "CrystalEnterprise.Folder" & "'" _
& "and SI_PARENT_FOLDER in " & 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 PMrsOutput.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_statusHi,
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,
Radhashyamsee 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 advanceDear 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
-
The save and quit function doesn't work in firefox 4
The quit and save button on exit doesn't come up. I always liked that function.
-
HT204088 double charge in app purchase
I was double charged for an in app purchase... who do I need to contact in order to have the second charge refunded? Thanks
-
hi, i read that there are 3 types of special gl processes : free offsetting postings, automatic offsetting posting and noted item. 1) only free offsetting posting will impact FS? 2) automatic offset will have notes or only appendix in FS. can conside
-
Programmatically logging out of Office 365 and redirection
Hi there : I am developing some HTML/JS based apps on SharePoint online. It works perfect. However recently I got a requirement, which I am not sure how to achieve. I have got a HTML/JS form by which users submit data to SharePoint by clicking a butt
-
How to find data dictionary and oracle schema tables for UTF8 char conversi
I am doing UTF8 char conversition, i got lot of convertable objects,as per document we don't need to worry about data dictionary objects and how to find data dictionary and oracle schema objects for UTF8 char conversition. USER.TABLE Convertible Trun