蓝凌OA: 格式
FORM_VALUES = LV_JSON .
'“fd_3d26dad706bbd2.fd_3d26dc07553306”: [“1”,“2”]
FUNCTION ZFOA_050.
*“----------------------------------------------------------------------
"“本地接口:
*” EXPORTING
*” VALUE(RTYPE) TYPE CHAR1
*" VALUE(RTMSG) TYPE BAPI_MSG
*" TABLES
*" GT_HEADER STRUCTURE ZSMM037
*" GT_DETAIL STRUCTURE ZSMM019
*"----------------------------------------------------------------------
DATA: LV_PERSONNO1 TYPE CHAR12,
LV_PERSONNO2 TYPE CHAR12,
LV_PERSONNO3 TYPE CHAR12,
LV_PERSONNO4 TYPE CHAR12.
DATA: L_WEBSERVICE TYPE REF TO ZOA_CO_IKM_REVIEW_WEBSERVICE_S.
DATA: LV_ZBFB TYPE STRING, LV_ZBFB2 TYPE STRING .
DATA: LV_ZFIELD1 TYPE STRING,
LV_ZFIELD2 TYPE STRING,
LV_ZFIELD3 TYPE STRING,
LV_ZFIELD4 TYPE STRING,
LV_ZFIELD5 TYPE STRING,
LV_ZFIELD6 TYPE STRING,
LV_ZFIELD7 TYPE STRING,
LV_ZFIELD8 TYPE STRING,
LV_ZFIELD0 TYPE STRING,
LV_ZFIELD9 TYPE STRING,
LV_ZFIELD10 TYPE STRING.
DATA: LV_ZDOCTYP TYPE STRING,
LV_ZDOCTYP_TXT TYPE STRING.
DATA: LS_CONFIG TYPE ZTPLM_CONFIG .
DATA: BEGIN OF LS_ZNO ,
ZNO TYPE ZNO,
END OF LS_ZNO .
DATA: LT_ZNO LIKE TABLE OF LS_ZNO .
DATA: LO_APP_EXCEPTION TYPE REF TO CX_AI_APPLICATION_FAULT,
LO_SYS_EXCEPTION TYPE REF TO CX_AI_SYSTEM_FAULT,
LO_SYSTEM_FAULT TYPE REF TO CX_AI_SYSTEM_FAULT.
DATA: LWEB_ADD_REVIEW TYPE ZZADD_REVIEW1,
LWEB_ADD_REVIEW_RESPONSE TYPE ZZADD_REVIEW_RESPONSE1.
DATA: LV_JSON TYPE STRING,
LV_JSON1 TYPE STRING,
LV_JSONS TYPE STRING.
DATA LW_OBJECT TYPE PRX_LOGICAL_PORT_NAME.
DATA LR_JSON_SERIALIZER TYPE REF TO CL_TREX_JSON_SERIALIZER.
DATA LR_JSON_DESERIALIZER TYPE REF TO CL_TREX_JSON_DESERIALIZER.
ZFMPARAVALSAVE1 ‘ZFOA_050’.
ZFMPARAVALSAVE2 ‘B’.
SELECT SINGLE * INTO LS_CONFIG FROM ZTPLM_CONFIG WHERE CPROG = ‘ZMM003C’ AND SYSID = ‘ZLLOA’ .
IF SY-SUBRC NE 0 .
RTMSG = ‘请配置蓝凌模板ID’.
RTYPE = ‘E’.
ZFMPARAVALSAVE1 ‘ZFOA_050’.
ZFMPARAVALSAVE2 ‘R’.
RETURN .
ENDIF.
IF LINES( GT_DETAIL[] ) > 600 .
RTMSG = ‘发送行数项超出最大范围’.
RTYPE = ‘E’.
ZFMPARAVALSAVE2 ‘R’.
RETURN .
ENDIF.
CHECK GT_HEADER[] IS NOT INITIAL AND GT_DETAIL[] IS NOT INITIAL .
MOVE-CORRESPONDING GT_DETAIL[] TO LT_ZNO[] .
SORT LT_ZNO BY ZNO.
DELETE ADJACENT DUPLICATES FROM LT_ZNO .
TRY .
CREATE OBJECT L_WEBSERVICE
EXPORTING
LOGICAL_PORT_NAME = ‘ZLLOA’.
CATCH CX_AI_SYSTEM_FAULT INTO LO_SYSTEM_FAULT. " 捕获错误
IF LO_SYSTEM_FAULT IS NOT INITIAL.
-
MESSAGE LO_SYSTEM_FAULT->ERRORTEXT TYPE 'S' DISPLAY LIKE 'E'. RTMSG = LO_SYSTEM_FAULT->ERRORTEXT . RTYPE = 'E'. RETURN. ENDIF.
ENDTRY.
CLEAR: LWEB_ADD_REVIEW,LWEB_ADD_REVIEW_RESPONSE.
READ TABLE GT_HEADER INTO DATA(LS_HEADER) INDEX 1 .
-
lv_personno1 = ‘10401289’ .
LWEB_ADD_REVIEW-PARAMETERS-ARG0-DOC_CREATOR = ‘{“PersonNo”: "’ && LS_HEADER-ZIUSER && ‘"}’. " 流程发起人
LWEB_ADD_REVIEW-PARAMETERS-ARG0-DOC_STATUS = ‘20’.
LWEB_ADD_REVIEW-PARAMETERS-ARG0-DOC_SUBJECT = ‘生产平台单据:’ && LS_HEADER-ZNO .
LWEB_ADD_REVIEW-PARAMETERS-ARG0-FD_TEMPLATE_ID = LS_CONFIG-ZMBID . " ‘190c3a59d5ef564983f489148cdaf99a’ .
LV_ZDOCTYP = |“{ LS_HEADER-ZDOCTYP }”,| .
LV_ZDOCTYP_TXT = |“{ LS_HEADER-ZDOCTYP_TXT }”,| .
IF LS_HEADER-ZIUSER IS INITIAL .
RTMSG = ‘流程发起人为空,请检查’.
RTYPE = ‘E’.
RETURN .
ENDIF .
*** 处理明显
LOOP AT GT_DETAIL INTO DATA(LS_DETAIL) .
REPLACE ALL OCCURRENCES OF '"' IN LS_DETAIL-MAKTX WITH '' ."去掉单引号
REPLACE ALL OCCURRENCES OF CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB IN LS_DETAIL-MAKTX WITH '' ."去掉单引号
REPLACE ALL OCCURRENCES OF '"' IN LS_DETAIL-MAKTX WITH '' ."去掉单引号
REPLACE ALL OCCURRENCES OF CL_ABAP_CHAR_UTILITIES=>VERTICAL_TAB IN LS_DETAIL-MAKTX WITH '' ."去掉双引号
REPLACE ALL OCCURRENCES OF CL_ABAP_CHAR_UTILITIES=>NEWLINE IN LS_DETAIL-MAKTX WITH '' ."去掉逗号
REPLACE ALL OCCURRENCES OF CL_ABAP_CHAR_UTILITIES=>CR_LF IN LS_DETAIL-MAKTX WITH '' ."去掉斜杠
REPLACE ALL OCCURRENCES OF CL_ABAP_CHAR_UTILITIES=>FORM_FEED IN LS_DETAIL-MAKTX WITH '' ."去掉斜杠
IF LV_ZFIELD0 IS INITIAL .
LV_ZFIELD0 = |"{ LS_DETAIL-ZNO }"| .
LV_ZFIELD1 = |"{ LS_DETAIL-ZITEM }"| .
LV_ZFIELD2 = |"{ LS_DETAIL-MATNR_1 }"| .
LV_ZFIELD3 = |"{ LS_DETAIL-MATNR }"| .
LV_ZFIELD4 = |"{ LS_DETAIL-ZQTY }"| .
LV_ZFIELD5 = |"{ LS_DETAIL-MAKTX }"| .
LV_ZFIELD6 = |"{ LS_DETAIL-WERKS }"| .
LV_ZFIELD7 = |"{ LS_DETAIL-AUFNR }"| .
LV_ZFIELD8 = |"{ LS_DETAIL-LGORT }"| .
LV_ZFIELD9 = |"{ LS_DETAIL-MEINS }"| .
LV_ZFIELD10 = |"{ LS_DETAIL-ZMARK }"| .
ELSE .
LV_ZFIELD0 = LV_ZFIELD0 && |,"{ LS_DETAIL-ZNO }"| .
LV_ZFIELD1 = LV_ZFIELD1 && |,"{ LS_DETAIL-ZITEM }"| .
LV_ZFIELD2 = LV_ZFIELD2 && |,"{ LS_DETAIL-MATNR_1 }"| .
LV_ZFIELD3 = LV_ZFIELD3 && |,"{ LS_DETAIL-MATNR }"| .
LV_ZFIELD4 = LV_ZFIELD4 && |,"{ LS_DETAIL-ZQTY }"| .
LV_ZFIELD5 = LV_ZFIELD5 && |,"{ LS_DETAIL-MAKTX }"| .
LV_ZFIELD6 = LV_ZFIELD6 && |,"{ LS_DETAIL-WERKS }"| .
LV_ZFIELD7 = LV_ZFIELD7 && |,"{ LS_DETAIL-AUFNR }"| .
LV_ZFIELD8 = LV_ZFIELD8 && |,"{ LS_DETAIL-LGORT }"| .
LV_ZFIELD9 = LV_ZFIELD9 && |,"{ LS_DETAIL-MEINS }"| .
LV_ZFIELD10 = LV_ZFIELD10 && |,"{ LS_DETAIL-ZMARK }"| .
ENDIF.
ENDLOOP .
LV_JSON = ‘{’ &&
‘“fd_3d26dbee7fd736”:’ && LV_ZDOCTYP && “90”’ && " 单据类型
‘“fd_3d26dbef5a3d7e”:’ && LV_ZDOCTYP_TXT && " 单据类型描述
‘“fd_3d26dad706bbd2”: {’ && " 明细表 fd_3d26dad706bbd2.fd_3d26dbe33c54b8
‘“fd_3d26dad706bbd2.fd_3d26dbe33c54b8”: [’ && " 行号
LV_ZFIELD0 && "
‘],’ &&
‘“fd_3d26dad706bbd2.fd_3d26dbfc440158”: [’ && " 行号
LV_ZFIELD1 && "
‘],’ && "
‘“fd_3d26dad706bbd2.fd_3d26dbfef471ac”: [’ && " 订单成品物料编号 MATNR_1
LV_ZFIELD2 && "
‘],’ &&
‘“fd_3d26dad706bbd2.fd_3d26dbfff99312”: [’ && " 物料编码
LV_ZFIELD3 &&
‘],’ &&
‘“fd_3d26dad706bbd2.fd_3d26dc013e5aea”: [’ && " 数量
LV_ZFIELD4 &&
‘],’ &&
‘“fd_3d26dad706bbd2.fd_3d26dc0280826a”: [’ && " 物料描述 MAKTX
LV_ZFIELD5 &&
‘],’ &&
‘“fd_3d26dad706bbd2.fd_3d26dc039be540”: [’ && " 工厂
LV_ZFIELD6 &&
’ ],’ &&
‘“fd_3d26dad706bbd2.fd_3d26dc04c7f9a8”: [’ && " 工单号 AUFNR
LV_ZFIELD7 &&
‘],’ &&
‘“fd_3d26dad706bbd2.fd_3d26dc05f6eb62”: [’ && " 库存地点
LV_ZFIELD8 &&
‘],’ &&
‘“fd_3d26dad706bbd2.fd_3d2afb2c98347e”: [’ && " 行备注
LV_ZFIELD10 &&
‘],’ &&
‘“fd_3d26dad706bbd2.fd_3d26dc07553306”: [’ && " 单位
LV_ZFIELD9 &&
‘]’ &&
‘}’ && ‘}’.
LWEB_ADD_REVIEW-PARAMETERS-ARG0-FORM_VALUES = LV_JSON .
**ZTOALOG
DATA : LS_LOG TYPE ZTOALOG .
TRY.
CALL METHOD L_WEBSERVICE->ADD_REVIEW
EXPORTING
ADD_REVIEW = LWEB_ADD_REVIEW
IMPORTING
ADD_REVIEW_RESPONSE = LWEB_ADD_REVIEW_RESPONSE.
IF LWEB_ADD_REVIEW_RESPONSE-PARAMETERS-RETURN IS NOT INITIAL .
DATA(LS_MSG) = LWEB_ADD_REVIEW_RESPONSE-PARAMETERS-RETURN .
DATA(LV_LEN) = STRLEN( LS_MSG ) .
IF LV_LEN = 32 .
COMMIT WORK .
RTMSG = ''.
RTYPE = 'S'.
ELSE .
RTMSG = LWEB_ADD_REVIEW_RESPONSE-PARAMETERS-RETURN.
RTYPE = 'E'.
ENDIF.
ENDIF.
CATCH CX_AI_SYSTEM_FAULT INTO LO_SYS_EXCEPTION. " 捕获错误
IF LO_SYS_EXCEPTION IS NOT INITIAL.
RTMSG = LO_SYS_EXCEPTION->ERRORTEXT .
RTYPE = 'E'.
ENDIF.
CATCH CX_AI_APPLICATION_FAULT INTO LO_APP_EXCEPTION.
IF LO_APP_EXCEPTION IS NOT INITIAL.
DATA(LV_TEXT) = LO_APP_EXCEPTION->GET_TEXT( ) .
RTMSG = LV_TEXT .
RTYPE = 'E'.
ENDIF.
ENDTRY.
LV_JSON1 = /UI2/CL_JSON=>SERIALIZE(
DATA = LT_ZNO
COMPRESS = ABAP_FALSE
PRETTY_NAME = /UI2/CL_JSON=>PRETTY_MODE-CAMEL_CASE ) .
LS_LOG-GUID = CL_SYSTEM_UUID=>IF_SYSTEM_UUID_STATIC~CREATE_UUID_X16( ) .
LS_LOG-ZTYPEOA = ‘10’ .
LS_LOG-UNAME = SY-UNAME .
LS_LOG-DATUM = SY-DATUM .
LS_LOG-UZEIT = SY-UZEIT .
LS_LOG-CREATR = LS_HEADER-ZIUSER .
LS_LOG-ZJSON_IN = LV_JSON1 .
LS_LOG-ZJSON_OUT = LWEB_ADD_REVIEW_RESPONSE-PARAMETERS-RETURN .
MODIFY ZTOALOG FROM LS_LOG .
ZFMPARAVALSAVE1 ‘ZFOA_050’.
ZFMPARAVALSAVE2 ‘R’.
ENDFUNCTION.