Как получить количество строк внутренней таблицы в abap?

У нас есть две проблемы, с которыми можно справиться.

  1. Вы не можете предоставить разумный GetHashCode(), если любое поле в объекте может быть изменено. Также часто объект никогда не будет использоваться в коллекции, которая зависит от GetHashCode(). Таким образом, стоимость реализации GetHashCode() часто не стоит того, или это невозможно.
  2. Если кто-то помещает ваш объект в коллекцию, которая вызывает GetHashCode(), и вы переопределили Equals(), не делая GetHashCode() ведут себя корректно, этот человек может потратить дни на отслеживание проблемы.

Поэтому по умолчанию я делаю.

public class Foo
{
    public int FooId { get; set; }
    public string FooName { get; set; }

    public override bool Equals(object obj)
    {
        Foo fooItem = obj as Foo;

        return fooItem.FooId == this.FooId;
    }

    public override int GetHashCode()
    {
        // Some comment to explain if there is a real problem with providing GetHashCode() 
        // or if I just don't see a need for it for the given class
        throw new Exception("Sorry I don't know what GetHashCode should do for this class");
    }
}
32
задан Igal Serban 26 December 2008 в 22:25
поделиться

3 ответа

Можно использовать следующую функцию:

 DESCRIBE TABLE <itab-Name> LINES <variable>

После вызова, переменная содержит количество строк внутренней таблицы.

48
ответ дан Thorsten 11 October 2019 в 09:12
поделиться

если я понимаю Ваш вопрос правильно, Вы хотите знать номер строки во время условного цикла по внутренней таблице. Можно использовать системную переменную sy-tabix, если Вы работаете с внутренними таблицами. См. документацию ABAP, если Вам нужно больше информации (особенно глава по внутренняя таблица, обрабатывающая ).

Пример:

LOOP AT itab INTO workarea
        WHERE tablefield = value.

     WRITE: 'This is row number ', sy-tabix.

ENDLOOP.
0
ответ дан user51478 11 October 2019 в 09:12
поделиться

Существует также встроенная функция для этой задачи:

variable = lines( itab_name ).

Точно так же, как "чистый" синтаксис ABAP, описанный IronGoofy, функциональные "строки ()" пишет количество строк таблицы itab_name в переменную.

70
ответ дан Community 11 October 2019 в 09:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: