shurale написал(а):
Dimionddddd написал(а):
Подскажите пожалуйста каким способом можна удалить ОСы с введенными значениями!!
Если вы ввели значения в AS91, при этом еще не успели сделать никаких движений по карточке и не прогнали по ней амортизацию, то можно.
Удалите все значение в AS92, проставьте дату списания и удалите с помощью транзакции AS06
AS06 будет все равно ругаться , т.к. запись в anlc уже появилась. Поэтому еще и anlс надо будет потереть по этой карточке.
Но это все на ваш страх и риск. Если все сделать правильно то никаких проблем не возникнет.
Эхъ . Есть у меня программа на этот случай( писал быстро поэтому она выглядит корявой):
Сначала запускаете в режиме X_DO она чистит табличку anlc и удаляет даты в anla.
Второй запуск c x_do и с x_del - в этот момент программа запускает пакетник AS06.
Но опять же используете её на свой страх и риск.
Code:
*&---------------------------------------------------------------------*
*& Report Z_DELETE_PRE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT z_delete_assets.
TABLES: anla,
anlc.
DATA: gt_anla TYPE TABLE OF anla,
gs_anlc TYPE anlc,
gs_anla TYPE anla.
DATA: mod(1).
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
PARAMETER: p_bukrs TYPE bukrs OBLIGATORY DEFAULT '8000'.
SELECT-OPTIONS: s_anln1 FOR anla-anln1 OBLIGATORY,
s_anln2 FOR anla-anln2.
PARAMETERS: x_do AS CHECKBOX,
x_del AS CHECKBOX.
PARAMETERS: p_e RADIOBUTTON GROUP l1 DEFAULT 'X' USER-COMMAND rb,
p_a RADIOBUTTON GROUP l1.
CLEAR: mod.
CASE 'X'.
WHEN p_e.
mod = 'E'.
WHEN p_a.
mod = 'A'.
ENDCASE.
SELECT * FROM anla
INTO TABLE gt_anla
WHERE bukrs = p_bukrs
AND anln1 IN s_anln1
AND anln2 IN s_anln2.
IF sy-subrc = 0.
LOOP AT gt_anla INTO gs_anla.
SELECT SINGLE * FROM anlc
INTO gs_anlc
WHERE bukrs = p_bukrs
AND anln1 = gs_anla-anln1
AND anln2 = gs_anla-anln2.
IF sy-subrc = 0.
WRITE : 'На карточку ОС', gs_anla-anln1, '-', gs_anla-anln2, 'Уже заведены суммы'.
IF x_do IS INITIAL.
ELSE.
DELETE anlc FROM gs_anlc.
COMMIT WORK AND WAIT.
ENDIF.
ENDIF.
IF x_do IS INITIAL.
WRITE: 'Карточку ОС', gs_anla-anln1, '-', gs_anla-anln2, 'Можно удалить'.
ELSE.
CLEAR: gs_anla-aktiv,
gs_anla-zugdt,
gs_anla-zujhr,
gs_anla-zuper.
MODIFY anla FROM gs_anla.
COMMIT WORK AND WAIT.
IF x_del IS NOT INITIAL.
* REFRESH bdcdata.
PERFORM as06.
ENDIF.
WRITE: 'Карточка ОС', gs_anla-anln1, '-', gs_anla-anln2, 'Готова для удаления с помощью AS06'.
ENDIF.
* ENDIF.
ENDLOOP.
ELSE.
WRITE: 'ОС с номером', gs_anla-anln1, '-', gs_anla-anln2, 'Не существует'.
ENDIF.
*&---------------------------------------------------------------------*
*& Form as06
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM as06.
CLEAR: bdcdata,
bdcdata[].
PERFORM bdc_dynpro USING 'SAPLAIST' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'ANLA-ANLN1'.
PERFORM bdc_field USING 'ANLA-ANLN1'
gs_anla-anln1.
PERFORM bdc_field USING 'ANLA-ANLN2'
gs_anla-anln2.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTEDEL'.
PERFORM bdc_field USING 'ANLA-ANLN1'
gs_anla-anln1.
PERFORM bdc_field USING 'ANLA-ANLN2'
gs_anla-anln2.
PERFORM bdc_field USING 'ANLA-BUKRS'
p_bukrs.
PERFORM bdc_dynpro USING 'SAPLAIST' '0210'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RA02S-XPHYS'.
PERFORM bdc_field USING 'BDC_OKCODE'
'RW'.
PERFORM bdc_field USING 'NO_SELECTION'
''.
PERFORM bdc_field USING 'RA02S-XPHYS'
'X'.
PERFORM bdc_dynpro USING 'SAPLSPO1' '0100'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=YES'.
PERFORM bdc_dynpro USING 'SAPLSPO1' '0100'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=YES'.
CALL TRANSACTION 'AS06' USING bdcdata MODE mod UPDATE 'S'.
ENDFORM. "as06
*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "BDC_DYNPRO
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
DATA: nodata(1) TYPE c VALUE '/'.
IF fval <> nodata.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDIF.
ENDFORM. "BDC_FIELD