处理代码如下:对行项目中的计划交货天数做修改,该函数大批量执行时会较慢
DATA: lt_alv TYPE STANDARD TABLE OF typ_alv WITH HEADER LINE, ls_alv TYPE typ_alv. DATA: lt_item TYPE STANDARD TABLE OF bapimeoutitem WITH HEADER LINE, lt_itemx TYPE STANDARD TABLE OF bapimeoutitemx WITH HEADER LINE, lt_return TYPE STANDARD TABLE OF bapiret2 WITH HEADER LINE, l_number TYPE bapimeoutheader-number. DATA: l_msg(220). FIELD-SYMBOLS: <fs_alv> TYPE typ_alv. lt_alv[] = gt_alv[]. DELETE lt_alv[] WHERE sel = ''. IF lt_alv[] IS INITIAL. MESSAGE '请选择需要修改的行' TYPE 'S' DISPLAY LIKE 'E'. EXIT. ENDIF. LOOP AT lt_alv. ls_alv = lt_alv. AT NEW ebeln. CLEAR: l_number,lt_item[],lt_item,lt_itemx[],lt_itemx, lt_return[],lt_return. l_number = ls_alv-ebeln. ENDAT. lt_item-item_no = ls_alv-ebelp. lt_item-plan_del = ls_alv-aplfz. APPEND lt_item. CLEAR lt_item. lt_itemx-item_no = ls_alv-ebelp. lt_itemx-plan_del = 'X'. APPEND lt_itemx. CLEAR lt_itemx. AT END OF ebeln. CALL FUNCTION 'BAPI_SAG_CHANGE' EXPORTING purchasingdocument = l_number TABLES return = lt_return[] item = lt_item[] itemx = lt_itemx[]. LOOP AT lt_return WHERE type CA 'EAX'. CALL FUNCTION 'MESSAGE_TEXT_BUILD' EXPORTING msgid = lt_return-id msgnr = lt_return-number msgv1 = lt_return-message_v1 msgv2 = lt_return-message_v2 msgv3 = lt_return-message_v3 msgv4 = lt_return-message_v4 IMPORTING message_text_output = l_msg. ls_alv-msg = ls_alv-msg && l_msg && ';'. ENDLOOP. IF sy-subrc = 0. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. ls_alv-type = 'E'. ls_alv-sicon = c_red. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. ls_alv-type = 'S'. ls_alv-sicon = c_green. ls_alv-msg = '修改成功!'. ENDIF. LOOP AT gt_alv ASSIGNING <fs_alv> WHERE ebeln = ls_alv-ebeln AND sel = 'X'. <fs_alv>-msg = ls_alv-msg. <fs_alv>-type = ls_alv-type. <fs_alv>-sicon = ls_alv-sicon. ENDLOOP. ENDAT. ENDLOOP. MESSAGE '处理完成' TYPE 'S'.