‎2008 Jun 19 12:48 PM
hai friends..
iam doing creation of sales order using bapi .-structures..
but error in creating doucment ....
can u send me some example .. abt sales order .creation ..
once u check my code ...
DATA: BEGIN OF HEADER OCCURS 0,
VBELN LIKE BAPIVBELN-VBELN,
AUART LIKE VBAK-AUART,
VKORG LIKE VBAK-VKORG,
VTWEG LIKE VBAK-VTWEG ,
SPART LIKE VBAK-SPART,
VKBUR LIKE VBAK-VKBUR,
KUNNR LIKE BAPIPARNR-PARTN_NUMB ,"vbak-kunnr,
END OF HEADER.
DATA: BEGIN OF ITEM OCCURS 0,
VBELN LIKE BAPIVBELN-VBELN,
POSNR LIKE BAPISDITM-ITM_NUMBER ,"vbap-posnr,
MATNR LIKE VBAP-MATNR,
NETWR LIKE VBAP-NETWR,
KWMENGE LIKE VBAP-KWMENG,
WERKS LIKE VBAP-WERKS,
NETPR LIKE VBAP-NETPR,
END OF ITEM.
DATA: ORDER_HEADER_IN LIKE BAPISDHD1,
ORDER_HEADER_INX LIKE BAPISDHD1X.
DATA: ITAB_HEAD likE order_header_in,
ITAB_HEADX likE ORDER_HEADER_INX.
DATA: ITAB_ITEM TYPE STANDARD TABLE OF BAPISDITM WITH HEADER LINE,
ITAB_ITEMX TYPE STANDARD TABLE OF BAPISDITMX WITH HEADER LINE.
DATA: KUST TYPE STANDARD TABLE OF BAPIPARNR WITH HEADER LINE,
RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.
.
DATA: VNO LIKE BAPIVBELN-VBELN,
VCNT LIKE VBAP-POSNR.
LOOP AT HEADER.
VCNT = 10.
CLEAR ITAB_HEAD.
ORDER_HEADER_IN-REFOBJTYPE = 'OR'.
ORDER_HEADER_IN-REFOBJKEY = 'OR'.
ORDER_HEADER_IN-REFDOCTYPE = 'OR'.
ORDER_HEADER_IN-DOC_TYPE = HEADER-AUART.
ITAB_HEAD-DOC_TYPE = HEADER-AUART.
ITAB_HEAD-SALES_ORG = HEADER-VKORG.
ITAB_HEAD-DISTR_CHAN = HEADER-VTWEG.
ITAB_HEAD-DIVISION = HEADER-SPART.
ITAB_HEAD-SALES_OFF = HEADER-VKBUR.
KUST-PARTN_NUMB = HEADER-KUNNR.
ITAB_HEADX-DOC_TYPE = 'X'.
ITAB_HEADX-SALES_ORG = 'X'.
ITAB_HEADX-DISTR_CHAN = 'X'.
ITAB_HEADX-DIVISION = 'X'.
ITAB_HEADX-SALES_OFF = 'X'.
LOOP AT ITEM WHERE VBELN = HEADER-VBELN.
REFRESH RETURN.
ITAB_ITEM-ITM_NUMBER = VCNT.
ITAB_ITEM-MATERIAL = ITEM-MATNR.
ITAB_ITEM-NET_WEIGHT = ITEM-KWMENGE.
APPEND ITAB_ITEM.
ITAB_ITEMX-ITM_NUMBER = VCNT.
ITAB_ITEMX-MATERIAL = 'X'.
ITAB_ITEMX-NET_WEIGHT = 'X'.
APPEND ITAB_ITEMX.
VCNT = VCNT + 10 .
ENDLOOP.
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
SALESDOCUMENTIN = SALESORDER
ORDER_HEADER_IN = ITAB_HEAD
ORDER_HEADER_INX = ITAB_HEADX
SENDER =
BINARY_RELATIONSHIPTYPE =
INT_NUMBER_ASSIGNMENT =
BEHAVE_WHEN_ERROR =
LOGIC_SWITCH =
TESTRUN =
CONVERT = ' '
IMPORTING
SALESDOCUMENT = VNO
TABLES
RETURN = RETURN
ORDER_ITEMS_IN = ITAB_ITEM
ORDER_ITEMS_INX = ITAB_ITEMX
ORDER_PARTNERS = KUST.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
IMPORTING
RETURN = RETURN.
LOOP AT return WHERE type = 'E' OR type = 'A'.
EXIT.
ENDLOOP.
IF sy-subrc = 0.
WRITE: / 'Error in creating document'.
ELSE.
COMMIT WORK AND WAIT.
ENDIF.
WRITE: / ' Sales Order NO IS: ', VNO.
WRITE: / SPACE.
CLEAR VNO.
WRITE SY-ULINE.
ENDLOOP.
my HEader is 123 OR 1000 30 10 SATYA.
ITem 2 IS 123 10 HAI 15
once u check it ......
‎2008 Jun 19 1:13 PM
Hi Satya,
just check this
REPORT Z_STANDARD_SALES_ORDER no standard page heading.
************************************************************************
DATA DECLARATION
************************************************************************
CONSTANTS : C_X VALUE 'X'.
Structures to hold Sales order header data
DATA : HEADER LIKE BAPISDHD1," OCCURS 0 WITH HEADER LINE,
HEADERX LIKE BAPISDHD1X." OCCURS 0 WITH HEADER LINE.
Internal Tables to hold Sales order ITEM DATA
DATA : ITEM LIKE BAPISDITM OCCURS 0 WITH HEADER LINE,
ITEMX LIKE BAPISDITMX OCCURS 0 WITH HEADER LINE.
Internal Tables to hold Partners ITEM DATA
DATA : PART LIKE BAPIPARNR OCCURS 0 WITH HEADER LINE.
Internal Tables to hold Partners SCHEDULE DATA
DATA: SCHEDULE LIKE BAPISCHDL OCCURS 0 WITH HEADER LINE,
SCHEDULEX LIKE BAPISCHDLX OCCURS 0 WITH HEADER LINE.
Internal table to hold messages from BAPI call
DATA: RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.
DATA W_MSG(150).
*DATA: begin of wa_MESSAGE,
message(150),
end of wa_message.
*
*DATA: itab_msg like table of wa_message with header line.
*
Data: Begin of Record occurs 0,
Control type i,
DOC_TYPE like HEADER-DOC_TYPE,
SALES_ORG like HEADER-SALES_ORG,
DISTR_CHAN like HEADER-SALES_ORG,
DIVISION like HEADER-DIVISION,
PURCH_NO_C like HEADER-PURCH_NO_C,
PARTN_NUMB like PART-PARTN_NUMB ,
PARTN_ROLE like PART-PARTN_ROLE ,
ITM_NUMBER like ITEM-ITM_NUMBER,
MATERIAL like ITEM-MATERIAL,
TARGET_QTY like item-TARGET_QTY,
REQ_QTY LIKE BAPISCHDL-REQ_QTY,
TARGET_QU like item-TARGET_QU,
PLANT like ITEM-PLANT,
PMNTTRMS like header-PMNTTRMS,
End of record.
data: itab like ALSMEX_TABLINE occurs 0,
wa like ALSMEX_TABLINE.
data: SO like BAPIVBELN-VBELN.
************************************************************************
Selection Screen
************************************************************************
selection-screen begin of block b1 with frame title text-001.
PARAMETERS: P_FILE LIKE RLGRAP-FILENAME OBLIGATORY.
selection-screen end of block b1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
PERFORM GET_FILE USING P_FILE.
************************************************************************
Start of Selection
************************************************************************
start-of-selection.
DATA: xl type string.
xl = '*.xls'.
IF not P_FILE CP xl.
Message 'Wrong input file format' type 'E'.
ENDIF.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = P_FILE
I_BEGIN_COL = 1
I_BEGIN_ROW = 1
I_END_COL = 13
I_END_ROW = 3000
TABLES
INTERN = itab
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
************************************************************************
DATA POPULATION
************************************************************************
loop at itab into wa.
if wa-col = '0001'.
record-Control = wa-value.
elseif wa-col = '0002'.
record-DOC_TYPE = wa-value.
elseif wa-col = '0003'.
record-SALES_ORG = wa-value.
elseif wa-col = '0004'.
record-DISTR_CHAN = wa-value.
elseif wa-col = '0005'.
record-DIVISION = wa-value.
elseif wa-col = '0006'.
record-PURCH_NO_C = wa-value.
elseif wa-col = '0007'.
record-PARTN_NUMB = wa-value.
elseif wa-col = '0008'.
record-PARTN_ROLE = wa-value.
elseif wa-col = '0009'.
record-PMNTTRMS = wa-value.
elseif wa-col = '0010'.
record-ITM_NUMBER = wa-value.
elseif wa-col = '0011'.
record-MATERIAL = wa-value.
elseif wa-col = '0012'.
record-REQ_QTY = wa-value.
elseif wa-col = '0013'.
record-TARGET_QU = wa-value.
elseif wa-col = '0014'.
record-PLANT = wa-value.
endif.
AT END OF row.
APPEND record.
CLEAR: wa, record.
ENDAT.
endloop.
DATA: tot_lines type i,
tot_po type i,
index type i.
describe table record lines tot_lines.
read table record index tot_lines.
tot_po = record-control.
DO tot_po times.
index = index + 1.
clear: HEADER,HEADERX,ITEM[],ITEMX[],RETURN,RETURN[],SCHEDULE[],SCHEDULEX[], PART[],PART.
refresh: ITEM[],ITEMX[],RETURN[],SCHEDULE[],SCHEDULEX[],PART[] .
************************************************************************
POPULATE HEADER FLAG.
************************************************************************
HEADERX-UPDATEFLAG = c_x.
HEADERX-doc_type = c_x.
HEADERX-SALES_ORG = c_x.
HEADERX-DISTR_CHAN = c_x.
HEADERX-DIVISION = c_x.
HEADERX-PURCH_NO_C = c_X.
HEADERX-PMNTTRMS = c_X.
loop at record where control = index.
************************************************************************
POPULATE HEADER DATA FOR PO
************************************************************************
HEADER-DOC_TYPE = record-DOC_TYPE.
HEADER-SALES_ORG = record-SALES_ORG.
HEADER-DISTR_CHAN = record-DISTR_CHAN.
HEADER-DIVISION = record-DIVISION.
HEADER-PURCH_NO_C = record-PURCH_NO_C.
HEADER-PMNTTRMS = record-PMNTTRMS.
************************************************************************
*POPULATE ITEM DATA.
************************************************************************
ITEM-ITM_NUMBER = record-ITM_NUMBER.
ITEM-MATERIAL = record-material.
ITEM-TARGET_QTY = record-TARGET_QTY.
ITEM-TARGET_QU = record-TARGET_QU.
ITEM-PLANT = record-PLANT .
APPEND ITEM.
************************************************************************
*POPULATE ITEM FLAG TABLE
************************************************************************
ITEMX-ITM_NUMBER = record-ITM_NUMBER.
ITEMX-UPDATEFLAG = C_X.
ITEMX-TARGET_QTY = C_X.
ITEMX-PLANT = C_X .
ITEMX-MATERIAL = C_X .
ITEMX-TARGET_QU = C_X .
APPEND ITEMX.
************************************************************************
*POPULATE SCHEDULE TABLE
************************************************************************
SCHEDULE-ITM_NUMBER = RECORD-ITM_NUMBER.
SCHEDULE-REQ_QTY = RECORD-REQ_QTY.
APPEND SCHEDULE.
************************************************************************
*POPULATE SCHEDULE TABLE
************************************************************************
SCHEDULEX-ITM_NUMBER = RECORD-ITM_NUMBER.
SCHEDULEX-REQ_QTY = C_X.
APPEND SCHEDULEX.
endloop.
************************************************************************
*POPULATE PARTNER TABLE
************************************************************************
PART-PARTN_NUMB = record-PARTN_NUMB.
PART-PARTN_ROLE = record-PARTN_ROLE.
APPEND PART.
************************************************************************
*BAPI CALL
************************************************************************
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
ORDER_HEADER_IN = HEADER
ORDER_HEADER_INX = HEADERX
SENDER =
BINARY_RELATIONSHIPTYPE =
INT_NUMBER_ASSIGNMENT =
BEHAVE_WHEN_ERROR =
LOGIC_SWITCH =
TESTRUN =
CONVERT = ' '
IMPORTING
SALESDOCUMENT = SO
TABLES
RETURN = RETURN
ORDER_ITEMS_IN = ITEM
ORDER_ITEMS_INX = ITEMX
ORDER_PARTNERS = PART
ORDER_SCHEDULES_IN = SCHEDULE
ORDER_SCHEDULES_INX = SCHEDULEX
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 =
.
loop at return where type = 'E' and ID NE 'MEPO' and ID NE 'BAPI'.
WRITE:/ Return-message.
endloop.
************************************************************************
*Confirm the document creation by calling database COMMIT
************************************************************************
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
*********************************************************************
*Messages
*********************************************************************
loop at return where type = 'S' and number ne '233'.
WRITE:/ Return-message.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = return-ID
LANG = SY-LANGU
NO = return-NUMBER
IMPORTING
MSG = W_MSG
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
WRITE W_MSG.
itab_msg-message = w_msg.
append itab_msg.
clear: W_MSG.
ENDLOOP.
enddo.
************************************************************************
-->P_W_FILE text
************************************************************************
FORM GET_FILE USING P_W_FILE.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
CHANGING
FILE_NAME = P_W_FILE
EXCEPTIONS
MASK_TOO_LONG = 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.
ENDIF.
ENDFORM. "GET_FILE
Regards,
Sachin