上期提到SAP PRD覆盖QAS 替代方案构想-CSDN博客
这一期把物料主数据同步实现了
DATA: LS_MARA TYPE ZMMS_IF_MATERIAL_MARA,
LS_MARM TYPE ZMMS_IF_MATERIAL_MARM,
LS_MARC TYPE ZMMS_IF_MATERIAL_MARC,
LS_QMAT TYPE ZMMS_IF_MATERIAL_QMAT,
LS_MBEW TYPE ZMMS_IF_MATERIAL_MBEW,
LS_MVKE TYPE ZMMS_IF_MATERIAL_MVKE,
LS_MLGN TYPE ZMMS_IF_MATERIAL_MLGN,
LS_MARD TYPE ZMMS_IF_MATERIAL_MARD,
LS_RETURN TYPE ZMMS_IF_RETURN.
DATA: LT_MARA LIKE TABLE OF LS_MARA,
LT_MARM LIKE TABLE OF LS_MARM,
LT_MARC LIKE TABLE OF LS_MARC,
LT_QMAT LIKE TABLE OF LS_QMAT,
LT_MBEW LIKE TABLE OF LS_MBEW,
LT_MVKE LIKE TABLE OF LS_MVKE,
LT_MARD LIKE TABLE OF LS_MARD,
LT_MLGN LIKE TABLE OF LS_MLGN.
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_URL TYPE AGR_URL,
LV_URL_STR TYPE STRING,
HTTP_CLIENT TYPE REF TO IF_HTTP_CLIENT, "http客户端
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: LMATNR TYPE MARA-MATNR.
LV_URL_STR = 'http://10.10.165.11:50000/RESTAdapter/sap/query?j_username=JACK_COM&j_password=Jk87651234'.
SQLSTR = 'SELECT top 10 MATNR from MARA'.
PERFORM FRM_SYNOBJ(ZABAP_COMMON_PROGRAM) USING LV_URL_STR SQLSTR CHANGING L_JSON_ROOT_OBJECT.
DATA: L_STRING TYPE STRING.
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_TEST_OBJECT = LSAR-NODE.
L_SAP_TEST_FUNC_ID_OBJECT = L_SAP_TEST_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MATNR' ).
LMATNR = L_SAP_TEST_FUNC_ID_OBJECT->VALUE.
clear: LT_MARA[],LT_MARM[],LT_MARC[],LT_QMAT[],LT_MBEW[],LT_MVKE[],LT_MARD[].
PERFORM GETMARA USING LV_URL_STR LMATNR CHANGING LT_MARA.
PERFORM GETMARM USING LV_URL_STR LMATNR CHANGING LT_MARM.
PERFORM GETMARC USING LV_URL_STR LMATNR CHANGING LT_MARC.
PERFORM GETQMAT USING LV_URL_STR LMATNR CHANGING LT_QMAT.
PERFORM GETMBEW USING LV_URL_STR LMATNR CHANGING LT_MBEW.
PERFORM GETMVKE USING LV_URL_STR LMATNR CHANGING LT_MVKE.
* PERFORM GETMLGN USING LV_URL_STR LMATNR CHANGING LT_MLGN."无数据
PERFORM GETMARD USING LV_URL_STR LMATNR CHANGING LT_MARD.
CALL FUNCTION 'ZRFC_MATERIAL_SAVE'
IMPORTING
E_RETURN = LS_RETURN
TABLES
T_MARA = LT_MARA
T_MARM = LT_MARM
T_MARC = LT_MARC
T_QMAT = LT_QMAT
T_MBEW = LT_MBEW
T_MVKE = LT_MVKE
T_MLGN = LT_MLGN
T_MARD = LT_MARD.
READ TABLE LT_MARA INTO LS_MARA INDEX 1.
IF LS_RETURN-MSGTY = 'S'.
WRITE:/ '物料' && LS_MARA-MATERIAL && '保存成功'.
ELSE.
WRITE:/ '物料' && LS_MARA-MATERIAL && '维护有问题,参考' && LS_MARA-MESSAGE.
ENDIF.
ENDLOOP.
ENDFORM.
FORM GETMARD USING PURL TYPE STRING PMATNR TYPE MATNR CHANGING LT_MARD TYPE STANDARD TABLE.
DATA: LS_MARD TYPE ZMMS_IF_MATERIAL_MARD.
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 MARD.MATNR,MARD.WERKS,MARD.LGORT,MARD.LGPBE,MARC.XCHPF,MARC.XMCNG FROM MARD JOIN MARC ON MARD.MANDT = MARC.MANDT AND MARC.WERKS = MARD.WERKS and marc.matnr = mard.matnr WHERE MARD.MANDT = 800 AND MARD.MATNR = ''' && PMATNR && ''''.
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_MARD.
L_SAP_ROW_OBJECT = LSAR-NODE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MATNR' ).
LS_MARD-ZMATERIAL = L_SAP_COL_OBJECT->VALUE.
LS_MARD-MATERIAL = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'WERKS' ).
LS_MARD-PLANT = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'LGORT' ).
LS_MARD-STGE_LOC = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'LGPBE' ).
LS_MARD-STGE_BIN = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'XCHPF' ).
LS_MARD-BATCH_MGMT = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'XMCNG' ).
LS_MARD-NEG_STOCKS = L_SAP_COL_OBJECT->VALUE.
APPEND LS_MARD TO LT_MARD.
ENDLOOP.
ENDFORM.
FORM GETMLGN USING PURL TYPE STRING PMATNR TYPE MATNR CHANGING LT_MLGN TYPE STANDARD TABLE.
DATA: LS_MLGN TYPE ZMMS_IF_MATERIAL_MLGN.
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 MATNR,LGNUM,PLKPT,LTKZE,LTKZA from MLGN where MLGN.mandt = 800 and MLGN.matnr = ''' && PMATNR && ''''.
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_MLGN.
L_SAP_ROW_OBJECT = LSAR-NODE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MATNR' ).
LS_MLGN-ZMATERIAL = L_SAP_COL_OBJECT->VALUE.
LS_MLGN-MATERIAL = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'LGNUM' ).
LS_MLGN-WHSE_NO = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'PLKPT' ).
LS_MLGN-STGE_TYPE = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'LTKZE' ).
LS_MLGN-PLACEMENT = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'LTKZA' ).
LS_MLGN-WITHDRAWAL = L_SAP_COL_OBJECT->VALUE.
* L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'LGPBE' ).
* LS_MLGN-STGE_BIN = L_SAP_COL_OBJECT->VALUE.
APPEND LS_MLGN TO LT_MLGN.
ENDLOOP.
ENDFORM.
FORM GETMVKE USING PURL TYPE STRING PMATNR TYPE MATNR CHANGING LT_MVKE TYPE STANDARD TABLE.
DATA: LS_MVKE TYPE ZMMS_IF_MATERIAL_MVKE.
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 MVKE.*,MLAN.ALAND,MLAN.TAXM1,MARC.SERNP FROM MVKE JOIN MLAN ON MLAN.MANDT = MVKE.MANDT AND MLAN.MATNR = MVKE.MATNR LEFT JOIN MARC ON MARC.MANDT = MVKE.MANDT AND MARC.MATNR = MVKE.MANDT WHERE MVKE.MANDT = 800 AND MVKE.MATNR = ''' &&
PMATNR && ''''.
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_MVKE.
L_SAP_ROW_OBJECT = LSAR-NODE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MATNR' ).
LS_MVKE-ZMATERIAL = L_SAP_COL_OBJECT->VALUE.
LS_MVKE-MATERIAL = L_SAP_COL_OBJECT->VALUE.
* L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'WERKS' ).
* LS_MVKE-PLANT = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'VKORG' ).
LS_MVKE-SALES_ORG = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'VTWEG' ).
LS_MVKE-DISTR_CHAN = L_SAP_COL_OBJECT->VALUE.
SELECT * FROM MVKE WHERE MATNR = @LS_MVKE-MATERIAL AND VKORG = @LS_MVKE-SALES_ORG
and VTWEG = @LS_MVKE-DISTR_CHAN
INTO TABLE @DATA(LTTMP).
IF LTTMP[] IS INITIAL.
LS_MVKE-FUNCTION = 'INS'.
ELSE.
LS_MVKE-FUNCTION = 'UPD'.
ENDIF.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'DWERK' ).
LS_MVKE-DELYG_PLNT = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'KTGRM' ).
LS_MVKE-ACCT_ASSGT = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MTPOS' ).
LS_MVKE-ITEM_CAT = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MVGR1' ).
LS_MVKE-MATL_GRP_1 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MVGR2' ).
LS_MVKE-MATL_GRP_2 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'VRKME' ).
LS_MVKE-SALES_UNIT = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'AUMNG' ).
LS_MVKE-MIN_ORDER = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ALAND' ).
LS_MVKE-DEPCOUNTRY = L_SAP_COL_OBJECT->VALUE.
* L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'TATYP' ).
* LS_MVKE-TAX_TYPE_1 = L_SAP_COL_OBJECT->VALUE.
LS_MVKE-TAX_TYPE_1 = 'MWST'.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'TAXM1' ).
LS_MVKE-TAXCLASS_1 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'VERSG' ).
LS_MVKE-MATL_STATS = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'PROVG' ).
LS_MVKE-COMM_GROUP = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'SERNP' ).
LS_MVKE-SERNO_PROF = L_SAP_COL_OBJECT->VALUE.
APPEND LS_MVKE TO LT_MVKE.
ENDLOOP.
ENDFORM.
FORM GETMBEW USING PURL TYPE STRING PMATNR TYPE MATNR CHANGING LT_MBEW TYPE STANDARD TABLE.
DATA: LS_MBEW TYPE ZMMS_IF_MATERIAL_MBEW.
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 MBEW.* FROM MBEW WHERE MBEW.MANDT = 800 AND MBEW.MATNR = ''' && PMATNR && ''''.
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_MBEW.
L_SAP_ROW_OBJECT = LSAR-NODE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MATNR' ).
LS_MBEW-ZMATERIAL = L_SAP_COL_OBJECT->VALUE.
LS_MBEW-MATERIAL = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'BWKEY' ).
LS_MBEW-VAL_AREA = L_SAP_COL_OBJECT->VALUE.
SELECT * FROM MBEW WHERE MATNR = @LS_MBEW-MATERIAL AND BWKEY = @LS_MBEW-VAL_AREA
INTO TABLE @DATA(LTTMP).
IF LTTMP[] IS INITIAL.
LS_MBEW-FUNCTION = 'INS'.
ELSE.
LS_MBEW-FUNCTION = 'UPD'.
ENDIF.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'BWTAR' ).
LS_MBEW-VAL_TYPE = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'BKLAS' ).
LS_MBEW-VAL_CLASS = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'VPRSV' ).
LS_MBEW-PRICE_CTRL = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'VERPR' ).
LS_MBEW-MOVING_PR = L_SAP_COL_OBJECT->VALUE.
* L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'STPRS' ).
* LS_MBEW-STD_PRICE = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'PEINH' ).
LS_MBEW-PRICE_UNIT = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'EKALR' ).
LS_MBEW-QTY_STRUCT = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'HKMAT' ).
LS_MBEW-ORIG_MAT = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'QKLAS' ).
LS_MBEW-VM_P_STOCK = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MLAST' ).
LS_MBEW-ML_SETTLE = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZPLP1' ).
LS_MBEW-PLNDPRICE1 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZPLP2' ).
LS_MBEW-PLNDPRICE2 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZPLP3' ).
LS_MBEW-PLNDPRICE3 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZPLD1' ).
LS_MBEW-PLNDPRDATE1 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZPLD2' ).
LS_MBEW-PLNDPRDATE2 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZPLD3' ).
LS_MBEW-PLNDPRDATE3 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'BWTTY' ).
LS_MBEW-VAL_CAT = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'KOSGR' ).
LS_MBEW-OVERHEAD_GRP = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'HRKFT' ).
LS_MBEW-ORIG_GROUP = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MLMAA' ).
LS_MBEW-ML_ACTIVE = L_SAP_COL_OBJECT->VALUE.
* L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZPLD3' ).
LS_MBEW-SPECPROCTY = L_SAP_COL_OBJECT->VALUE.
* L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZPLD3' ).
* LS_MBEW-IND_POST_TO_INSP_STOCK = L_SAP_COL_OBJECT->VALUE.
APPEND LS_MBEW TO LT_MBEW.
ENDLOOP.
ENDFORM.
FORM GETQMAT USING PURL TYPE STRING PMATNR TYPE MATNR CHANGING LT_QMAT TYPE STANDARD TABLE.
DATA: LS_MARQ TYPE ZMMS_IF_MATERIAL_QMAT.
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 QMAT.* FROM QMAT WHERE QMAT.MANDT = 800 AND QMAT.MATNR = ''' && PMATNR && ''''.
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_MARQ.
L_SAP_ROW_OBJECT = LSAR-NODE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MATNR' ).
LS_MARQ-ZMATERIAL = L_SAP_COL_OBJECT->VALUE.
LS_MARQ-MATERIAL = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'WERKS' ).
LS_MARQ-PLANT = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ART' ).
LS_MARQ-INSPTYPE = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'AKTIV' ).
LS_MARQ-IND_INSPTYPE_MAT_ACTIVE = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MPDAU' ).
LS_MARQ-AVE_INSP_DURATION = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'INSMK' ).
LS_MARQ-IND_POST_TO_INSP_STOCK = L_SAP_COL_OBJECT->VALUE.
APPEND LS_MARQ TO LT_QMAT.
ENDLOOP.
ENDFORM.
FORM GETMARC USING PURL TYPE STRING PMATNR TYPE MATNR CHANGING LT_MARC TYPE STANDARD TABLE.
DATA: LS_MARC TYPE ZMMS_IF_MATERIAL_MARC.
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 MARC.*,MARA.MHDRZ,MARA.MHDHB FROM MARC JOIN MARA ON MARA.MANDT = MARC.MANDT AND MARA.MATNR = MARC.MATNR WHERE MARC.MANDT = 800 AND MARC.MATNR = ''' && PMATNR && ''''.
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_MARC.
L_SAP_ROW_OBJECT = LSAR-NODE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MATNR' ).
LS_MARC-ZMATERIAL = L_SAP_COL_OBJECT->VALUE.
LS_MARC-MATERIAL = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'WERKS' ).
LS_MARC-PLANT = L_SAP_COL_OBJECT->VALUE.
SELECT * FROM MARC WHERE MATNR = @LS_MARC-MATERIAL AND WERKS = @LS_MARC-PLANT
INTO TABLE @DATA(LTTMP).
IF LTTMP[] IS INITIAL.
LS_MARC-FUNCTION = 'INS'.
ELSE.
LS_MARC-FUNCTION = 'UPD'.
ENDIF.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'DISGR' ).
LS_MARC-MRP_GROUP = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'BESKZ' ).
LS_MARC-PROC_TYPE = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'SOBSL' ).
LS_MARC-SPPROCTYPE = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MMSTA' ).
LS_MARC-PUR_STATUS = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'DISMM' ).
LS_MARC-MRP_TYPE = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'DISPO' ).
LS_MARC-MRP_CTRLER = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MTVFP' ).
LS_MARC-AVAILCHECK = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'DZEIT' ).
LS_MARC-INHSEPRODT = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'PLIFZ' ).
LS_MARC-PLND_DELRY = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'FHORI' ).
LS_MARC-SM_KEY = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'DISLS' ).
LS_MARC-LOTSIZEKEY = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MINBE' ).
LS_MARC-REORDER_PT = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'BSTMI' ).
LS_MARC-MINLOTSIZE = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'BSTMA' ).
LS_MARC-MAXLOTSIZE = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MABST' ).
LS_MARC-MAX_STOCK = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'BSTFE' ).
LS_MARC-FIXED_LOT = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'SBDKZ' ).
LS_MARC-DEP_REQ_ID = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'VRMOD' ).
LS_MARC-CONSUMMODE = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'VINT1' ).
LS_MARC-BWD_CONS = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'VINT2' ).
LS_MARC-FWD_CONS = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'KAUSF' ).
LS_MARC-COMP_SCRAP = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'LGPRO' ).
LS_MARC-ISS_ST_LOC = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'STRGR' ).
LS_MARC-PLAN_STRGP = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MISKZ' ).
LS_MARC-MIXED_MRP = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'LGFSB' ).
LS_MARC-SLOC_EXPRC = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MHDRZ' ).
LS_MARC-MINREMLIFE = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MHDHB' ).
LS_MARC-SHELF_LIFE = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'FEVOR' ).
LS_MARC-PRODUCTION_SCHEDULER = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'SFCPF' ).
LS_MARC-PRODPROF = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'EKGRP' ).
LS_MARC-PUR_GROUP = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'BSTRF' ).
LS_MARC-ROUND_VAL = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'XCHPF' ).
LS_MARC-BATCH_MGMT = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'PRCTR' ).
LS_MARC-PROFIT_CTR = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'LOSGR' ).
LS_MARC-LOT_SIZE = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'LADGR' ).
LS_MARC-LOADINGGRP = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'WEBAZ' ).
LS_MARC-GR_PR_TIME = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'NCOST' ).
LS_MARC-NO_COSTING = L_SAP_COL_OBJECT->VALUE.
* L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'AWSLS' ).
* LS_MARC-VARIANCE_KEY = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'UEETK' ).
LS_MARC-UNLIMITED = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'QMATA' ).
LS_MARC-QM_AUTHGRP = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'SAUFT' ).
LS_MARC-REP_MANUF = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'SFEPR' ).
LS_MARC-REPMANPROF = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'RGEKZ' ).
LS_MARC-BACKFLUSH = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'KORDB' ).
LS_MARC-SOURCELIST = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'KZKRI' ).
LS_MARC-CRIT_PART = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'KAUTB' ).
LS_MARC-AUTO_P_ORD = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'FXHOR' ).
LS_MARC-PL_TI_FNCE = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZPCBS' ).
LS_MARC-ZPCBS = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'XMCNG' ).
LS_MARC-NEG_STOCKS = L_SAP_COL_OBJECT->VALUE.
APPEND LS_MARC TO LT_MARC.
ENDLOOP.
ENDFORM.
FORM GETMARM USING PURL TYPE STRING PMATNR TYPE MATNR CHANGING LT_MARM TYPE STANDARD TABLE.
DATA: LS_MARM TYPE ZMMS_IF_MATERIAL_MARM.
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 MARM.* FROM MARM WHERE MARM.MANDT = 800 AND MARM.MATNR = ''' && PMATNR && ''''.
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_MARM.
L_SAP_ROW_OBJECT = LSAR-NODE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MATNR' ).
LS_MARM-ZMATERIAL = L_SAP_COL_OBJECT->VALUE.
LS_MARM-MATERIAL = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MEINH' ).
LS_MARM-ALT_UNIT = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'UMREZ' ).
LS_MARM-NUMERATOR = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'UMREN' ).
LS_MARM-DENOMINATR = L_SAP_COL_OBJECT->VALUE.
APPEND LS_MARM TO LT_MARM.
ENDLOOP.
ENDFORM.
FORM GETMARA USING PURL TYPE STRING PMATNR TYPE MATNR CHANGING LT_MARA TYPE STANDARD TABLE.
DATA: LS_MARA TYPE ZMMS_IF_MATERIAL_MARA.
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 MARA.*,MAKT.MAKTX FROM MARA JOIN MAKT ON MAKT.MATNR = MARA.MATNR AND MAKT.MANDT = MARA.MANDT AND MAKT.SPRAS = 1 WHERE MARA.MANDT = 800 AND MARA.MATNR = ''' && PMATNR && ''''.
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_MARA.
L_SAP_ROW_OBJECT = LSAR-NODE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MATNR' ).
LS_MARA-ZMATERIAL = L_SAP_COL_OBJECT->VALUE.
LS_MARA-MATERIAL = L_SAP_COL_OBJECT->VALUE.
SELECT * FROM MARA WHERE MATNR = @LS_MARA-MATERIAL INTO TABLE @DATA(LTTMP).
IF LTTMP[] IS INITIAL.
LS_MARA-FUNCTION = 'INS'.
ELSE.
LS_MARA-FUNCTION = 'UPD'.
ENDIF.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MBRSH' ).
LS_MARA-IND_SECTOR = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MTART' ).
LS_MARA-MATL_TYPE = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MAKTX' ).
LS_MARA-MATL_DESC = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MATKL' ).
LS_MARA-MATL_GROUP = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MEINS' ).
LS_MARA-BASE_UOM = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'SPART' ).
LS_MARA-DIVISION = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MTPOS_MARA' ).
LS_MARA-ITEM_CAT = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'EXTWG' ).
LS_MARA-EXTMATLGRP = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'WRKST' ).
LS_MARA-BASIC_MATL = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MAGRV' ).
LS_MARA-MAT_GRP_SM = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'GEWEI' ).
LS_MARA-UNIT_OF_WT = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'VOLEH' ).
LS_MARA-VOLUMEUNIT = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'TRAGR' ).
LS_MARA-TRANS_GRP = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'BISMT' ).
LS_MARA-OLD_MAT_NO = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'PRDHA' ).
LS_MARA-PROD_HIER = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'TEMPB' ).
LS_MARA-TEMP_CONDS = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MAKTX' ).
LS_MARA-TEXT_LINE = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'LABOR' ).
LS_MARA-DSN_OFFICE = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZMAKTX' ).
LS_MARA-ZMAKTX = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ01' ).
LS_MARA-ZYXWLZ01 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ02' ).
LS_MARA-ZYXWLZ02 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ03' ).
LS_MARA-ZYXWLZ03 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ04' ).
LS_MARA-ZYXWLZ04 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ05' ).
LS_MARA-ZYXWLZ05 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ06' ).
LS_MARA-ZYXWLZ06 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ07' ).
LS_MARA-ZYXWLZ07 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ08' ).
LS_MARA-ZYXWLZ08 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ09' ).
LS_MARA-ZYXWLZ09 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ10' ).
LS_MARA-ZYXWLZ10 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ11' ).
LS_MARA-ZYXWLZ11 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ12' ).
LS_MARA-ZYXWLZ12 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ13' ).
LS_MARA-ZYXWLZ13 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ14' ).
LS_MARA-ZYXWLZ14 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ15' ).
LS_MARA-ZYXWLZ15 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ16' ).
LS_MARA-ZYXWLZ16 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ17' ).
LS_MARA-ZYXWLZ17 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ18' ).
LS_MARA-ZYXWLZ18 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ19' ).
LS_MARA-ZYXWLZ19 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ20' ).
LS_MARA-ZYXWLZ20 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ21' ).
LS_MARA-ZYXWLZ21 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ22' ).
LS_MARA-ZYXWLZ22 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ23' ).
LS_MARA-ZYXWLZ23 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ24' ).
LS_MARA-ZYXWLZ24 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ25' ).
LS_MARA-ZYXWLZ25 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ26' ).
LS_MARA-ZYXWLZ26 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ27' ).
LS_MARA-ZYXWLZ27 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ28' ).
LS_MARA-ZYXWLZ28 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ29' ).
LS_MARA-ZYXWLZ29 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ30' ).
LS_MARA-ZYXWLZ30 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYXWLZ30' ).
LS_MARA-ZYXWLZ30 = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZJKZYJ' ).
LS_MARA-ZJKZYJ = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZYSJ' ).
LS_MARA-ZYSJ = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZCCWLFL' ).
LS_MARA-ZCCWLFL = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MSTAE' ).
LS_MARA-PUR_STATUS = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'GROES' ).
LS_MARA-SIZE_DIM = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'VOLUM' ).
LS_MARA-VOLUME = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'NTGEW' ).
LS_MARA-NET_WEIGHT = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'BRGEW' ).
LS_MARA-ALLOWED_WT = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MAXL' ).
LS_MARA-MAX_ALLOWED_LENGTH = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MAXB' ).
LS_MARA-MAX_ALLOWED_WIDTH = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MAXH' ).
LS_MARA-MAX_ALLOWED_HEIGTH = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'MAXDIM_UOM' ).
LS_MARA-MAX_DIMENSION_UN = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZMABC' ).
LS_MARA-ZMABC = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'ZMCLS' ).
LS_MARA-ZMCLS = L_SAP_COL_OBJECT->VALUE.
L_SAP_COL_OBJECT = L_SAP_ROW_OBJECT->OBJECT_GET_CHILD_NODE( KEY = 'PSTAT' ).
LPPSTAT = L_SAP_COL_OBJECT->VALUE.
IF LPPSTAT CS 'K'.
LS_MARA-BASIC_VIEW = 'X'.
ENDIF.
IF LPPSTAT CS 'V'.
LS_MARA-SALES_VIEW = 'X'.
ENDIF.
IF LPPSTAT CS 'E'.
LS_MARA-PURCHASE_VIEW = 'X'.
ENDIF.
IF LPPSTAT CS 'D'.
LS_MARA-MRP_VIEW = 'X'.
ENDIF.
IF LPPSTAT CS 'A'.
LS_MARA-WORK_SCHED_VIEW = 'X'.
ENDIF.
IF LPPSTAT CS 'L'.
LS_MARA-STORAGE_VIEW = 'X'.
ENDIF.
IF LPPSTAT CS 'S'.
LS_MARA-WAREHOUSE_VIEW = 'X'.
ENDIF.
IF LPPSTAT CS 'Q'.
LS_MARA-QUALITY_VIEW = 'X'.
ENDIF.
IF LPPSTAT CS 'B'.
LS_MARA-ACCOUNT_VIEW = 'X'.
ENDIF.
IF LPPSTAT CS 'G'.
LS_MARA-COST_VIEW = 'X'.
ENDIF.
APPEND LS_MARA TO LT_MARA.
ENDLOOP.
ENDFORM.
效果
实际物料
考虑数量问题,先同步10个物料
同步前
同步中