*&---------------------------------------------------------------------*
*& Report ZPOUPLOAD
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZPOUPLOAD_KP.
TYPES : TRUXS_T_TEXT_DATA(4096) TYPE C OCCURS 0.
DATA: BEGIN OF ITAB OCCURS 0,
DOC_TYPE(4),
SUPPL_PLNT(4),
VENDOR(10),
PURCH_ORG(4),
PUR_GROUP(3),
COMP_CODE(4),
VPER_START(10),
VPER_END(8),
PO_ITEM(5),
MATERIAL(18),
SHORT_TEXT(40),
QUANTITY(16),
TRACKINGNO(10),
NET_PRICE(28),
TAX_CODE(2),
PLANT(4),
STGE_LOC(4),
GR_IND(1),
IR_IND(1),
ACCTASSCAT(1),
WBS_ELEMENT(24),
GL_ACCOUNT(10),
SD_DOC(10),
ITM_NUMBER(6),
PO_UNIT(3),
ORDERPR_UN(3),
* DOC_DATE(10),
DELIVERY_DATE(10),
END OF ITAB.
DATA: BEGIN OF IT_LOG OCCURS 0,
MESSAGE(70) TYPE C,
END OF IT_LOG.
DATA: W_TYPE(4) TYPE C.
CONSTANTS : C_X VALUE 'X'.
DATA: GSTEST LIKE BAPIMEPOHEADER.
DATA: G_EBELN LIKE BAPIMEPOHEADER-PO_NUMBER.
DATA: BEGIN OF G_BAPIMEPOHEADER OCCURS 0.
INCLUDE STRUCTURE BAPIMEPOHEADER.
DATA: END OF G_BAPIMEPOHEADER.
DATA: BEGIN OF G_BAPIMEPOHEADERX OCCURS 0.
INCLUDE STRUCTURE BAPIMEPOHEADERX.
DATA: END OF G_BAPIMEPOHEADERX.
DATA: BEGIN OF G_BAPIMEPOSCHEDULE OCCURS 0.
INCLUDE STRUCTURE BAPIMEPOSCHEDULE.
DATA: END OF G_BAPIMEPOSCHEDULE.
DATA: BEGIN OF G_POSCHEDULEX OCCURS 0.
INCLUDE STRUCTURE BAPIMEPOSCHEDULX.
DATA: END OF G_POSCHEDULEX.
DATA: BEGIN OF G_BAPIEIKP OCCURS 0.
INCLUDE STRUCTURE BAPIEIKP.
DATA: END OF G_BAPIEIKP.
DATA: BEGIN OF G_BAPIMEPOITEM OCCURS 0.
INCLUDE STRUCTURE BAPIMEPOITEM.
DATA: END OF G_BAPIMEPOITEM.
DATA: BEGIN OF G_POITEMX OCCURS 0.
INCLUDE STRUCTURE BAPIMEPOITEMX.
DATA: END OF G_POITEMX.
DATA: BEGIN OF G_BAPIRET2 OCCURS 0.
INCLUDE STRUCTURE BAPIRET2.
DATA: END OF G_BAPIRET2.
DATA: BEGIN OF G_POACCOUNT OCCURS 0.
INCLUDE STRUCTURE BAPIMEPOACCOUNT.
DATA : END OF G_POACCOUNT.
DATA: BEGIN OF G_POACCOUNTX OCCURS 0.
INCLUDE STRUCTURE BAPIMEPOACCOUNTX.
DATA : END OF G_POACCOUNTX.
DATA: IT_ITAB LIKE ITAB OCCURS 0 WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK BLK WITH FRAME TITLE TEXT-100.
PARAMETERS : P_FILE LIKE RLGRAP-FILENAME.
SELECTION-SCREEN END OF BLOCK BLK.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
PERFORM FILE_SELECTION.
START-OF-SELECTION.
PERFORM DATA_UPLOAD.
PERFORM BAPI_UPLOAD.
PERFORM DISPLAY.
*&---------------------------------------------------------------------*
*& Form file_selection
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM FILE_SELECTION.
DATA : FILE_TABLE TYPE FILETABLE,
RC TYPE I,
WA_FILE_TABLE LIKE LINE OF FILE_TABLE.
call method CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
* exporting
* WINDOW_TITLE =
* DEFAULT_EXTENSION =
* DEFAULT_FILENAME =
* FILE_FILTER =
* WITH_ENCODING =
* INITIAL_DIRECTORY =
* MULTISELECTION =
changing
FILE_TABLE = FILE_TABLE
RC = RC
* USER_ACTION =
* FILE_ENCODING =
* exceptions
* FILE_OPEN_DIALOG_FAILED = 1
* CNTL_ERROR = 2
* ERROR_NO_GUI = 3
* NOT_SUPPORTED_BY_GUI = 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.
READ TABLE FILE_TABLE INTO WA_FILE_TABLE INDEX 1.
P_FILE = WA_FILE_TABLE-FILENAME.
* CALL FUNCTION 'WS_FILENAME_GET'
*
* EXPORTING
* DEF_FILENAME = ' '
* DEF_PATH = 'Z:\'
** mask = ',.txt,.txt.'
* MODE = 'O'
* TITLE = 'Open a TXT(Tab delimited) file only'
* IMPORTING
* FILENAME = P_FILE
* EXCEPTIONS
* INV_WINSYS = 1
* NO_BATCH = 2
* SELECTION_CANCEL = 3
* SELECTION_ERROR = 4
* OTHERS = 5.
ENDFORM. " file_selection
*&---------------------------------------------------------------------*
*& Form data_upload
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM DATA_UPLOAD .
DATA: I_TAB_RAW_DATA TYPE TRUXS_T_TEXT_DATA.
call function 'TEXT_CONVERT_XLS_TO_SAP'
exporting
* I_FIELD_SEPERATOR = 'X'
I_LINE_HEADER = 'X'
I_TAB_RAW_DATA = I_TAB_RAW_DATA
I_FILENAME = P_FILE
TABLES
I_TAB_CONVERTED_DATA = ITAB
EXCEPTIONS
CONVERSION_FAILED = 1
OTHERS = 2
.
IF SY-SUBRC EQ 0 .
WRITE:/ 'Program : ', SY-REPID.
WRITE:/ 'Filename: ', P_FILE.
WRITE AT /1(144) SY-ULINE.
ELSEIF 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 'WS_UPLOAD'
* EXPORTING
* FILENAME = P_FILE
* FILETYPE = 'DAT'
* TABLES
* DATA_TAB = ITAB
* EXCEPTIONS
* CONVERSION_ERROR = 1
* FILE_OPEN_ERROR = 2
* FILE_READ_ERROR = 3
* INVALID_TYPE = 4
* NO_BATCH = 5
* UNKNOWN_ERROR = 6
* INVALID_TABLE_WIDTH = 7
* GUI_REFUSE_FILETRANSFER = 8
* CUSTOMER_ERROR = 9
* NO_AUTHORITY = 10
* OTHERS = 11.
*
* IF SY-SUBRC EQ 0 .
* WRITE:/ 'Program : ', SY-REPID.
* WRITE:/ 'Filename: ', P_FILE.
* WRITE AT /1(144) SY-ULINE.
* ENDIF.
ENDFORM. " data_upload
*&---------------------------------------------------------------------*
*& Form bapi_upload
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM BAPI_UPLOAD .
IT_ITAB[] = ITAB[].
SORT ITAB BY VENDOR MATERIAL.
DELETE ADJACENT DUPLICATES FROM ITAB COMPARING VENDOR.
LOOP AT ITAB.
MOVE-CORRESPONDING ITAB TO G_BAPIMEPOHEADER.
W_TYPE = ITAB-DOC_TYPE.
IF ITAB-DOC_TYPE = 'ZA'.
call function 'CONVERSION_EXIT_ALPHA_INPUT'
exporting
INPUT = ITAB-VENDOR
IMPORTING
OUTPUT = ITAB-VENDOR
.
G_BAPIMEPOHEADER-VENDOR = ITAB-VENDOR.
ENDIF.
G_BAPIMEPOHEADER-CREAT_DATE = SY-DATUM.
G_BAPIMEPOHEADER-CREATED_BY = SY-UNAME.
APPEND G_BAPIMEPOHEADER.
G_BAPIMEPOHEADERX-COMP_CODE = 'X'.
G_BAPIMEPOHEADERX-VENDOR = 'X'.
G_BAPIMEPOHEADERX-DOC_TYPE = 'X'.
G_BAPIMEPOHEADERX-PURCH_ORG = 'X'.
G_BAPIMEPOHEADERX-PUR_GROUP = 'X'.
G_BAPIMEPOHEADERX-SUPPL_PLNT = ' '.
* G_BAPIMEPOHEADERX-VPER_START = ' '.
* G_BAPIMEPOHEADERX-VPER_END = ' '.
APPEND G_BAPIMEPOHEADERX.
IF ITAB-DOC_TYPE = 'ZA'.
call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
exporting
INPUT = ITAB-VENDOR
IMPORTING
OUTPUT = ITAB-VENDOR
.
ENDIF.
LOOP AT IT_ITAB WHERE VENDOR = ITAB-VENDOR.
MOVE-CORRESPONDING IT_ITAB TO G_BAPIMEPOITEM.
call function 'CONVERSION_EXIT_ALPHA_INPUT'
exporting
INPUT = IT_ITAB-MATERIAL
IMPORTING
OUTPUT = IT_ITAB-MATERIAL
.
call function 'CONVERSION_EXIT_ALPHA_INPUT'
exporting
INPUT = IT_ITAB-QUANTITY
IMPORTING
OUTPUT = IT_ITAB-QUANTITY.
G_BAPIMEPOITEM-MATERIAL = IT_ITAB-MATERIAL.
APPEND G_BAPIMEPOITEM.
MOVE-CORRESPONDING IT_ITAB TO G_BAPIMEPOSCHEDULE.
MOVE-CORRESPONDING IT_ITAB TO G_POACCOUNT.
APPEND G_BAPIMEPOSCHEDULE.
APPEND G_POACCOUNT.
G_POITEMX-PO_ITEM = IT_ITAB-PO_ITEM.
G_POITEMX-PO_ITEMX = 'X'.
* G_POITEMX-ITEM_CAT = 'X'.
G_POITEMX-PLANT = 'X'.
G_POITEMX-STGE_LOC = 'X'.
G_POITEMX-NET_PRICE = 'X'.
G_POITEMX-ACCTASSCAT = 'X'.
G_POITEMX-MATERIAL = 'X'.
G_POITEMX-SHORT_TEXT = 'X'.
* G_POITEMX-MATL_GROUP = ' '.
G_POITEMX-QUANTITY = 'X'.
* G_POITEMX-PO_UNIT = 'X'.
G_POITEMX-NET_PRICE = 'X'.
G_POITEMX-TAX_CODE = 'X'.
* G_POITEMX-ORDERPR_UN = 'X'.
G_POITEMX-TRACKINGNO = 'X'.
* G_POITEMX-DELETE_IND = 'X'.
G_POITEMX-GR_IND = 'X'.
G_POITEMX-IR_IND = 'X'.
APPEND G_POITEMX.
G_POSCHEDULEX-PO_ITEM = IT_ITAB-PO_ITEM.
G_POSCHEDULEX-SCHED_LINE = 1.
G_POSCHEDULEX-PO_ITEMX = 'X'.
* G_POSCHEDULEX-SCHED_LINEX = 'X'.
* G_POSCHEDULEX-DEL_DATCAT_EXT = 'X'.
G_POSCHEDULEX-DELIVERY_DATE = 'X'.
G_POSCHEDULEX-QUANTITY = 'X'.
* G_POSCHEDULEX-DELIV_TIME = 'X'.
* G_POSCHEDULEX-STAT_DATE = 'X'.
G_POSCHEDULEX-PREQ_NO = 'X'.
* G_POSCHEDULEX-PREQ_ITEM = 'X'.
* G_POSCHEDULEX-PO_DATE = 'X'.
* G_POSCHEDULEX-ROUTESCHED = 'X'.
* G_POSCHEDULEX-MS_DATE = 'X'.
APPEND G_POSCHEDULEX.
G_POACCOUNTX-PO_ITEM = IT_ITAB-PO_ITEM.
G_POACCOUNTX-WBS_ELEMENT = 'X'.
G_POACCOUNTX-GL_ACCOUNT = 'X'.
* G_POACCOUNTX-SD_DOC = 'X'.
G_POACCOUNTX-ITM_NUMBER = 'X'.
APPEND G_POACCOUNTX.
ENDLOOP.
* call function 'BAPI_PO_CREATE'
* exporting
* PO_HEADER =
** PO_HEADER_ADD_DATA =
** HEADER_ADD_DATA_RELEVANT =
** PO_ADDRESS =
** SKIP_ITEMS_WITH_ERROR = 'X'
** ITEM_ADD_DATA_RELEVANT =
** HEADER_TECH_FIELDS =
** IMPORTING
** PURCHASEORDER =
* TABLES
* PO_ITEMS =
** PO_ITEM_ADD_DATA =
* PO_ITEM_SCHEDULES =
** PO_ITEM_ACCOUNT_ASSIGNMENT =
** PO_ITEM_TEXT =
** RETURN =
** PO_LIMITS =
** PO_CONTRACT_LIMITS =
** PO_SERVICES =
** PO_SRV_ACCASS_VALUES =
** PO_SERVICES_TEXT =
** PO_BUSINESS_PARTNER =
** EXTENSIONIN =
** POADDRDELIVERY =
* .
*
*
call function 'BAPI_PO_CREATE1'
exporting
POHEADER = G_BAPIMEPOHEADER
POHEADERX = G_BAPIMEPOHEADERX
* POADDRVENDOR =
* TESTRUN =
* MEMORY_UNCOMPLETE =
* MEMORY_COMPLETE =
POEXPIMPHEADER = G_BAPIEIKP
* POEXPIMPHEADERX =
* VERSIONS =
* NO_MESSAGING =
* NO_MESSAGE_REQ =
* NO_AUTHORITY =
* NO_PRICE_FROM_PO =
IMPORTING
EXPPURCHASEORDER = G_EBELN
EXPHEADER = GSTEST
* EXPPOEXPIMPHEADER =
TABLES
RETURN = G_BAPIRET2
POITEM = G_BAPIMEPOITEM
POITEMX = G_POITEMX
* POADDRDELIVERY =
POSCHEDULE = G_BAPIMEPOSCHEDULE
POSCHEDULEX = G_POSCHEDULEX
POACCOUNT = G_POACCOUNT
* POACCOUNTPROFITSEGMENT =
POACCOUNTX = G_POACCOUNTX
* POCONDHEADER =
* POCONDHEADERX =
* POCOND =
* POCONDX =
* POLIMITS =
* POCONTRACTLIMITS =
* POSERVICES =
* POSRVACCESSVALUES =
* POSERVICESTEXT =
* EXTENSIONIN =
* EXTENSIONOUT =
* POEXPIMPITEM =
* POEXPIMPITEMX =
* POTEXTHEADER =
* POTEXTITEM =
* ALLVERSIONS =
* POPARTNER =
* POCOMPONENTS =
* POCOMPONENTSX =
* POSHIPPING =
* POSHIPPINGX =
* POSHIPPINGEXP =
.
IF NOT G_EBELN IS INITIAL.
call function 'BAPI_TRANSACTION_COMMIT'.
IF W_TYPE = 'ZA'.
CONCATENATE 'LIS Trade Material created under the number' '-'
G_EBELN INTO IT_LOG-MESSAGE.
APPEND IT_LOG.
CLEAR IT_LOG.
ELSE.
CONCATENATE 'LIS STO Plant-Plant created under the number' '-'
G_EBELN INTO IT_LOG-MESSAGE.
APPEND IT_LOG.
CLEAR IT_LOG.
ENDIF.
CLEAR : IT_ITAB,W_TYPE,G_BAPIMEPOITEM,G_BAPIMEPOHEADER,
G_BAPIMEPOHEADERX,G_BAPIRET2,G_POITEMX,G_BAPIMEPOSCHEDULE,G_POACCOUNT,
G_POSCHEDULEX.
REFRESH : G_BAPIMEPOITEM,G_BAPIMEPOHEADER,G_BAPIMEPOHEADERX,
G_BAPIRET2,G_POITEMX,G_BAPIMEPOSCHEDULE,G_POSCHEDULEX,G_POACCOUNTX.
ENDIF.
ENDLOOP.
ENDFORM. " bapi_upload
*&---------------------------------------------------------------------*
*& Form display
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM DISPLAY .
LOOP AT G_BAPIRET2.
WRITE :/ G_BAPIRET2-MESSAGE.
ENDLOOP.
LOOP AT IT_LOG.
WRITE :/ IT_LOG-MESSAGE.
ENDLOOP.
ENDFORM. " display
↧
Re: bapi issue/ bdc issue while creating one po with multiple line item.
↧