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 -SALES ORDER CREATION AND CHANGES

0 Likes
3,002

Hii,

My requirements is, Create a multiple line items sale order number through BAPI. After that In excel sheet will going to do changes of some fields values ex: quality number, material number..etc, like wise . what and all changes we done in excel sheet it must be refelcted in VA02, VA03 for created sales order number.

please help me out with this requirements, i need to code or logic.

Thanks And Regards,

LAKSHMI N

Hii,

My requirements is, Create a multiple line items sale order number through BAPI. After that In excel sheet will going to do changes of some fields values ex: quality number, material number..etc, like wise . what and all changes we done in excel sheet it must be refelcted in VA02, VA03 for created sales order number.

please help me out with this requirements, i need to code or logic.

Thanks And Regards,

LAKSHMI N

4 REPLIES 4
Read only

Patrick_vN
Active Contributor
0 Likes
2,333

For the creation of the sales order, have you checked out the BAPI_SALESORDER_CREATEFROMDAT2?

And how do you plan to reproduce the changes you have made in excel file to the sales order document in SAP? LSMW? An upload program? SAP Gateway for Microsoft?

Read only

0 Likes
2,333

Hello sir,

i have created the bapi sales order but for changes which one i need to call function module.

yes its in sap only.

Read only

0 Likes
2,333

BAPI_SALESORDER_CHANGE?

Read only

0 Likes
2,333

REPORT ZABAP_BAPI_SO_CRCH.
TYPE-POOLS : TRUXS .
TYPES : BEGIN OF TY_INI,
SLNO TYPE I,
ORDER_TYPE(4),
SORG(4),
DCH(4),
DIV(4),
KUNNR TYPE KUNNR,
MATNR TYPE MATNR,
QTY(50),
UOM(4),
PLANT(4),
STLOC(4),
PRICE(20),
END OF TY_INI.
DATA : GT_TAB TYPE TABLE OF TY_INI,
GS_TAB TYPE TY_INI,
GS_TAB1 TYPE TY_INI,
GT_TAB1 TYPE TABLE OF TY_INI.
DATA : IT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.
DATA : GV_FILE TYPE STRING,
GV_ITEM TYPE VBAP-POSNR.
DATA : IT_RAW TYPE TRUXS_T_TEXT_DATA.
DATA : ORDER_HEADER_IN LIKE BAPISDHD1,
ORDER_HEADER_INX LIKE BAPISDHD1X,
SALESDOCUMENT LIKE BAPIVBELN-VBELN,
RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE,
ORDER_ITEMS_IN LIKE BAPISDITM OCCURS 0 WITH HEADER LINE,
ORDER_ITEMS_INX LIKE BAPISDITMX OCCURS 0 WITH HEADER LINE,
ORDER_PARTNERS LIKE BAPIPARNR OCCURS 0 WITH HEADER LINE,
ORDER_SCHEDULES_IN LIKE BAPISCHDL OCCURS 0 WITH HEADER LINE,
ORDER_SCHEDULES_INX LIKE BAPISCHDLX OCCURS 0 WITH HEADER LINE,
ORDER_CONDITIONS_IN LIKE BAPICOND OCCURS 0 WITH HEADER LINE,
ORDER_CONDITIONS_INX LIKE BAPICONDX OCCURS 0 WITH HEADER LINE.


SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS : P_FILE TYPE IBIPPARMS-PATH .
* PARAMETERS : P_BEGCOL TYPE I DEFAULT 1 NO-DISPLAY,
* P_BEGROW TYPE I DEFAULT 1 NO-DISPLAY,
* P_ENDCOL TYPE I DEFAULT 100 NO-DISPLAY,
* P_ENDROW TYPE I DEFAULT 32000 NO-DISPLAY.
SELECTION-SCREEN END OF BLOCK B1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = 'P_FILE'
IMPORTING
FILE_NAME = P_FILE.

START-OF-SELECTION.
IF P_FILE IS NOT INITIAL.
PERFORM UPLOAD_FILE.
IF GT_TAB[] IS NOT INITIAL.
PERFORM CREATE_ORDER.
ENDIF.
ENDIF.
END-OF-SELECTION.

FORM UPLOAD_FILE .

GV_FILE = P_FILE.

CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
I_LINE_HEADER = 'x'
I_TAB_RAW_DATA = IT_RAW
I_FILENAME = P_FILE
TABLES
I_TAB_CONVERTED_DATA = GT_TAB.

IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
*
*ENDFORM.

*CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
* EXPORTING
* FILENAME = P_FILE
* I_BEGIN_COL = P_BEGCOL
* I_BEGIN_ROW = P_BEGROW
* I_END_COL = P_ENDCOL
* I_END_ROW = P_ENDROW
* TABLES
* INTERN = IT_INTERN
** EXCEPTIONS
** INCONSISTENT_PARAMETERS = 1
** UPLOAD_OLE = 2
** OTHERS = 3
* .
*IF SY-SUBRC <> 0.
** Implement suitable error handling here
*ENDIF.

ENDFORM.
FORM CREATE_ORDER .

CLEAR : GS_TAB,GS_TAB1.
MOVE-CORRESPONDING GT_TAB TO GT_TAB1.
DELETE ADJACENT DUPLICATES FROM GT_TAB1
COMPARING SLNO ORDER_TYPE SORG DCH DIV KUNNR.

LOOP AT GT_TAB1 INTO GS_TAB1.

CLEAR : ORDER_HEADER_IN ,ORDER_HEADER_INX,ORDER_PARTNERS[],ORDER_PARTNERS.
REFRESH : ORDER_ITEMS_IN[],ORDER_ITEMS_INX[],ORDER_SCHEDULES_IN[],
ORDER_SCHEDULES_INX[],ORDER_CONDITIONS_IN[],ORDER_CONDITIONS_INX[].

ORDER_HEADER_IN-DOC_TYPE = GS_TAB1-ORDER_TYPE.
ORDER_HEADER_IN-SALES_ORG = GS_TAB1-SORG.
ORDER_HEADER_IN-DISTR_CHAN = GS_TAB1-DCH.
ORDER_HEADER_IN-DIVISION = GS_TAB1-DIV.

ORDER_HEADER_INX-UPDATEFLAG = 'I'.
ORDER_HEADER_INX-DOC_TYPE = 'X'.
ORDER_HEADER_INX-SALES_ORG = 'X'.
ORDER_HEADER_INX-DISTR_CHAN = 'X'.
ORDER_HEADER_INX-DIVISION = 'X'.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = GS_TAB1-KUNNR
IMPORTING
OUTPUT = GS_TAB1-KUNNR.

ORDER_PARTNERS-PARTN_ROLE = 'AG'.
ORDER_PARTNERS-PARTN_NUMB = GS_TAB1-KUNNR.
APPEND ORDER_PARTNERS.
CLEAR ORDER_PARTNERS.

ORDER_PARTNERS-PARTN_ROLE = 'WE'.
ORDER_PARTNERS-PARTN_NUMB = GS_TAB1-KUNNR.
APPEND ORDER_PARTNERS.
CLEAR ORDER_PARTNERS.

ORDER_PARTNERS-PARTN_ROLE = 'RE'.
ORDER_PARTNERS-PARTN_NUMB = GS_TAB1-KUNNR.
APPEND ORDER_PARTNERS.
CLEAR ORDER_PARTNERS.

ORDER_PARTNERS-PARTN_ROLE = 'RG'.
ORDER_PARTNERS-PARTN_NUMB = GS_TAB1-KUNNR.
APPEND ORDER_PARTNERS.
CLEAR ORDER_PARTNERS.

LOOP AT GT_TAB INTO GS_TAB WHERE SLNO = GS_TAB1-SLNO.

GV_ITEM = GV_ITEM + 10.
ORDER_ITEMS_IN-ITM_NUMBER = GV_ITEM.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = GS_TAB-MATNR
IMPORTING
OUTPUT = GS_TAB-MATNR.

ORDER_ITEMS_IN-MATERIAL = GS_TAB-MATNR.
ORDER_ITEMS_IN-TARGET_QTY = GS_TAB-QTY.
ORDER_ITEMS_IN-TARGET_QU = GS_TAB-UOM.
ORDER_ITEMS_IN-PLANT = GS_TAB-PLANT.
ORDER_ITEMS_IN-STORE_LOC = GS_TAB-STLOC.
APPEND ORDER_ITEMS_IN.
CLEAR : ORDER_ITEMS_IN.

ORDER_ITEMS_INX-ITM_NUMBER = GV_ITEM.
ORDER_ITEMS_INX-MATERIAL = 'X'.
ORDER_ITEMS_INX-TARGET_QTY = 'X'.
ORDER_ITEMS_INX-TARGET_QU = 'X'.
ORDER_ITEMS_INX-PLANT = 'X'.
ORDER_ITEMS_INX-STORE_LOC = 'X'.
APPEND ORDER_ITEMS_INX.
CLEAR : ORDER_ITEMS_INX.

ORDER_SCHEDULES_IN-ITM_NUMBER = GV_ITEM.
ORDER_SCHEDULES_IN-REQ_QTY = GS_TAB-QTY.
APPEND ORDER_SCHEDULES_IN.
CLEAR : ORDER_SCHEDULES_IN.

ORDER_SCHEDULES_INX-ITM_NUMBER = GV_ITEM.
ORDER_SCHEDULES_INX-REQ_QTY = 'X'.
APPEND ORDER_SCHEDULES_INX.
CLEAR : ORDER_SCHEDULES_INX.

ORDER_CONDITIONS_IN-ITM_NUMBER = GV_ITEM.
ORDER_CONDITIONS_IN-COND_TYPE = 'K007'.
ORDER_CONDITIONS_IN-COND_VALUE = ( GS_TAB-PRICE / 10 ).
APPEND ORDER_CONDITIONS_IN.
CLEAR : ORDER_CONDITIONS_IN.

ORDER_CONDITIONS_INX-ITM_NUMBER = GV_ITEM.
ORDER_CONDITIONS_INX-COND_TYPE = 'K007'.
ORDER_CONDITIONS_INX-COND_VALUE = 'X'.
APPEND ORDER_CONDITIONS_IN.
CLEAR : ORDER_CONDITIONS_IN.

ENDLOOP.
*ENDFORM.
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
ORDER_HEADER_IN = ORDER_HEADER_IN
ORDER_HEADER_INX = ORDER_HEADER_INX
IMPORTING
SALESDOCUMENT = SALESDOCUMENT
TABLES
RETURN = RETURN
ORDER_ITEMS_IN = ORDER_ITEMS_IN
ORDER_ITEMS_INX = ORDER_ITEMS_INX
ORDER_PARTNERS = ORDER_PARTNERS
ORDER_SCHEDULES_IN = ORDER_SCHEDULES_IN
ORDER_SCHEDULES_INX = ORDER_SCHEDULES_INX
ORDER_CONDITIONS_IN = ORDER_CONDITIONS_IN
ORDER_CONDITIONS_INX = ORDER_CONDITIONS_INX.

CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
SALESDOCUMENT = SALESDOCUMENT
ORDER_HEADER_IN = ORDER_HEADER_IN
ORDER_HEADER_INX = ORDER_ITEMS_INX
* SIMULATION =
* BEHAVE_WHEN_ERROR = ' '
* INT_NUMBER_ASSIGNMENT = ' '
* LOGIC_SWITCH =
* NO_STATUS_BUF_INIT = ' '
TABLES
RETURN = RETURN
ORDER_ITEM_IN = ORDER_ITEMS_IN
ORDER_ITEM_INX = ORDER_ITEMS_IN
* PARTNERS = ORDER_PARTNERS
* PARTNERCHANGES =
* PARTNERADDRESSES =
* ORDER_CFGS_REF =
* ORDER_CFGS_INST =
* ORDER_CFGS_PART_OF =
* ORDER_CFGS_VALUE =
* ORDER_CFGS_BLOB =
* ORDER_CFGS_VK =
* ORDER_CFGS_REFINST =
* SCHEDULE_LINES = ORDER_SCHEDULES_IN
* SCHEDULE_LINESX = ORDER_SCHEDULES_INX
* ORDER_TEXT =
* ORDER_KEYS =
* CONDITIONS_IN = ORDER_CONDITIONS_IN
* CONDITIONS_INX = ORDER_CONDITIONS_INX
* EXTENSIONIN =
* EXTENSIONEX =
.


*CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
*EXPORTING
*SALESDOCUMENT = SALESDOCUMENT
*ORDER_HEADER_IN = ORDER_HEADER_IN
*ORDER_HEADER_INX = ORDER_HEADER_INX
*TABLES
*RETURN = RETURN
*SCHEDULE_LINES = ORDER_SCHEDULES_IN
*SCHEDULE_LINESX = ORDER_SCHEDULES_INX.
*CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
*LOOP AT I_RET.
*WRITE / I_RET-MESSAGE.
*ENDLOOP.

IF SALESDOCUMENT IS NOT INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.

WRITE : SALESDOCUMENT .
ELSE.
WRITE : 'ERROR WHILE CREATING SO'.
ENDIF.
IF SY-SUBRC IS NOT INITIAL.
IF RETURN-TYPE = 'S'.
WRITE: / 'SUCCESSFULLY CHANGED'.
ENDIF.

*IF RETURN-TYPE = 'E'.
*WRITE: / 'ERROR :', RETURN-MESSAGE, / 'FOR VBELN:', GS_TAB-VBELN.
*ELSEIF RETURN-TYPE = 'S'.
*WRITE: / 'SUCCESSFULLY CHANGED', GS_TAB-VBELN.
*ENDIF.

CLEAR :GS_TAB,
GS_TAB1.
CLEAR: GV_ITEM.


REFRESH : GT_TAB,GT_TAB1.
ENDIF.
ENDLOOP.

* ENDIF.
ENDFORM.

This is program which i have wriiten.