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

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

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

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • 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
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
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • 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
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 768
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • 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
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • 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
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login