2013-11-14 1 views
0

У меня есть следующий код, который делает то, что я хочу, чтобы это сделать, но я хочу, чтобы добавить дополнительный код, чтобы любая пустая запись для полех exit_prnt_layout и exit_web_layout в таблице hrp5021 заполнен с текстом СТАНДАРТ. Я знаю, как извлекать данные из таблиц, но я изо всех сил пытаюсь понять, как добавить эту функциональность. Я очень новичок в абапе, и помощь приветствуется.Заполнения пустых полей в таблице с закодированным текстом в соке ABAP

TABLES: hrp5021. 

DATA: hrp5021_wa TYPE hrp5021. 

PARAMETERS: objid LIKE hrp5021-objid. 

END-OF-SELECTION. 
SELECT SINGLE * FROM hrp5021 INTO hrp5021_wa 
       WHERE plvar = '01' 
       AND otype = 'VA' 
       AND objid = objid 
       AND istat = '4' 
       AND exit_prnt_layout = 'STANDARD'. 
IF sy-subrc = 0. 
     hrp5021_wa-exit_prnt_layout = 'SMARTFORM'. 
    UPDATE hrp5021 FROM hrp5021_wa. 
     WRITE:/ 'VA', objid, 'was changed to Smartform'. 
ELSE. 
     WRITE:/ 'No entry for conversion found'. 
ENDIF. 

ответ

3

ОТКАЗ

Это почти никогда не хорошая идея, чтобы обновить стандартную таблицу SAP напрямую. Если вы новичок в SAP, вы можете удалить «почти» из этого утверждения.

Поэтому, хотя я отвечу на ваш вопрос, я настоятельно рекомендую вам попробовать найти утвержденный SAP способ обновления необходимых полей с помощью BDC, BAPI или выпущенного функционального модуля.

Следующий код будет обновить все записи, где exit_prnt_layout является пустым:

update hrp5021 set exit_prnt_layout = 'STANDARD' 
    where exit_prnt_layout = space. 

write:/ sy-dbcnt ' entries updated'. 

И то же самое для exit_web_layout:

update hrp5021 set exit_web_layout = 'STANDARD' 
    where exit_web_layout = space. 

write:/ sy-dbcnt ' entries updated'. 
+0

@ Esti Я полностью согласен с вами в том, что вы не должны обновлять SAP TABLES напрямую, и я понимаю, что это не очень хорошая идея, но это то, что требовалось. Спасибо за ваш ответ, я применил аналогичный подход к твоему, который сработал. Но ваш код будет делать именно то, что я хотел сделать. ** UPDATE hrp5021 SET exit_prnt_layout = 'STANDARD' exit_web_layout = 'STANDARD' WHERE exit_prnt_layout = '' ИЛИ ​​exit_web_layout = ''. ** – user2916178

0

Пожалуйста, добавьте «совершить работу», после обновления успешного, так что незавершенные транзакции в Вашем LUW получить физически приверженны дб на DBMS.

+1

кажется излишним, в лучшем случае я посвящаю бы каждые 100 обновлений. – tomdemuyt

+0

Я сказал через luw. Нужно знать его транзакционные зависимости. – icbytes

+2

Как сказал op: приведенный выше код «работает», предполагая, что он означает, что существующее обновление от «STANDARD» до «SMARTFORM» успешно выполнено. В конце программы есть неявная фиксация базы данных. Также см. Http://help.sap.com/saphelp_nw04s/helpdata/en/41/7af4bca79e11d1950f0000e82de14a/content.htm для получения дополнительной информации о LUW и неявных фиксациях/откатах. – Esti

 Смежные вопросы

  • Нет связанных вопросов^_^