Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

bapi-salesorder creation error in creating document

Former Member
0 Likes
367

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 ......

1 REPLY 1
Read only

Former Member
0 Likes
303

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