Generic Object Services (GOS) Attach URL with multiple customer

REPORT gos_update_url .

TABLES : kna1.

SELECTION-SCREEN : BEGIN OF BLOCK sel WITH FRAME TITLE text-001.

SELECT-OPTIONS : p_key FOR kna1-kunnr.

SELECTION-SCREEN : END OF BLOCK sel.

DATA: BEGIN OF itab_wa,
         kunnr LIKE kna1-kunnr,
      END   OF itab_wa.
DATA: itab LIKE itab_wa OCCURS 0 WITH HEADER LINE.

DATA :p_bo TYPE swotentry-objtype.
DATA :p_url TYPE soli .
p_url =  'www.sdn.sap.com'.
p_bo = 'KNA1'.

DATA: lv_object_a TYPE sibflporb,

lv_object_b TYPE sibflporb,

lv_reltyp TYPE mdoblrel-reltype,

  lv_folder TYPE soodk,

lv_doc TYPE soodk,

lv_object TYPE sood1,

lv_file TYPE rlgrap-filename,

lv_name TYPE sood-objdes,

lv_type TYPE sood-file_ext,

lv_filename TYPE filep,

lv_fileextn TYPE dappl,

lv_length TYPE i,

lv_offset TYPE i,

lv_full_lines TYPE i,

lv_last_length TYPE i,

lv_tdname LIKE thead-tdname,

lt_tline TYPE TABLE OF tline,

wa_tline TYPE tline,

lt_links TYPE TABLE OF bapi_doc_drad_select,

wa_links TYPE bapi_doc_drad_select,

lv_dktxt TYPE dktxt,

lv_ltxin TYPE ltxin,

it_content TYPE STANDARD TABLE OF soli,
URL_content TYPE STANDARD TABLE OF soli,

wa_content TYPE soli.

DATA : lt_srgbtbrel        TYPE srgbtbrel OCCURS 10.


CALL FUNCTION 'SO_FOLDER_ROOT_ID_GET'
  EXPORTING
    region                = 'B'
  IMPORTING
    folder_id             = lv_folder
  EXCEPTIONS
    communication_failure = 1
    owner_not_exist       = 2
    system_failure        = 3
    x_error               = 4
    OTHERS                = 5.

IF sy-subrc <> 0.

ENDIF.

lv_object-objla = 'EN'.

lv_object-objnam = 'MESSAGE'.

lv_object-objdes = 'test'.
break developer.
*CONCATENATE '&KEY&' p_url INTO wa_content-line.

APPEND wa_content TO it_content.

PERFORM populate_itab.


CALL FUNCTION 'SO_DOCUMENT_INSERT'
  EXPORTING
    parent_id                  = lv_folder
    object_hd_change           = lv_object
    document_type              = 'URL'
  IMPORTING
    document_id                = lv_doc
  TABLES
    objcont_text               = it_content
  EXCEPTIONS
    active_user_not_exist      = 1
    dl_name_exist              = 2
    folder_not_exist           = 3
    folder_no_authorization    = 4
    object_type_not_exist      = 5
    operation_no_authorization = 6
    owner_not_exist            = 7
    parameter_error            = 8
    substitute_not_active      = 9
    substitute_not_defined     = 10
    x_error                    = 11
    OTHERS                     = 12.

IF sy-subrc EQ 0.


  LOOP AT itab.

    SELECT *
        INTO CORRESPONDING FIELDS OF TABLE lt_srgbtbrel
        FROM srgbtbrel
        WHERE instid_a = itab-kunnr
        AND   typeid_a = p_bo
        AND   reltype  = 'URL'.

    IF LINES( lt_srgbtbrel ) IS INITIAL.

      MOVE: itab-kunnr TO lv_object_a-instid,

      p_bo TO lv_object_a-typeid,

      'BO' TO lv_object_a-catid.

      CONCATENATE lv_folder-objtp lv_folder-objyr lv_folder-objno

      lv_doc-objtp lv_doc-objyr lv_doc-objno

      INTO lv_object_b-instid.

      lv_object_b-typeid = 'MESSAGE'.

      lv_object_b-catid = 'BO'.

      TRY.

          CALL METHOD cl_binary_relation=>create_link
            EXPORTING
              is_object_a = lv_object_a
              is_object_b = lv_object_b
              ip_reltype  = 'URL'.

        CATCH cx_obl_parameter_error .

        CATCH cx_obl_model_error .

        CATCH cx_obl_internal_error .

      ENDTRY.
    ELSE.

      SKIP .
    ENDIF.
  ENDLOOP.
  COMMIT WORK.
  REFRESH : itab, it_content.
  CLEAR : itab, it_content.
  SET SCREEN 0.
ENDIF.

*&---------------------------------------------------------------------*
*&      Form  POPULATE_ITAB
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM populate_itab .
  LOOP AT p_key .
    IF p_key-sign = 'I'.
      IF p_key-option = 'EQ'.
        itab_wa-kunnr = p_key-low.
        APPEND itab_wa TO itab.
      ELSEIF p_key-option = 'BT'.
        DO.
          itab_wa-kunnr = p_key-low.
          APPEND itab_wa TO itab.
          IF p_key-low EQ p_key-high.
            EXIT.
          ELSE.
          ENDIF.
        ENDDO.
      ENDIF.
    ENDIF.
  ENDLOOP.

ENDFORM.                    " POPULATE_ITAB

No comments: