BP分客商
客户分基本数据KNA1
角色数据 BUT100
地址数据 adrc ,BUT021_FS
公司数据KNB1
销售视图数据 KNVV
合作伙伴 KNVP
税 KNVI
标识数据 dfkkbptaxnum
采购数据 LFM1
采购公司数据 lfb1
FORM FRM_SYNBP.
DATA:LTOKEN TYPE STRING.
DATA: LL_LINES(10),"行数
LL_TABIX(10),"循环标号
LL_PECNT TYPE P LENGTH 6 DECIMALS 2, "百分比
LL_PECET(6),"百分数
LL_TEXT(40)."消息
CLEAR: LL_LINES,LL_TABIX,LL_PECNT,LL_PECET,LL_TEXT.
DATA: LEN TYPE I, "发送报文长度
LEN_STRING TYPE STRING,
URL TYPE STRING, "接口地址
SQLSTR TYPE STRING,
LV_SERVER_NAME TYPE ZE_SERVER_NAME,
POST_STRING TYPE STRING,
RESULT TYPE STRING,
LTIMEEND TYPE STRING, "时间戳结束
LTIMEST TYPE STRING. "时间戳开始
DATA: L_JSON_ROOT_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: L_ERRORTYPE_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: L_SAP_TEST_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: L_ERRORNO_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: L_SAP_TEST_ROW1_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: L_SAP_TEST_FUNC_ID_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: LTAR TYPE TABLE OF ZCL_MDP_JSON_NODE=>TYP_ARRAY_CHILDREN.
DATA: LTARS TYPE TABLE OF ZCL_MDP_JSON_NODE=>TYP_ARRAY_CHILDREN.
DATA: LBUTPARTNER LIKE BUT000-PARTNER.
DATA: LT_DATA TYPE CVIS_EI_EXTERN_T,
LT_DATAU TYPE CVIS_EI_EXTERN_T,
LS_DATA TYPE CVIS_EI_EXTERN,
LT_CMDSALE TYPE CMDS_EI_SALES_T,
LS_CMDSALE TYPE CMDS_EI_SALES,
LS_PAADR TYPE BUS_EI_BUPA_ADDRESS,
LS_BANK TYPE BUS_EI_BUPA_BANKDETAIL,
LS_SALES TYPE CMDS_EI_SALES,
LT_SALES TYPE CMDS_EI_SALES_T,
LS_TAX TYPE CMDS_EI_TAX_IND,
LT_TAX TYPE CMDS_EI_TAX_IND_T.
DATA: LV_GUID TYPE GUID_16,
LV_BPGUID TYPE BU_PARTNER_GUID.
DATA:
LT_ROLES TYPE BUS_EI_BUPA_ROLES_T,
LS_ROLES TYPE BUS_EI_BUPA_ROLES,
* LS_BANK_ADDRESS TYPE BAPI1011_ADDRESS,
* LS_BANK_RETURN TYPE BAPIRET2,
LT_BANK TYPE TABLE OF BUS_EI_BUPA_BANKDETAIL,
LS_FUNCTIONS_S TYPE CMDS_EI_FUNCTIONS,
LS_FUNCTIONS_T TYPE CMDS_EI_FUNCTIONS_T,
LT_RETURN_MAP TYPE MDG_BS_BP_MSGMAP_T,
LS_PURCHASING TYPE VMDS_EI_PURCHASING,
LT_PURCHASING TYPE TABLE OF VMDS_EI_PURCHASING,
LS_FUNCTIONS TYPE VMDS_EI_FUNCTIONS,
LT_FUNCTIONS TYPE VMDS_EI_FUNCTIONS_T,
LT_RETURN_KONZS TYPE BAPIRETM,
LT_RETURN TYPE BAPIRETM,
LT_RETURN_TAX TYPE TABLE OF BAPIRET2 WITH HEADER LINE,
LS_ADDRESSUSAGE TYPE BUS_EI_BUPA_ADDRESSUSAGE,
LT_ADDRESSUSAGE TYPE BUS_EI_BUPA_ADDRESSUSAGE_T,
LT_PAADR TYPE TABLE OF BUS_EI_BUPA_ADDRESS.
DATA:LT_INDU TYPE TABLE OF BUS_EI_BUPA_INDUSTRYSECTOR. "行业
DATA:LT_COMPANY TYPE TABLE OF CMDS_EI_COMPANY.
DATA:LT_COMPANYV TYPE TABLE OF VMDS_EI_COMPANY.
DATA:BEGIN OF LT_BUT021 OCCURS 0 ,
PARTNER LIKE BUT020-PARTNER,
ADDRNUMBER LIKE BUT020-ADDRNUMBER,
ADDRESS_GUID LIKE BUT020-ADDRESS_GUID,
ADR_KIND LIKE BUT021_FS-ADR_KIND,
END OF LT_BUT021.
IF S_PARTNR IS INITIAL.
SQLSTR = 'SELECT PARTNER FROM BUT000 WHERE CLIENT = 800'.
ELSE.
IF S_PARTNR-HIGH IS INITIAL.
S_PARTNR-HIGH = S_PARTNR-LOW.
ENDIF.
SQLSTR = 'SELECT PARTNER FROM BUT000 WHERE CLIENT = 800 AND PARTNER BETWEEN ''' && S_PARTNR-LOW && ''' AND ''' && S_PARTNR-HIGH && ''''.
ENDIF.
PERFORM FRM_SYNOBJ(ZABAP_COMMON_PROGRAM) USING LV_URL_STR SQLSTR CHANGING L_JSON_ROOT_OBJECT.
DATA: L_STRING TYPE STRING.
DATA:CNT TYPE I.
DATA:PINDX TYPE I.
L_ERRORTYPE_OBJECT = L_JSON_ROOT_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'RESULT').
LTAR = L_ERRORTYPE_OBJECT->ARRAY_CHILDREN().
DESCRIBE TABLE LTAR LINES CNT.
LOOP AT LTAR INTO DATA(LSAR).
PINDX = SY-TABIX.
L_SAP_TEST_OBJECT = LSAR-NODE.
L_SAP_TEST_FUNC_ID_OBJECT = L_SAP_TEST_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'PARTNER' ).
LBUTPARTNER = L_SAP_TEST_FUNC_ID_OBJECT->VALUE.
* WRITE:/ '开始同步第' && PINDX && '/' && CNT && '物料' && LS_MARA-MATERIAL.
SELECT * FROM BUT000 INTO TABLE @DATA(LBUT) WHERE PARTNER = @LBUTPARTNER.
IF LBUT[] IS INITIAL AND SY-SUBRC = 0.
CONTINUE.
* 已有编号不做处理
ENDIF.
TRY.
CALL METHOD CL_SYSTEM_UUID=>IF_SYSTEM_UUID_STATIC~CREATE_UUID_X16
RECEIVING
UUID = LV_GUID.
CATCH CX_UUID_ERROR .
ENDTRY.
SQLSTR = 'SELECT PARTNER,TYPE,BU_GROUP,TITLE,BU_SORT1,BU_SORT2,NAME_ORG1,NAME_ORG2,NAME_ORG3,NAME_ORG4,TITLE_LET FROM BUT000 WHERE CLIENT = 800 AND PARTNER = ''' && LBUTPARTNER && ''''.
PERFORM FRM_SYNOBJ(ZABAP_COMMON_PROGRAM) USING LV_URL_STR SQLSTR CHANGING L_JSON_ROOT_OBJECT.
L_ERRORTYPE_OBJECT = L_JSON_ROOT_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'RESULT').
LTARS = L_ERRORTYPE_OBJECT->ARRAY_CHILDREN().
LOOP AT LTARS INTO LSAR.
CLEAR LT_DATA[].
L_SAP_TEST_OBJECT = LSAR-NODE.
LS_DATA-PARTNER-HEADER-OBJECT_TASK = 'I'.
LS_DATA-PARTNER-HEADER-OBJECT_INSTANCE-BPARTNER = LBUTPARTNER. "业务伙伴编号
LS_DATA-PARTNER-HEADER-OBJECT_INSTANCE-BPARTNERGUID = LV_GUID. "BAPI 的 CHAR 32 格式业务伙伴地址的全局唯一标识符
*--- Partner / Central data / common ------------------------------*
L_SAP_TEST_FUNC_ID_OBJECT = L_SAP_TEST_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'TYPE' ).
LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CONTROL-CATEGORY = L_SAP_TEST_FUNC_ID_OBJECT->VALUE. "业务伙伴类别
L_SAP_TEST_FUNC_ID_OBJECT = L_SAP_TEST_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'BU_GROUP' ).
LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CONTROL-GROUPING = L_SAP_TEST_FUNC_ID_OBJECT->VALUE. "业务伙伴分组
* * 业务伙伴角色 [若传入的BU_GROUP=Z005和Z006,默认角色FLCU00和FLCU01,其他的默认角色ZFLCU0、ZFLCU1和ZUKM00]
PERFORM GETINILROLES USING LV_URL_STR LBUTPARTNER CHANGING LT_ROLES.
LS_DATA-PARTNER-HEADER-OBJECT_INSTANCE-BPARTNER = LBUTPARTNER.
LS_DATA-PARTNER-CENTRAL_DATA-ROLE-ROLES = LT_ROLES. "外部接口:角色数据
L_SAP_TEST_FUNC_ID_OBJECT = L_SAP_TEST_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'TITLE' ).
LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CENTRALDATA-TITLE_KEY = L_SAP_TEST_FUNC_ID_OBJECT->VALUE. "称谓代码
L_SAP_TEST_FUNC_ID_OBJECT = L_SAP_TEST_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'BU_SORT1' ).
LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CENTRALDATA-SEARCHTERM1 = L_SAP_TEST_FUNC_ID_OBJECT->VALUE. "客商简称
L_SAP_TEST_FUNC_ID_OBJECT = L_SAP_TEST_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'BU_SORT2' ).
LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CENTRALDATA-SEARCHTERM2 = L_SAP_TEST_FUNC_ID_OBJECT->VALUE. "原系统编号
LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_CENTRALDATA-TITLE_KEY = ABAP_TRUE.
LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_CENTRALDATA-SEARCHTERM1 = ABAP_TRUE.
LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_CENTRALDATA-SEARCHTERM2 = ABAP_TRUE.
* 若客商名称1字段值的长度超40位字符,超40位的部分写入客商名称2字段
L_SAP_TEST_FUNC_ID_OBJECT = L_SAP_TEST_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'NAME_ORG1' ).
LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_ORGANIZATION-NAME1 = L_SAP_TEST_FUNC_ID_OBJECT->VALUE. "客商名称1
L_SAP_TEST_FUNC_ID_OBJECT = L_SAP_TEST_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'NAME_ORG2' ).
LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_ORGANIZATION-NAME2 = L_SAP_TEST_FUNC_ID_OBJECT->VALUE. "客商名称2
L_SAP_TEST_FUNC_ID_OBJECT = L_SAP_TEST_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'NAME_ORG3' ).
LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_ORGANIZATION-NAME3 = L_SAP_TEST_FUNC_ID_OBJECT->VALUE. "客商名称3
L_SAP_TEST_FUNC_ID_OBJECT = L_SAP_TEST_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'NAME_ORG4' ).
LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_ORGANIZATION-NAME4 = L_SAP_TEST_FUNC_ID_OBJECT->VALUE. "客商名称4
LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_ORGANIZATION-NAME1 = ABAP_TRUE.
LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_ORGANIZATION-NAME2 = ABAP_TRUE.
LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_ORGANIZATION-NAME3 = ABAP_TRUE.
LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_ORGANIZATION-NAME4 = ABAP_TRUE.
L_SAP_TEST_FUNC_ID_OBJECT = L_SAP_TEST_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'TITLE_LET' ).
LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CENTRALDATA-TITLELETTER = L_SAP_TEST_FUNC_ID_OBJECT->VALUE.
LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_CENTRALDATA-TITLELETTER = ABAP_TRUE.
PERFORM GETADDRESSINFO USING LV_URL_STR LBUTPARTNER CHANGING LT_PAADR[].
LS_DATA-PARTNER-CENTRAL_DATA-ADDRESS-ADDRESSES = LT_PAADR[].
PERFORM GETINDUSINFO USING LV_URL_STR LBUTPARTNER CHANGING LT_INDU[].
IF LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CONTROL-GROUPING <> 'Z004'.
LS_DATA-PARTNER-CENTRAL_DATA-INDUSTRY-INDUSTRIES = LT_INDU[].
LS_DATA-PARTNER-CENTRAL_DATA-INDUSTRY-CURRENT_STATE = 'X'.
ENDIF.
* CLEAR LT_BANK[].
* PERFORM GETBANKINFO USING LV_URL_STR LBUTPARTNER CHANGING LT_BANK[].
PERFORM GETCOMPINFO4KUNNR USING LV_URL_STR LBUTPARTNER CHANGING LT_COMPANY[].
LS_DATA-CUSTOMER-COMPANY_DATA-COMPANY = LT_COMPANY[].
LS_DATA-CUSTOMER-HEADER-OBJECT_INSTANCE-KUNNR = LBUTPARTNER.
CLEAR LT_COMPANYV[].
PERFORM GETCOMPINFO4LIFNR USING LV_URL_STR LBUTPARTNER CHANGING LT_COMPANYV[].
LS_DATA-VENDOR-COMPANY_DATA-COMPANY = LT_COMPANYV[].
LS_DATA-VENDOR-HEADER-OBJECT_INSTANCE-LIFNR = LBUTPARTNER.
PERFORM GETKNVVINFO USING LV_URL_STR LBUTPARTNER CHANGING LT_SALES[].
LS_DATA-CUSTOMER-SALES_DATA-SALES = LT_SALES[].
PERFORM GETKNVIINFO USING LV_URL_STR LBUTPARTNER CHANGING LT_TAX[].
LS_DATA-CUSTOMER-CENTRAL_DATA-TAX_IND-TAX_IND = LT_TAX[].
CLEAR LT_PURCHASING[].
PERFORM GETLFMIINFO USING LV_URL_STR LBUTPARTNER CHANGING LT_PURCHASING[].
LS_DATA-VENDOR-PURCHASING_DATA-PURCHASING = LT_PURCHASING[].
APPEND LS_DATA TO LT_DATA.
CALL METHOD CL_MD_BP_MAINTAIN=>VALIDATE_SINGLE
EXPORTING
I_DATA = LS_DATA "lt_data
IMPORTING
ET_RETURN_MAP = LT_RETURN_MAP. "lt_return.
IF LT_RETURN_MAP IS INITIAL.
CALL METHOD CL_MD_BP_MAINTAIN=>MAINTAIN
EXPORTING
I_DATA = LT_DATA
IMPORTING
E_RETURN = LT_RETURN.
*------------------COMMIT BAPI ----------------------------*
LOOP AT LT_RETURN INTO DATA(LS_RETURN).
LOOP AT LS_RETURN-OBJECT_MSG INTO DATA(LS_RETMSG) WHERE TYPE CA 'EXA'.
CLEAR: LL_TEXT.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = LS_RETMSG-ID
MSGNR = LS_RETMSG-NUMBER
MSGV1 = LS_RETMSG-MESSAGE_V1
MSGV2 = LS_RETMSG-MESSAGE_V2
MSGV3 = LS_RETMSG-MESSAGE_V3
MSGV4 = LS_RETMSG-MESSAGE_V4
IMPORTING
MESSAGE_TEXT_OUTPUT = LL_TEXT.
* CONCATENATE OUTPUT-ITEM-EV_MSG LL_TEXT INTO OUTPUT-ITEM-EV_MSG.
ENDLOOP.
ENDLOOP.
IF LL_TEXT IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
DO 10 TIMES.
SELECT SINGLE PARTNER INTO @DATA(LSPTMP)
FROM BUT000 WHERE PARTNER_GUID = @LV_GUID.
IF SY-SUBRC = 0.
EXIT.
ELSE.
WAIT UP TO 1 SECONDS.
ENDIF.
ENDDO.
ENDIF.
ENDIF.
PERFORM MAINTAXNUM USING LV_URL_STR LBUTPARTNER.
ENDLOOP.
ENDLOOP.
ENDFORM.
FORM MAINTAXNUM USING PURL TYPE STRING PARTNER TYPE BUT000-PARTNER.
DATA:SQLSTR TYPE STRING.
DATA: L_JSON_ROOT_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: L_ERRORTYPE_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: LTAR TYPE TABLE OF ZCL_MDP_JSON_NODE=>TYP_ARRAY_CHILDREN.
DATA: L_SAP_ROW_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: L_SAP_COL_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: LTAXTYPE TYPE DFKKBPTAXNUM-TAXTYPE,
LTAXNUMXL TYPE DFKKBPTAXNUM-TAXNUMXL,
LBPARTNER TYPE DFKKBPTAXNUM-PARTNER.
LBPARTNER = PARTNER.
SQLSTR = 'SELECT * FROM DFKKBPTAXNUM WHERE CLIENT = 800 AND PARTNER = ''' && PARTNER && ''''.
PERFORM FRM_SYNOBJ(ZABAP_COMMON_PROGRAM) USING PURL SQLSTR CHANGING L_JSON_ROOT_OBJECT.
L_ERRORTYPE_OBJECT = L_JSON_ROOT_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'RESULT').
LTAR = L_ERRORTYPE_OBJECT->ARRAY_CHILDREN().
LOOP AT LTAR INTO DATA(LSAR).
L_SAP_ROW_OBJECT = LSAR-NODE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'TAXTYPE' ).
LTAXTYPE = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'TAXNUMXL' ).
LTAXNUMXL = L_SAP_COL_OBJECT->VALUE.
CALL FUNCTION 'BAPI_BUPA_TAX_ADD'
EXPORTING
BUSINESSPARTNER = LBPARTNER
TAXTYPE = LTAXTYPE
TAXNUMBER = LTAXNUMXL.
ENDLOOP.
ENDFORM.
FORM GETLFMIINFO USING PURL TYPE STRING PARTNER TYPE BUT000-PARTNER CHANGING LT_PURCHASING TYPE STANDARD TABLE.
DATA:LS_PURCHASING TYPE VMDS_EI_PURCHASING.
DATA:SQLSTR TYPE STRING.
DATA: L_JSON_ROOT_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: L_ERRORTYPE_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: LTAR TYPE TABLE OF ZCL_MDP_JSON_NODE=>TYP_ARRAY_CHILDREN.
DATA: L_SAP_ROW_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: L_SAP_COL_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA:LS_FUNCTIONS TYPE VMDS_EI_FUNCTIONS,
LT_FUNCTIONS TYPE VMDS_EI_FUNCTIONS_T.
SQLSTR = 'SELECT * FROM LFM1 WHERE mandt = 800 and LIFNR = ''' && PARTNER && ''''.
PERFORM FRM_SYNOBJ(ZABAP_COMMON_PROGRAM) USING PURL SQLSTR CHANGING L_JSON_ROOT_OBJECT.
L_ERRORTYPE_OBJECT = L_JSON_ROOT_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'RESULT').
LTAR = L_ERRORTYPE_OBJECT->ARRAY_CHILDREN().
LOOP AT LTAR INTO DATA(LSAR).
CLEAR: LS_PURCHASING.
LS_PURCHASING-TASK = 'I'.
L_SAP_ROW_OBJECT = LSAR-NODE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'EKORG' ).
LS_PURCHASING-DATA_KEY-EKORG = L_SAP_COL_OBJECT->VALUE."采购组织
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'WAERS' ).
LS_PURCHASING-DATA-WAERS = L_SAP_COL_OBJECT->VALUE. "采购订单货币
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'WEBRE' ).
LS_PURCHASING-DATA-WEBRE = L_SAP_COL_OBJECT->VALUE. "标识:基于收货的发票验证
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZTERM' ).
LS_PURCHASING-DATA-ZTERM = L_SAP_COL_OBJECT->VALUE. "付款条件代码
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'LEBRE' ).
LS_PURCHASING-DATA-LEBRE = L_SAP_COL_OBJECT->VALUE. "基于服务的发票校验标识
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'KZAUT' ).
LS_PURCHASING-DATA-KZAUT = L_SAP_COL_OBJECT->VALUE. "自动产生允许的采购订单
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'XERSY' ).
LS_PURCHASING-DATA-XERSY = L_SAP_COL_OBJECT->VALUE. "评估收货结算 (ERS)
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'XERSR' ).
LS_PURCHASING-DATA-XERSR = L_SAP_COL_OBJECT->VALUE. "自动计算退回项目的接收安排
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'EKGRP' ).
LS_PURCHASING-DATA-EKGRP = L_SAP_COL_OBJECT->VALUE. "采购组
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'PLIFZ' ).
LS_PURCHASING-DATA-PLIFZ = L_SAP_COL_OBJECT->VALUE. "计划交货时间(天)
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'KALSK' ).
LS_PURCHASING-DATA-KALSK = L_SAP_COL_OBJECT->VALUE. "计算方案组(供应商)
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'SPERM' ).
LS_PURCHASING-DATA-SPERM = L_SAP_COL_OBJECT->VALUE. "采购冻结在采购组织层
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'LFABC' ).
LS_PURCHASING-DATA-LFABC = L_SAP_COL_OBJECT->VALUE. "ABC标识
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'VERKF' ).
LS_PURCHASING-DATA-VERKF = L_SAP_COL_OBJECT->VALUE. "销售人员
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'INCO1' ).
LS_PURCHASING-DATA-INCO1 = L_SAP_COL_OBJECT->VALUE. "国际贸易条款
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'INCO2' ).
LS_PURCHASING-DATA-INCO2_L = L_SAP_COL_OBJECT->VALUE. "国际贸易条款位置 1
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZOLLA' ).
LS_PURCHASING-DATA-ZOLLA = L_SAP_COL_OBJECT->VALUE. "海关
LS_PURCHASING-DATAX-WAERS = ABAP_TRUE.
LS_PURCHASING-DATAX-WEBRE = ABAP_TRUE.
LS_PURCHASING-DATAX-ZTERM = ABAP_TRUE.
LS_PURCHASING-DATAX-LEBRE = ABAP_TRUE. "基于服务的发票校验标识
LS_PURCHASING-DATAX-KZAUT = ABAP_TRUE. "自动产生允许的采购订单
LS_PURCHASING-DATAX-XERSY = ABAP_TRUE. "评估收货结算 (ERS)
LS_PURCHASING-DATAX-XERSR = ABAP_TRUE. "自动计算退回项目的接收安排
LS_PURCHASING-DATAX-EKGRP = ABAP_TRUE. "采购组
LS_PURCHASING-DATAX-PLIFZ = ABAP_TRUE. "计划交货时间(天)
LS_PURCHASING-DATAX-KALSK = ABAP_TRUE. "计算方案组(供应商)
LS_PURCHASING-DATAX-SPERM = ABAP_TRUE. "采购冻结在采购组织层
LS_PURCHASING-DATAX-LFABC = ABAP_TRUE. "ABC标识
LS_PURCHASING-DATAX-VERKF = ABAP_TRUE. "销售人员
LS_PURCHASING-DATAX-INCO1 = ABAP_TRUE. "国际贸易条款
LS_PURCHASING-DATAX-INCO2_L = ABAP_TRUE. "国际贸易条款位置 1
LS_PURCHASING-DATAX-ZOLLA = ABAP_TRUE. "海关
CLEAR: LS_FUNCTIONS,LT_FUNCTIONS.
LS_FUNCTIONS-TASK = 'I'.
LS_FUNCTIONS-DATA_KEY-PARVW = 'RS'. "付款方
LS_FUNCTIONS-DATA-DEFPA = 'X'.
LS_FUNCTIONS-DATAX-DEFPA = ABAP_TRUE.
LS_FUNCTIONS-DATA-PARTNER = PARTNER.
LS_FUNCTIONS-DATAX-PARTNER = ABAP_TRUE.
APPEND LS_FUNCTIONS TO LT_FUNCTIONS.
LS_PURCHASING-FUNCTIONS-FUNCTIONS = LT_FUNCTIONS.
LS_PURCHASING-FUNCTIONS-CURRENT_STATE = 'X'.
APPEND LS_PURCHASING TO LT_PURCHASING[].
ENDLOOP.
ENDFORM.
FORM GETKNVIINFO USING PURL TYPE STRING PARTNER TYPE BUT000-PARTNER CHANGING LT_TAX TYPE STANDARD TABLE.
DATA:LS_TAX TYPE CMDS_EI_TAX_IND.
DATA:SQLSTR TYPE STRING.
DATA: L_JSON_ROOT_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: L_ERRORTYPE_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: LTAR TYPE TABLE OF ZCL_MDP_JSON_NODE=>TYP_ARRAY_CHILDREN.
DATA: L_SAP_ROW_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: L_SAP_COL_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: LVKORG TYPE KNVV-VKORG,
LVTWEG TYPE KNVV-VTWEG,
LSPART TYPE KNVV-SPART.
SQLSTR = 'SELECT * FROM KNVI WHERE mandt = 800 and KUNNR = ''' && PARTNER && ''''.
PERFORM FRM_SYNOBJ(ZABAP_COMMON_PROGRAM) USING PURL SQLSTR CHANGING L_JSON_ROOT_OBJECT.
L_ERRORTYPE_OBJECT = L_JSON_ROOT_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'RESULT').
LTAR = L_ERRORTYPE_OBJECT->ARRAY_CHILDREN().
LOOP AT LTAR INTO DATA(LSAR).
CLEAR: LS_TAX.
LS_TAX-TASK = 'I'.
L_SAP_ROW_OBJECT = LSAR-NODE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ALAND' ).
LS_TAX-DATA_KEY-ALAND = L_SAP_COL_OBJECT->VALUE."启运国家
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'TATYP' ).
LS_TAX-DATA_KEY-TATYP = L_SAP_COL_OBJECT->VALUE."'MWST'. "税类别(营业税,联邦营业税,...)
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'TAXKD' ).
LS_TAX-DATA-TAXKD = L_SAP_COL_OBJECT->VALUE.
LS_TAX-DATAX-TAXKD = 'X'.
APPEND LS_TAX TO LT_TAX.
ENDLOOP.
ENDFORM.
FORM GETKNVVINFO USING PURL TYPE STRING PARTNER TYPE BUT000-PARTNER CHANGING LT_SALES TYPE STANDARD TABLE.
DATA: LS_CMDSALE TYPE CMDS_EI_SALES.
DATA:LS_FUNCTIONS_T TYPE CMDS_EI_FUNCTIONS_T.
DATA:SQLSTR TYPE STRING.
DATA: L_JSON_ROOT_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: L_ERRORTYPE_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: LTAR TYPE TABLE OF ZCL_MDP_JSON_NODE=>TYP_ARRAY_CHILDREN.
DATA: L_SAP_ROW_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: L_SAP_COL_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: LVKORG TYPE KNVV-VKORG,
LVTWEG TYPE KNVV-VTWEG,
LSPART TYPE KNVV-SPART.
SQLSTR = 'SELECT * FROM KNVV WHERE mandt = 800 and KUNNR = ''' && PARTNER && ''''.
PERFORM FRM_SYNOBJ(ZABAP_COMMON_PROGRAM) USING PURL SQLSTR CHANGING L_JSON_ROOT_OBJECT.
L_ERRORTYPE_OBJECT = L_JSON_ROOT_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'RESULT').
LTAR = L_ERRORTYPE_OBJECT->ARRAY_CHILDREN().
LOOP AT LTAR INTO DATA(LSAR).
CLEAR: LS_CMDSALE,LS_FUNCTIONS_T[].
LS_CMDSALE-TASK = 'I'.
L_SAP_ROW_OBJECT = LSAR-NODE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'VKORG' ).
LVKORG = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'VTWEG' ).
LVTWEG = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'SPART' ).
LSPART = L_SAP_COL_OBJECT->VALUE.
PERFORM GETFUNCTIONINFO USING PURL PARTNER LVKORG LVTWEG LSPART CHANGING LS_FUNCTIONS_T[].
IF LS_FUNCTIONS_T[] IS NOT INITIAL.
LS_CMDSALE-FUNCTIONS-FUNCTIONS = LS_FUNCTIONS_T.
LS_CMDSALE-FUNCTIONS-CURRENT_STATE = 'X'.
ENDIF.
LS_CMDSALE-DATA_KEY-VKORG = LVKORG.
LS_CMDSALE-DATA_KEY-SPART = LSPART.
LS_CMDSALE-DATA_KEY-VTWEG = LVTWEG.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'KVGR1' ).
LS_CMDSALE-DATA-KVGR1 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'KVGR2' ).
LS_CMDSALE-DATA-KVGR2 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'KVGR3' ).
LS_CMDSALE-DATA-KVGR3 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'BZIRK' ).
LS_CMDSALE-DATA-BZIRK = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'VKGRP' ).
LS_CMDSALE-DATA-VKGRP = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'KALKS' ).
LS_CMDSALE-DATA-KALKS = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'KONDA' ).
LS_CMDSALE-DATA-KONDA = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'KTGRD' ).
LS_CMDSALE-DATA-KTGRD = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'PLTYP' ).
LS_CMDSALE-DATA-PLTYP = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'VKBUR' ).
LS_CMDSALE-DATA-VKBUR = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'VSBED' ).
LS_CMDSALE-DATA-VSBED = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'WAERS' ).
LS_CMDSALE-DATA-WAERS = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZTERM' ).
LS_CMDSALE-DATA-ZTERM = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'BEGRU' ).
LS_CMDSALE-DATA-BEGRU = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'LOEVM' ).
LS_CMDSALE-DATA-LOEVM = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'VERSG' ).
LS_CMDSALE-DATA-VERSG = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'AUFSD' ).
LS_CMDSALE-DATA-AUFSD = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'KDGRP' ).
LS_CMDSALE-DATA-KDGRP = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'VKGRP' ).
LS_CMDSALE-DATA-VKGRP = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'AWAHR' ).
LS_CMDSALE-DATA-AWAHR = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'INCO1' ).
LS_CMDSALE-DATA-INCO1 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'INCO2' ).
LS_CMDSALE-DATA-INCO2 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'LIFSD' ).
LS_CMDSALE-DATA-LIFSD = L_SAP_COL_OBJECT->VALUE.
LS_CMDSALE-DATAX-KVGR1 = ABAP_TRUE.
LS_CMDSALE-DATAX-KVGR2 = ABAP_TRUE.
LS_CMDSALE-DATAX-KVGR3 = ABAP_TRUE.
LS_CMDSALE-DATAX-BZIRK = ABAP_TRUE.
LS_CMDSALE-DATAX-VKGRP = ABAP_TRUE.
LS_CMDSALE-DATAX-KALKS = ABAP_TRUE.
LS_CMDSALE-DATAX-KONDA = ABAP_TRUE.
LS_CMDSALE-DATAX-KTGRD = ABAP_TRUE.
LS_CMDSALE-DATAX-PLTYP = ABAP_TRUE.
LS_CMDSALE-DATAX-VKBUR = ABAP_TRUE.
LS_CMDSALE-DATAX-VSBED = ABAP_TRUE.
LS_CMDSALE-DATAX-WAERS = ABAP_TRUE.
LS_CMDSALE-DATAX-ZTERM = ABAP_TRUE.
LS_CMDSALE-DATAX-LOEVM = ABAP_TRUE.
LS_CMDSALE-DATAX-VERSG = ABAP_TRUE.
LS_CMDSALE-DATAX-AUFSD = ABAP_TRUE.
LS_CMDSALE-DATAX-KDGRP = ABAP_TRUE.
LS_CMDSALE-DATAX-VKGRP = ABAP_TRUE.
LS_CMDSALE-DATAX-WAERS = ABAP_TRUE.
LS_CMDSALE-DATAX-AWAHR = ABAP_TRUE.
LS_CMDSALE-DATAX-INCO1 = ABAP_TRUE.
LS_CMDSALE-DATAX-INCO2 = ABAP_TRUE.
LS_CMDSALE-DATAX-LIFSD = ABAP_TRUE.
APPEND LS_CMDSALE TO LT_SALES.
ENDLOOP.
ENDFORM.
FORM GETFUNCTIONINFO USING PURL TYPE STRING PARTNER TYPE BUT000-PARTNER PVKORG TYPE KNVV-VKORG PVTWEG TYPE KNVV-VTWEG PSPART TYPE KNVV-SPART CHANGING LT_FUNCTION TYPE STANDARD TABLE.
DATA:LS_FUNCTIONS TYPE LINE OF CMDS_EI_FUNCTIONS_T.
DATA:SQLSTR TYPE STRING.
DATA: L_JSON_ROOT_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: L_ERRORTYPE_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: LTAR TYPE TABLE OF ZCL_MDP_JSON_NODE=>TYP_ARRAY_CHILDREN.
DATA: L_SAP_ROW_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: L_SAP_COL_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: LPARVW TYPE KNVP-PARVW.
SQLSTR = 'SELECT * FROM KNVP WHERE mandt = 800 and KUNNR = ''' && PARTNER && '''' && ' AND VKORG = ''' && PVKORG && '''' && ' AND VTWEG = ''' && PVTWEG && '''' && ' AND SPART = ''' && PSPART && ''''.
PERFORM FRM_SYNOBJ(ZABAP_COMMON_PROGRAM) USING PURL SQLSTR CHANGING L_JSON_ROOT_OBJECT.
L_ERRORTYPE_OBJECT = L_JSON_ROOT_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'RESULT').
LTAR = L_ERRORTYPE_OBJECT->ARRAY_CHILDREN().
LOOP AT LTAR INTO DATA(LSAR).
CLEAR LS_FUNCTIONS.
LS_FUNCTIONS-TASK = 'I'.
L_SAP_ROW_OBJECT = LSAR-NODE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'PARVW' ).
LPARVW = L_SAP_COL_OBJECT->VALUE.
LS_FUNCTIONS-DATA_KEY-PARVW = LPARVW.
* LS_FUNCTIONS-DATA-PARTNER = PARTNER.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'DEFPA' ).
LS_FUNCTIONS-DATA-DEFPA = L_SAP_COL_OBJECT->VALUE.
LS_FUNCTIONS-DATAX-DEFPA = ABAP_TRUE.
* LS_FUNCTIONS-DATAX-PARTNER = ABAP_TRUE.
IF LPARVW <> 'ZE'.
APPEND LS_FUNCTIONS TO LT_FUNCTION.
ENDIF.
ENDLOOP.
ENDFORM.
FORM GETCOMPINFO4KUNNR USING PURL TYPE STRING PARTNER TYPE BUT000-PARTNER CHANGING LT_COMP TYPE STANDARD TABLE.
DATA:LSCOMP TYPE CMDS_EI_COMPANY.
DATA:SQLSTR TYPE STRING.
DATA: L_JSON_ROOT_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: L_ERRORTYPE_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: LTAR TYPE TABLE OF ZCL_MDP_JSON_NODE=>TYP_ARRAY_CHILDREN.
DATA: L_SAP_ROW_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: L_SAP_COL_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
SQLSTR = 'SELECT * FROM KNB1 WHERE mandt = 800 and KUNNR = ''' && PARTNER && ''''.
PERFORM FRM_SYNOBJ(ZABAP_COMMON_PROGRAM) USING PURL SQLSTR CHANGING L_JSON_ROOT_OBJECT.
L_ERRORTYPE_OBJECT = L_JSON_ROOT_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'RESULT').
LTAR = L_ERRORTYPE_OBJECT->ARRAY_CHILDREN().
LOOP AT LTAR INTO DATA(LSAR).
CLEAR LSCOMP.
LSCOMP-TASK = 'I'.
L_SAP_ROW_OBJECT = LSAR-NODE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'BUKRS' ).
LSCOMP-DATA_KEY-BUKRS = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZTERM' ).
LSCOMP-DATA-ZTERM = L_SAP_COL_OBJECT->VALUE. " terms of payment
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZWELS' ).
LSCOMP-DATA-ZWELS = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ALTKN' ).
LSCOMP-DATA-ALTKN = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'AKONT' ).
LSCOMP-DATA-AKONT = L_SAP_COL_OBJECT->VALUE.
LSCOMP-DATAX-ZTERM = 'X'.
LSCOMP-DATAX-AKONT = 'X'.
LSCOMP-DATAX-ZWELS = 'X'.
LSCOMP-DATAX-ALTKN = 'X'.
APPEND LSCOMP TO LT_COMP.
ENDLOOP.
ENDFORM.
FORM GETCOMPINFO4LIFNR USING PURL TYPE STRING PARTNER TYPE BUT000-PARTNER CHANGING LT_COMP TYPE STANDARD TABLE.
DATA:LSCOMP TYPE VMDS_EI_COMPANY.
DATA:SQLSTR TYPE STRING.
DATA: L_JSON_ROOT_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: L_ERRORTYPE_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: LTAR TYPE TABLE OF ZCL_MDP_JSON_NODE=>TYP_ARRAY_CHILDREN.
DATA: L_SAP_ROW_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: L_SAP_COL_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
SQLSTR = 'SELECT * FROM LFB1 WHERE mandt = 800 and LIFNR = ''' && PARTNER && ''''.
PERFORM FRM_SYNOBJ(ZABAP_COMMON_PROGRAM) USING PURL SQLSTR CHANGING L_JSON_ROOT_OBJECT.
L_ERRORTYPE_OBJECT = L_JSON_ROOT_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'RESULT').
LTAR = L_ERRORTYPE_OBJECT->ARRAY_CHILDREN().
LOOP AT LTAR INTO DATA(LSAR).
CLEAR LSCOMP.
LSCOMP-TASK = 'I'.
L_SAP_ROW_OBJECT = LSAR-NODE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'BUKRS' ).
LSCOMP-DATA_KEY-BUKRS = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZTERM' ).
LSCOMP-DATA-ZTERM = L_SAP_COL_OBJECT->VALUE. " terms of payment
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZWELS' ).
LSCOMP-DATA-ZWELS = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ALTKN' ).
LSCOMP-DATA-ALTKN = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'AKONT' ).
LSCOMP-DATA-AKONT = L_SAP_COL_OBJECT->VALUE.
LSCOMP-DATAX-ZTERM = 'X'.
LSCOMP-DATAX-AKONT = 'X'.
LSCOMP-DATAX-ZWELS = 'X'.
LSCOMP-DATAX-ALTKN = 'X'.
APPEND LSCOMP TO LT_COMP.
ENDLOOP.
ENDFORM.
FORM GETBANKINFO USING PURL TYPE STRING PARTNER TYPE BUT000-PARTNER CHANGING LT_BANK TYPE STANDARD TABLE.
DATA:LS_BANK TYPE BUS_EI_BUPA_BANKDETAIL.
DATA:SQLSTR TYPE STRING.
DATA:STRTMP(30) TYPE C.
DATA:CNT TYPE I.
DATA: L_JSON_ROOT_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: L_ERRORTYPE_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: LTAR TYPE TABLE OF ZCL_MDP_JSON_NODE=>TYP_ARRAY_CHILDREN.
DATA: L_SAP_ROW_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: L_SAP_COL_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
SQLSTR = 'SELECT * FROM KNBK WHERE mandt = 800 and KUNNR = ''' && PARTNER && ''''.
PERFORM FRM_SYNOBJ(ZABAP_COMMON_PROGRAM) USING PURL SQLSTR CHANGING L_JSON_ROOT_OBJECT.
L_ERRORTYPE_OBJECT = L_JSON_ROOT_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'RESULT').
LTAR = L_ERRORTYPE_OBJECT->ARRAY_CHILDREN().
LOOP AT LTAR INTO DATA(LSAR).
CLEAR LS_BANK.
L_SAP_ROW_OBJECT = LSAR-NODE.
LS_BANK-TASK = 'I'. "创建
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'BKVID' ).
LS_BANK-DATA_KEY = L_SAP_COL_OBJECT->VALUE. "银行标识
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'BANKS' ).
LS_BANK-DATA-BANK_CTRY = L_SAP_COL_OBJECT->VALUE. "银行国家
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'BANKL' ).
LS_BANK-DATA-BANK_KEY = L_SAP_COL_OBJECT->VALUE. "银行代码
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ACCOUNT' ).
STRTMP = L_SAP_COL_OBJECT->VALUE.
CNT = STRLEN( STRTMP ).
IF STRTMP IS NOT INITIAL AND CNT >= 20.
LS_BANK-DATA-BANK_ACCT = L_SAP_COL_OBJECT->VALUE+0(18). "银行账号
LS_BANK-DATA-BANK_REF = L_SAP_COL_OBJECT->VALUE+18(20). "银行细目的参考明细
ELSEIF CNT <= 18.
LS_BANK-DATA-BANK_ACCT = L_SAP_COL_OBJECT->VALUE+0(18). "银行账号
ENDIF.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'KOINH' ).
LS_BANK-DATA-ACCOUNTHOLDER = L_SAP_COL_OBJECT->VALUE. "账户持有人
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ACCNAME' ).
LS_BANK-DATA-BANKACCOUNTNAME = L_SAP_COL_OBJECT->VALUE. "账户名称
LS_BANK-DATAX-BANK_CTRY = ABAP_TRUE.
LS_BANK-DATAX-BANK_KEY = ABAP_TRUE.
LS_BANK-DATAX-BANK_ACCT = ABAP_TRUE.
LS_BANK-DATAX-BANK_REF = ABAP_TRUE.
LS_BANK-DATAX-ACCOUNTHOLDER = ABAP_TRUE.
LS_BANK-DATAX-BANKACCOUNTNAME = ABAP_TRUE.
APPEND LS_BANK TO LT_BANK.
ENDLOOP.
ENDFORM.
FORM CHKBANKINFO USING PURL TYPE STRING PBANKS TYPE BU_BANKS PBANKL TYPE BU_BANKK.
DATA:SQLSTR TYPE STRING.
DATA: L_JSON_ROOT_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: L_ERRORTYPE_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: LTAR TYPE TABLE OF ZCL_MDP_JSON_NODE=>TYP_ARRAY_CHILDREN.
DATA: L_SAP_ROW_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: L_SAP_COL_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
SQLSTR = 'SELECT * FROM BNKA WHERE mandt = 800 and BANKS = ''' && PBANKS && ''''.
PERFORM FRM_SYNOBJ(ZABAP_COMMON_PROGRAM) USING PURL SQLSTR CHANGING L_JSON_ROOT_OBJECT.
L_ERRORTYPE_OBJECT = L_JSON_ROOT_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'RESULT').
LTAR = L_ERRORTYPE_OBJECT->ARRAY_CHILDREN().
ENDFORM.
FORM GETINDUSINFO USING PURL TYPE STRING PARTNER TYPE BUT000-PARTNER CHANGING LT_INDU TYPE STANDARD TABLE.
DATA:LS_INDU TYPE BUS_EI_BUPA_INDUSTRYSECTOR. "行业
DATA:SQLSTR TYPE STRING.
DATA: L_JSON_ROOT_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: L_ERRORTYPE_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: LTAR TYPE TABLE OF ZCL_MDP_JSON_NODE=>TYP_ARRAY_CHILDREN.
DATA: L_SAP_ROW_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: L_SAP_COL_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
SQLSTR = 'SELECT BRSCH FROM KNA1 WHERE mandt = 800 and KUNNR = ''' && PARTNER && ''''.
PERFORM FRM_SYNOBJ(ZABAP_COMMON_PROGRAM) USING PURL SQLSTR CHANGING L_JSON_ROOT_OBJECT.
L_ERRORTYPE_OBJECT = L_JSON_ROOT_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'RESULT').
LTAR = L_ERRORTYPE_OBJECT->ARRAY_CHILDREN().
IF LTAR[] IS INITIAL.
SQLSTR = 'SELECT BRSCH FROM LFA1 WHERE mandt = 800 and LIFNR = ''' && PARTNER && ''''.
PERFORM FRM_SYNOBJ(ZABAP_COMMON_PROGRAM) USING PURL SQLSTR CHANGING L_JSON_ROOT_OBJECT.
L_ERRORTYPE_OBJECT = L_JSON_ROOT_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'RESULT').
LTAR = L_ERRORTYPE_OBJECT->ARRAY_CHILDREN().
ENDIF.
LOOP AT LTAR INTO DATA(LSAR).
L_SAP_ROW_OBJECT = LSAR-NODE.
LS_INDU-TASK = 'I'. "创建
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'BRSCH' ).
LS_INDU-DATA_KEY-IND_SECTOR = L_SAP_COL_OBJECT->VALUE.
* ls_indu-data_key-ind_sector = INPUT-it_but000-isec. "行业领域
LS_INDU-DATA_KEY-KEYSYSTEM = 'ZJK1'."'Z012'. "行业系统
LS_INDU-DATA-IND_DEFAULT = 'X'. "行业系统中业务伙伴的行业是标准的
LS_INDU-DATAX-IND_DEFAULT = 'X'. "行业系统中业务伙伴的行业是标准的
APPEND LS_INDU TO LT_INDU.
ENDLOOP.
ENDFORM.
FORM GETADDRESSINFO USING PURL TYPE STRING PARTNER TYPE BUT000-PARTNER CHANGING LT_PAADR TYPE STANDARD TABLE.
DATA:LS_PAADR TYPE BUS_EI_BUPA_ADDRESS.
DATA:SQLSTR TYPE STRING.
DATA: L_JSON_ROOT_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: L_ERRORTYPE_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: LTAR TYPE TABLE OF ZCL_MDP_JSON_NODE=>TYP_ARRAY_CHILDREN.
DATA: L_SAP_ROW_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: L_SAP_COL_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: LPPSTAT TYPE MARA-PSTAT.
DATA:
LS_MAIL TYPE BUS_EI_BUPA_SMTP,
LT_MAIL TYPE BUS_EI_BUPA_SMTP_T,
LS_FAX TYPE BUS_EI_BUPA_FAX,
LT_FAX TYPE BUS_EI_BUPA_FAX_T,
LS_PHONE TYPE BUS_EI_BUPA_TELEPHONE,
LT_PHONE TYPE BUS_EI_BUPA_TELEPHONE_T,
LS_PHONE1 TYPE CVIS_EI_PHONE_STR,
LT_PHONE1 TYPE CVIS_EI_PHONE_T.
SQLSTR = 'SELECT ADRC.*,BUT021_FS.ADR_KIND,BUT021_FS.VALID_TO,BUT021_FS.VALID_FROM,BUT021_FS.XDFADU '&&
' FROM BUT021_FS JOIN ADRC ON ADRC.ADDRNUMBER = BUT021_FS.ADDRNUMBER AND ADRC.CLIENT = BUT021_FS.client ' &&
' WHERE BUT021_FS.client = 800 AND BUT021_FS.PARTNER = ''' && PARTNER && ''''.
PERFORM FRM_SYNOBJ(ZABAP_COMMON_PROGRAM) USING PURL SQLSTR CHANGING L_JSON_ROOT_OBJECT.
L_ERRORTYPE_OBJECT = L_JSON_ROOT_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'RESULT').
LTAR = L_ERRORTYPE_OBJECT->ARRAY_CHILDREN().
LOOP AT LTAR INTO DATA(LSAR).
CLEAR LS_PAADR.
L_SAP_ROW_OBJECT = LSAR-NODE.
LS_PAADR-TASK = 'I'.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'LANGU' ).
LS_PAADR-DATA-POSTAL-DATA-LANGU = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'COUNTRY' ).
LS_PAADR-DATA-POSTAL-DATA-COUNTRY = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'REGION' ).
LS_PAADR-DATA-POSTAL-DATA-REGION = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'CITY1' ).
LS_PAADR-DATA-POSTAL-DATA-CITY = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'STREET' ).
LS_PAADR-DATA-POSTAL-DATA-STREET = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'STR_SUPPL1' ).
LS_PAADR-DATA-POSTAL-DATA-STR_SUPPL1 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'STR_SUPPL2' ).
LS_PAADR-DATA-POSTAL-DATA-STR_SUPPL2 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'STR_SUPPL3' ).
LS_PAADR-DATA-POSTAL-DATA-STR_SUPPL3 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'LOCATION' ).
LS_PAADR-DATA-POSTAL-DATA-LOCATION = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'SORT1' ).
LS_PAADR-DATA-POSTAL-DATA-C_O_NAME = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'POST_CODE1' ).
LS_PAADR-DATA-POSTAL-DATA-POSTL_COD1 = L_SAP_COL_OBJECT->VALUE.
LS_PAADR-DATA-POSTAL-DATAX-LANGU = ABAP_TRUE.
LS_PAADR-DATA-POSTAL-DATAX-COUNTRY = ABAP_TRUE.
LS_PAADR-DATA-POSTAL-DATAX-REGION = ABAP_TRUE.
LS_PAADR-DATA-POSTAL-DATAX-CITY = ABAP_TRUE.
LS_PAADR-DATA-POSTAL-DATAX-STREET = ABAP_TRUE.
LS_PAADR-DATA-POSTAL-DATAX-STR_SUPPL1 = ABAP_TRUE.
LS_PAADR-DATA-POSTAL-DATAX-STR_SUPPL2 = ABAP_TRUE. "客商地址
LS_PAADR-DATA-POSTAL-DATAX-STR_SUPPL3 = ABAP_TRUE. "客商地址
LS_PAADR-DATA-POSTAL-DATAX-LOCATION = ABAP_TRUE. "客商地址
LS_PAADR-DATA-POSTAL-DATAX-C_O_NAME = ABAP_TRUE.
LS_PAADR-DATA-POSTAL-DATAX-POSTL_COD1 = ABAP_TRUE.
* ls_mail-contact-task = 'I'.
* LS_MAIL-CONTACT-DATA-E_MAIL = INPUT-IT_BUT000-SMTP_ADDR.
* LS_MAIL-CONTACT-DATAX-E_MAIL = 'X'.
* APPEND LS_MAIL TO LT_MAIL.
* LS_PAADR-DATA-COMMUNICATION-SMTP-SMTP = LT_MAIL.
* LS_FAX-CONTACT-TASK = 'I'.
* LS_FAX-CONTACT-DATA-COUNTRY = INPUT-IT_BUT000-COUNTRY.
* LS_FAX-CONTACT-DATA-FAX = INPUT-IT_BUT000-FAX_NUMBER.
* LS_FAX-CONTACT-DATAX-COUNTRY = 'X'.
* LS_FAX-CONTACT-DATAX-FAX = 'X'.
* APPEND LS_FAX TO LT_FAX.
* LS_PAADR-DATA-COMMUNICATION-FAX-FAX = LT_FAX.
* ls_phone-contact-task = 'I'.
* ls_phone-contact-DATA-COUNTRY = INPUT-it_but000-COUNTRY.
* ls_phone-contact-DATA-telephone = INPUT-it_but000-telf1.
* ls_phone-contact-datax-COUNTRY = 'X'.
* ls_phone-contact-datax-telephone = 'X'.
* APPEND ls_phone TO lt_phone.
* CLEAR: ls_phone.
* ls_paadr-DATA-COMMUNICATION-phone-phone = lt_phone.
*
* ls_phone-contact-task = 'I'.
* ls_phone-contact-DATA-COUNTRY = INPUT-it_but000-COUNTRY.
* ls_phone-contact-DATA-r_3_user = '2'. "标识符:电话是移动电话
* ls_phone-contact-DATA-telephone = INPUT-it_but000-telf2.
* ls_phone-contact-datax-COUNTRY = 'X'.
* ls_phone-contact-datax-r_3_user = 'X'.
* ls_phone-contact-datax-telephone = 'X'.
* APPEND ls_phone TO lt_phone.
* CLEAR: ls_phone.
* ls_paadr-DATA-COMMUNICATION-phone-phone = lt_phone.
* ls_paadr-DATA-COMMUNICATION-phone-current_state = 'X'.
APPEND LS_PAADR TO LT_PAADR.
ENDLOOP.
ENDFORM.
FORM GETINILROLES USING PURL TYPE STRING PARTNER TYPE BUT000-PARTNER CHANGING LT_ROLES TYPE STANDARD TABLE.
DATA:LS_ROLES TYPE BUS_EI_BUPA_ROLES.
DATA:SQLSTR TYPE STRING.
DATA: L_JSON_ROOT_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: L_ERRORTYPE_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: LTAR TYPE TABLE OF ZCL_MDP_JSON_NODE=>TYP_ARRAY_CHILDREN.
DATA: L_SAP_ROW_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: L_SAP_COL_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
DATA: LPPSTAT TYPE MARA-PSTAT.
SQLSTR = 'SELECT * FROM BUT100 WHERE MANDT = 800 AND PARTNER = ''' && PARTNER && ''''.
PERFORM FRM_SYNOBJ(ZABAP_COMMON_PROGRAM) USING PURL SQLSTR CHANGING L_JSON_ROOT_OBJECT.
L_ERRORTYPE_OBJECT = L_JSON_ROOT_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'RESULT').
LTAR = L_ERRORTYPE_OBJECT->ARRAY_CHILDREN().
LOOP AT LTAR INTO DATA(LSAR).
CLEAR LS_ROLES.
LS_ROLES-TASK = 'I'.
L_SAP_ROW_OBJECT = LSAR-NODE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'RLTYP' ).
LS_ROLES-DATA_KEY = L_SAP_COL_OBJECT->VALUE.
* LS_ROLES-DATA_KEY = 'ZFLCU0'."'ZFLCU0'. "角色
IF LS_ROLES-DATA_KEY = 'ZFLCU0'.
LS_ROLES-DATA-ROLECATEGORY = 'FLCU00'.
ELSE.
LS_ROLES-DATA-ROLECATEGORY = L_SAP_COL_OBJECT->VALUE."'FLCU00'.
ENDIF.
LS_ROLES-DATA-VALID_FROM = SY-DATUM.
LS_ROLES-DATA-VALID_TO = '99991231'.
LS_ROLES-CURRENTLY_VALID = ABAP_TRUE.
LS_ROLES-DATAX-VALID_FROM = ABAP_TRUE.
LS_ROLES-DATAX-VALID_TO = ABAP_TRUE.
APPEND LS_ROLES TO LT_ROLES.
ENDLOOP.
ENDFORM.