用 CRM_ORDER_MAINTAIN 来做 一个请求支付的数据 明细作成和删除
但是开始 总是没法更新, 最后让客户方的人 帮忙 才解决问题,
因为急于交付 所以 没有仔细调整内部数据,直接照搬 过来了,功能能够正常实现
1 业务 逻辑
A 通过 CRM_ORDER_READ 读取 order 明细
B 根据条件 判断 明细作成 还是删除
C 数据更新
其中 通过函数CRM_ORDER_READ 读取到得数据的结构 和 CRM_ORDER_MAINTAIN 的 不一样
前一个用的都是 后缀WRK, 后一个有的是后缀 COM
所以要一个个 操作
更新两个表 BILLPLAN 是更新 BILLPLAN_DATES里的 BILL_VALUE ,BILL_TIME ,BILLPLAN_MODE
新作成的 mode 设定为A 或者可以不设定 ,删除的用 D
其余的字段没啥用,
最重要的就是INPUT_FIELDS
每条BILLPLAN 都要作成 更新 和删除 两条数据
(有N条BILLPLAN ,BILLPLAN 里 有M条数据的话,INPUT_FIELDS 里就有 2N*M条 明细数据)
LDS_FIELD_NAMES-FIELDNAME = 'BILL_DATE'.
INSERT LDS_FIELD_NAMES INTO TABLE LDT_FIELD_NAMES.
LDS_FIELD_NAMES-FIELDNAME = 'BILL_VALUE'.
INSERT LDS_FIELD_NAMES INTO TABLE LDT_FIELD_NAMES.
CLEAR LDS_INPUT_FILEDS.
LDS_INPUT_FILEDS-REF_GUID = LDS_ET_BILLPLAN-REF_GUID.
LDS_INPUT_FILEDS-REF_KIND = 'B'.
* 更新
LDS_INPUT_FILEDS-LOGICAL_KEY = LDS_BILLPLAN_DATES_C-HANDLE.
CONCATENATE ‘DH ’ LDS_INPUT_FILEDS-LOGICAL_KEY INTO
LDS_INPUT_FILEDS-LOGICAL_KEY.
* 删除用
LDS_INPUT_FILEDS-LOGICAL_KEY = LDS_BILLPLAN_DATES-GUID.
CONCATENATE ‘DG ’ LDS_INPUT_FILEDS-LOGICAL_KEY INTO
LDS_INPUT_FILEDS-LOGICAL_KEY.
LDS_INPUT_FILEDS-OBJECTNAME = 'BILLPLAN'.
LDS_INPUT_FILEDS-FIELD_NAMES = LDT_FIELD_NAMES.
INSERT LDS_INPUT_FILEDS INTO TABLE LDT_INPUT_FIELDS.
CALL FUNCTION 'CRM_ORDER_MAINTAIN'
EXPORTING
IT_BILLPLAN = IT_BILLPLAN
IMPORTING
ET_EXCEPTION = ET_ET_EXCEPTION"EC NEEDEN
CHANGING
CT_INPUT_FIELDS = CT_INPUT_FIELDS
EXCEPTIONS
ERROR_OCCURRED = 1
DOCUMENT_LOCKED = 2
NO_CHANGE_ALLOWED = 3
NO_AUTHORITY = 4
OTHERS = 5 .