You are on page 1of 5

*&---------------------------------------------------------------------*

*& Report ZBAPI_PO_CREATE_N


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zbapi_po_create_n.
TYPE-POOLS : truxs.
TYPES : BEGIN OF st_final,
SNO(5)
TYPE C,
bukrs
TYPE bukrs,
doc_type
TYPE esart,
vendor
TYPE elifn,
purch_org TYPE ekorg,
pur_group TYPE bkgrp,
po_item
TYPE ebelp,
material
TYPE matnr,
plant
TYPE ewerk,
quantity
TYPE bstmg,
netprice
TYPE bapicurext,
END OF st_final.
DATA: it_final TYPE STANDARD TABLE OF st_final,
wa_final TYPE st_final.
DATA: wa_header LIKE bapimepoheader,
wa_headerx LIKE bapimepoheaderx.
DATA: it_poitem TYPE STANDARD TABLE OF bapimepoitem,
wa_poitem TYPE bapimepoitem.
DATA: it_poitemx TYPE STANDARD TABLE OF bapimepoitemx,
wa_poitemx TYPE bapimepoitemx.
DATA: it_return TYPE STANDARD TABLE OF bapiret2,
wa_return TYPE bapiret2.
DATA it_rawdata TYPE truxs_t_text_data.
DATA po_num TYPE bapimepoheader-po_number.
PARAMETERS : p_file TYPE rlgrap-filename.
DATA : p_file1 TYPE string,
t_bukrs TYPE bukrs.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name
= ' '
IMPORTING

file_name

= p_file.

p_file1 = p_file.
START-OF-SELECTION.
PERFORM : get_upload,
process_data.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*&
Form GET_UPLOAD
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM get_upload .

*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'


EXPORTING
I_LINE_HEADER
= 'X'
i_tab_raw_data
= it_rawdata
i_filename
= p_file
TABLES
i_tab_converted_data = it_final
EXCEPTIONS
conversion_failed
= 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.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME
= P_FILE1
FILETYPE
= 'ASC'
HAS_FIELD_SEPARATOR
= 'X'
TABLES
DATA_TAB
= IT_FINAL
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.

ENDFORM.
"GET_UPLOAD
*&---------------------------------------------------------------------*
*&
Form PROCESS_DATA
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
form PROCESS_DATA .
LOOP AT it_final INTO wa_final.
IF wa_final-BUKRS is NOT INITIAL.
WA_HEADERX-COMP_CODE = 'X'.
WA_HEADERX-DOC_TYPE = 'X'.
WA_HEADERX-VENDOR
= 'X'.
WA_HEADERX-PURCH_ORG = 'X'.
WA_HEADERX-PUR_GROUP = 'X'.
WA_HEADER-COMP_CODE
WA_HEADER-DOC_TYPE
WA_HEADER-VENDOR
WA_HEADER-PURCH_ORG
WA_HEADER-PUR_GROUP

=
=
=
=
=

WA_FINAL-BUKRS.
WA_FINAL-DOC_TYPE.
WA_FINAL-VENDOR.
WA_FINAL-PURCH_ORG.
WA_FINAL-PUR_GROUP.

ELSE.
*
APPEND WA_HEADER TO IT_HEADER.
************ITEM*************************
WA_POITEM-PO_ITEM
WA_POITEM-MATERIAL
WA_POITEM-PLANT
WA_POITEM-QUANTITY
WA_POITEM-NET_PRICE

=
=
=
=
=

WA_FINAL-PO_ITEM.
WA_FINAL-MATERIAL.
WA_FINAL-PLANT.
WA_FINAL-QUANTITY.
WA_FINAL-NETPRICE.

APPEND WA_POITEM TO IT_POITEM.


WA_POITEMX-PO_ITEM
WA_POITEMX-PO_ITEMX
WA_POITEMX-MATERIAL
WA_POITEMX-PLANT
WA_POITEMX-QUANTITY
WA_POITEMX-NET_PRICE

=
=
=
=
=
=

WA_FINAL-PO_ITEM.
'X'.
'X'.
'X'.
'X'.
'X'.

APPEND WA_POITEMX TO IT_POITEMX.


ENDIF.
AT END OF SNO.
PERFORM DATA_UPLOAD.
CLEAR : IT_POITEM , IT_POITEMX.
ENDAT.
CLEAR : WA_FINAL , WA_POITEM , WA_POITEMX.

ENDLOOP.
endform.
" PROCESS_DATA
*&---------------------------------------------------------------------*
*&
Form DATA_UPLOAD
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
form DATA_UPLOAD .
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
POHEADER
= WA_HEADER
POHEADERX
= WA_HEADERX
IMPORTING
EXPPURCHASEORDER = PO_NUM
TABLES
RETURN
= IT_RETURN
POITEM
= IT_POITEM
POITEMX
= IT_POITEMX.
READ TABLE IT_RETURN INTO WA_RETURN WITH KEY TYPE = 'E'.
IF SY-SUBRC = 0.
LOOP AT IT_RETURN INTO WA_RETURN.

WRITE :/ WA_FINAL-SNO,WA_RETURN-TYPE, WA_RETURN-MESSAGE


ENDLOOP.
ELSE.
LOOP AT IT_RETURN INTO WA_RETURN.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
MESSAGE 'purchase order created' TYPE 'S'.
WRITE :/ WA_RETURN-MESSAGE.
ENDLOOP.
ENDIF.
endform.

" DATA_UPLOAD

You might also like