Need a good backorder report
need a report showing items on backorder on open sales orders.
v.15 and co06 are of no value to us
does anyone have suggestions?
Dear Jaxi Greg
need a report showing items on backorder on open sales orders
we can find Back orders list in V.15 T.code .
Orders created but not delivered , it is open sales order so i didnt get exact your requirement please explain properly
And CO06 I material wise background processing
Thnaks a lot
venu
Similar Messages
-
Needs Help in Backorder Report!
Good day to everyone.
I would like to ask for help in checking the Backorder Report below. The user requirement is to include the plant field in the Report. Though I already included the plant field, the program encounters ABAP runtime upon execution. Please help me correct the errors that is being encountered.
Thank you very much.
Raffee
REPORT zsdr_out_of_stock LINE-SIZE 380
LINE-COUNT 65 NO STANDARD PAGE HEADING.
TABLES: mara,
zcust,
vbrk,
vbak,
vbap.
Start of Internal tables for Out of Stock
DATA: BEGIN OF it_total_out_stock1 OCCURS 0,
fkdat LIKE vbrk-fkdat, "Billing Date
bukrs LIKE vbrk-bukrs, "Company
knumv LIKE vbrk-knumv, "No of the document condition
vbeln LIKE vbrp-vbeln, "Billing Doc
posnr LIKE vbrp-posnr, "Item
aubel LIKE vbrp-aubel, "Sales Order
aupos LIKE vbrp-aupos, "Sales Item
matnr LIKE vbrp-matnr, "Material No.
fkimg TYPE p DECIMALS 2, "Billed Quantity
auart LIKE vbak-auart,
kunnr LIKE vbak-kunnr,
vkbur LIKE vbak-vkbur, "Sales office
vkorg LIKE vbak-vkorg, "Sales organization
vkgrp LIKE vbak-vkgrp, "Sales group
zcusno LIKE zcust-zcusno,
zregion LIKE zcust-zregion,
END OF it_total_out_stock1.
DATA: BEGIN OF it_total_out_stock2 OCCURS 0,
vbeln LIKE vbak-vbeln,
auart LIKE vbak-auart,
kunnr LIKE vbak-kunnr,
vkbur LIKE vbak-vkbur, "Sales office
vkorg LIKE vbak-vkorg, "Sales organization
vkgrp LIKE vbak-vkgrp, "Sales group
zcusno LIKE zcust-zcusno,
zregion LIKE zcust-zregion,
END OF it_total_out_stock2.
DATA: BEGIN OF it_vbap OCCURS 0,
vbeln LIKE vbap-vbeln,
posnr LIKE vbap-posnr,
werks LIKE vbap-werks,
matnr LIKE vbap-matnr,
netwr LIKE vbap-netwr,
kwmeng LIKE vbap-kwmeng,
bukrs_vf LIKE vbak-bukrs_vf,
knumv LIKE vbak-knumv,
kunnr LIKE vbak-kunnr,
vkbur LIKE vbak-vkbur, "Sales office
vkorg LIKE vbak-vkorg, "Sales organization
vkgrp LIKE vbak-vkgrp, "Sales group
END OF it_vbap.
DATA: BEGIN OF it_vbap_stock OCCURS 0,
vbeln LIKE vbap-vbeln,
posnr LIKE vbap-posnr,
werks LIKE vbap-werks,
matnr LIKE vbap-matnr,
netwr LIKE vbap-netwr,
kwmeng TYPE p DECIMALS 2,
bukrs_vf LIKE vbak-bukrs_vf,
knumv LIKE vbak-knumv,
kunnr LIKE vbak-kunnr,
vkbur LIKE vbak-vkbur, "Sales office
vkorg LIKE vbak-vkorg, "Sales organization
vkgrp LIKE vbak-vkgrp, "Sales group
END OF it_vbap_stock.
DATA: BEGIN OF it_out_stock OCCURS 0,
vbeln LIKE vbap-vbeln,
posnr LIKE vbap-posnr,
werks LIKE vbap-werks,
matnr LIKE vbap-matnr,
netwr LIKE vbap-netwr,
knumv LIKE vbak-knumv,
bukrs_vf LIKE vbak-bukrs_vf,
kunnr LIKE vbak-kunnr,
vkbur LIKE vbak-vkbur, "Sales office
vkorg LIKE vbak-vkorg, "Sales organization
vkgrp LIKE vbak-vkgrp, "Sales group
fkimg TYPE p DECIMALS 2, "Billed Quantity
kwmeng LIKE vbap-kwmeng,
counter TYPE i,
END OF it_out_stock.
DATA: BEGIN OF it_mara_totals_stock OCCURS 0,
matnr LIKE mara-matnr,
matkl LIKE mara-matkl,
spart LIKE mara-spart,
END OF it_mara_totals_stock.
DATA: BEGIN OF it_tspat_totals_stock OCCURS 0,
spart LIKE tspat-spart,
vtext LIKE tspat-vtext,
END OF it_tspat_totals_stock.
DATA: BEGIN OF it_t023t_totals_stock OCCURS 0,
matkl LIKE t023t-matkl,
wgbez LIKE t023t-wgbez,
END OF it_t023t_totals_stock.
DATA: BEGIN OF it_konv_totals_stock OCCURS 0,
knumv LIKE konv-knumv,
kposn LIKE konv-kposn,
kschl LIKE konv-kschl,
kawrt LIKE konv-kawrt,
kwert LIKE konv-kwert,
kbetr LIKE konv-kbetr,
END OF it_konv_totals_stock.
DATA: BEGIN OF it_total_stock_final OCCURS 0,
cnt1 TYPE i,
cnt2 TYPE i, "DPM Category
werks LIKE vbap-werks, "Plant
spart LIKE mara-spart, "Division Description
matkl LIKE mara-matkl, "Material Type
vbeln LIKE vbrk-vbeln, "Billing Doc
aubel LIKE vbrp-aubel, "Sales document
aupos LIKE vbrp-aupos, "Sales document item
vkbur LIKE vbak-vkbur, "Sales office
vkorg LIKE vbak-vkorg, "Sales organization
vkgrp LIKE vbak-vkgrp, "Sales group
kunnr LIKE vbak-kunnr, "Customer
matnr LIKE vbrp-matnr, "Material
vtext LIKE tspat-vtext, "Material Group Desc
kbetr1 LIKE konv-kbetr,
kbetr2 LIKE konv-kbetr,
kawrt LIKE konv-kawrt, "Condition Rate
kwert1 LIKE konv-kwert, "Volume Discount
kwert2 LIKE konv-kwert, "Promo Discount
fkimg TYPE p DECIMALS 2, "Billed Quantity
kwmeng LIKE vbap-kwmeng,
counter TYPE i,
END OF it_total_stock_final.
Start of Internal tables for Held
DATA: BEGIN OF it_total_held1 OCCURS 0,
erdat LIKE vbak-erdat,
bukrs_vf LIKE vbak-bukrs_vf,
knumv LIKE vbak-knumv,
kunnr LIKE vbak-kunnr,
werks LIKE vbap-werks, "Plant
vkbur LIKE vbak-vkbur, "Sales office
vkorg LIKE vbak-vkorg, "Sales organization
vkgrp LIKE vbak-vkgrp, "Sales group
vbeln LIKE vbap-vbeln,
posnr LIKE vbap-posnr,
matnr LIKE vbap-matnr,
kwmeng LIKE vbap-kwmeng, "Order Quantity
cmgst LIKE vbuk-cmgst,
END OF it_total_held1.
DATA: BEGIN OF it_total_held2 OCCURS 0,
zcusno LIKE zcust-zcusno,
zregion LIKE zcust-zregion,
END OF it_total_held2.
DATA: BEGIN OF it_mara_totals_held OCCURS 0,
matnr LIKE mara-matnr,
matkl LIKE mara-matkl,
spart LIKE mara-spart,
END OF it_mara_totals_held.
DATA: BEGIN OF it_tspat_totals_held OCCURS 0,
spart LIKE tspat-spart,
vtext LIKE tspat-vtext,
END OF it_tspat_totals_held.
DATA: BEGIN OF it_t023t_totals_held OCCURS 0,
matkl LIKE t023t-matkl,
wgbez LIKE t023t-wgbez,
END OF it_t023t_totals_held.
DATA: BEGIN OF it_konv_totals_held OCCURS 0,
knumv LIKE konv-knumv,
kposn LIKE konv-kposn,
kschl LIKE konv-kschl,
kawrt LIKE konv-kawrt,
kwert LIKE konv-kwert,
END OF it_konv_totals_held.
DATA: BEGIN OF it_total_held_final OCCURS 0,
cnt1 TYPE i,
cnt2 TYPE i, "DPM Category
werks LIKE vbap-werks, "Plant
spart LIKE mara-spart, "Division Description
matkl LIKE mara-matkl, "Material Type
vbeln LIKE vbrk-vbeln, "Billing Doc
aubel LIKE vbrp-aubel, "Sales document
aupos LIKE vbrp-aupos, "Sales document item
erdat LIKE vbak-erdat,
vkbur LIKE vbak-vkbur, "Sales office
vkorg LIKE vbak-vkorg, "Sales organization
vkgrp LIKE vbak-vkgrp, "Sales group
kunnr LIKE vbak-kunnr, "Customer
matnr LIKE vbrp-matnr, "Material
vtext LIKE tspat-vtext, "Material Group Desc
kwmeng LIKE vbap-kwmeng, "Order Quantity
kawrt LIKE konv-kawrt, "Condition Rate
kwert1 LIKE konv-kwert, "Volume Discount
kwert2 LIKE konv-kwert, "Promo Discount
END OF it_total_held_final.
End of Internal tables for Held
DATA: l_quantity LIKE vbap-kwmeng.
DATA: g_div(20), "Division
g_mat(20), "Material Group
g_maktx(40),
g_name1(40),
v_net_value TYPE p DECIMALS 2.
CONSTANTS DECLARATION
Constants are named data objects that you create statically using
a declarative statement. They allow you to store data under a
particular name within the memory area of a program.
The value of a constant cannot be changed during the execution of
the program.
CONSTANTS: header01(10) TYPE c VALUE 'Invoice #',
header02(06) TYPE c VALUE 'Item',
header03(10) TYPE c VALUE 'Sales Doc.',
header04(03) TYPE c VALUE 'Div',
header05(20) TYPE c VALUE 'Division Desc',
header06(10) TYPE c VALUE 'Customer #',
header07(35) TYPE c VALUE 'Customer Name',
header08(18) TYPE c VALUE 'Material No.',
header09(40) TYPE c VALUE 'Material Text',
header10(09) TYPE c VALUE 'MType',
header11(20) TYPE c VALUE 'Material Grp Desc',
header12(20) TYPE c VALUE 'Condition Rate',
header13(20) TYPE c VALUE 'Vol Discount',
header14(20) TYPE c VALUE 'Promo Discount',
header15(12) TYPE c VALUE 'Date Created',
header16(12) TYPE c VALUE 'Invoice Date',
header17(20) TYPE c VALUE 'Net Value',
header18(12) TYPE c VALUE 'Sales office',
header19(10) TYPE c VALUE 'Sales Org',
header20(10) TYPE c VALUE 'Sales Grp',
header21(20) TYPE c VALUE 'Quantity',
header22(04) TYPE c VALUE 'Plnt'.
End of Internal tables for Out of Stock
Start of selection screen criteria
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_zreg FOR zcust-zregion, "Region
s_matkl FOR mara-matkl, "Material Group
s_spart FOR mara-spart, "Division
s_vkorg FOR vbak-vkorg, "Sales Org
s_vkbur FOR vbak-vkbur, "Sales Office
s_class FOR zcust-zaclass. "Account Class
SELECT-OPTIONS: s_curr FOR vbrk-fkdat OBLIGATORY. "Date
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETERS p0 RADIOBUTTON GROUP radi.
PARAMETERS p1 RADIOBUTTON GROUP radi.
SELECTION-SCREEN END OF BLOCK b2.
Start of Selection
START-OF-SELECTION.
IF p0 = 'X'.
****Get the Out of Stock
PERFORM out_stock.
PERFORM write_report.
ELSEIF p1 = 'X'.
PERFORM held_order.
PERFORM write_report1.
ENDIF.
*& Form out_stock
text
--> p1 text
<-- p2 text
FORM out_stock.
DATA: l_cnt1 TYPE i,
l_cnt2 TYPE i,
l_spart LIKE mara-spart,
l_matkl LIKE mara-matkl,
l_text LIKE tspat-vtext,
l_amount TYPE p DECIMALS 2,
l_aupos LIKE vbrp-aupos,
l_aubel LIKE vbrp-aubel.
SELECT vbrk~fkdat
vbrk~bukrs
vbrk~knumv
vbrp~vbeln
vbrp~posnr
vbrp~aubel
vbrp~aupos
vbrp~matnr
vbrp~fkimg
vbap~werks
vbak~auart
vbak~kunnr
vbak~vkbur "Sales office
vbak~vkorg "Sales organization
vbak~vkgrp "Sales group
zcust~zcusno
zcust~zregion
INTO TABLE it_total_out_stock1
FROM vbrk
INNER JOIN vbrp
ON vbrkvbeln = vbrpvbeln
INNER JOIN vbak
ON vbrpaubel = vbakvbeln
INNER JOIN zcust
ON vbakkunnr = zcustzcusno
WHERE vbrk~fkdat IN s_curr
AND vbrp~matkl IN s_matkl
AND vbrp~spart IN s_spart
AND vbak~auart IN ('ZDOA', 'ZDTO', 'ZQOA', 'ZDTA', 'ZQTO')
AND zcust~zregion IN s_zreg
AND zcust~zaclass IN s_class
AND vbak~vkorg IN s_vkorg
AND vbak~vkbur IN s_vkbur
AND vbak~bukrs_vf IN ('5116', '5106')
AND vbak~vkbur <> '5100'.
IF sy-subrc = 0.
IF NOT it_total_out_stock1[] IS INITIAL.
***Check if the Order is Out of Stock compare to billing invoice
SELECT vbap~vbeln
vbap~posnr
vbap~matnr
vbap~netwr
vbap~kwmeng
vbak~bukrs_vf
vbak~knumv
vbak~kunnr
vbap~werks
vbak~vkbur "Sales office
vbak~vkorg "Sales organization
vbak~vkgrp "Sales group
INTO TABLE it_vbap
FROM vbap
INNER JOIN vbak
ON vbapvbeln = vbakvbeln
FOR ALL entries IN it_total_out_stock1
WHERE vbap~vbeln = it_total_out_stock1-aubel
AND vbap~posnr <> it_total_out_stock1-aupos
AND vbak~auart IN ('ZDOA', 'ZDTO', 'ZQOA',
'ZDTA', 'ZQTO')
AND vbak~vkorg IN s_vkorg
AND vbak~vkbur IN s_vkbur
AND vbap~matkl IN s_matkl
AND vbap~spart IN s_spart.
***Check if the Order is Out of Stock by Quantity
SELECT vbap~vbeln
vbap~posnr
vbap~matnr
vbap~netwr
vbap~kwmeng
vbak~bukrs_vf
vbak~knumv
vbak~kunnr
vbap~werks
vbak~vkbur "Sales office
vbak~vkorg "Sales organization
vbak~vkgrp "Sales group
INTO TABLE it_vbap_stock
FROM vbap
INNER JOIN vbak
ON vbapvbeln = vbakvbeln
FOR ALL entries IN it_total_out_stock1
WHERE vbap~posnr = it_total_out_stock1-aupos
AND vbap~vbeln = it_total_out_stock1-aubel
AND vbap~kwmeng NE it_total_out_stock1-fkimg
AND vbak~auart IN ('ZDOA', 'ZDTO', 'ZQOA',
'ZDTA', 'ZQTO')
AND vbak~vkorg IN s_vkorg
AND vbak~vkbur IN s_vkbur
AND vbap~matkl IN s_matkl
AND vbap~spart IN s_spart.
ENDIF.
IF NOT it_vbap[] IS INITIAL.
SORT it_vbap BY vbeln posnr.
SORT it_total_out_stock1 BY aubel aupos.
LOOP AT it_vbap.
READ TABLE it_total_out_stock1
WITH KEY aubel = it_vbap-vbeln
aupos = it_vbap-posnr.
IF sy-subrc NE 0.
it_out_stock-vbeln = it_vbap-vbeln.
it_out_stock-posnr = it_vbap-posnr.
it_out_stock-matnr = it_vbap-matnr.
it_out_stock-netwr = it_vbap-netwr.
it_out_stock-knumv = it_vbap-knumv.
it_out_stock-bukrs_vf = it_vbap-bukrs_vf.
it_out_stock-kunnr = it_vbap-kunnr.
it_out_stock-werks = it_vbap-werks.
it_out_stock-vkbur = it_vbap-vkbur. "Sales office
it_out_stock-vkorg = it_vbap-vkorg. "Sales organization
it_out_stock-vkgrp = it_vbap-vkgrp. "Sales group
it_out_stock-kwmeng = it_vbap-kwmeng.
APPEND it_out_stock.
ENDIF.
ENDLOOP.
ENDIF.
IF NOT it_vbap_stock[] IS INITIAL.
SORT it_vbap_stock BY vbeln posnr.
SORT it_total_out_stock1 BY aubel aupos.
LOOP AT it_vbap_stock.
LOOP AT it_total_out_stock1 WHERE aubel = it_vbap_stock-vbeln
AND aupos = it_vbap_stock-posnr
AND fkimg NE it_vbap_stock-kwmeng.
it_out_stock-vbeln = it_vbap_stock-vbeln.
it_out_stock-posnr = it_vbap_stock-posnr.
it_out_stock-matnr = it_vbap_stock-matnr.
it_out_stock-netwr = it_vbap_stock-netwr.
it_out_stock-knumv = it_vbap_stock-knumv.
it_out_stock-bukrs_vf = it_vbap_stock-bukrs_vf.
it_out_stock-kunnr = it_vbap_stock-kunnr.
it_out_stock-werks = it_vbap_stock-werks.
it_out_stock-vkbur = it_vbap_stock-vkbur. "Sales office
it_out_stock-vkorg = it_vbap_stock-vkorg. "Sales org
it_out_stock-vkgrp = it_vbap_stock-vkgrp. "Sales group
****Begin Insert by Ron
it_out_stock-kwmeng = it_vbap_stock-kwmeng.
it_out_stock-fkimg = it_total_out_stock1-fkimg.
it_out_stock-counter = 1.
****End Insert
APPEND it_out_stock.
ENDLOOP.
ENDLOOP.
ENDIF.
ENDIF. "it_total_out_stock1
IF NOT it_out_stock[] IS INITIAL.
***get the value of material and material group
SELECT matnr
matkl
spart
INTO TABLE it_mara_totals_stock
FROM mara
FOR ALL ENTRIES IN it_out_stock
WHERE matnr = it_out_stock-matnr.
ENDIF.
***Get the Value of Division Description
IF NOT it_mara_totals_stock[] IS INITIAL.
SELECT spart
vtext
INTO TABLE it_tspat_totals_stock
FROM tspat
FOR ALL ENTRIES IN it_mara_totals_stock
WHERE spart = it_mara_totals_stock-spart AND
spras = sy-langu.
ENDIF.
***Get the Material Group Description
IF NOT it_mara_totals_stock[] IS INITIAL.
SELECT matkl
wgbez
INTO TABLE it_t023t_totals_stock
FROM t023t
FOR ALL ENTRIES IN it_mara_totals_stock
WHERE matkl = it_mara_totals_stock-matkl AND
spras = sy-langu.
ENDIF.
***Get the Value of Condition Type
IF NOT it_out_stock[] IS INITIAL.
SELECT knumv
kposn
kschl
kawrt
kwert
kbetr
INTO TABLE it_konv_totals_stock
FROM konv
FOR ALL ENTRIES IN it_out_stock
WHERE knumv = it_out_stock-knumv
AND kposn = it_out_stock-posnr
AND kschl IN ('ZQPR', 'ZQD3', 'ZQP3',
'ZDPR', 'ZDD3', 'ZDP3').
ENDIF.
SORT it_out_stock BY vbeln posnr.
SORT it_mara_totals_stock BY matnr.
SORT it_tspat_totals_stock BY spart.
SORT it_t023t_totals_stock BY matkl.
SORT it_konv_totals_stock BY knumv kposn.
LOOP AT it_out_stock.
CLEAR: it_total_stock_final-kawrt, it_total_stock_final-kwert1,
it_total_stock_final-kwert2, it_total_stock_final-vtext,
it_total_stock_final-matkl, it_total_stock_final-spart,
it_total_stock_final-aubel, it_total_stock_final-aupos,
it_total_stock_final-cnt1, it_total_stock_final-cnt2.
***Begin Insert by RONCR
CLEAR: it_total_stock_final-kwmeng, it_total_stock_final-fkimg,
it_total_stock_final-counter.
***End Insert by RONCR
CLEAR: it_mara_totals_stock, it_tspat_totals_stock,
it_t023t_totals_stock, it_konv_totals_stock,
l_cnt1, l_cnt2.
**Counter for Total Orders Column
l_cnt1 = 4.
READ TABLE it_mara_totals_stock
WITH KEY matnr = it_out_stock-matnr.
IF sy-subrc EQ 0.
it_total_stock_final-matnr = it_mara_totals_stock-matnr.
it_total_stock_final-matkl = it_mara_totals_stock-matkl.
it_total_stock_final-spart = it_mara_totals_stock-spart.
***DPM
IF it_total_stock_final-matkl EQ 'DPM' OR
it_total_stock_final-matkl EQ 'SSN'.
READ TABLE it_tspat_totals_stock
WITH KEY spart = it_mara_totals_stock-spart.
IF sy-subrc EQ 0.
it_total_stock_final-vtext = it_tspat_totals_stock-vtext.
ENDIF.
***Non Dole
ELSE.
READ TABLE it_t023t_totals_stock
WITH KEY matkl = it_mara_totals_stock-matkl.
IF sy-subrc EQ 0.
it_total_stock_final-vtext = it_t023t_totals_stock-wgbez.
ENDIF.
ENDIF.
ENDIF.
IF it_total_stock_final-matkl = 'DPM' OR
it_total_stock_final-matkl = 'SSN'.
l_cnt2 = 1.
ELSE.
l_cnt2 = 2.
ENDIF.
***Condition Value for Comapny Code 5116
IF it_out_stock-bukrs_vf EQ '5116'.
READ TABLE it_konv_totals_stock
WITH KEY knumv = it_out_stock-knumv
kposn = it_out_stock-posnr
kschl = 'ZQPR'.
IF sy-subrc EQ 0.
it_total_stock_final-kawrt = it_konv_totals_stock-kawrt.
ENDIF.
READ TABLE it_konv_totals_stock
WITH KEY knumv = it_out_stock-knumv
kposn = it_out_stock-posnr
kschl = 'ZQD3'.
IF sy-subrc EQ 0.
it_konv_totals_stock-kwert = it_konv_totals_stock-kwert * -1.
it_total_stock_final-kwert1 = it_konv_totals_stock-kwert.
it_total_stock_final-kbetr1 = it_konv_totals_stock-kbetr.
it_total_stock_final-kbetr1 = it_total_stock_final-kbetr1 * -1.
ENDIF.
READ TABLE it_konv_totals_stock
WITH KEY knumv = it_out_stock-knumv
kposn = it_out_stock-posnr
kschl = 'ZQP3'.
IF sy-subrc EQ 0.
it_konv_totals_stock-kwert = it_konv_totals_stock-kwert * -1.
it_total_stock_final-kwert2 = it_konv_totals_stock-kwert.
it_total_stock_final-kbetr2 = it_konv_totals_stock-kbetr.
it_total_stock_final-kbetr2 = it_total_stock_final-kbetr2 * -1.
ENDIF.
ENDIF.
***Condition Value for Company Code 5106
IF it_out_stock-bukrs_vf EQ '5106'.
READ TABLE it_konv_totals_stock
WITH KEY knumv = it_out_stock-knumv
kposn = it_out_stock-posnr
kschl = 'ZDPR'. "Base price
IF sy-subrc EQ 0.
it_total_stock_final-kawrt = it_konv_totals_stock-kawrt.
ENDIF.
READ TABLE it_konv_totals_stock
WITH KEY knumv = it_out_stock-knumv
kposn = it_out_stock-posnr
kschl = 'ZDD3'. "Volume Discount
IF sy-subrc EQ 0.
it_konv_totals_stock-kwert = it_konv_totals_stock-kwert * -1.
it_total_stock_final-kwert1 = it_konv_totals_stock-kwert.
it_total_stock_final-kbetr1 = it_konv_totals_stock-kbetr.
it_total_stock_final-kbetr2 = it_total_stock_final-kbetr2 * -1.
ENDIF.
READ TABLE it_konv_totals_stock
WITH KEY knumv = it_out_stock-knumv
kposn = it_out_stock-posnr
kschl = 'ZDP3'. "Promo Discount
IF sy-subrc EQ 0.
it_konv_totals_stock-kwert = it_konv_totals_stock-kwert * -1.
it_total_stock_final-kwert2 = it_konv_totals_stock-kwert.
it_total_stock_final-kbetr2 = it_konv_totals_stock-kbetr.
it_total_stock_final-kbetr2 = it_total_stock_final-kbetr2 * -1.
ENDIF.
ENDIF.
it_total_stock_final-cnt1 = l_cnt1.
it_total_stock_final-cnt2 = l_cnt2.
it_total_stock_final-aubel = it_out_stock-vbeln.
it_total_stock_final-aupos = it_out_stock-posnr.
it_total_stock_final-kunnr = it_out_stock-kunnr.
it_total_stock_final-werks = it_out_stock-werks.
it_total_stock_final-vkbur = it_out_stock-vkbur. "Sales office
it_total_stock_final-vkorg = it_out_stock-vkorg. "Sales org
it_total_stock_final-vkgrp = it_out_stock-vkgrp. "Sales group
***Begin Insert by RONCR
it_total_stock_final-kwmeng = it_out_stock-kwmeng.
it_total_stock_final-fkimg = it_out_stock-fkimg.
it_total_stock_final-counter = it_out_stock-counter.
**End of Insert by RONCR
APPEND it_total_stock_final.
ENDLOOP.
ENDFORM. " out_stock
*& Form write_report
text
--> p1 text
<-- p2 text
FORM write_report.
ULINE (360).
FORMAT COLOR 1.
WRITE: / sy-vline, header01,
12 sy-vline, header02,
19 sy-vline, header03,
30 sy-vline, header04,
35 sy-vline, header05,
55 sy-vline, header18,
75 sy-vline, header19,
87 sy-vline, header20,
100 sy-vline, header06,
112 sy-vline, header07,
150 sy-vline, header08,
170 sy-vline, header09,
215 sy-vline, header10,
225 sy-vline, header11,
247 sy-vline, header21,
271 sy-vline, header12,
293 sy-vline, header13,
315 sy-vline, header14,
337 sy-vline, header17,
360 sy-vline, header22,
363 sy-vline.
ULINE (360).
FORMAT COLOR 2.
SORT it_total_stock_final BY cnt2 cnt1 spart aubel aupos.
LOOP AT it_total_stock_final.
CLEAR: g_div, g_mat, g_maktx, g_name1, v_net_value.
SELECT SINGLE vtext INTO g_div
FROM tspat
WHERE spart = it_total_stock_final-spart
AND spras = sy-langu.
SELECT SINGLE wgbez INTO g_mat
FROM t023t
WHERE matkl = it_total_stock_final-matkl
AND spras = sy-langu.
SELECT SINGLE maktx INTO g_maktx
FROM makt
WHERE matnr = it_total_stock_final-matnr
AND spras = sy-langu.
SELECT SINGLE name1 INTO g_name1
FROM kna1
WHERE kunnr = it_total_stock_final-kunnr.
IF it_total_stock_final-counter = 1.
CLEAR: l_quantity.
l_quantity = it_total_stock_final-kwmeng -
it_total_stock_final-fkimg.
it_total_stock_final-kawrt = it_total_stock_final-kawrt /
it_total_stock_final-kwmeng.
it_total_stock_final-kawrt = it_total_stock_final-kawrt *
l_quantity.
it_total_stock_final-kbetr1 = it_total_stock_final-kbetr1 /
1000.
it_total_stock_final-kbetr2 = it_total_stock_final-kbetr2 /
1000.
it_total_stock_final-kwert1 = it_total_stock_final-kawrt *
it_total_stock_final-kbetr1.
it_total_stock_final-kwert2 = it_total_stock_final-kawrt *
it_total_stock_final-kbetr2.
clear: it_total_stock_final-kawrt,
it_total_stock_final-kbetr1,
it_total_stock_final-kbetr2,
it_total_stock_final-kwert1,
it_total_stock_final-kwert2.
ENDIF.
v_net_value = it_total_stock_final-kawrt -
it_total_stock_final-kwert1 -
it_total_stock_final-kwert2.
WRITE: / sy-vline, it_total_stock_final-vbeln,
12 sy-vline, it_total_stock_final-aupos,
19 sy-vline, it_total_stock_final-aubel,
30 sy-vline, it_total_stock_final-spart,
35 sy-vline, g_div,
55 sy-vline, it_total_stock_final-vkbur,
75 sy-vline, it_total_stock_final-vkorg,
87 sy-vline, it_total_stock_final-vkgrp,
100 sy-vline, it_total_stock_final-kunnr,
112 sy-vline, g_name1,
150 sy-vline, it_total_stock_final-matnr,
170 sy-vline, g_maktx,
215 sy-vline, it_total_stock_final-matkl,
225 sy-vline, it_total_stock_final-vtext.
IF it_total_stock_final-counter = 1.
WRITE: 247 sy-vline, l_quantity,
271 sy-vline, it_total_stock_final-kawrt,
293 sy-vline, it_total_stock_final-kwert1,
315 sy-vline, it_total_stock_final-kwert2,
337 sy-vline, v_net_value,
360 sy-vline, it_total_stock_final-werks,
363 sy-vline.
ELSE.
WRITE: 247 sy-vline, it_total_stock_final-kwmeng,
271 sy-vline, it_total_stock_final-kawrt,
293 sy-vline, it_total_stock_final-kwert1,
315 sy-vline, it_total_stock_final-kwert2,
337 sy-vline, v_net_value,
360 sy-vline, it_total_stock_final-werks,
363 sy-vline.
ENDIF.
ENDLOOP.
ULINE (360).
ENDFORM. " write_report
*& Form held_order
text
--> p1 text
<-- p2 text
FORM held_order.
DATA: l_cnt1 TYPE i,
l_cnt2 TYPE i,
l_spart LIKE mara-spart,
l_matkl LIKE mara-matkl,
l_text LIKE tspat-vtext,
l_amount TYPE p DECIMALS 2,
l_aupos LIKE vbrp-aupos,
l_aubel LIKE vbrp-aubel.
SELECT vbak~erdat
vbak~bukrs_vf
vbak~knumv
vbak~kunnr
vbap~werks
vbak~vkbur "Sales office
vbak~vkorg "Sales organization
vbak~vkgrp "Sales group
vbap~vbeln
vbap~posnr
vbap~matnr
vbap~kwmeng "Order Quantity
vbuk~cmgst
INTO TABLE it_total_held1
FROM vbak
INNER JOIN vbap
ON vbakvbeln = vbapvbeln
INNER JOIN vbuk
ON vbapvbeln = vbukvbeln
WHERE vbak~erdat IN s_curr
AND vbak~vkorg IN s_vkorg
AND vbak~vkbur IN s_vkbur
AND vbap~matkl IN s_matkl
AND vbak~bukrs_vf IN ('5116', '5106')
AND vbak~vkbur NE '5100'
AND vbak~auart IN ('ZDOA', 'ZDTO', 'ZQOA', 'ZDTA', 'ZQTO')
AND vbak~kkber = '5116'
AND vbuk~cmgst = 'B'
AND vbap~spart IN s_spart.
IF sy-subrc = 0.
SELECT zcusno
zregion
INTO TABLE it_total_held2
FROM zcust
FOR ALL ENTRIES IN it_total_held1
WHERE zcusno = it_total_held1-kunnr
AND zcust~zregion IN s_zreg
AND zcust~zaclass IN s_class.
IF sy-subrc EQ 0.
***get the value of material and material group
SELECT matnr
matkl
spart
INTO TABLE it_mara_totals_held
FROM mara
FOR ALL ENTRIES IN it_total_held1
WHERE matnr = it_total_held1-matnr.
***Get the Value of Division Description
IF NOT it_mara_totals_held[] IS INITIAL.
SELECT spart
vtext
INTO TABLE it_tspat_totals_held
FROM tspat
FOR ALL ENTRIES IN it_mara_totals_held
WHERE spart = it_mara_totals_held-spart AND
spras = sy-langu.
ENDIF.
***Get the Material Group Description
IF NOT it_mara_totals_held[] IS INITIAL.
SELECT matkl
wgbez
INTO TABLE it_t023t_totals_held
FROM t023t
FOR ALL ENTRIES IN it_mara_totals_held
WHERE matkl = it_mara_totals_held-matkl AND
spras = sy-langu.
ENDIF.
***Get the Value of Condition Type
IF NOT it_total_held1[] IS INITIAL.
SELECT knumv
kposn
kschl
kawrt
kwert
INTO TABLE it_konv_totals_held
FROM konv
FOR ALL ENTRIES IN it_total_held1
WHERE knumv = it_total_held1-knumv
AND kposn = it_total_held1-posnr
AND kschl IN ('ZQPR', 'ZQD3', 'ZQP3',
'ZDPR', 'ZDD3', 'ZDP3').
ENDIF.
ENDIF.
ENDIF.
SORT it_total_held1 BY vbeln posnr.
SORT it_total_held2 BY zcusno zregion.
SORT it_mara_totals_held BY matnr.
SORT it_tspat_totals_held BY spart.
SORT it_t023t_totals_held BY matkl.
SORT it_konv_totals_held BY knumv kposn.
LOOP AT it_total_held1.
CLEAR: it_total_held_final-kawrt, it_total_held_final-kwert1,
it_total_held_final-kwert2, it_total_held_final-vtext,
it_total_held_final-matkl, it_total_held_final-spart,
it_total_held_final-aubel, it_total_held_final-aupos,
it_total_held_final-cnt1, it_total_held_final-cnt2.
CLEAR: it_mara_totals_held, it_tspat_totals_held,
it_t023t_totals_held, it_konv_totals_held,
l_cnt1, l_cnt2.
READ TABLE it_total_held2
WITH KEY zcusno = it_total_held1-kunnr.
IF sy-subrc = 0.
**Counter for Total Orders Column
l_cnt1 = 3.
READ TABLE it_mara_totals_held
WITH KEY matnr = it_total_held1-matnr.
IF sy-subrc EQ 0.
it_total_held_final-matnr = it_mara_totals_held-matnr.
it_total_held_final-matkl = it_mara_totals_held-matkl.
it_total_held_final-spart = it_mara_totals_held-spart.
***Dole
IF it_total_held_final-matkl EQ 'DPM' OR
it_total_held_final-matkl EQ 'SSN'.
READ TABLE it_tspat_totals_held
WITH KEY spart = it_mara_totals_held-spart.
IF sy-subrc EQ 0.
it_total_held_final-vtext = it_tspat_totals_held-vtext.
ENDIF.
***Non Dole
ELSE.
READ TABLE it_t023t_totals_held
WITH KEY matkl = it_mara_totals_held-matkl.
IF sy-subrc EQ 0.
it_total_held_final-vtext = it_t023t_totals_held-wgbez.
ENDIF.
ENDIF.
ENDIF.
IF it_total_held_final-matkl = 'DPM' OR
it_total_held_final-matkl = 'SSN'.
l_cnt2 = 1.
ELSE.
l_cnt2 = 2.
ENDIF.
***Condition Value for Comapny Code 5116
IF it_total_held1-bukrs_vf EQ '5116'.
READ TABLE it_konv_totals_held
WITH KEY knumv = it_total_held1-knumv
kposn = it_total_held1-posnr
kschl = 'ZQPR'.
IF sy-subrc EQ 0.
it_total_held_final-kawrt = it_konv_totals_held-kawrt.
ENDIF.
READ TABLE it_konv_totals_held
WITH KEY knumv = it_total_held1-knumv
kposn = it_total_held1-posnr
kschl = 'ZQD3'.
IF sy-subrc EQ 0.
it_konv_totals_held-kwert = it_konv_totals_held-kwert * -1.
it_total_held_final-kwert1 = it_konv_totals_held-kwert.
ENDIF.
READ TABLE it_konv_totals_held
WITH KEY knumv = it_total_held1-knumv
kposn = it_total_held1-posnr
kschl = 'ZQP3'.
IF sy-subrc EQ 0.
it_konv_totals_held-kwert = it_konv_totals_held-kwert * -1.
it_total_held_final-kwert2 = it_konv_totals_held-kwert.
ENDIF.
ENDIF.
***Condition Value for Comapny Code 5106
IF it_total_held1-bukrs_vf EQ '5106'.
READ TABLE it_konv_totals_held
WITH KEY knumv = it_total_held1-knumv
kposn = it_total_held1-posnr
kschl = 'ZDPR'. "Base price
IF sy-subrc EQ 0.
it_total_held_final-kawrt = it_konv_totals_held-kawrt.
ENDIF.
READ TABLE it_konv_totals_held
WITH KEY knumv = it_total_held1-knumv
kposn = it_total_held1-posnr
kschl = 'ZDD3'. "Volume Discount
IF sy-subrc EQ 0.
it_konv_totals_held-kwert = it_konv_totals_held-kwert * -1.
it_total_held_final-kwert1 = it_konv_totals_held-kwert.
ENDIF.
READ TABLE it_konv_totals_held
WITH KEY knumv = it_total_held1-knumv
kposn = it_total_held1-posnr
kschl = 'ZDP3'. "Promo Discount
IF sy-subrc EQ 0.
it_konv_totals_held-kwert = it_konv_totals_held-kwert * -1.
it_total_held_final-kwert2 = it_konv_totals_held-kwert.
ENDIF.
ENDIF.
it_total_held_final-cnt1 = l_cnt1.
it_total_held_final-cnt2 = l_cnt2.
it_total_held_final-aubel = it_total_held1-vbeln.
it_total_held_final-aupos = it_total_held1-posnr.
it_total_held_final-kunnr = it_total_held1-kunnr.
it_total_held_final-erdat = it_total_held1-erdat.
it_total_held_final-werks = it_total_held1-werks.
it_total_held_final-vkbur = it_total_held1-vkbur. "Sales office
it_total_held_final-vkorg = it_total_held1-vkorg. "Sales Org
it_total_held_final-vkgrp = it_total_held1-vkgrp. "Sales group
it_total_held_final-kwmeng = it_total_held1-kwmeng. "Order qty
APPEND it_total_held_final.
ENDIF. "it_total_held2
ENDLOOP.
ENDFORM. " held_order
*& Form write_report1
text
--> p1 text
<-- p2 text
FORM write_report1.
ULINE (360).
FORMAT COLOR 1.
WRITE: / sy-vline, header01,
12 sy-vline, header02,
19 sy-vline, header03,
30 sy-vline, header15,
45 sy-vline, header04,
50 sy-vline, header05,
75 sy-vline, header18,
90 sy-vline, header19,
103 sy-vline, header20,
115 sy-vline, header06,
127 sy-vline, header07,
167 sy-vline, header08,
184 sy-vline, header09,
227 sy-vline, header10,
237 sy-vline, header11,
260 sy-vline, header21,
282 sy-vline, header12,
306 sy-vline, header13,
330 sy-vline, header14,
354 sy-vline, header17,
376 sy-vline, header22,
380 sy-vline.
ULINE (376).
FORMAT COLOR 2.
SORT it_total_held_final BY cnt2 cnt1 spart aubel aupos.
LOOP AT it_total_held_final.
CLEAR: g_div, g_mat, g_maktx, g_name1, v_net_value.
SELECT SINGLE vtext INTO g_div
FROM tspat
WHERE spart = it_total_held_final-spart
AND spras = sHi,
790072 wrote:
Hi Gurus,
Need your help in writing an sql to search records which has length of 4000 bytes from an varchar2(4000) column and inserting the same records to another table by truncating the record to 3500 bytes .Something like this:
INSERT INTO new_table (txt_column)
SELECT SUBSTRB (txt_column, 1, 3500)
FROM old_table;SUBSTR returns a string with a specified number of characters , SUBSTR<b>B</b> has a specified number of bytes . -
hi, i was wounding if anyone would help me get information on the company regarding the acquisition of, beats by dre, could someone please help me out as i am doing a college report on this and need some good sources of information
Try a search with Google.
Why should we do your homework for you? -
Goods Receipt Report With 101 movement type using bapi_goodsmvt_create
Dear Abapers,
i am getting some problem, i got requirement like Goods Receipt Report with 101 movement type using
bapi_goodsmvt_create and data should upload through excel sheet.
still facing problems, i have searched sdn forum n sdn code also, but relevant answer i could not find.
What are all the inputs i need to take and please give some valuable inputs to me.
please do help ..... thanks for advance..
Thanks & regards,
Vinay.
Moderator message : Spec dumping is not allowed, show the work you have already done. Thead locked.
Edited by: Vinod Kumar on Sep 27, 2011 10:58 AMDear Abapers,
i am getting some problem, i got requirement like Goods Receipt Report with 101 movement type using
bapi_goodsmvt_create and data should upload through excel sheet.
still facing problems, i have searched sdn forum n sdn code also, but relevant answer i could not find.
What are all the inputs i need to take and please give some valuable inputs to me.
please do help ..... thanks for advance..
Thanks & regards,
Vinay.
Moderator message : Spec dumping is not allowed, show the work you have already done. Thead locked.
Edited by: Vinod Kumar on Sep 27, 2011 10:58 AM -
Backorder report, not possible to print Cardname
Hello,
in the PLD template for the backorder report it is not possible to inlcude the Cardname, there is no system variable available.
Does anyone have a workaround for this?
Thank you in advance.
Best regards,
Anton Wieser.Hi,
Were you able to figure out solution for this.
I tried this out by processing a backorder goods delivery. The system is still taking the delivery PLD. So, I am getting the Cardname (Customer Name).
Try out using Advanced print layout. Probably that will help in finding out a solution.
Assign points if useful.
Thanks,
Srikanth -
Hi all ,i need a good documentation for a beginner in WORK FLOW ?
hi all ,
i need a good documentation for a beginner in WORK FLOW ?
please,try to send the attached documents as much as u can apart from giving the weblinks ?
hope you will send it soon ....
thanks & regards
vishnuvardhan k.v.Hi
Developing a simple application using steps "User Decision" and "Mail"
Basic terminology used in the workflow:
The workflow definition is the set of rules that determine the path that the process takes. For example, how a purchase requisition is processed, from the initial request to the creation of the purchase order
A Workflow Instance, which is often simply referred to as the workflow, is a single workflow run. For example, the processing of a single purchase requisition for computers.
The Tasks are the steps in the process, which have to be performed either by people or automatically by the software. For example, to check for the availability of the spare computers in the company.
A Work item is the task instance that is performed as a single workflow step. For example, check that there are no spare computers available in the company.
Agents are the people who process the tasks (via the work items). For example, requisitioner and a member of the purchasing department.
Container is the place where all the data used in the workflow is collected.
Binding is the set of rules that define which data is passed to which part of the process.
Building a simple workflow application
The central tool for creating, displaying and processing a workflow is the workflow builder (Transaction SWDD). Within the workflow builder you can create all components of a workflow, including all the containers you need for getting the data from one step to another.
Generally, most of the workflows are started by an event (for example, when a material is created or when a new purchase requisition arrives). You define which data from this event needs to be passed to the workflow via binding.
However you can also start any workflow directly. Let us create a simple workflow and start the workflow directly, using the testing tools.
Call transaction SWDD. When the workflow builder is called for the first time, a newly created initial workflow definition appears or else last created workflow appears. In such cases you can opt to create a new workflow by pressing Create New Workflow(ctrl + shft + F5). The following screen appears.
The initial workflow screen has the following parts:
a. The start of the workflow definition, indicated by .
b. The end of the workflow definition, indicated by .
c. The area in which you insert the new workflow definition is indicated by .
Now select the undefined step and select Create step or double click the undefined step. Now among the different steps chose the User Decision by double clicking on it.
Developing a simple application using steps "User Decision" and "Mail"
Previous
Now enter the title for the user decision Please make a decision. Also enter the decision texts as Approve and Reject. On pressing enter, the outcome values default to the Decision texts but you can specify your own names, if desired. Now we need to select the agent. Agent is the person to whom the work item needs to be sent.. Since this is just a beginning, we would hardcode the user name. Select the User from the drop down list and enter the user name to whom the work item needs to be sent. In general, this type of agent assignment is not done. Agents are generally assigned using the expression, agent assignment rule or organization object (job, position etc.).
Now select Transfer and to graphic button. Following screen appears:
Now we need to include a mail step to be sent to the requestor. Now select the line Approve and do a right click. Different options on shown on the context menu. Select Create.
Now select the step Send Mail from the list.
Developing a simple application using steps "User Decision" and "Mail"
...Previous
Now enter the subject and the body of the message for the mail to be sent.
Do not change the recipients. Our mail is intended for the persons who triggered this workflow. &_WF_INITIATOR& contains the value who executed the workflow. Since this is a test object, we are using &_WF_INITIATOR&. But we wouldnt be using this variable in real time scenarios. We would discuss about this in the coming documents.
Now select Transfer and to graphic button.
A popup appears requesting for the abbreviation and the name for this task. Enter the same and press enter.
Now enter the package as local object and press enter.
Follow the steps 5 through 9 for the step Reject. The following screen appears:
Press SAVE to save the workflow application. You need to enter an abbreviation and name for your workflow as shown below. You can change any of these at any later point. After saving, a number is assigned to your workflow starting with WS, as shown below.
Developing a simple application using steps "User Decision" and "Mail"
...Previous
To execute the workflow, activate it by choosing the activate button.
Test the workflow by choosing Test. The following screen appears.
Now choose Execute to start the workflow.
Now the recipient would receive a work item in his SAP® inbox (Transaction SBWP).
Now execute the work item by pressing Execute. The following screen appears:
Choose one among Approve or Reject as part of the user decision. He can select the third option to retain the work item in his inbox and make the decision later. Now suppose that the recipient has chosen one of the first options. Now a mail would be sent to the requestor with the status of his request.
Creating a Container element
This document details about creation of a container element in workflow and using it in the step "Mail".
Pre-requisites:
It is assumed that the reader of this Tutorial is aware of creating a workflow definition with the step Mail. If not, please go through the document on creating the same available, by clicking here.
Steps:
1. Create a workflow definition using the transaction SWDD.
2. Lets create a container element for Carrier id. Click on the Workflow Container on the left side of the screen (as shown in the screenshot below):
3. Now double-click on Double-Click to Create
4. Enter the details pertaining to CARRID here.
5. Click on tab Properties and select Import.
6. Click on Confirm (Enter).
7. Now the element created could be seen on the left side, below the Workflow Container.
Creating a Container element
Previous
1. Create a Mail step by double-clicking on Undefined step in the workflow.
2. Enter the recipient details in the Recipients box.
3. In the subject line, enter Carrid value entered is: and click on Insert Expression.
4. Select the element Carrid from the list.
5. Similarly enter the content in the Body area.
6. Save and activate the application.
Testing the Workflow application:
7. Test the workflow by clicking F8.
8. Enter the value of the Carrid as shown above and press execute.
9. A mail would be sent to the recipient mentioned earlier with the carrid value entered.
Condition Step
Agenda:
This document details about the steps Condition.
Pre-requisites: It is assumed that the reader of this document has a preliminary understanding of workflow and has worked with the container elements earlier. If not, please go through the first two Tutorials of workflow available in this site. (More details)
Procedure:
1. Create a new workflow definition.
2. Create a container element, CARRID (as demonstrated in tutorial 2).
3. Now click on undefined step and create the step Condition.
4. Enter the step name of your choice.
5. We would have the following condition here:
If carrid = AA.
Do this.
Else.
Do this.
Click on Click here to create a new condition. Following screen appears.
Double click on Carrid. Next click on = and enter the value AA in the constant field and press ENTER.
Enter the outcome names of your choice as shown above.
Click on Transfer and go to graphic.
As shown above, there are two branches here. One navigates to true, if CARRID = AA else the control takes the branch False.
Test the above scenario by inserting mail steps in the above 2 branches and by passing different CARRID values.
Condition Step
Agenda:
This document details about the steps Multiple Condition.
Pre-requisites: It is assumed that the reader of this document has a preliminary understanding of workflow and has worked with the container elements earlier. If not, please go through the first two Tutorials of workflow available in this site. (More details)
Procedure:
1. Create a new workflow definition.
2. Create a container element, CARRID (as demonstrated in tutorial 2).
3. Now click on undefined step and create the step Multiple Condition.
4. Enter the step name of your choice.
5. We would have the following condition here:
If carrid = AA.
Do this.
Elseif carrid = AH
DO this.
Elseif carrid = SQ
Do this.
Else.
Do this.
Select the CARRID using the F4 help for the comparison basis field.
Enter the values of the carrid under the Comparison values with the corresponding outcome name (of your choice)
Double click on Carrid. Next click on = and enter the value AA in the constant field and press ENTER.
Click on Transfer and go to graphic.
As observed above, there are different branches for each value of CARRID mentioned above.
Test the above scenario by inserting mail steps in all the branches and by passing different CARRID values.
Using "Container Operation" step
Agenda: Usage of step Container Operation.
Pre-requisites: It is assumed that the reader of this tutorial has worked in the concepts that are dealt in earlier tutorials. (click here for more details)
Scenario: In this tutorial, we would deal about how to work with the step Container Operation with an example of calculating the available seats by subtracting occupied seats from the maximum seats at the workflow level.
Procedure:
1. Create a new workflow definition using the transaction SWDD.
2. Create two container elements MaxSeats, Occ_Seats with the import property set. You can use the reference fields sflight-seatsmax, sflight-seatsocc for this.
3. Create another container element AvailableSeats without setting either import or export property as this is calculated within the workflow and used within the workflow. You might use any of the above reference fields as data types.
4. Define a new step Container Operation in the workflow definition by double-clicking on the Undefined step.
5. In this step, we would calculate the available seats from the max seats and seats occupied.
I would recommend entering all the container elements from the F4 help instead of typing them manually.
6. Return to the main screen.
7. Create a mail step after this to send the available seats information.
8. Test the above functionality by passing some values to the maximum and the seats occupied.
9. Result would be as follows:
Triggering Events Programmatically
Purpose: This document details the procedure in triggering the business object events programmatically.
Pre-requisites: It is assumed that the reader of this document is aware of the business object concepts and good in ABAP.
Procedure:
In this document, we would take an example of the business object BUS1001006 (Material) and the event CREATED. In general, this event is triggered whenever a material is created using a standard procedure like MM01 or any others. Now we would trigger this event from our own programs.
Following are the screenshots of the business object BUS1001006 and the event CREATED. Go to transaction SWO1 for more information of the business object.
Double-clicking on the key field parameter gives you technical information of the field.
In order to trigger an event programmatically, we would use the function module SWE_EVENT_CREATE.
Following is the sample code to trigger the events programmatically:
REPORT ZDEMO_TRIGGER_EVENT.
DATA: KEY LIKE SWEINSTCOU-OBJKEY.
KEY = '1163'. Material Number (hard-coded)
CALL FUNCTION 'SWE_EVENT_CREATE'
EXPORTING
objtype = 'BUS1001006'
objkey = KEY
event = 'CREATED'
CREATOR = ' '
TAKE_WORKITEM_REQUESTER = ' '
START_WITH_DELAY = ' '
START_RECFB_SYNCHRON = ' '
NO_COMMIT_FOR_QUEUE = ' '
DEBUG_FLAG = ' '
NO_LOGGING = ' '
IDENT =
IMPORTING
EVENT_ID =
TABLES
EVENT_CONTAINER =
EXCEPTIONS
OBJTYPE_NOT_FOUND = 1
OTHERS = 2
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
WRITE 'Event Triggered'.
ENDIF.
COMMIT WORK.
In order to test whether the event is getting triggered or not, we can make use of Event Trace. Switch on the event trace using the transaction SWELS.
Press Switch On.
Now execute the program developed earlier. Now switch-off the event trace using the same transaction SWELS.
Now go to transaction SWEL. Here you can list out the events triggered in the particular period of time. Here is the event-trace list:
Deadline Monitoring in SAP Workflow
A major advantage of workflow is the ability to monitor the workflow steps according to a predefined schedule. Following are different deadlines that can be monitored against each workflow step:
Requested Start
Latest Start
Requested End
Latest End
In this example, we will define a deadline to the User Decision example created earlier (click here). Following is the screenshot of the application developed using the User Decision example:
We would extend this example to the deadline monitoring.
In the User Decision step, click on the latest end tab.
By default, No deadline monitoring is active (as seen in the above screenshot).
Choose the Work Item Creation from the list box.
After selecting Work Item Creation, chose an offset of 5 minutes. This means that the work item must be executed within 5 minutes of the creation, if not this would trigger.
Deadline Monitoring in SAP Workflow
Enter recipient details to whom the message to be escalated, if the work item is not executed with in 5 minutes after work item creation.
Save and activate the workflow definition.
Testing the workflow application:
Execute your workflow.
Check for the work item in the SAP Inbox. This time do NOT execute the work item.
Wait for the deadline to be triggered. After that, a deadline message is delivered to the recipient mentioned in the Latest End tab. See the screenshot below.
Dont worry if the deadline message doesnt appear immediately after 5 minutes. This depends on various factors including how the deadline monitoring program is scheduled and also on the availability of the background processors.
Use SWWA to check how the deadline monitoring program is scheduled in program.
For example, assume that our work item has been created at 09:10 hrs and the deadline message is expected to trigger at 09:15 hrs. From the above screenshot, it is understood that the background program is scheduled to execute for every 3 minutes. Assume that the last run of the program is at 09:14hrs and the next run is expected at 09:17hrs. So even our deadline expires at 09:15, the deadline message would appear only at 09:17hrs after execution of the background program.
Some more points
In our above example, we have used the deadline on the Work Item creation time. i.e., 5 minutes after creation time, the deadline message would be sent. Now we would check the other option Expression. Here we can mention the date and time, when the deadline message should appear irrespective of the work item creation date/time.
As seen in the above screenshot, we can provide the target date and time by which the task should be finished. Container elements could be used in this case. Please refer to our example on creation of container elements (click here).
Personal Substitute in Workflow
Requirement: Need to have at least one substitute who can act upon work items in your absence.
Important: The appointed substitute would be able to see all your work items. A substitute cannot be assigned for only particular area of organization or any other item. So need to ensure that the substitute have the necessary authorizations to act upon the work items.
Procedure:
1. Go to SAP Business Work Place (TCode: SBWP)
2. Now from the menu bar, select Settings à Workflow settings à Maintain Substitute
3. Highlight/Select the name on the window, in this case SAPDEV02 and click on Create Substitute.
4. List of users available in the system are displayed.
5. Select the required substitute user name. Following screen appears.
Validity field describes about the period in which the setting would be active. Note that the dates on the screen would range from the current date to 31st Dec 9999.
Regarding the checkbox Substitution active, it is advised to leave this checkbox unchecked for system performance reasons. A check in this box indicates that the substitution is permanent and if left unchecked it is treated as as-needed. A permanent substitute will automatically receive the primary users work items in their own box. In the case of as-needed, substitute must manually adopt the work items from the primary users inbox.
6. Save the entries
7. Click Enter to leave the screen.
Adopting a Substitute in Workflow
If you have been designated as an as-needed substitute, you must manually adopt the substitution. If you are designated as a permanent substitute, the work items would automatically appear in the inbox.
Before adopting a substitution, there are 19 work items in the inbox. See the screenshot below:
To adopt a substitution, select Settings à Workflow settings à adopt substitution.
Select the corresponding User-id (if you have been assigned as a substitute for multiple people, then this option would allow you to select the user name of whom you would to check the work items)
The corresponding users work items would appear in our inbox now.
You can end the substitution, by selecting settings à Workflow settings à End substitution.
Note: Substitutes can only adopt work items that are directly routed to the person for whom they are a substitute. If you are a substitute for a user (SAPDEV02) who has been made a substitute for another user (SAPDEV01), you will only see work items for user SAPDEV02 and not of the user SAPDEV01.
Notification of Work Items via e-Mail
SAP provides us with a facility of notifying the user via the email address of your choice when there are any pending work items in the SAP Inbox..
1. Go to Transaction SO13.
2. Click on Automatic Forwarding tab.
3. Click on Create icon .
4. Enter the details in the above screen.
5. Click ENTER to complete the entries.
6. Now the notification would be received at the provided email address if there are any pending work items in the inbox.
Filtering the Work Items in the SAP Inbox using BADI
This document details about the procedure in filtering some of the work items from the SAP inbox using a BADi.
Following is the screenshot of the SAP inbox, before implementing BADi:
The BADi that is used in filtering the work items is WF_BWP_SELECT_FILTER. To implement the BADi, go to transaction SE18. From the menu, select Implementation à Create. (See the screenshot below)
Enter the implementation name and press ENTER
Enter any meaningful short text for the implementation and click on the tab Interface
The implementing class, ZCL_IM_BWP_SELECT_FILTER, is automatically proposed. Double click on the implementing class name.
You are now navigated to the class builder. Now double-click on the method name shown on the screen (see the snapshot below)
Now let us filter out the work items belonging to the task TS2000066. See the code below:
Activate the method and also the implementation. In the state of active, you wouldnt be able to make any changes. To make any changes, we need to deactivate it and then make the changes.
Now check the inbox and would notice that the work items related to that task are no more appearing.
To notice the differences, try activating and deactivating the BADi implementation.
Workflow tutorials with step-by-step and with screenshots are available at http://www.****************/Tutorials/Workflow/Workflow.htm
http://help.sap.com/saphelp_erp2005vp/helpdata/en/42/c14a9b55103116e10000000a1553f7/frameset.htm
http://help.sap.com/saphelp_erp2005vp/helpdata/en/c5/e4a930453d11d189430000e829fbbd/frameset.htm
http://www.sapgenie.com/workflow/
http://www.sap-img.com/workflow/sap-workflow.htm
http://help.sap.com/saphelp_47x200/helpdata/en/3d/6a9b3c874da309e10000000a114027/frameset.htm
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PSWFL/PSWFL.pdf
http://help.sap.com/saphelp_47x200/helpdata/en/4a/dac507002f11d295340000e82dec10/frameset.htm
http://www.workflowing.com/id18.htm
http://www.e-workflow.org/
http://web.mit.edu/sapr3/dev/newdevstand.html
http://www.sap-basis-abap.com/wf/sap-business-workflow.htm
https://forums.sdn.sap.com/click.jspa?searchID=791580&messageID=2857887
https://forums.sdn.sap.com/click.jspa?searchID=791580&messageID=2855919
https://forums.sdn.sap.com/click.jspa?searchID=791580&messageID=2735228
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCBMTWFMSTART/BCBMTWFMSTART.pdf
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCBMTWFMDEMO/BCBMTWFMDEMO.pdf
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCBMTWFMPM/BCBMTWFMPM.pdf
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PSWFL/PSWFL.pdf
debug a workflow.
This has a step by step procedure :
http://fuller.mit.edu/workflow/debugging.pdf
www.erpgenie.com/sap/workflow/debugging.htm
http://www.erpgenie.com/workflow/debugging.htm?2b5de440 -
More fraudulent apps - Blackberry needs a way to report these!
While search for an app today I came across a series by "KDN Capital Assets, LLC". Many/most are designed to defraud customers and provide no functionaility. These include:
VPN
Mobile Hotspot
Mobile Network
Software Updates
SIM card
Bluetooth
NFC
Sound
Developer Mode
Accounts
Security
Certificates
About My Device
Accessibility
and others.
The apps are simply shortcuts to functions on your phone. The worst part is they range in price up to 19.99, and most have reports of users being taken.
Blackberry NEEDS to provide a reporting mechanism for these. They:
- Clutter the store
- Make the entire store seem like it is filled with useless apps
- Contribute to the reputation that Blackberry does not have any good apps.
Many users here and on Crackberry ask how to report, and there seems to be no answer. Can someone provide a way to handle these? Messaging the developer will not help, as clearly they do not care.Hello,
I suppose that one way might be to flood BB with refund requests...refer:
https://consumersupport.webapps.blackberry.com/blackberrycommerce/main?ln=en
Good luck!
Occam's Razor nearly always applies when troubleshooting technology issues!
If anyone has been helpful to you, please show your appreciation by clicking the button inside of their post. Please click here and read, along with the threads to which it links, for helpful information to guide you as you proceed. I always recommend that you treat your BlackBerry like any other computing device, including using a regular backup schedule...click here for an article with instructions.
Join our BBM Channels
BSCF General Channel
PIN: C0001B7B4 Display/Scan Bar Code
Knowledge Base Updates
PIN: C0005A9AA Display/Scan Bar Code -
Backorder Reports V.15 and V_RA
Hi !
Can someone explain to me how exactly these reports works. These reports show orders that are fully confirmed. I was hoping these reports will only show orders that the fully or partially unconfirmed (which is my client's definition of a Backorder)
What is SAP's definition of a Backorder (in the context of these reports).
I am not liking these reports and I am inclined to develop custom Backorder reports for my client... though I would like to avoid that if possible.
Input from anyone experienced in these reports is greatly appreciated.
Thanks,
Anisha.Hi Anisha,
See, basically back order means following:
Your customer had placed an order for 100 qty, out of which you could confirm only 30 & deliver the same. At this point of time a sales order will deliver only confirmed qty that is 30 & rest will be on backorder (that qty deliverable after some days after availibility check & confirmation).
Later when stocks arrive you can either run availibility check thru sales order or by using the reports you mentioned.
These are not only reports, but also used as transaction. see when you run V_RA you can see material wise the backorder quantities, wherein you can manually change the confirmation.
Other use of these transaction is that, suppose you have created two orders in sequence but the second one has to be delivered first. But due to availibility check you entire stock is in fiest sales order. Using these reports you can also release stock from first order & confirm it for second & deliver it.
Customised reports is a good options but its always better to use standard SAP functionality.
Hope this is very much helpful to you.
Regards,
Dhananjay -
Help needed while exporting crystal reports to HTML file format using java
Help needed while exporting crystal reports to HTML file format using java api(not using crystalviewer).i want to download the
html file of the report
thanksthe ReportExportFormat class does not have HTML format, it has got to be XML. Export to HTML is available from CR Designer only.
Edited by: Aasavari Bhave on Jan 24, 2012 11:37 AM -
Need to develop this report plezzzz help
the requirement says
When a user submits an ID they have to choose who sold the product from the sold by field.This has to be chosen correctly otherwise there will be issues in sales and commission process.I need to develop a report to detect immediately when an Id is created which seems to be suspect.A suspect ID is one in which a salesperson was chosen on a customer who is not assigned to that sales person territory
for example: if danny is in Kathy territory is assigned to a customer in Texas which is Larry territory.
any suggestions will be helpful for me...
Edited by: user13001889 on Jun 6, 2011 4:43 PM
Edited by: user13001889 on Jun 6, 2011 4:44 PMYou ask for help, yet all you give is conceptual data. How do you expect help on writing the report?
Q) What defines "territory"? Is it a flag? Zip code? City?
Here is an answer based on a lot of assumptions:
I would have to assume that territory is defined by something like city, state, or zip code. If so, you could start with this:
When a customer submits an ID, along with who he/she selects as a salesperson -- I assume this is a drop down box to eliminate multiple entries of the same person due to variations in spelling -- thep person's address, city, state and zip are included as well. Let's assume that territory is defined by zip code. With the salesperson's name and the zip of the customer captured, you have the basis for comparison.
Based on the table of all your salespeople and their territory (zip code in my assumption), you can create a report that contains a concatenated field of salesperson||zip code. This will produce a report with all possible combinations of salesperson and territory. This report will be your sub-query.
Now you have your main query based on the customer activity table and you create a concatenated field of salesperson (chosen-by-customer)||zip code (of the customer). You will put a filter on this concatenated column and have it based on the results of another request (your sub-query) with the operand "not equal to/not in."
If any record in the main query does not match an entry from the sub-query, that record will display. It will be a report that contains customers who chose a sales person who doesn't have that territory.
That's how you build your report. -
Need Help XML Publisher Report
Hi Friends
I need to generate a report in xml publisher responsibility .
I have create and designed the RTF file using word , And i have genetared an XML file(template )
I have some doubt please clarify by doubts
In RTF template i have some 4columns
For EXample i Give some column name
Invoice Number , Invoice Line Number ,Tax Type ,Tax Code Name etc....
In my RTF I have done like this
I have created two 2 row and 4column
In the 1st row i have all the 4 column heading
In the 2nd row i have done like this
Developer tab> Design mode > In the legacy tool i have selected text Form field
Once i double click the text form field in the default text i have Given C1 Then in the Add help text button i have given <?C_INVOICE_NUMBER?> like this i have done for alls the columns
My RTF design is completed
Now i need load the XML is it?
In the XMl data query i have placed my sql statement
Here my doubt starts
wether all the column in the RTF should be in the XML sql statement ha?
2)In the top of my RTF i need to add date and page No how to add that ?
Thanks In advance
ATHi Friend
Iam saying this is my XML file
<LIST_G_TAX_NAME>
<G_TAX_NAME>
<C_SORT_TAX_NAME>USE TAX</C_SORT_TAX_NAME>
<C_TAX_NAME>Use Tax</C_TAX_NAME>
<C_TAX_RATE>8.25</C_TAX_RATE>
<C_TAX_TYPE>USE</C_TAX_TYPE>
<C_PERIOD_NAME>OCT-11</C_PERIOD_NAME>
<LIST_G_VENDOR>
<G_VENDOR>
<C_SORT_VENDOR_NAME/>
<C_SORT_SITE_CODE/>
<C_VENDOR_ID>851</C_VENDOR_ID>
<C_VENDOR_NAME>ORACLE CORPORATION</C_VENDOR_NAME>
<C_SITE_CODE>CHICAGO</C_SITE_CODE>
<LIST_G_INVOICE>
<G_INVOICE>
<C_INVOICE_DATE>17-OCT-11</C_INVOICE_DATE>
<C_SORT_INVOICE_NUMBER>1308</C_SORT_INVOICE_NUMBER>
<C_INVOICE_ID>350889</C_INVOICE_ID>
<C_INVOICE_NUMBER>1308</C_INVOICE_NUMBER>
<C_INVOICE_LINE_NUMBER>1</C_INVOICE_LINE_NUMBER>
<C_PO_NUMBER>256388</C_PO_NUMBER>
<C_DESCRIPTION>TEST</C_DESCRIPTION>
<C_GL_DATE>17-OCT-11</C_GL_DATE>
<C_INVOICE_LINE_AMOUNT>15</C_INVOICE_LINE_AMOUNT>
<C_CHARGE_ACCOUNT>412.00.6410.7831.1076.1001.00.000.0000</C_CHARGE_ACCOUNT>
<C_LIABILITY_ACCOUNT>412.00.0000.2152.1208.1001.00.000.0000</C_LIABILITY_ACCOUNT>
<C_BATCH_NAME>101711</C_BATCH_NAME>
<C_SITE_CODE2>CHICAGO</C_SITE_CODE2>
<C_INVOICE_AMOUNT>15</C_INVOICE_AMOUNT>
<LIST_G_DIST>
<G_DIST>
<C_INVOICE_TAX_ID>10061</C_INVOICE_TAX_ID>
<C_LINE_TYPE>ITEM</C_LINE_TYPE>
</G_DIST>
</LIST_G_DIST>
<C_TAXABLE_AMOUNT>15</C_TAXABLE_AMOUNT>
<C_TAX_AMOUNT>1.24</C_TAX_AMOUNT>
<C_INVOICE_AMOUNT_DISP> 15.00 </C_INVOICE_AMOUNT_DISP>
<C_TAXABLE_AMOUNT_DISP> 15.00 </C_TAXABLE_AMOUNT_DISP>
<C_TAX_AMOUNT_DISP> 1.24 </C_TAX_AMOUNT_DISP>
</G_INVOICE>
</LIST_G_INVOICE>
<C_INVOICE_SITE_SUM>124.9</C_INVOICE_SITE_SUM>
<C_INVOICE_SITE_SUM_DISP> 124.90 </C_INVOICE_SITE_SUM_DISP>
<C_TAX_SITE_SUM>5.4</C_TAX_SITE_SUM>
<C_TAX_SITE_SUM_DISP> 5.40 </C_TAX_SITE_SUM_DISP>
<C_TAXABLE_SITE_SUM>65.66</C_TAXABLE_SITE_SUM>
<C_TAXABLE_SITE_SUM_DISP> 65.66 </C_TAXABLE_SITE_SUM_DISP>
</G_VENDOR>
</LIST_G_VENDOR>
<C_OLD_VENDOR_ID>0</C_OLD_VENDOR_ID>
<C_INVOICE_SUM>124.9</C_INVOICE_SUM>
<C_INVOICE_SUM_DISP> 124.90 </C_INVOICE_SUM_DISP>
<C_TAX_SUM>5.4</C_TAX_SUM>
<C_TAX_SUM_DISP> 5.40 </C_TAX_SUM_DISP>
<C_TAXABLE_SUM>65.66</C_TAXABLE_SUM>
<C_TAXABLE_SUM_DISP> 65.66 </C_TAXABLE_SUM_DISP>
</G_TAX_NAME>
</LIST_G_TAX_NAME>
And if i need all the column to be displayed in my report
1)Invoice Number
2)Invoice Line Number
3)Tax Type
4)Tax Code Name
5)Tax Rate Percent
6)Supplier Name
7)Description
8)Gl Date
9)Invoive Line Amount
10)Taxable Line Amount
11)Tax Liability
12)Po Number
13)Charge Account
14)Liability Account
Which tag do i need to use fro grouping
For ex
Instead of this <?for-each:G_TAX_NAME?> <?end for-each?>
which one i need to use
Please help
Thanks
AT -
I need to display a Report which contain -- del QTY and INV QTY in one
Hi ALL,
I need to display a Report which contain
<b>Customer , Material , Order No, Delivery No, Billing No , Order Qty , Dev Qty, Bill Qty , Invoiced Qty and There Values in One Line .</b>
How can I Display, When I am executing the report against the Delivery Number Bill Qty and Invoiced Qty is showing Hash ( # ).
Do I need to right any Routines for this, if I am correct, where I have to write that code and what is the code ,
What are the Consolidation routines ?????
I am working on BI 7.
Regards ,
Shaik
Message was edited by:
shaikFrst check in backend, which all cubes have got data for each of three..
Corresponding you can go ahead with Multi/Infoset..
Look for reference no in all three cubes and pick one order and track tht by reference no in all cubes,
Hope it helps..
Thanks for points assigned -
I Need to Create a report for batch jobs Based on Subject Area.
Hi SAP Guru's,
I need to create a report , that it must show the status of batch jobs Completion Times based on Subject area(SD,MM,FI).
Please help me in this issue ASAP.
Thanks in Advance.
Krishna.You may need to activate some additional business content if not already installed but there are a lot BI statistics you can report on. Have a look at this:
http://help.sap.com/saphelp_nw70ehp1/helpdata/en/46/f9bd5b0d40537de10000000a1553f6/frameset.htm -
<table border="0" cellspacing="0" cellpadding="0" width="100%" height="100%" id="HB_Mail_Container"><tbody><tr width="100%" height="100%"></tr><tr><td height="1" style="font-size: 1pt"></td></tr></tbody></table><blockquote><table border="0" cellspacing="0" cellpadding="0" width="100%" height="100%" id="HB_Mail_Container"><tbody><tr width="100%" height="100%"><td id="HB_Focus_Element" width="100%" height="250" valign="top"><p>I initiate a CR XI from a C++ routine using ShellExecute command, the report file is opened and the C++ program continues to execute, this is working fine, now I need the following two things:</p><p>1. When the report is invoked I would like it to run and print the result either to a printer or to a file.</p><p>2. I need to send the report parameters since it will not prompt for it if it runs automatically.</p><p>Thanks in advance for your help.</p></td></tr><tr></tr></tbody></table><blockquote><table border="0" cellspacing="0" cellpadding="0" width="100%" height="100%" id="HB_Mail_Container"><tbody><tr width="100%" height="100%"><td id="HB_Focus_Element" width="100%" height="250" valign="top"><p> </p></td></tr></tbody></table></blockquote></blockquote>
Please re-post if this is still an issue to the Legacy Application Development SDKs Forum or purchase a case and have a dedicated support engineer work with you directly
-
Hello guys,
I have button in my form, which displays
a report, I need to print the report,
once the the button the pressed.
Are there any ready made functions !!!
A.Kishore
nullKishore,
Do you want the report to show up and then
the browser print window to show up?
If so, then in the unstructured template, call the window.print() method using the onLoad event for the body tag. When the report loads in the browser, you will get the browser print window (in Netscape). In IE, the print starts automatically.
Maybe you are looking for
-
My daughter and I have the same ITunes account. How can we separate them?
My daughter and I share the same ITunes account. How can we separate the accounts?
-
Is it possible to create a playlist in itunes on the iphone 4s, that automatically contains recently downloaded podcasts?
-
Use of report RMMDDIBE for MRP area creation
Dear All I have this requirement where i have to extend already created materials to storage location MRP areas. In SAP documentation i found that, standard report RMMDDIBE can be used for this. If anyone has worked with this earlier, kindly let me
-
Visual Voice Mail not working with Telcel
I have 2 cell phones with Telcel in Mexico, one iPhone 4 (company) and an iPhone 5S (personal) On the company phone, Visual Voice mail works perfectly. But for almost a year I've been trying to get Telcel to fix it on my iPhone 5S with absolutely no
-
Preview in Mountain Lion Doesn't Like Spot Colors
I upgraded to Moutnain Lion and CS6 at the same time, and one thing I've noticed is that Mac's preview doesn't seem to dig on spot colors. Has anyone else noticed this? It seems to be the case with .ai and PDFs. Not a huge deal; when you open the fil