在采购订单屏幕的左上角有个特殊的按钮,可以通过它创建、查看或删除采购订单的附件。这个按钮是使用GOS(Generic Object Service)工具实现的,可以把GOS理解为一个连接文档和SAP内各种对象的一个工具,包括,采购订单(me23n),会计凭证(FB03)等等都用到了GOS。

下面就是me22n修改采购订单时的GOS,可以看到能为这个PO创建附件,也能查看附件清单。

读取采购订单附件(GOS)-[BDS_GOS_CONNECTIONS_GET/SO_DOCUMENT_READ_API1]

下面的例子程序是用来读取PO附件文档的名称和内容,其中用到了2个FM BDS_GOS_CONNECTIONS_GET SO_DOCUMENT_READ_API1。

BDS_GOS_CONNECTIONS_GET:用来获取GOS的连接

SO_DOCUMENT_READ_API1:用来通过GOS连接读取具体的附件文档名称、内容等相关信息。

 
 
REPORT ytest_gos_export_attachment.

PARAMETERS:p_ebeln TYPE ekko-ebeln.

DATA:lv_logical_system  LIKE  bapibds01-log_system,
     classname          LIKE  bapibds01-classname,
     gos_objkey         LIKE  swotobjid-objkey,
     lt_gos_connections LIKE bdn_con OCCURS 1 WITH HEADER LINE.
DATA:lv_id             TYPE sofolenti1-doc_id,
     ls_doc_data       TYPE sofolenti1,
     lt_object_header  TYPE STANDARD TABLE OF solisti1 WITH HEADER LINE,
     lt_object_content TYPE STANDARD TABLE OF solisti1 WITH HEADER LINE,
     lt_hex            TYPE STANDARD TABLE OF solix WITH HEADER LINE.

CALL FUNCTION 'OWN_LOGICAL_SYSTEM_GET'
  IMPORTING
    own_logical_system                = lv_logical_system
  EXCEPTIONS
    own_lv_logical_system_not_defined = 1
    OTHERS                            = 2.
.
gos_objkey = p_ebeln. "采购订单

CALL FUNCTION 'BDS_GOS_CONNECTIONS_GET'
  EXPORTING
    logical_system     = lv_logical_system
    classname          = 'BUS2012'  "用来标识采购订单
    objkey             = gos_objkey
    client             = sy-mandt
  TABLES
    gos_connections    = lt_gos_connections
  EXCEPTIONS
    no_objects_found   = 1
    internal_error     = 2
    internal_gos_error = 3
    OTHERS             = 4.

LOOP AT lt_gos_connections.

  lv_id = lt_gos_connections-loio_id.
  CALL FUNCTION 'SO_DOCUMENT_READ_API1'
    EXPORTING
      document_id                = lv_id         
    IMPORTING
      document_data              = ls_doc_data
    TABLES
      object_header              = lt_object_header
      object_content             = lt_object_content
      contents_hex               = lt_hex
    EXCEPTIONS
      document_id_not_exist      = 1
      operation_no_authorization = 2
      x_error                    = 3
      OTHERS                     = 4.
  BREAK-POINT.

ENDLOOP.

 

 
 

程序里加了个断点,运行时能看到  lt_object_content和 lt_object_header中的内容,一个保存了附件名字(BaiduSAP.txt)和类型(ASC),另外一个保存了内容。

读取采购订单附件(GOS)-[BDS_GOS_CONNECTIONS_GET/SO_DOCUMENT_READ_API1]

读取采购订单附件(GOS)-[BDS_GOS_CONNECTIONS_GET/SO_DOCUMENT_READ_API1]

txt文件的内容:

读取采购订单附件(GOS)-[BDS_GOS_CONNECTIONS_GET/SO_DOCUMENT_READ_API1]

me23n采购订单中查看到的文档清单:

读取采购订单附件(GOS)-[BDS_GOS_CONNECTIONS_GET/SO_DOCUMENT_READ_API1]

以上。

相关文章:

  • 2021-04-25
  • 2021-11-28
  • 2022-12-23
  • 2022-12-23
  • 2021-08-06
  • 2021-04-19
猜你喜欢
  • 2022-02-05
  • 2022-01-02
  • 2021-12-26
  • 2021-10-11
  • 2022-12-23
  • 2022-12-23
  • 2021-09-16
相关资源
相似解决方案