您的位置:首页 > 其它

ABAP读取Excel文件,转成对应格式内表

2009-12-27 14:07 651 查看
受启发于https://wiki.sdn.sap.com/wiki/display/Snippets/How%20to%20use%20%20FM%20'ALSM_EXCEL_TO_INTERNAL_TABLE'的帖

今天凿山折腾到3点才睡。。。这CRM客户表有51一个字段。。NND的,一个都不能错。

30号,元旦,Flyback!

SAP自带读取Excel的FM太弱了。。所以自己需要enhancement一下,

还剩一个问题需要注意,就是ALSMEX_TABLINE中的COL和ROW都是4字长的,也就是1-9999,也就是说:对应一个有9个字段的表只能存1111条记录,这。。。。所以需要自己copy一个新的structure,和ALSMEX_TABLINE同结构不同名的structure,但是在系统里可能会遇到权限问题,需要和basic沟通一下,

这个问题在http://blog.chinaunix.net/u1/40527/showart.php?id=1970184里被提及到,及时发现了,非常感谢!

对应code和导入模版需要的话可以Email:jpl12@163.com,欢迎交流!

*&---------------------------------------------------------------------*
*& Report ZTEST_BAPI_BP_COMPANY
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZTEST_BAPI_BP_COMPANY.

DATA: FNAME(128), FTYPE(3), FSIZE TYPE I.
TYPES: BEGIN OF LINE,

BU_PARTNER TYPE STRING,
BU_TYPE TYPE STRING,
BU_GROUP TYPE STRING,
BU_PARTNERROLECAT1 TYPE STRING," BUT000-PARTNER_GUID,
BU_PARTNERROLECAT2 TYPE STRING," TYPE BUT000-PARTNER_GUID,
AD_TITLETX TYPE STRING,
BU_NAMEOR1 TYPE STRING,
BU_NAMEOR2 TYPE STRING,
BU_SORT1 TYPE STRING,
AD_STREET TYPE STRING,
AD_HSNM1 TYPE STRING,
AD_STRSPP3 TYPE STRING,
AD_PSTCD1 TYPE STRING,
AD_CITY1 TYPE STRING,
AD_CITY2 TYPE STRING,
LAND1 TYPE STRING,
REGIO TYPE STRING ,
LZONE TYPE STRING,
AD_TZONE TYPE STRING,
BU_LANGU TYPE STRING,
AD_TLNMBR TYPE STRING,
AD_FXNMBR TYPE STRING,"
AD_SMTPADR TYPE STRING,
BU_ID_TYPE TYPE STRING,
BU_ID_NUMBER TYPE STRING,
BPTAXTYPE TYPE STRING,
BPTAXNUM TYPE STRING,
BU_NATURAL_PERSON TYPE STRING,
BUTX_TAX_CTY TYPE STRING,
BUTX_TAX_TYPE TYPE STRING,
BUTX_TAX_GROUP TYPE STRING,
BANKS TYPE STRING,
BANKK TYPE STRING ,
BANKN TYPE STRING,
BU_KOINH TYPE STRING,
CRMT_BU_ACCOUNT_GROUP TYPE STRING,
CRMT_SALES_ORG TYPE STRING,
CRMT_DISTRIBUTION_CHANNEL TYPE STRING,
CRMT_DIVISION TYPE STRING,
CRMT_INCOTERMS1 TYPE STRING,
CRMT_INCOTERMS2 TYPE STRING,

CRMT_SHIP_COND TYPE STRING,
CRMT_DLV_PRIO TYPE STRING,
CRMT_PART_DLV TYPE STRING,

CRMT_PART_DLV_ITM TYPE STRING,
CRMT_CUST_PRIC_PROC TYPE STRING,
CRMT_CURRENCY TYPE STRING,

CRMT_PMNTTRMS TYPE STRING,
CRMT_PRICE_GRP TYPE STRING,
CRMT_CUST_GROUP TYPE STRING,
CRM_ACCTGRPBP TYPE STRING,

CRMT_SALES_OFFICE TYPE STRING,
CRMT_SALES_GROUP TYPE STRING,

END OF LINE.
TYPES ITAB TYPE LINE OCCURS 10.

*
**------------------------------------parameters definition for bapi calling-------------------------*
*
*DATA:
* BAPI_BP_DATA TYPE BAPIBUS1006_HEAD,"BUSINESSPARTNEREXTERN
* BAPI_BP_CENTRAL_DATA LIKE BAPIBUS1006_CENTRAL,
* BAPI_BP_CENTRAL_ORGAN_DATA LIKE BAPIBUS1006_CENTRAL_ORGAN,
* BAPI_BP_ADDRESS_DATA LIKE BAPIBUS1006_ADDRESS,
* BAPI_BP_FAX_DATA LIKE BAPIADFAX,
* BAPI_BP_HEAD_DATA LIKE BAPIBUS1006_HEAD,
* BAPI_BP_TEL_DATA LIKE BAPIADTEL,
* BAPI_BP_TAX_DATA LIKE BAPIBUS1006TAX,
* BAPI_BP_BANK_DATA LIKE BAPIBUS1006_BANKDETAIL,
* BAPI_BP_SALEAREA_DATA LIKE BAPIBUS1006_SALES_AREA,
* BAPI_BP_ORG_DATA LIKE BAPIBUS1006140_ORG,"BAPIBUS1006140_ORG
* BAPI_BP_SHIPPING_DATA LIKE BAPIBUS1006020_SHIPPING,
* BAPI_BP_PRICING_DATA LIKE BAPIBUS1006030_PRICING,
* BAPI_BP_SALESCLASS_DATA LIKE BAPIBUS1006040_SALESCLASS,
* BAPI_BP_SALESCLASSX_DATA LIKE BAPIBUS1006040_SALESCLASSX,
* BAPI_BP_SALES_DATA LIKE BAPIBUS1006010_SALES,
*
*
* BAPI_BP_ERROR_DATA LIKE BAPI4001_1,
* BPARTNER_ID TYPE BAPIBUS1006_HEAD-BPARTNER,
*
* lt_return TYPE TABLE OF bapiret2,
* ls_return TYPE bapiret2,
* BP_ROLE1 TYPE BAPIBUS1006_HEAD-PARTNERROLE,
* BP_ROLE2 TYPE BAPIBUS1006_HEAD-PARTNERROLE.
*
**----------------------------------------------------—————————————————————--------*
*

DATA: LIN TYPE LINE,
TAB TYPE ITAB,
TAB_CHECKED TYPE LINE. "TABLE FOR TESTING

DATA: MSG_USER_RETURN(100) VALUE 'MSG RETURN'. "MSG RETURN FROM USER PROGRAM

*------DATA FOR LOG RECORDING
DATA : BEGIN OF IT_LOG OCCURS 0 ,
LOG TYPE STRING ,
END OF IT_LOG .
DATA : BEGIN OF IT_LOG_FINAL OCCURS 0 ,
LOG TYPE STRING ,
END OF IT_LOG_FINAL .
DATA: LOG_PATH TYPE STRING VALUE 'D:/Com/玖龙纸业NineDragonPaper/主数据模拟导入Support/CRM/SAPLOG BP CTREATING.TXT'.
*
**------------------------------------LOCAL FIELS UPLOAD-------------------------------------*
**UPLOAD NEW USER DATA FROM LOCAL MACHINE
**---------------
*WRITE:/ '--------------------', / 'DATA UPLOADING.........',/ '--------------------' .
*CALL FUNCTION 'UPLOAD'
* EXPORTING
* CODEPAGE = '8400' "0120 8400
* FILENAME = 'D:/Com/玖龙纸业NineDragonPaper/主数据模拟导入Support/CRM/UP_DATA.txt'
* FILETYPE = 'DAT'
* ITEM = 'Read Test for Excel File'
* IMPORTING
* FILESIZE = FSIZE
* ACT_FILENAME = FNAME
* ACT_FILETYPE = FTYPE
* TABLES
* DATA_TAB = TAB" DATA INTO INTAL TAB
* 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
* NOT_SUPPORTED_BY_GUI = 17
* ERROR_NO_GUI = 18
* OTHERS = 19.

DATA :
BPINFO_LINE TYPE LINE,
FILE_PATH TYPE RLGRAP-FILENAME,
IT_FILE_LINE_TEMP TYPE ALSMEX_TABLINE,
IT_FILE_LINE_NOW TYPE ALSMEX_TABLINE,
IT_FILE_LINE_LAST TYPE ALSMEX_TABLINE, "FOR MAKEING A JUDGEMENT BETWEEN DIFFERENT ROW
IT_FILE TYPE STANDARD TABLE OF ALSMEX_TABLINE WITH HEADER LINE,
TAB_UPLOAD TYPE STANDARD TABLE OF LINE WITH HEADER LINE.

*TYPES : BEGIN OF SBU_UPLOAD ,
* BU TYPE c,
* BU_DESC TYPE c,
* DELETE TYPE C,
*END OF SBU_UPLOAD .

*DATA TBU_UPLOAD TYPE STANDARD TABLE OF SBU_UPLOAD .

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = 'D:/Com/玖龙纸业NineDragonPaper/主数据模拟导入Support/CRM/DMS_CRM_V1.2.xls'
I_BEGIN_COL = '1'
I_BEGIN_ROW = '1'
I_END_COL = '51'
I_END_ROW = '12'
TABLES
INTERN = IT_FILE
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3.
IF SY-SUBRC NE SPACE.
*leave PROGRAM.
ENDIF.

LOOP AT IT_FILE INTO IT_FILE_LINE_NOW.

*IF IT_FILE_LINE_NOW-ROW NE '0000' AND IT_FILE_LINE_LAST-ROW NE '0000'.
**-------------------values input----------------------*
IF IT_FILE_LINE_LAST-ROW EQ IT_FILE_LINE_NOW-ROW."IF THE ELEMENTS ARE IN THE SAME ROW
*ELEMENT INPUT
CASE IT_FILE_LINE_NOW-COL.
WHEN '0001'.
LIN-BU_PARTNER = IT_FILE_LINE_NOW-VALUE.
WHEN '0002'.
LIN-BU_TYPE = IT_FILE_LINE_NOW-VALUE.
WHEN '0003'.
LIN-BU_GROUP = IT_FILE_LINE_NOW-VALUE.
WHEN '0004'.
LIN-BU_PARTNERROLECAT1 = IT_FILE_LINE_NOW-VALUE.
WHEN '0005'.
LIN-BU_PARTNERROLECAT2 = IT_FILE_LINE_NOW-VALUE.
WHEN '0006'.
LIN-AD_TITLETX = IT_FILE_LINE_NOW-VALUE.
WHEN '0007'.
LIN-BU_NAMEOR1 = IT_FILE_LINE_NOW-VALUE.
WHEN '0008'.
LIN-BU_NAMEOR2 = IT_FILE_LINE_NOW-VALUE.
WHEN '0009'.
LIN-BU_SORT1 = IT_FILE_LINE_NOW-VALUE.
WHEN '0010'.
LIN-AD_STREET = IT_FILE_LINE_NOW-VALUE.
WHEN '0011'.
LIN-AD_HSNM1 = IT_FILE_LINE_NOW-VALUE.
WHEN '0012'.
LIN-AD_STRSPP3 = IT_FILE_LINE_NOW-VALUE.
WHEN '0013'.
LIN-AD_PSTCD1 = IT_FILE_LINE_NOW-VALUE.
WHEN '0014'.
LIN-AD_CITY1 = IT_FILE_LINE_NOW-VALUE.
WHEN '0015'.
LIN-AD_CITY2 = IT_FILE_LINE_NOW-VALUE.
WHEN '0016'.
LIN-LAND1 = IT_FILE_LINE_NOW-VALUE.
WHEN '0017'.
LIN-REGIO = IT_FILE_LINE_NOW-VALUE.
WHEN '0018'.
LIN-LZONE = IT_FILE_LINE_NOW-VALUE.
WHEN '0019'.
LIN-AD_TZONE = IT_FILE_LINE_NOW-VALUE.
WHEN '0020'.
LIN-BU_LANGU = IT_FILE_LINE_NOW-VALUE ."20
WHEN '0021'.
LIN-AD_TLNMBR = IT_FILE_LINE_NOW-VALUE.
WHEN '0022'.
LIN-AD_FXNMBR = IT_FILE_LINE_NOW-VALUE.
WHEN '0023'.
LIN-AD_SMTPADR = IT_FILE_LINE_NOW-VALUE.
WHEN '0024'.
LIN-BU_ID_TYPE = IT_FILE_LINE_NOW-VALUE.
WHEN '0025'.
LIN-BU_ID_NUMBER = IT_FILE_LINE_NOW-VALUE.
WHEN '0026'.
LIN-BPTAXTYPE = IT_FILE_LINE_NOW-VALUE.
WHEN '0027'.
LIN-BPTAXNUM = IT_FILE_LINE_NOW-VALUE."27
WHEN '0028'.
LIN-BUTX_TAX_CTY = IT_FILE_LINE_NOW-VALUE.
WHEN '0029'.
LIN-BUTX_TAX_TYPE = IT_FILE_LINE_NOW-VALUE.
WHEN '0030'.
LIN-BUTX_TAX_GROUP = IT_FILE_LINE_NOW-VALUE."30
WHEN '0031'.
LIN-BANKS = IT_FILE_LINE_NOW-VALUE."CN" DEFAULT
WHEN '0032'.
LIN-BANKK = IT_FILE_LINE_NOW-VALUE.
WHEN '0033'.
LIN-BANKN = IT_FILE_LINE_NOW-VALUE.
WHEN '0034'.
LIN-BU_KOINH = IT_FILE_LINE_NOW-VALUE.
WHEN '0035'.
LIN-CRMT_BU_ACCOUNT_GROUP = IT_FILE_LINE_NOW-VALUE .
WHEN '0036'.
LIN-CRMT_SALES_ORG = IT_FILE_LINE_NOW-VALUE .
WHEN '0037'.
LIN-CRMT_DISTRIBUTION_CHANNEL = IT_FILE_LINE_NOW-VALUE .
WHEN '0038'.
LIN-CRMT_DIVISION = IT_FILE_LINE_NOW-VALUE .
WHEN '0039'.
LIN-CRMT_INCOTERMS1 = IT_FILE_LINE_NOW-VALUE .
WHEN '0040'.
LIN-CRMT_INCOTERMS2 = IT_FILE_LINE_NOW-VALUE."40
WHEN '0041'.
LIN-CRMT_SHIP_COND = IT_FILE_LINE_NOW-VALUE .
WHEN '0042'.
LIN-CRMT_DLV_PRIO = IT_FILE_LINE_NOW-VALUE.
WHEN '0043'.
LIN-CRMT_PART_DLV = IT_FILE_LINE_NOW-VALUE.
WHEN '0044'.
LIN-CRMT_CUST_PRIC_PROC = IT_FILE_LINE_NOW-VALUE .
WHEN '0045'.
LIN-CRMT_CURRENCY = IT_FILE_LINE_NOW-VALUE.
WHEN '0046'.
LIN-CRMT_PMNTTRMS = IT_FILE_LINE_NOW-VALUE .
WHEN '0047'.
LIN-CRMT_PRICE_GRP = IT_FILE_LINE_NOW-VALUE .
WHEN '0048'.
LIN-CRMT_CUST_GROUP = IT_FILE_LINE_NOW-VALUE.
WHEN '0049'.
LIN-CRM_ACCTGRPBP = IT_FILE_LINE_NOW-VALUE.
WHEN '0050'.
LIN-CRMT_SALES_OFFICE = IT_FILE_LINE_NOW-VALUE.
WHEN '0051'.
LIN-CRMT_SALES_GROUP = IT_FILE_LINE_NOW-VALUE.

ENDCASE.
ELSE.
APPEND LIN TO TAB_UPLOAD .
ENDIF.""IF THE ELEMENTS ARE IN THE SAME ROW

IT_FILE_LINE_LAST = IT_FILE_LINE_NOW.

*ENDIF. "FOR "IF IT_FILE_LINE_NOW-ROW NE '' AND IT_FILE_LINE_LAST-ROW NE ''."

ENDLOOP.

WRITE:''.

*结果可以在TAB_UPLOAD 内表中看到

*
*IF SY-SUBRC <> 0.
** MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
** WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
*
* CONCATENATE IT_LOG-LOG 'EXCEPYIONS:' SY-UNAME ' ' SY-DATUM ' ' SY-UZEIT ' ' SY-TCODE ' ' FNAME 'MSGID:' SY-MSGID 'MSGTYPE:' SY-MSGTY 'MSGNO:' SY-MSGNO
* 'MSGTXT:' SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4 INTO IT_LOG-LOG.
** APPEND IT_LOG.
**--------------LOG APPEND--------------
* APPEND IT_LOG.
* APPEND LINES OF IT_LOG TO IT_LOG_FINAL.
* CLEAR IT_LOG.
* REFRESH IT_LOG.
*
* CALL FUNCTION 'GUI_DOWNLOAD'
* EXPORTING
* FILENAME = LOG_PATH
* WRITE_LF = 'X'
* FILETYPE = 'ASC'
* TABLES
* DATA_TAB = IT_LOG_FINAL "I_OUTTAB
* EXCEPTIONS
* OTHERS = 4.
**--------------------------------
*
*ELSE.
* CONCATENATE IT_LOG-LOG ' SUCCESS: ' SY-UNAME ' ' SY-DATUM ' ' SY-UZEIT ' ' SY-TCODE '' INTO IT_LOG-LOG.
* CONCATENATE IT_LOG-LOG FNAME ' DATA FILE UPLOAD SUCCEED ! ' INTO IT_LOG-LOG.
**--------------------------------
* APPEND IT_LOG.
*
*ENDIF.
*

********************************************
*********************************************
*********************************************
*
**------------------------------------LOCAL FIELS UPLOAD FINSHED----------------------------*
*LOOP AT TAB INTO LIN.
*
**WRITE:/
**'LIN-BU_PARTNER = ' , LIN-BU_PARTNER,/
**'LIN-BU_TYPE BU_GROUP = ' ,LIN-BU_TYPE,/
**'LIN-BU_PARTNERROLECAT = ',LIN-BU_PARTNERROLECAT1,/
**'LIN-AD_TITLETX = ',LIN-AD_TITLETX.
*
**------------------------------------BP COMPANY CREATING-----------------------------------*
*
***-------------------values input----------------------*
*
*
**BAPIBUS1006_HEAD-BPARTNER
*BAPI_BP_DATA-PARTN_CAT = LIN-BU_TYPE .
*BAPI_BP_DATA-PARTN_GRP = LIN-BU_GROUP.
*BAPI_BP_DATA-PARTNERROLE = LIN-BU_PARTNERROLECAT1.
*
**BP_ROLE1 = LIN-BU_PARTNERROLECAT1.
**BP_ROLE2 = LIN-BU_PARTNERROLECAT2.
*
*BAPI_BP_DATA-PARTN_CAT = LIN-BU_TYPE.
*
*BAPI_BP_CENTRAL_DATA-TITLE_KEY = LIN-AD_TITLETX.
*BAPI_BP_CENTRAL_ORGAN_DATA-NAME1 = LIN-BU_NAMEOR1.
*BAPI_BP_CENTRAL_ORGAN_DATA-NAME2 = LIN-BU_NAMEOR2.
*BAPI_BP_CENTRAL_DATA-SEARCHTERM1 = LIN-BU_SORT1.
*BAPI_BP_ADDRESS_DATA-STREET = LIN-AD_STREET.
*BAPI_BP_ADDRESS_DATA-HOUSE_NO = LIN-AD_HSNM1.
*BAPI_BP_ADDRESS_DATA-STR_SUPPL3 = LIN-AD_STRSPP3.
*BAPI_BP_ADDRESS_DATA-POSTL_COD2 = LIN-AD_PSTCD1.
*BAPI_BP_ADDRESS_DATA-CITY = LIN-AD_CITY1.
*BAPI_BP_ADDRESS_DATA-DISTRICT = LIN-AD_CITY2.
*BAPI_BP_ADDRESS_DATA-COUNTRY = LIN-LAND1.
*BAPI_BP_ADDRESS_DATA-REGION = LIN-REGIO.
*BAPI_BP_ADDRESS_DATA-TRANSPZONE = LIN-LZONE.
*BAPI_BP_ADDRESS_DATA-TIME_ZONE = LIN-AD_TZONE.
*BAPI_BP_ADDRESS_DATA-LANGU = LIN-BU_LANGU .
*
*BAPI_BP_ADDRESS_DATA-PO_BOX = '12345'.
*
*BAPI_BP_TEL_DATA-TELEPHONE = LIN-AD_TLNMBR.
*BAPI_BP_FAX_DATA-FAX = LIN-AD_FXNMBR.
*BAPI_BP_ADDRESS_DATA-AD_SMTPADR = LIN-AD_SMTPADR.
*
**LIN-BU_ID_TYPE = 'CRM001'.
*BAPI_BP_HEAD_DATA-EXTERN_NO = LIN-BU_ID_NUMBER.
*
*BAPI_BP_TAX_DATA-TAXTYPE = LIN-BPTAXNUMTYPE.
*BAPI_BP_TAX_DATA-TAXNUMBER = LIN-BPTAXNUM.
*
**LIN-BU_NATURAL_PERSON = 'X'.
**LIN-BUTX_TAX_CTY = 'CN'.
**LIN-BUTX_TAX_TYPE = 'MWST'.
**LIN-BUTX_TAX_GROUP = 'FULL'.
*
*BAPI_BP_BANK_DATA-BANK_CTRY = LIN-BANKS."CN" DEFAULT
*BAPI_BP_BANK_DATA-BANK_KEY = LIN-BANKK.
*BAPI_BP_BANK_DATA-BANK_ACCT = LIN-BANKN.
*BAPI_BP_BANK_DATA-ACCOUNTHOLDER = LIN-BU_KOINH.
*
*BAPI_BP_SALESCLASS_DATA-ACCOUNT_GROUP = LIN-CRMT_BU_ACCOUNT_GROUP .
*
*BAPI_BP_SALEAREA_DATA-SALES_ORGANIZATION = LIN-CRMT_SALES_ORG .
*BAPI_BP_SALEAREA_DATA-DISTRIBUTION_CHANNEL = LIN-CRMT_DISTRIBUTION_CHANNEL .
*BAPI_BP_SALEAREA_DATA-DIVISION = LIN-CRMT_DIVISION .
*
*BAPI_BP_SHIPPING_DATA-INCOTERMS1 = LIN-CRMT_INCOTERMS1 .
*BAPI_BP_SHIPPING_DATA-INCOTERMS2 = LIN-CRMT_INCOTERMS2 .
*BAPI_BP_SHIPPING_DATA-SHIPPING_COND = LIN-CRMT_SHIP_COND .
*BAPI_BP_SHIPPING_DATA-DLV_PRIORITY = LIN-CRMT_DLV_PRIO .
*BAPI_BP_SHIPPING_DATA-PARTIAL_DLV = LIN-CRMT_PART_DLV .
**BAPI_BP_SHIPPING_DATA-PART_DLV_ITM = LIN-CRMT_PART_DLV_ITM .
*
*BAPI_BP_PRICING_DATA-CUST_PRIC_PROC = LIN-CRMT_CUST_PRIC_PROC .
*BAPI_BP_PRICING_DATA-CURRENCY = LIN-CRMT_CURRENCY .
*BAPI_BP_PRICING_DATA-PAYMENT_TERMS = LIN-CRMT_PMNTTRMS .
*BAPI_BP_PRICING_DATA-PRICE_GROUP = LIN-CRMT_PRICE_GRP .
*BAPI_BP_SHIPPING_DATA-CUSTOMER_GROUP = LIN-CRMT_CUST_GROUP.
*BAPI_BP_PRICING_DATA-ACCOUNT_ASGNGRP = LIN-CRM_ACCTGRPBP .
*
*BAPI_BP_ORG_DATA-SALES_OFFICE = LIN-CRMT_SALES_OFFICE .
*BAPI_BP_ORG_DATA-SALES_GROUP = LIN-CRMT_SALES_GROUP .
*
*
***/1/-------------------NEW BP :ROLE 000000----------------------*
**BAPI call
*CALL FUNCTION 'BAPI_BUPA_CREATE_FROM_DATA'
*EXPORTING
** businesspartnerextern = ''
* partnercategory = BAPI_BP_DATA-PARTN_CAT
* partnergroup = BAPI_BP_DATA-PARTN_GRP
* centraldata = BAPI_BP_CENTRAL_DATA
** centraldataperson
* centraldataorganization = BAPI_BP_CENTRAL_ORGAN_DATA
** centraldatagroup
* addressdata = BAPI_BP_ADDRESS_DATA
** duplicate_message_type
** accept_error = BAPI_BP_ERROR_DATA-ACCEPT_ERR
*IMPORTING
* BUSINESSPARTNER = BAPI_BP_DATA-BPARTNER"BAPI_BP_ERROR_DATA-"LIN-BU_PARTNER
*TABLES
* RETURN = lT_return.
*
*CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* wait = 'X'
*IMPORTING
* RETURN = ls_return.
*
**ROLE_EXISTENCE_CHECK*
*CALL FUNCTION 'BAPI_BUPA_ROLE_EXISTENCE_CHECK'
* EXPORTING
* BUSINESSPARTNER = BAPI_BP_DATA-BPARTNER
* BUSINESSPARTNERROLE = BAPI_BP_DATA-PARTNERROLE
*TABLES
* RETURN = lT_return.
*
*IF SY-SUBRC EQ 0.
**LOOP AT lt_return INTO ls_return WHERE type EQ 'S'.
* WRITE:/' BP ',BAPI_BP_DATA-BPARTNER,' ROLE : ',LIN-BU_PARTNERROLECAT1,'CREATING SUCCESS! '.
**ENDLOOP.
* CONCATENATE ' BP ' BAPI_BP_DATA-BPARTNER ' ROLE : ' LIN-BU_PARTNERROLECAT1 'CREATING SUCCESS! ' INTO IT_LOG-LOG.
* APPEND IT_LOG.
*ENDIF.
*
***/2/-------------------BP ROLE CRM000 ADD----------------------*
**BAPI_BP_DATA-BPARTNER = LIN-BU_PARTNER.
*BAPI_BP_DATA-PARTNERROLE = LIN-BU_PARTNERROLECAT2."ROLE 2 WAS INPUTED
*
*CALL FUNCTION 'BAPI_BUPA_ROLE_ADD'
* EXPORTING
* BUSINESSPARTNER = BAPI_BP_DATA-BPARTNER
* BUSINESSPARTNERROLE = BAPI_BP_DATA-PARTNERROLE
*TABLES
* RETURN = lT_return.
*
*CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* wait = 'X'
*IMPORTING
* RETURN = ls_return.
*
**ROLE_EXISTENCE_CHECK*
*CALL FUNCTION 'BAPI_BUPA_ROLE_EXISTENCE_CHECK'
* EXPORTING
* BUSINESSPARTNER = BAPI_BP_DATA-BPARTNER
* BUSINESSPARTNERROLE = BAPI_BP_DATA-PARTNERROLE
*TABLES
* RETURN = lT_return.
*
*IF SY-SUBRC EQ 0.
**LOOP AT lt_return INTO ls_return WHERE type EQ 'S'.
* WRITE:/' BP ',BAPI_BP_DATA-BPARTNER,' ROLE : ',LIN-BU_PARTNERROLECAT2,'CREATING SUCCESS! '.
**ENDLOOP.
* CONCATENATE ' BP ' BAPI_BP_DATA-BPARTNER ' ROLE : ' LIN-BU_PARTNERROLECAT2 'CREATING SUCCESS! ' INTO IT_LOG-LOG.
* APPEND IT_LOG.
*ENDIF.
*
***/3/-------------------BP ADDRESS ADD----------------------*
**BAPI_BP_DATA-BPARTNER = LIN-BU_PARTNER.
**BAPI_BP_DATA-PARTNERROLE = LIN-BU_PARTNERROLECAT2.
*
*CALL FUNCTION 'BAPI_BUPA_ADDRESS_ADD'
* EXPORTING
* BUSINESSPARTNER = BAPI_BP_DATA-BPARTNER
* ADDRESSDATA = BAPI_BP_ADDRESS_DATA
*TABLES
* RETURN = lT_return.
*
*CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* wait = 'X'
*IMPORTING
* RETURN = ls_return.
*
*IF SY-SUBRC EQ 0.
**LOOP AT lt_return INTO ls_return WHERE type EQ 'S'.
* WRITE:/' BP ',BAPI_BP_DATA-BPARTNER,' ADDRESS ADDING SUCCESS! '.
**ENDLOOP.
* CONCATENATE ' BP ' BAPI_BP_DATA-BPARTNER ' ADDRESS ADDING SUCCESS! ' INTO IT_LOG-LOG.
* APPEND IT_LOG.
*ENDIF.
*
***/4/-------------------BP BANKDETAIL ADD----------------------*
**BAPI_BP_DATA-BPARTNER = LIN-BU_PARTNER.
**BAPI_BP_DATA-PARTNERROLE = LIN-BU_PARTNERROLECAT2.
*
*CALL FUNCTION 'BAPI_BUPA_BANKDETAIL_ADD'
* EXPORTING
* BUSINESSPARTNER = BAPI_BP_DATA-BPARTNER
* BANKDETAILDATA = BAPI_BP_BANK_DATA
*TABLES
* RETURN = lT_return.
*
*CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* wait = 'X'
*IMPORTING
* RETURN = ls_return.
*
*IF SY-SUBRC EQ 0.
**LOOP AT lt_return INTO ls_return WHERE type EQ 'S'.
* WRITE:/' BP ',BAPI_BP_DATA-BPARTNER,' BANKDETAIL ADDING SUCCESS! '.
**ENDLOOP.
* CONCATENATE ' BP ' BAPI_BP_DATA-BPARTNER ' BANKDETAIL ADDING SUCCESS! ' INTO IT_LOG-LOG.
* APPEND IT_LOG.
*ENDIF.
*
***/5/-------------------BP TAX ADD----------------------*
*CALL FUNCTION 'BAPI_BUPA_TAX_ADD'
* EXPORTING
* BUSINESSPARTNER = BAPI_BP_DATA-BPARTNER
* TAXTYPE = BAPI_BP_TAX_DATA-TAXTYPE
* TAXNUMBER = BAPI_BP_TAX_DATA-TAXNUMBER
*TABLES
* RETURN = lT_return.
*
*CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* wait = 'X'
*IMPORTING
* RETURN = ls_return.
*
*IF SY-SUBRC EQ 0.
* WRITE:/' BP ',BAPI_BP_DATA-BPARTNER,' TAX ADDING SUCCESS! '.
* CONCATENATE ' BP ' BAPI_BP_DATA-BPARTNER ' TAX ADDING SUCCESS! ' INTO IT_LOG-LOG.
* APPEND IT_LOG.
*ENDIF.
*
**BAPI_BUPA_FRG0040_CREATE
***/5/-------------------BP Sales Classification ADD----------------------*
*CALL FUNCTION 'BAPI_BUPA_FRG0040_CREATE'
* EXPORTING
* BUSINESSPARTNER = BAPI_BP_DATA-BPARTNER
* DATA = BAPI_BP_SALESCLASS_DATA
** DATAX = BAPI_BP_SALESCLASSX_DATA
*TABLES
* RETURN = lT_return.
*
*CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* wait = 'X'
*IMPORTING
* RETURN = ls_return.
*
*IF SY-SUBRC EQ 0.
* WRITE:/' BP ',BAPI_BP_DATA-BPARTNER,' Sales Classification SUCCESS! '.
* CONCATENATE ' BP ' BAPI_BP_DATA-BPARTNER ' Sales Classification SUCCESS! ' INTO IT_LOG-LOG.
* APPEND IT_LOG.
*ENDIF.
*
*
***/6/-------------------BP sale area data ADD----------------------*
**---NEW ORG----*
**NEW SALE OFFICE
**NEW SALE GROUP
**NEW SALE DIETRICT
*
*CALL FUNCTION 'BAPI_BUPA_FRG0010_ADD'
* EXPORTING
* BUSINESSPARTNER = BAPI_BP_DATA-BPARTNER
* SALES_AREA = BAPI_BP_SALEAREA_DATA
* DATA = BAPI_BP_SALES_DATA
*TABLES
* RETURN = lT_return.
*
*CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* wait = 'X'
*IMPORTING
* RETURN = ls_return.
*
**--------------ATTENTION-------------*
**SUBMIT HRBCI_ATTRIBUTES_BUFFER_UPDATE.
**HRBCI_ATTRIBUTES_BUFFER_UPDATE
**--------------ATTENTION-------------*
*
*IF SY-SUBRC EQ 0.
* WRITE:/' BP ',BAPI_BP_DATA-BPARTNER,' SALE AREA DATA ADDING SUCCESS! '.
* CONCATENATE ' BP ' BAPI_BP_DATA-BPARTNER ' SALE AREA DATA ADDING SUCCESS! ' INTO IT_LOG-LOG.
* APPEND IT_LOG.
*ENDIF.
*
***/7/-------------------BP sale area SHIPPING data ADD----------------------*
**---NEW SHIPPING DATA----*
**---
*
*CALL FUNCTION 'BAPI_BUPA_FRG0020_ADD'
* EXPORTING
* BUSINESSPARTNER = BAPI_BP_DATA-BPARTNER
* SALES_AREA = BAPI_BP_SALEAREA_DATA
* DATA = BAPI_BP_SHIPPING_DATA
*TABLES
* RETURN = lT_return.
*
*CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* wait = 'X'
*IMPORTING
* RETURN = ls_return.
*
*IF SY-SUBRC EQ 0.
* WRITE:/' BP ',BAPI_BP_DATA-BPARTNER,' SALE AREA DATA ADDING SUCCESS! '.
* CONCATENATE ' BP ' BAPI_BP_DATA-BPARTNER ' SALE AREA DATA ADDING SUCCESS! ' INTO IT_LOG-LOG.
* APPEND IT_LOG.
*ENDIF.
*
***/8/-------------------BP sale area BILLING data ADD----------------------*
**---NEW SHIPPING DATA----*
**---
*
*CALL FUNCTION 'BAPI_BUPA_FRG0030_ADD'
* EXPORTING
* BUSINESSPARTNER = BAPI_BP_DATA-BPARTNER
* SALES_AREA = BAPI_BP_SALEAREA_DATA
* DATA = BAPI_BP_PRICING_DATA
*TABLES
* RETURN = lT_return.
*
*CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* wait = 'X'
*IMPORTING
* RETURN = ls_return.
*
*IF SY-SUBRC EQ 0.
* WRITE:/' BP ',BAPI_BP_DATA-BPARTNER,' PRICE DATA ADDING SUCCESS! '.
* CONCATENATE ' BP ' BAPI_BP_DATA-BPARTNER ' PRICE DATA ADDING SUCCESS! ' INTO IT_LOG-LOG.
* APPEND IT_LOG.
*ENDIF.
*
*
***/9/-------------------BP Organizational Data ADD----------------------*
**---NEW SHIPPING DATA----*
**---
*
*CALL FUNCTION 'BAPI_BUPA_FRG0140_ADD'
* EXPORTING
* BUSINESSPARTNER = BAPI_BP_DATA-BPARTNER
* SALES_AREA = BAPI_BP_SALEAREA_DATA
* DATA = BAPI_BP_ORG_DATA
*TABLES
* RETURN = lT_return.
*
*CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* wait = 'X'
*IMPORTING
* RETURN = ls_return.
*
*IF SY-SUBRC EQ 0.
* WRITE:/' BP ',BAPI_BP_DATA-BPARTNER,' BP Organizational Data ADDING SUCCESS! '.
* CONCATENATE ' BP ' BAPI_BP_DATA-BPARTNER ' BP Organizational Data ADDING SUCCESS! ' INTO IT_LOG-LOG.
* APPEND IT_LOG.
*ENDIF.
*
***-------------------------BP CREATING ACTULLY SUCCESS---------------------------*
*WRITE :/'BP' , BAPI_BP_DATA-BPARTNER,' WAS CREATED ! '.
*CONCATENATE ' BP ' BAPI_BP_DATA-BPARTNER ' CREATING SUCCESS! ' INTO IT_LOG-LOG.
* APPEND IT_LOG.
**-------------------------BP COMPANY CREATING FINSHED----------------------------*
*
*ENDLOOP.
*
*

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

APPEND LINES OF IT_LOG TO IT_LOG_FINAL.
CLEAR IT_LOG.
REFRESH IT_LOG.

CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = LOG_PATH
WRITE_LF = 'X'
FILETYPE = 'ASC'
TABLES
DATA_TAB = IT_LOG_FINAL "I_OUTTAB
EXCEPTIONS
OTHERS = 4.

*refresh it_log_final.
*--------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: