BAPI no tiene una solución de un solo paso, use BDC directamente
MANIFESTACIÓN
bucle en gt_alv1 donde sel = 'X'.
si gt_alv1-app_date no es inicial.
gt_alv1-rtype = 'S'.
gt_alv1-rtmsg = 'No es necesario repetir la aprobación'.
modificar gt_alv1.
Seguir.
terminara si.
* realizar frm_pro_head_change usando gt_alv1-aufnr gt_alv1-gamng_new gt_alv1-xianb cambiando gt_alv1-rtype gt_alv1-rtmsg.
* realizar frm_pro_item_change.
realice frm_req_get usando gt_alv1-reqnm.
* Entrar en la pantalla de pedidos
realice frm_bdc_dynnr usando 'SAPLCOKO1' '0110'.
ejecute frm_bdc_field usando 'CAUFVD-AUFNR' gt_alv1-aufnr.
realice frm_bdc_field usando 'R62CLORD-FLG_OVIEW' 'X'.
realice frm_bdc_field usando 'BDC_OKCODE' '= KPU2'. "组件
lt_alv2 [] = gt_alv2 [].
ordenar lt_alv2 por ewahr descendente. "Cambie primero al que tenga la mayor probabilidad de uso; de lo contrario, se informará un error
bucle en lt_alv2.
si lt_alv2-new_flag = 'X'. "新增
* Pantalla de componentes
realice frm_bdc_dynnr usando 'SAPLCOMK' '0120'.
realice frm_bdc_field usando'BDC_CURSOR''RESBD-MATNR (01) '. "Localice la primera línea
realice frm_bdc_field usando 'BDC_OKCODE' '= KEIN'. "差 入 行
* Pantalla de componentes
realice frm_bdc_dynnr usando 'SAPLCOMK' '0120'.
ejecute frm_bdc_field usando 'RESBD-POSNR (01)' lt_alv2-posnr_pro. "项目
ejecute frm_bdc_field usando 'RESBD-MATNR (01)' lt_alv2-matnr_new. "物料
ejecute frm_bdc_field usando 'RESBD-MENGE (01)' lt_alv2-bdmng_new. "数量
ejecute frm_bdc_field usando 'RESBD-VORNR (01)' '0010'. "工序
ejecute frm_bdc_field usando 'RESBD-POSTP (01)' 'L'. "Categoría de proyecto
ejecute frm_bdc_field usando 'BDC_OKCODE' '/ 00'. "Enter (sacará la fábrica)
* Detalles del componente
realice frm_bdc_dynnr usando 'SAPLCOMD' '0110'.
realice frm_bdc_field usando 'BDC_OKCODE' '= BACK'. "返回
else .. "Eliminar y modificar deben entrar y ubicar
* Pantalla de componentes
realice frm_bdc_dynnr usando 'SAPLCOMK' '0120'.
ejecute frm_bdc_field usando'BDC_OKCODE '' = P-- '. "Primera página
* Pantalla de componentes
realice frm_bdc_dynnr usando 'SAPLCOMK' '0120'.
realice frm_bdc_field usando 'BDC_OKCODE' '= AUFS'. "定位
* Pantalla de orientación
realice frm_bdc_dynnr usando 'SAPLCO05' '0110'.
ejecute frm_bdc_field usando 'RCOSU-POSNR' lt_alv2-posnr_pro.
ejecute frm_bdc_field usando 'RCOSU-MATNR' lt_alv2-matnr.
ejecute frm_bdc_field usando 'RCOSU-BDMNG' lt_alv2-bdmng.
realice frm_bdc_field usando 'BDC_OKCODE' '= MÁS'. "确认
if lt_alv2-del = 'X'. "Eliminar
* Pantalla de componentes
realice frm_bdc_dynnr usando 'SAPLCOMK' '0120'.
ejecute frm_bdc_field usando 'RC27X-FLG_SEL (01)' 'X'. "Primera línea
realice frm_bdc_field usando 'BDC_OKCODE' '= DEL'. "删除
más ". Modificar
* Pantalla de componentes
realice frm_bdc_dynnr usando 'SAPLCOMK' '0120'.
realice frm_bdc_field usando'BDC_CURSOR''RESBD-POSNR (01) '. "Primera línea
realice frm_bdc_field usando'BDC_OKCODE '' = PICK '. "Detalles del artículo (doble clic)
* Detalles del componente
realice frm_bdc_dynnr usando 'SAPLCOMD' '0110'.
si lt_alv2-alpgr es inicial.
si lt_alv2-matnr_new no es inicial.
ejecute frm_bdc_field usando 'RESBD-MATNR' lt_alv2-matnr_new. "物料
terminara si.
si lt_alv2-bdmng_new no es inicial.
realice frm_bdc_field usando'RESBD-MENGE 'lt_alv2-bdmng_new. "Cantidad requerida
terminara si.
demás.
si lt_alv2-nomng_new no es inicial.
ejecute frm_bdc_field usando 'RESBD-NOMNG' lt_alv2-nomng_new. "原始 数量
terminara si.
si lt_alv2-ewahr_new no es inicial.
ejecute frm_bdc_field usando 'RESBD-EWAHR' lt_alv2-ewahr_new. "使用率
terminara si.
terminara si.
realice frm_bdc_field usando 'BDC_OKCODE' '= BACK'. "返回
terminara si.
terminara si.
endloop.
* Detalles del componente
realice frm_bdc_dynnr usando 'SAPLCOMK' '0120'.
realice frm_bdc_field usando 'BDC_OKCODE' '= KOZE'. "抬头
* Pantalla de resumen
realice frm_bdc_dynnr usando 'SAPLCOKO1' '0115'.
si gt_alv1-gamng_new no es inicial.
realice frm_bdc_field usando'CAUFVD-GAMNG 'gt_alv1-gamng_new. "Cantidad (la cantidad total debe cambiarse en último lugar; de lo contrario, los componentes no coincidirán si coinciden con la cantidad)
terminara si.
realice frm_bdc_field usando'BDC_OKCODE '' = + COI '. "Pantalla del cliente
* Pantalla de cliente
realice frm_bdc_dynnr usando 'SAPLCOKO1' '0115'.
si gt_alv1-xianb_new no es inicial.
realice frm_bdc_field usando 'Z_COCI_AUFK-ZZLINE' gt_alv1-xianb_new. "线 别
terminara si.
realice frm_bdc_field usando 'BDC_OKCODE' '= BU'. "保存
realice frm_bdc_call usando 'CO02' cambiando gt_alv1-rtype gt_alv1-rtmsg.
si gt_alv1-rtype = 'S'.
gt_alv1-app_date = sy-datum.
gt_alv1-app_name = sy-uname.
terminara si.
modificar gt_alv1.
actualizar ztpp0023a set app_date = gt_alv1-app_date app_name = gt_alv1-app_name
donde reqnm = gt_alv1-reqnm.
actualizar ztpp0023b set app_date = gt_alv1-app_date app_name = gt_alv1-app_name
donde reqnm = gt_alv1-reqnm.
endloop.