Item Code in Sales A/R
We have all the Item Code with 6 digit with a leading zero..(e.g. 030351, 030201). I want to write a query or a formatted search on item code where i can just type put the item code without '0' (e.g. 30351) and it will convert in to original item code (030351)
i have written code...
if len(itemcode) = 5 then
select [RDR1.ITEMCODE] = REPLICATE(ITEMCODE),0,6)
is this right? Can you help me with this?
Hello,
The correct is:
declare @ItemCode nvarchar(max)
set @ItemCode = (select $[$38.1.0])
select case when Len(@ItemCode) < 6 then
(select right(replicate('0',6)+@ItemCode,6))
else
(select @ItemCode)
end
Regards,
J
Similar Messages
-
Read item code from Sales Order with formatted search
hi,
i'm tring to read tha values of the item or items of a sales order (before save it) with a formatted search.
i have no problem to read the value of card code or cardname but i can't read the item's value.
i tried with this [code]Select $[RDR1.ItemCode][/code] (i found it on the forum) but it doesn't work.
somebody can help me ?
thank youHi, Alessandro!
I think the trouble is that you are trying to assign a FS to the header of the document. You are getting the information of the current row, so you have to bind a formatted search to some column of the "table - part" of the document.
And also you can try:
SELECT $[$38.1]
38 - the value of "Item" (when you point a mouse to the cell, information you want from)
1 - the value of "Column" (the same...)
It will get an info of this cell in a current row.
HTH! -
Project code based Sales Order and Purchase Order - Item wise Report
Dear all,
Scenario:
We are doing business based on Projects. So, for every Sales , Project code is created and Sales order is booked with Project code and subsequently Purchase Order is booked with Project code. (Note:Some cases, few items might not be purchased since stock is available.)
We want report like
SO Project code
SO Posting date
SO Sales Employee
SO Customer Name
SO Item code
SO Quantity
SO Unit price
SO Row Total
PO Project code
PO Posting date
PO Sales Employee
PO Customer Name
PO Item code
PO Quantity
PO Unit price
PO Row Total
*SO line item and PO line item for same project should be parallel , that is important and challenge (certain cases, item in SO might not be in PO, for such cases Blank field should appear for PO Item code.)
Thanks in advance,
Regards,
Dwarak.Hi Dwarak.......
Your Report is right but a small change you have to make Left join RDR1 with POR1........
Try this.......
SELECT T0.PrjCode, T1.Project, T0.PrjName, T1.DocNum, T1.DocDate, T1.CardName, T2.ItemCode, T2.Dscription, T2.Quantity, T2.Price, T2.LineTotal, T3.Project, T4.ItemCode, T4.Dscription, T4.Quantity, T4.Price, T4.LineTotal FROM OPRJ T0 INNER JOIN ORDR T1 ON T0.PrjCode = T1.Project INNER JOIN RDR1 T2 ON T1.DocEntry = T2.DocEntry LEFT JOIN OPOR T3 ON T0.PrjCode = T3.Project LEFT OUTER JOIN POR1 T4 ON T3.DocEntry = T4.DocEntry AND T2.ITEMCODE = T4.ITEMCODE INNER JOIN OITM T5 ON T2.ItemCode = T5.ItemCode WHERE T0.PrjCode ='[%0]' AND
T5.ItmsGrpCod in ('108', '110') GROUP BY T0.PrjCode, T1.Project, T0.PrjName, T1.DocNum, T1.DocDate, T1.CardName, T2.ItemCode, T2.Dscription, T2.Quantity, T2.Price, T2.LineTotal, T3.Project, T4.ItemCode, T4.Dscription, T4.Quantity, T4.Price, T4.LineTotal
Regards,
Rahul -
Production Order and Internal Order for each item of the sales order
Hi
I am developing Make To Order Report where I have to display the MTO Line Items and non MTO Line Items. For non MTO Line Items I have to display Internal order with Planned and Actual Costs and also Production Order with Planned and Actual Costs. Could anybody tell how to get the Internal order no and production order with Planned and Actual costs for each line item for a sales order.
Thanks
NagaHi,
You can get the Production orders, Planned orders, Internal orders generated for Sales order item from AFPO table (use fields KDAUF-Sales order number & KDPOS-Sales order item). Then to identify the order type use order category (AUTYP) from table AUFK.
Once you have the Production/internal order, you can ge the cost from COSS and COSP table. Use the object number from AUFK to get the cost entries from COSS & COSP.
You can use the following sample code as reference.
Hope this is helps.. (Don't forget to mark it... )
Form GET_COSTS *
Get the material cost, labour hours and the labour cost for the *
sales order material. *
There are no interface parameters to be passed to this subroutine. *
FORM GET_COSTS.
DATA V_OBJNR LIKE AUFK-OBJNR.
DATA v_menge LIKE vbap-kwmeng.
SELECT SINGLE OBJNR
INTO V_OBJNR
FROM AUFK
WHERE AUFNR EQ AFPO-AUFNR.
SELECT * FROM COSS
WHERE OBJNR EQ V_OBJNR
AND WRTTP IN ('01', '04'). " p_wrttp. "Labour Cost ( Plan, Actual)
PERFORM GET_VALUES_FROM_COSS.
ENDSELECT.
SELECT * FROM COSP
WHERE OBJNR EQ V_OBJNR
AND WRTTP IN ('01', '04') " p_wrttp
AND KSTAR NE '0000510033'. " EQ p_kstar2. "Material Cost
PERFORM GET_VALUE_FROM_COSP.
ENDSELECT.
Get the unit cost of the production order by dividing the production
cost by the order quantity. The result will be multiplied by the
GL posting qunatity (Delivery quantity) to get the production cost
for the quantity being deluivered.
IF NOT AFPO-PSMNG IS INITIAL.
OUT_REC-LABOUR_HOURS_ACT = OUT_REC-LABOUR_HOURS_ACT / AFPO-PSMNG.
OUT_REC-ADDNL_LABOUR_HOURS_ACT =
OUT_REC-ADDNL_LABOUR_HOURS_ACT / AFPO-PSMNG.
OUT_REC-LABOUR_HOURS_PLN = OUT_REC-LABOUR_HOURS_PLN / AFPO-PSMNG.
OUT_REC-ADDNL_LABOUR_HOURS_PLN =
OUT_REC-ADDNL_LABOUR_HOURS_PLN / AFPO-PSMNG.
OUT_REC-LABOUR_COST_ACT = OUT_REC-LABOUR_COST_ACT / AFPO-PSMNG.
OUT_REC-ADDNL_LABOUR_COST_ACT =
OUT_REC-ADDNL_LABOUR_COST_ACT / AFPO-PSMNG.
OUT_REC-LABOUR_COST_PLN = OUT_REC-LABOUR_COST_PLN / AFPO-PSMNG.
OUT_REC-ADDNL_LABOUR_COST_PLN =
OUT_REC-ADDNL_LABOUR_COST_PLN / AFPO-PSMNG.
OUT_REC-MATERIAL_COST_ACT = OUT_REC-MATERIAL_COST_ACT / AFPO-PSMNG.
OUT_REC-ADDNL_MATERIAL_COST_ACT =
OUT_REC-ADDNL_MATERIAL_COST_ACT / AFPO-PSMNG.
OUT_REC-MATERIAL_COST_PLN = OUT_REC-MATERIAL_COST_PLN / AFPO-PSMNG.
OUT_REC-ADDNL_MATERIAL_COST_PLN =
OUT_REC-ADDNL_MATERIAL_COST_PLN / AFPO-PSMNG.
ENDIF.
Multiply the calculated Unit Production costs with the GL quantity to
get the actual production cost of the quantity delivered.
Calculation for Labour Hours
OUT_REC-LABOUR_HOURS_ACT = OUT_REC-LABOUR_HOURS_ACT *
OUT_REC-QUANTITY.
OUT_REC-ADDNL_LABOUR_HOURS_ACT = OUT_REC-ADDNL_LABOUR_HOURS_ACT *
OUT_REC-QUANTITY.
OUT_REC-LABOUR_HOURS_PLN = OUT_REC-LABOUR_HOURS_PLN *
OUT_REC-QUANTITY.
OUT_REC-ADDNL_LABOUR_HOURS_PLN = OUT_REC-ADDNL_LABOUR_HOURS_PLN *
OUT_REC-QUANTITY.
Calculation for Material Cost
OUT_REC-MATERIAL_COST_ACT = OUT_REC-MATERIAL_COST_ACT *
OUT_REC-QUANTITY.
OUT_REC-ADDNL_MATERIAL_COST_ACT =
OUT_REC-ADDNL_MATERIAL_COST_ACT * OUT_REC-QUANTITY.
OUT_REC-MATERIAL_COST_PLN = OUT_REC-MATERIAL_COST_PLN *
OUT_REC-QUANTITY.
OUT_REC-ADDNL_MATERIAL_COST_PLN =
OUT_REC-ADDNL_MATERIAL_COST_PLN * OUT_REC-QUANTITY.
Calculation for Labour cost
OUT_REC-LABOUR_COST_ACT = OUT_REC-LABOUR_COST_ACT *
OUT_REC-QUANTITY.
OUT_REC-ADDNL_LABOUR_COST_ACT = OUT_REC-ADDNL_LABOUR_COST_ACT *
OUT_REC-QUANTITY.
OUT_REC-LABOUR_COST_PLN = OUT_REC-LABOUR_COST_PLN *
OUT_REC-QUANTITY.
OUT_REC-ADDNL_LABOUR_COST_PLN = OUT_REC-ADDNL_LABOUR_COST_PLN *
OUT_REC-QUANTITY.
Get the planned material cost from the total of the planned cost of
the component materials in the production order confirmations.
SELECT BWART MENGE MATNR SHKZG FROM AUFM
INTO (AUFM-BWART, AUFM-MENGE, AUFM-MATNR, AUFM-SHKZG)
WHERE AUFNR EQ AFPO-AUFNR.
CHECK AUFM-BWART NE '101'.
READ TABLE I_MBEW WITH KEY MATNR = AUFM-MATNR
BWKEY = AFPO-DWERK.
IF SY-SUBRC NE 0.
SELECT MATNR BWKEY ZPLPR LPLPR PEINH
FROM MBEW
INTO I_MBEW
WHERE MATNR EQ AUFM-MATNR
AND BWKEY EQ AFPO-DWERK.
APPEND I_MBEW.
ENDSELECT.
ENDIF.
IF SY-SUBRC EQ 0.
IF I_MBEW-ZPLPR NE 0.
IF AUFM-SHKZG EQ 'H'.
OUT_REC-PLANNED_MATERIAL_COST =
OUT_REC-PLANNED_MATERIAL_COST +
( I_MBEW-ZPLPR * AUFM-MENGE / I_MBEW-PEINH ).
ELSE.
OUT_REC-PLANNED_MATERIAL_COST =
OUT_REC-PLANNED_MATERIAL_COST -
( I_MBEW-ZPLPR * AUFM-MENGE / I_MBEW-PEINH ).
ENDIF.
ELSEIF I_MBEW-LPLPR NE 0.
IF AUFM-SHKZG EQ 'H'.
OUT_REC-CURRENT_MATERIAL_COST =
OUT_REC-CURRENT_MATERIAL_COST +
( I_MBEW-LPLPR * AUFM-MENGE / I_MBEW-PEINH ).
ELSE.
OUT_REC-CURRENT_MATERIAL_COST =
OUT_REC-CURRENT_MATERIAL_COST -
( I_MBEW-LPLPR * AUFM-MENGE / I_MBEW-PEINH ).
ENDIF.
ENDIF.
ENDIF.
ENDSELECT.
Get the Future material cost per Unit by deviding the calculated
Future material cost above with the goods reciept quantity to, then
multiply the unit cost with the GL quantity to get the Future material
Cost for the Quantity delivered. (Quantity in the entery from GLPCA
Table).
IF NOT AFPO-WEMNG IS INITIAL.
OUT_REC-PLANNED_MATERIAL_COST =
OUT_REC-PLANNED_MATERIAL_COST / AFPO-WEMNG * OUT_REC-QUANTITY.
OUT_REC-CURRENT_MATERIAL_COST =
OUT_REC-CURRENT_MATERIAL_COST / AFPO-WEMNG * OUT_REC-QUANTITY.
ENDIF.
ENDFORM. " GET_COSTS
Form GET_VALUE_FROM_COSP *
Get the Material cost from COSP table. *
There are no interface parameters to be passed to this subroutine. *
FORM GET_VALUE_FROM_COSP.
FIELD-SYMBOLS: <FS> TYPE ANY.
DATA: V_COMPONENT TYPE I.
Cummulate the posting values of all the 16 period buckets as to get
total production order cost. This is to handle the aprtial posting of
prodction order values in diffrent periods.
V_COMPONENT = 15.
DO 16 TIMES.
ADD 1 TO V_COMPONENT.
ASSIGN COMPONENT V_COMPONENT OF STRUCTURE COSP TO <FS>.
IF COSP-WRTTP EQ '04' AND COSP-KSTAR EQ P_KSTAR2.
ADD <FS> TO OUT_REC-MATERIAL_COST_ACT.
ELSEIF COSP-WRTTP EQ '04'.
ADD <FS> TO OUT_REC-ADDNL_MATERIAL_COST_ACT.
ELSEIF COSP-WRTTP EQ '01' AND COSP-KSTAR EQ P_KSTAR2.
ADD <FS> TO OUT_REC-MATERIAL_COST_PLN.
ELSEIF COSP-WRTTP EQ '01'.
ADD <FS> TO OUT_REC-ADDNL_MATERIAL_COST_PLN.
ENDIF.
ENDDO.
ENDFORM. " GET_VALUE_FROM_COSP
Form GET_VALUES_FROM_COSS *
Get the Labour cost and Labour hours from the COSS table. *
There are no interface parameters to be passed to this subroutine. *
FORM GET_VALUES_FROM_COSS.
FIELD-SYMBOLS: <FS1> TYPE ANY,
<FS2> TYPE ANY.
DATA: V_COMPONENT1 TYPE I,
V_COMPONENT2 TYPE I.
Cummulate the posting values of all the 16 period buckets as to get
total production order cost. This is to handle the aprtial posting of
prodction order values in diffrent periods.
V_COMPONENT1 = 15.
V_COMPONENT2 = 111.
DO 16 TIMES.
ADD 1 TO: V_COMPONENT1, V_COMPONENT2.
ASSIGN COMPONENT V_COMPONENT1 OF STRUCTURE COSS TO <FS1>.
ASSIGN COMPONENT V_COMPONENT2 OF STRUCTURE COSS TO <FS2>.
IF COSS-WRTTP EQ '04' AND COSS-KSTAR EQ P_KSTAR1.
ADD <FS1> TO OUT_REC-LABOUR_COST_ACT.
ADD <FS2> TO OUT_REC-LABOUR_HOURS_ACT.
ELSEIF COSS-WRTTP EQ '04'.
ADD <FS1> TO OUT_REC-ADDNL_LABOUR_COST_ACT.
ADD <FS2> TO OUT_REC-ADDNL_LABOUR_HOURS_ACT.
ELSEIF COSS-WRTTP EQ '01' AND COSS-KSTAR EQ P_KSTAR1.
ADD <FS1> TO OUT_REC-LABOUR_COST_PLN.
ADD <FS2> TO OUT_REC-LABOUR_HOURS_PLN.
ELSEIF COSS-WRTTP EQ '01'.
ADD <FS1> TO OUT_REC-ADDNL_LABOUR_COST_PLN.
ADD <FS2> TO OUT_REC-ADDNL_LABOUR_HOURS_PLN.
ENDIF.
ENDDO.
ENDFORM. " GET_VALUES_FROM_COSS -
SBO_SP_TransactionNotification, check status of open items with other sales
Good morning,
need help with a SQL to SBO_Transaction.
I need to check the database (Table ORDR and RDR1) if there are items on other sales documents with the open status and must be for the same business partner of the document being entered.
The scenario is, if a seller trying to include a sales document for a business partner of the same item that is already in another document of sale and that has not been met, the SAP can not allow.
Includes the following SQL procedure SBO_TransactionNotification, but could not run at all.
Does anyone know how to help me with this SQL?
IF @object_type = '17' AND @transaction_type in ('A', 'U')
BEGIN
IF (SELECT COUNT (T0.DocEntry)
FROM [dbo].[ORDR] T0 INNER JOIN [dbo].[RDR1] T1 On T0.DocEntry = T1.DocEntry
where (T0.CardCode = @list_of_cols_val_tab_del AND
T1.ItemCode = @list_of_cols_val_tab_del AND
T1.LineStatus <> 'C') AND T0.DocEntry = @list_of_cols_val_tab_del) > 0
BEGIN
SET @error = 1
SET @error_message = 'There items with open status in other documents of sale! Check!'
END
END
When I change the values with the code "@list_of_cols_val_tab_del" by inserting the values of CardCode and ItemCode, can cause the SQL Server returns the correct value it should return in SBO_Transaction, the counter works, if there are open items for the same business partner , returns the counter value greater than zero of should give the message stopping the process, but within the SBO_Transaction SQL does not work.
Thanks everyone!Hi,
You may try:
IF @object_type = '17' AND @transaction_type in ('A', 'U')
BEGIN
IF EXISTS (SELECT T0.DocEntry
FROM dbo.ORDR T0 INNER JOIN dbo.RDR1 T1 On T0.DocEntry = T1.DocEntry
where (T0.DocEntry = @list_of_cols_val_tab_del AND
T1.ItemCode IN (SELECT T2.ItemCode FROM RDR1 T2 INNER JOIN ORDR T3 ON T3.DocEntry = T2.DocEntry
WHERE T3.CardCode=T0.CardCode AND
T2.LineStatus = 'O' AND T0.DocEntry != @list_of_cols_val_tab_del))
BEGIN
SET @error = 17
SET @error_message = 'There items with open status in other sale order! Check!'
END
END
Thanks,
Gordon -
Route schedule not updated in some line item of a sales order
Hi Gurus,
All order are processed through the EDI interface automatically. Order
XXXXXXXXX for USA customer 40000XXXX is maintained in route reschedule
setup T-code VL52 on specific departure day thursday.
above are line item of same sales order, with same shipping point and route .
Why only some salesorder lines missing the route schedule ??
Please Help
Regards
AbhilashWhen you post a query here, you need to have patience until some members go through your post. Please dont expect somebody should respond to you immediately as everybody has their own priorities.
Coming to your query, it could be due to many reasons as per the following note:-
Note 1750978 - Route Schedule does not populate on sales order
Go through the Resolutions given in the above note and check with your system
G. Lakshmipathi -
How I can know which row is parent item code or child item in matrix?
Hi,
In marketing document, when insert a item into contents page, if it is a BOM then all child item will be inserted into matrix automatically. My question is when i view the rows in matrix how i can know which row is normal master item and which row is a child item row? From the UI, i can only see the child item code looks readonly but how i can know it in my add-on code? I tried to get the edittext box object from item No. cell, but i can't find any difference.
Thanks!
LanSorry, i found an issue when i try to retrieve the BOM Type column value. I am in adding mode, when i insert a BOM with components, the bom type will appears as "Component of a Sales BOM". But in the event, when I try to get the value from this cell (it is combobox), it gives another value which is not same with the one it appears in the matrix. Is anyone know how to solve my problem?
Thanks!
Lan -
Tax Code Determination - default tax code for sales
Under the tax code determination window i have set the default tax code for sales as VAT@4% and I have save it. but when I open the sales quotation , order or any other sales document the tax code is not appeared. what could be the reason?
thanks
SV ReddyIs ur "Determination Type" is 'Material Type'?
FYI from Help file,
When you enter item information in the marketing documents, system will check the item master data. If the item classification for the tax is:
Material Item
The tax code determination for material will start.
Service Item
The tax code determination for service will start.
When you enter service information in the marketing documents, the tax code determination for service documents will start
Regards,
Dhana -
Function module of querying item category in sales order generating
Hi everyone,
would you please help to tell me which function module can fetch the item category in sales order generation?
any help will be appreciate.
Thanks.
EricHi Eric,
When we create a sales order with VA01 and enter in a material the system gets the item category from the following function module:
Main Program SAPFV45P
Source code of FV45PF0V_VBAP-PSTYV_PRUEFEN
CALL FUNCTION 'RV_VBAP_PSTYV_DETERMINE'
EXPORTING
T184_AUART = TVAK-AUART
T184_MTPOS = MAAPV-MTPOS
T184_UEPST = HVBAP-PSTYV
T184_VWPOS = T184_VWPOS
VBAP_PSTYV_I = VBAP-PSTYV
IMPORTING
VBAP_PSTYV = VBAP-PSTYV.
VBAP-PSTYV will contain your item category.
I hope this helps.
Best regards,
Ian Kehoe -
Different departure country per item in a sales order
Hi all,
I have a tricky issue.
We need to set a different departure country on each item of a sales order.
Departure country is one of the key elements used by SAP to find the right tax condition record. Usually you have either to type a country in header tab (in field "tax departure country") or specify a plant set in the departure country at item level.
We use non-stocked materials to represent "services": they are in a plant, but we can't build a plant for each country involved.
The solution we are considering : using a user-exit to specifiy the departure country (stemming for example from the country of the shipping partner) on each item of the order (not forgetting the customer tax classification). We can thus have several departure country on a single order.
What do you think (better ideas ?) ? Which user-exit would be best ? We are thinking of subroutine USEREXIT_PRICING_PREPARE_TKOMK, but we are not sure this is the best.
Any solution or alternative to all this is welcome.
Thanks a lot in advance !
Nicolas JOSEPH-CHARLES
On behalf of Jean-Charles CHAGUEGo ahead and do it in there.
I added the codes in there too. -
Changing Tax Code in Sales Order
Hi All,
I've a requirement to change the tax code of MWST CT from normal value XX to a new tax code in sales order for few excpetion cases.
For normal cases the tax code will always be XX for MWST CT in the sales order. However for very specific business need the tax code for the existing sales order needs to be changed to a new value. The need for changing the tax code always arise after creating the sales order.
Kindly suggest the possible ways to meet this requirement.
Regards,
AshishChanging the tax code in the sales order is not std sp procedure and I don;t think sp allow tampering with it either.
The taxes are based on the combination for customer and material and I suggest that you maintain all tax codes at the material and customer level for all combinations possible and each customer is alloted one unique one.
What are the possible reason why tax changes. It can only be the delivery address is changed. If the material iself changes then you may have to modify the sales order itself but if there is a change in the ship to party then....
Now if the shipto party changes then you can always redetermine taxes in billing where the actual taxes will be redetermined based on the new conditions.
If you see the tax line item in the sales order you will see that it is greyed out.
You can change the excise duty but not taxes.
This is the default where the condition type is prohibited from changing manually. But if you change the setting to Free or manual then you can change the value of tax bu the tax code will be as determined by the combination of material and shipto.
regds
Jude
Edited by: jude xavier on Sep 7, 2008 8:23 PM
Edited by: jude xavier on Sep 7, 2008 8:24 PM -
Problem in uploading multiple line items while Creating sales order by BAPI
Hi experts , Im able to create sales order with one item while using this program, but the problem is when iam having multiple items or multiple sales order , iam not able to createthe line items , though its creating sales order header , Iam copy pasting my code , please add the additional code to my code to take more than 1 line items ,This is urgent requirement . Points will be rewarded for answers , Thanks in advance
*& Report Z_SO_CREATE_BAPI
REPORT Z_SO_CREATE_BAPI.
DATA: i_header TYPE bapisdhd1 occurs 0 with header line.
DATA: i_details TYPE bapisditm OCCURS 0 WITH HEADER LINE.
DATA: i_partner TYPE bapiparnr OCCURS 0 WITH HEADER LINE.
DATA: i_return1 TYPE bapiret2 OCCURS 0 WITH HEADER LINE.
DATA: i_return2 TYPE bapiret2.
data : ORDER_HEADER_IN like BAPISDHD1.
data : ORDER_ITEMS_IN like BAPISDITM occurs 0 with HEADER LINE .
data : ORDER_ITEMS_INX Like BAPISDITMX occurs 0 with HEADER LINE .
data : RETURN like BAPIRET2 occurs 0 with header line.
data : ORDER_PARTNERS like BAPIPARNR occurs 0 with
header line.
DATA : ORDER_KEYS LIKE BAPISDKEY OCCURS 0 WITH HEADER
LiNE.
data : ORDER_SCHEDULES_IN like BAPISCHDL occurs 0 with
header line.
data : ORDER_SCHEDULES_INX like BAPISCHDLX occurs 0 with
header line.
data : BEGIN OF TAB OCCURS 0,
SRNO(4),
DOC_TYPE like ORDER_HEADER_IN-dOC_TYPE,
SALES_ORG LIKE ORDER_HEADER_IN-SALES_ORG,
DISTR_CHAN LIKE ORDER_HEADER_IN-DISTR_CHAN,
DIVISION like ORDER_HEADER_IN-DIVISION,
REQ_DATE_H(10),
PURCH_DATE(10),
PMNTTRMS LIKE ORDER_HEADER_IN-PMNTTRMS,
PURCH_NO_C LIKE ORDER_HEADER_IN-PURCH_NO_C,
ITM_NUMBER like BAPISDITM-ITM_NUMBER,
MATERIAL LIKE ORDER_ITEMS_IN-MATERIAL ,
PLANT LIKE ORDER_ITEMS_IN-PLANT,
TARGET_QTY LIKE ORDER_ITEMS_IN-TARGET_QTY,
ITM_NUMBERX like ORDER_ITEMS_INX-ITM_NUMBER ,
MATERIALX LIKE ORDER_ITEMS_INX-MATERIAL ,
CUST_MAT22 LIKE ORDER_ITEMS_IN-CUST_MAT22,
PLANTX LIKE ORDER_ITEMS_INX-PLANT,
TARGET_QTYX LIKE ORDER_ITEMS_INX-TARGET_QTY,
ITM_NUMBER LIKE ORDER_ITEMS_IN-ITM_NUMBER,
MATERIAL LIKE ORDER_ITEMS_IN-MATERIAL ,
PARTN_ROLE LIKE ORDER_PARTNERS-PARTN_ROLE,
PARTN_NUMB LIKE ORDER_PARTNERS-PARTN_NUMB,
END OF TAB.
DATA: v_vbeln TYPE bapivbeln-vbeln.
selection-screen begin of block b1 with frame.
skip 3.
parameter:p_infile like rlgrap-filename obligatory.
skip 3.
selection-screen end of block b1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_infile.
PERFORM value_help.
start-of-selection.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
filename = p_infile
FILETYPE = 'DAT'
HAS_FIELD_SEPARATOR = 'X'
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
VIRUS_SCAN_PROFILE =
NO_AUTH_CHECK = ' '
IMPORTING
FILELENGTH =
HEADER =
tables
data_tab = tab.
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
**Validation for the Create SO screen
*AT SELECTION-SCREEN ON BLOCK na_create.
Loop at Tab.
i_header-doc_type = TAB-DOC_TYPE .
i_header-sales_org = TAB-SALES_ORG.
i_header-distr_chan = TAB-DISTR_CHAN .
i_header-division = TAB-DIVISION .
append i_header.
*endloop.
i_partner-partn_role = TAB-PARTN_ROLE .
i_partner-partn_numb = TAB-PARTN_NUMB.
APPEND i_partner.
i_details-material = TAB-MATERIAL .
APPEND i_details.
endloop.
*Bapi for Creating SO
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
SALESDOCUMENTIN = v_vbeln
order_header_in = i_header
ORDER_HEADER_INX =
SENDER =
BINARY_RELATIONSHIPTYPE =
INT_NUMBER_ASSIGNMENT =
BEHAVE_WHEN_ERROR =
LOGIC_SWITCH =
TESTRUN =
CONVERT = ' '
IMPORTING
SALESDOCUMENT = v_vbeln
tables
RETURN = i_return1
ORDER_ITEMS_IN = i_details
ORDER_ITEMS_INX = ORDER_ITEMS_INX
order_partners = i_partner .
ORDER_SCHEDULES_IN =
ORDER_SCHEDULES_INX =
ORDER_CONDITIONS_IN =
ORDER_CONDITIONS_INX =
ORDER_CFGS_REF =
ORDER_CFGS_INST =
ORDER_CFGS_PART_OF =
ORDER_CFGS_VALUE =
ORDER_CFGS_BLOB =
ORDER_CFGS_VK =
ORDER_CFGS_REFINST =
ORDER_CCARD =
ORDER_TEXT =
ORDER_KEYS =
EXTENSIONIN =
PARTNERADDRESSES =
IF NOT v_vbeln IS INITIAL.
*Bapi Commit Work
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT =
IMPORTING
return = i_return2
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
IMPORTING
RETURN =
ENDIF.
LOOP AT i_return1 . "INTO wa_return1.
WRITE:/ i_return1-message.
ENDLOOP.
FORM value_help .
CALL FUNCTION 'DSVAS_DOC_WS_FILENAME_GET_50'
EXPORTING
DEF_FILENAME = ' '
DEF_PATH = ' '
MASK = ',.,..'
MODE = 'O'
TITLE = ' '
IMPORTING
FILENAME = p_infile
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
endform.
txt file data
order type salesorg distch divison materialno parter role
TA PB01 01 00 000000000000000852 WE
Partner no
8101000000Hi Neerja,
you can reffer this sample code. It may not be complet soluation for your poblem,
but you will get some idea.
*& Report ZBAPI_SALESORDER_CREATE
*& Author : Karthik
REPORT ZBAPI_SALESORDER_CREATE.
data : ORDER_HEADER_IN like BAPISDHD1.
data : ORDER_ITEMS_IN like BAPISDITM occurs 0 with
header line.
data : RETURN like BAPIRET2 occurs 0 with header line.
data : ORDER_PARTNERS like BAPIPARNR occurs 0 with
header line.
DATA : ORDER_KEYS LIKE BAPISDKEY OCCURS 0 WITH HEADER
LINE.
data : ORDER_SCHEDULES_IN like BAPISCHDL occurs 0 with
header line.
data : BEGIN OF TAB OCCURS 0,
SRNO(4),
DOC_TYPE like ORDER_HEADER_IN-dOC_TYPE,
SALES_ORG LIKE ORDER_HEADER_IN-SALES_ORG,
DISTR_CHAN LIKE ORDER_HEADER_IN-DISTR_CHAN,
DIVISION like ORDER_HEADER_IN-DIVISION,
REQ_DATE_H(10),
PURCH_DATE(10),
PMNTTRMS LIKE ORDER_HEADER_IN-PMNTTRMS,
PURCH_NO_C LIKE ORDER_HEADER_IN-PURCH_NO_C,
ITM_NUMBER like BAPISDITM-ITM_NUMBER,
CUST_MAT22 LIKE ORDER_ITEMS_IN-CUST_MAT22,
PLANT LIKE ORDER_ITEMS_IN-PLANT,
TARGET_QTY LIKE ORDER_ITEMS_IN-TARGET_QTY,
PARTN_ROLE LIKE ORDER_PARTNERS-PARTN_ROLE,
PARTN_NUMB LIKE ORDER_PARTNERS-PARTN_NUMB,
END OF TAB.
data: itab1 like alsmex_tabline occurs 0 with header
line.
DATA: gd_currentrow type i.
data : PURCHASEORDER like ekko-ebeln.
Data: tot_rec type i, "Total Records
gd_update type i, "Main Table Increement Counter
gd_lines type i, "Success Table increement Counter
w_textout like t100-text. "VARIABLE TO GET ERRORLOG
data : begin of it_success occurs 0,
SALESDOCUMENT LIKE BAPIVBELN-VBELN, "PROJECT
end of it_success.
data : begin of it_error occurs 0,
srno(4),
err_msg(73) TYPE c, "TO RETREIVE ERROR MESSAGES
end of it_error.
data : srno(4).
DATA : SALESDOCUMENT LIKE BAPIVBELN-VBELN.
selection-screen begin of block b1 with frame.
skip 3.
parameter:p_infile like rlgrap-filename obligatory.
skip 3.
selection-screen end of block b1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_infile.
PERFORM value_help.
start-of-selection.
call function 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_infile
i_begin_col = '1'
i_begin_row = '2' "Do not require
headings
i_end_col = '22'
i_end_row = '10000'
TABLES
intern = itab1
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
others = 3.
if sy-subrc <> 0.
message e010(zz) with text-001. "Problem uploading
Excel Spreadsheet
endif.
*perform open_group.
sort itab1 by row col.
Get first row retrieved
read table itab1 index 1.
Set first row retrieved to current row
gd_currentrow = itab1-row.
loop at itab1.
Reset values for next row
if itab1-row ne gd_currentrow.
append tab .
clear tab.
gd_currentrow = itab1-row.
endif.
SHIFT ITAB1-VALUE LEFT DELETING LEADING SPACE.
case itab1-col.
when '0001'.
TAB-SRNO = itab1-value.
when '0002'.
TAB-DOC_TYPE = itab1-value.
when '0003'.
TAB-SALES_ORG = itab1-value.
when '0004'.
TAB-DISTR_CHAN = itab1-value.
when '0005'.
TAB-DIVISION = itab1-value.
when '0006'.
TAB-REQ_DATE_H = itab1-value.
when '0006'.
TAB-PURCH_DATE = itab1-value.
when '0007'.
TAB-PMNTTRMS = itab1-value.
when '0008'.
TAB-PURCH_NO_C = itab1-value.
when '0009'.
TAB-ITM_NUMBER = itab1-value.
when '0010'.
TAB-CUST_MAT22 = itab1-value.
when '0011'.
TAB-PLANT = itab1-value.
when '0012'.
TAB-TARGET_QTY = itab1-value.
when '0013'.
TAB-PARTN_ROLE = itab1-value.
when '0014'.
TAB-PARTN_NUMB = itab1-value.
endcase.
endloop.
append tab.
clear tab.
sort tab by SRNO.
LOOP AT TAB.
concatenate tab-REQ_DATE_H+4(4)
tab-REQ_DATE_H2(2) tab-REQ_DATE_H0(2) into
tab-REQ_DATE_H.
concatenate tab-PURCH_DATE+4(4)
tab-PURCH_DATE2(2) tab-PURCH_DATE0(2) into
tab-PURCH_DATE.
SRNO = TAB-SRNO.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = tab-PARTN_NUMB
IMPORTING
OUTPUT = tab-PARTN_NUMB.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = tab-CUST_MAT22
IMPORTING
OUTPUT = tab-CUST_MAT22.
IF TAB-SRNO = SRNO.
ORDER_HEADER_IN-DOC_TYPE = TAB-DOC_TYPE.
ORDER_HEADER_IN-SALES_ORG = TAB-SALES_ORG.
ORDER_HEADER_IN-DISTR_CHAN = TAB-DISTR_CHAN.
ORDER_HEADER_IN-REQ_DATE_H = TAB-REQ_DATE_H.
ORDER_HEADER_IN-PURCH_DATE = TAB-PURCH_DATE.
ORDER_HEADER_IN-PMNTTRMS = TAB-PMNTTRMS.
ORDER_HEADER_IN-PURCH_NO_C = TAB-PURCH_NO_C.
ORDER_HEADER_IN-DIVISION = tab-DIVISION.
ORDER_ITEMS_IN-ITM_NUMBER = tab-ITM_NUMBER.
ORDER_ITEMS_IN-material = TAB-CUST_MAT22.
ORDER_ITEMS_IN-PLANT = TAB-PLANT.
APPEND ORDER_ITEMS_IN.
ORDER_PARTNERS-PARTN_ROLE = TAB-PARTN_ROLE.
ORDER_PARTNERS-PARTN_NUMB = TAB-PARTN_NUMB.
APPEND ORDER_PARTNERS.
ORDER_SCHEDULES_IN-ITM_NUMBER = tab-ITM_NUMBER.
ORDER_SCHEDULES_IN-REQ_QTY = tab-TARGET_QTY.
append ORDER_SCHEDULES_IN.
ENDIF.
AT END OF SRNO.
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
SALESDOCUMENTIN =
ORDER_HEADER_IN = ORDER_HEADER_IN
ORDER_HEADER_INX =
SENDER =
BINARY_RELATIONSHIPTYPE =
INT_NUMBER_ASSIGNMENT =
BEHAVE_WHEN_ERROR =
LOGIC_SWITCH =
TESTRUN =
CONVERT = ' '
IMPORTING
SALESDOCUMENT = SALESDOCUMENT
TABLES
RETURN = RETURN
ORDER_ITEMS_IN = ORDER_ITEMS_IN
ORDER_ITEMS_INX =
ORDER_PARTNERS = ORDER_PARTNERS
ORDER_SCHEDULES_IN = ORDER_SCHEDULES_IN
ORDER_SCHEDULES_INX =
ORDER_CONDITIONS_IN =
ORDER_CONDITIONS_INX =
ORDER_CFGS_REF =
ORDER_CFGS_INST =
ORDER_CFGS_PART_OF =
ORDER_CFGS_VALUE =
ORDER_CFGS_BLOB =
ORDER_CFGS_VK =
ORDER_CFGS_REFINST =
ORDER_CCARD =
ORDER_TEXT =
ORDER_KEYS = ORDER_KEYS
EXTENSIONIN =
PARTNERADDRESSES =
IF SALESDOCUMENT <> SPACE.
commit work.
ADD 1 TO gd_update.
it_success-SALESDOCUMENT = SALESDOCUMENT.
append it_success.
CLEAR :SALESDOCUMENT,ORDER_HEADER_IN.
REFRESH : RETURN,ORDER_ITEMS_IN,ORDER_PARTNERS.
ELSE.
loop at return.
it_error-SRNO = tab-SRNO.
it_error-err_msg = return-MESSAGE .
Append it_error.
ENDLOOP.
CLEAR :SALESDOCUMENT,ORDER_HEADER_IN.
REFRESH : RETURN,ORDER_ITEMS_IN,ORDER_PARTNERS.
ENDIF.
endat.
endloop.
DESCRIBE TABLE it_success LINES gd_lines.
IF gd_lines GT 0.
Display result report column headings
PERFORM display_column_headings.
Display result report
PERFORM DISPLAY_SUCESS.
ENDIF.
IF SUCESS FAILS Display Error Report
DESCRIBE TABLE it_error LINES gd_lines.
IF gd_lines GT 0.
PERFORM errorheadings.
PERFORM errorreport.
ENDIF.
*& Form display_column_headings
text
FORM display_column_headings.
WRITE:2 ' Success Report '(014) COLOR COL_POSITIVE.
SKIP.
WRITE:2 'The following records inserted
successfully:'(013).
WRITE:/ sy-uline(15).
FORMAT COLOR COL_HEADING.
WRITE:/ sy-vline,
(10) 'Sales order'(004), sy-vline.
WRITE:/ sy-uline(15).
ENDFORM. "display_column_headings
*Subroutine to display SUCESS REPORT
FORM DISPLAY_SUCESS.
FORMAT COLOR COL_NORMAL.
LOOP AT it_success.
WRITE:/ sy-vline,
(10) it_success-SALESDOCUMENT, sy-vline.
CLEAR it_success.
ENDLOOP.
WRITE:/ sy-uline(15).
REFRESH: it_success.
FORMAT COLOR COL_BACKGROUND.
ENDFORM. "
DISPLAY_REPORT
*& Form errorreport
text
FORM errorreport.
LOOP AT it_error.
WRITE:/ sy-vline,
(10) it_error-SRNO, sy-vline,
(40) it_error-err_msg, sy-vline.
ENDLOOP.
WRITE:/ sy-uline(104).
REFRESH: it_error.
endform. "errorreport
*& Form ERRORHEADINGS
text
FORM ERRORHEADINGS.
SKIP.
WRITE:2 ' Error Report '(007) COLOR COL_NEGATIVE.
SKIP.
WRITE:2 'The following records failed during
update:'(008).
WRITE:/ sy-uline(104).
FORMAT COLOR COL_HEADING.
WRITE:/ sy-vline,
(10) 'ERROR.'(009), sy-vline.
WRITE:/ sy-uline(104).
FORMAT COLOR COL_NORMAL.
ENDFORM. "ERRORHEADINGS
**& Form value_help
text
--> p1 text
<-- p2 text
FORM value_help .
CALL FUNCTION 'DSVAS_DOC_WS_FILENAME_GET_50'
EXPORTING
DEF_FILENAME = ' '
DEF_PATH = ' '
MASK = ',.,..'
MODE = 'O'
TITLE = ' '
IMPORTING
FILENAME = p_infile
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
endform. "value_help
Regards,
Amit. -
How to combine the line items of 2 Sales orders into 1 delivry
how to combine the line items of 2 Sales orders into 1 delivry
and their process, pre-requisites and tcodeThe prerequisites are:
1) In the customer master sales area data, shipping tab, there is a field called Order combination. u must tick that.
2) for the two orders, the sold to party & ship to party must be same
3) both orders must have created from same plant & shipping points
4) the line items must have same loading grp.
5) the both orders sheduline line date must be same.
transaction code for the same is VL04.
enter the required data and select the order nos to be processed.
Do reward points if it is useful -
Displaying certain Line Items on a Sales Order
I have sales order with both line items that are populated because we have BOM Items that are marked as u201CSales Relevantu201D items from a production BOM and I also have some items that are line items generated from a true Sales BOM. The user wants to see the sub items from the Sales BOM on the Sales Order but doesnu2019t want to see the sub items from the u201CSales Relevantu201D Production BOM. If I select u201Cdisplay range -> main itemsu201D it will hide all the sub items but I really want those sub items with the sales BOM to be displayed. So I want to be able to display those sub-items that are Sales BOM relevant but not those that are flagged as Sales Relevant on the Production BOM.
The key element tied to the sales order line item is Item Category do you know if there is a way to automatically display/hide sales order line items based on the Item Category field?
DavidKimberly
If it is standard program and config is done, it should work by itself. I am wondering why not. Fine, if it not working, why don't you put a requirement in the output Determination Procedure against the relevant output. You need to copy standard requirement 2 ( Program LV61B002) and insert logic to not print if ABGRU or DRAGR is populated? This will be a 2 minute code to write.
SPRO/IMG/Sales and Distribution/Basic Functions/Output Control/Output Determination/Output Determination Using the Condition Technique/Maintain Output Determination for Sales Documents/Maintain Output Determination Procedure
But why don't you leave struggling with reasons for rejection and work with Delivery blocks instead. I suggested this before to somebody else in the forum. I think Delivery blocks (DB) work equally well without the bad effect of reasons for rejection (RRJ). Its like this: In stead of deleting an item, use RRJ, In stead of RRJ, use DB. Having said that, I am skeptical that it may also (not) work similar to RRJ. Try it after the Requirement (above) option.
If you want to go that 'route' (Pun intended):
SPRO/Logistics Execution/Shipping/Deliveries/Define Reasons for Blocking in Shipping
Let me know how it goes. -
I want a push button for line items in my sales order entry screen.
Hi,
I want a push button for line items in my sales order entry screen.
How can I do so?
Thanks.Hi Kumar ,
To have a push buttons you need to first assign a pf-status .
here a sample code for a push button and its handling :
set pf-status 'SELECT' .
at user-command .
describe table t_lpr lines w_lines .
case sy-ucomm .
when 'SELECTALL' .
set pf-status 'SELECT' excluding 'SELECTALL' immediately.
do w_lines times .
read line w_line field value w_check . " INTO W_CHECK .
if w_check = space .
w_check = 'X' .
modify line w_line field value w_check. "INTO W_CHECK .
add 1 to w_line .
endif . " IF W_CHECK = ' '
enddo .
Thus when you say pf-status say 'select' , Double click on that and you find a screen eher you can select icons and assign a function code to it!
Hope it helps!
Much Regards,
Amuktha .
Maybe you are looking for
-
Hello, I am attempting to create a physical standby database, following this guide: http://www.oracle.com/global/uk/education/downloads/uwe_data_guard.pdf as well as the oracle documentation on Data Guard. Using Oracle 11gR2 patched at #7 running on
-
Saving a bookmark not enough storage to process this command
Mozilla Firefox 4.0 Beta 8. Regular bookmark works as before however trying to selecting a folder to safe results in GetLastError Not enough storage space is available to process this command. 9.05 GB is free on drive C
-
I run the latest release of IPhoto 9 (from iLife 2011) on an i5 IMac running the latest update of OS 10.6 Snow Leopard. Suddenly, Slide Show will not run from the IPhoto browser. When I click the slide show start arrow, the screen dips to black for o
-
this issues is really getting to me. its works perfectly fine when am recording on ableton but on logic the input is so low :/
-
there is a procedure p(i in number, o out number) that checks some data and finishes this way if some criteria are met: procedure p(i in number, o out number) is select count(*) into v_counter from ... ; if v_counter > 0 then o := 123; return; en