Автор Тема: ФМ для получения данных PP-заказа (заказов, разузлование)  (Прочитано 8455 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Очень удобная FM, вводишь номер заказа, а на выходе получаешь список всех ниже стоящих заказов (если это сеть заказов), список компонентов и тд., для удобства обернул в form.
Отдельно объявления данных:
Код: You are not allowed to view links. Register or Login
  DATA:
    gt_header  LIKE  bapi_order_header1 OCCURS 0,
    gt_position  LIKE  bapi_order_item OCCURS 0,
    gt_sequence  LIKE  bapi_order_sequence OCCURS 0,
    gt_operation LIKE  bapi_order_operation1 OCCURS 0,
    gt_trigger_point LIKE  bapi_order_trigger_point OCCURS 0,
    gt_component LIKE  bapi_order_component OCCURS 0,
    gt_prod_rel_tool LIKE  bapi_order_prod_rel_tools OCCURS 0,
    gt_BAPIRET2 LIKE  BAPIRET2 OCCURS 0.   
   
   rs_order TYPE afko-aufnr.

пример вызова:
Код: You are not allowed to view links. Register or Login
rs_order = '100000000424'. " подставляйте свой  ;)
perform get_orders rs_order.

сама форма:
Код: You are not allowed to view links. Register or Login
FORM get_orders
  USING  rs_order TYPE afko-aufnr.

  DATA: l_order_objects TYPE bapi_pp_order_objects.

  l_order_objects-header      = 'X'.
  l_order_objects-positions   = 'X'.
  "SEQUENCES
  "OPERATIONS
  l_order_objects-components  = 'X'.
  "PROD_REL_TOOLS
  "TRIGGER_POINTS
  "SUBOPERATIONS

    REFRESH gt_header. REFRESH  gt_position. REFRESH  gt_sequence.
    REFRESH gt_operation. REFRESH  gt_trigger_point. REFRESH  gt_component.
    REFRESH  gt_prod_rel_tool. REFRESH  gt_BAPIRET2.

  CALL FUNCTION 'BAPI_PRODORD_GET_DETAIL'
    EXPORTING
      number            = rs_order
      collective_order  = 'X'
      order_objects     = l_order_objects
    IMPORTING
      RETURN =  gt_BAPIRET2
    TABLES
      header        = gt_header
      position      = gt_position
      sequence      = gt_sequence
      operation     = gt_operation
      trigger_point = gt_trigger_point
      component     = gt_component
      prod_rel_tool = gt_prod_rel_tool .

Думаю все понятно, по типам и названиям можно понять что получаем на выходе

header - данные заголовков
position  - позиции
sequence - последовательности
component - компоненты
Мне лично нужны были первая и последняя таблички.
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Небольшое уточнение, ошибся в типе (когда адаптировал для примера на форум)
Код: You are not allowed to view links. Register or Login
DATA:
    gt_header  LIKE  bapi_order_header1 OCCURS 0,
    gt_position  LIKE  bapi_order_item OCCURS 0,
    gt_sequence  LIKE  bapi_order_sequence OCCURS 0,
    gt_operation LIKE  bapi_order_operation1 OCCURS 0,
    gt_trigger_point LIKE  bapi_order_trigger_point OCCURS 0,
    gt_component LIKE  bapi_order_component OCCURS 0,
    gt_prod_rel_tool LIKE  bapi_order_prod_rel_tools OCCURS 0,
   "gt_BAPIRET2 LIKE  BAPIRET2 OCCURS 0.  " <=== тут неправильно
    l_BAPIRET2 LIKE  BAPIRET2. " теперь правильно
  
   rs_order TYPE afko-aufnr.
Форма соответственно:
Код: You are not allowed to view links. Register or Login
FORM get_orders
  USING  rs_order TYPE afko-aufnr.

  DATA: l_order_objects TYPE bapi_pp_order_objects.

  l_order_objects-header      = 'X'.
  l_order_objects-positions   = 'X'.
  "SEQUENCES
  "OPERATIONS
  l_order_objects-components  = 'X'.
  "PROD_REL_TOOLS
  "TRIGGER_POINTS
  "SUBOPERATIONS

    REFRESH gt_header. REFRESH  gt_position. REFRESH  gt_sequence.
    REFRESH gt_operation. REFRESH  gt_trigger_point. REFRESH  gt_component.
    REFRESH  gt_prod_rel_tool.

  CALL FUNCTION 'BAPI_PRODORD_GET_DETAIL'
    EXPORTING
      number            = rs_order
      collective_order  = 'X'
      order_objects     = l_order_objects
    IMPORTING
      RETURN =  l_BAPIRET2 " <=== тут
    TABLES
      header        = gt_header
      position      = gt_position
      sequence      = gt_sequence
      operation     = gt_operation
      trigger_point = gt_trigger_point
      component     = gt_component
      prod_rel_tool = gt_prod_rel_tool .


You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 807
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Код: You are not allowed to view links. Register or Login
   REFRESH gt_header. REFRESH  gt_position. REFRESH  gt_sequence.
    REFRESH gt_operation. REFRESH  gt_trigger_point. REFRESH  gt_component.
    REFRESH  gt_prod_rel_tool.
Ну и еще в качестве уточнения или улучшения, многие похоже забывают что операторы ABAP имеют синтаксис множественного применения, .т.е. этот же код можно было бы написать как:
Код: You are not allowed to view links. Register or Login
    REFRESH: gt_header,  gt_position,  gt_sequence, gt_operation,  gt_trigger_point,  gt_component,
             gt_prod_rel_tool.
Что выглядит более приятно глазу. Ну или второй вариант
Код: You are not allowed to view links. Register or Login
    CLEAR: gt_header[],  gt_position[],  gt_sequence[], gt_operation[],  gt_trigger_point[],  gt_component[],
           gt_prod_rel_tool[].

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
You are not allowed to view links. Register or Login
Ну и еще в качестве уточнения или улучшения, многие похоже забывают что операторы ABAP имеют синтаксис множественного применения, .т.е. этот же код можно было бы написать как:...

Ну кому как, мне так нагляднее и удобнее, кто как привык и «о вкусах не спорят»....

You are not allowed to view links. Register or Login
Что выглядит более приятно глазу. Ну или второй вариант

Как по мне, тоже имхо (см. выше, что о вкусах не спорят), так приятнее, а вообще, часто пишешь так, как тебе более читабельнее

You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Sapforum.Biz