Sample Code Generate File XML SAP Directories with ABAP | ILMU PROGRAMMER
Home » Sample Code Generate File XML SAP Directories with ABAP

Sample Code Generate File XML SAP Directories with ABAP

SAP DIRECTORIES (Tcode AL11) dapat merujuk ke folder yang berada langsung di dalam folder share / drive share di dalam SAP yang sudah didaftarkan oleh konsultan BASIS.
Berikut contoh sample code dari project yang pernah saya buat:

TABLES: kna1, knb1.
TYPES: BEGIN OF ty_output,
         flag       TYPE icon-id,
         zmark      TYPE c,
         as4date    TYPE as4date,
         as4time    TYPE as4time,
         as4user    TYPE as4user,
         kunnr      TYPE kna1-kunnr,
         bukrs      TYPE knb1-bukrs,
         name1      TYPE kna1-name1,
         ort01      TYPE kna1-ort01, "city
         stras      TYPE kna1-stras, "street
         intf_date  TYPE sy-datum,
         intf_time  TYPE sy-uzeit,
         intf_uname TYPE sy-uname,
         intf_ret   TYPE c LENGTH 10,
       END OF ty_output.
DATA: lt_kna1            TYPE TABLE OF kna1 WITH HEADER LINE,
      lt_knb1            TYPE TABLE OF knb1 WITH HEADER LINE,
      lt_yinterface_br01 TYPE TABLE OF yinterface_br01 WITH HEADER LINE,
      lt_output          TYPE TABLE OF  ty_output WITH HEADER LINE,
      ld_message         TYPE c LENGTH 225,
      ld_count           TYPE i,
      ld_count_c         TYPE c LENGTH 4,
      lt_yinterface_st01 TYPE TABLE OF yinterface_st01 WITH HEADER LINE,
      ld_filename        TYPE c LENGTH 30,
      lt_yinterface_br02 TYPE TABLE OF yinterface_br02 WITH HEADER LINE.
DATA:
  lt_fcat   TYPE lvc_t_fcat,            "Field catalogue
  lt_layout TYPE lvc_s_layo.           "Layout
SELECTION-SCREEN: BEGIN OF BLOCK b1.
SELECT-OPTIONS: so_kunnr FOR kna1-kunnr,
                so_bukrs FOR knb1-bukrs OBLIGATORY.
SELECTION-SCREEN: END OF BLOCK b1.
 
START-OF-SELECTION.
 
  PERFORM get_data.
  PERFORM alv_build_fieldcat.
  PERFORM alv_report_layout.
  PERFORM alv_grid_display.
 
*&---------------------------------------------------------------------*
*&      Form  get_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM get_data.
  DATA lt_yinterface_br01_2 TYPE TABLE OF yinterface_br01 WITH HEADER LINE.
  REFRESH: lt_output[], lt_yinterface_br02[].
  SELECT * FROM knb1
    INTO TABLE lt_knb1
    WHERE kunnr IN so_kunnr
    AND bukrs IN so_bukrs.
  IF lt_knb1[] IS NOT INITIAL.
    SELECT * FROM yinterface_br02
      INTO TABLE lt_yinterface_br02
      FOR ALL ENTRIES IN lt_knb1
      WHERE erp_id = lt_knb1-kunnr.
    SELECT * FROM yinterface_br01
      INTO TABLE lt_yinterface_br01_2
      FOR ALL ENTRIES IN lt_knb1
      WHERE kunnr = lt_knb1-kunnr
      AND bukrs = lt_knb1-bukrs.
    SELECT * FROM kna1
      INTO TABLE lt_kna1
      FOR ALL ENTRIES IN lt_knb1
      WHERE kunnr = lt_knb1-kunnr.
    SELECT * FROM yinterface_br01
      INTO TABLE lt_yinterface_br01
      FOR ALL ENTRIES IN lt_knb1
      WHERE kunnr = lt_knb1-kunnr.
    LOOP AT lt_knb1.
      READ TABLE lt_kna1 WITH KEY kunnr = lt_knb1-kunnr.
      IF sy-subrc = 0.
        READ TABLE lt_yinterface_br01 WITH KEY kunnr = lt_knb1-kunnr bukrs = lt_knb1-bukrs.
        IF sy-subrc = 0.
          lt_output-flag = '@0A@'.
          lt_output-as4user = lt_yinterface_br01-as4user.
          lt_output-as4date = lt_yinterface_br01-as4date.
        ELSE.
          lt_output-flag = '@08@'.
 
        ENDIF.
        lt_output-kunnr = lt_knb1-kunnr.
        lt_output-bukrs = lt_knb1-bukrs.
        lt_output-name1 = lt_kna1-name1.
        lt_output-ort01 = lt_kna1-ort01.
        lt_output-stras = lt_kna1-stras.
        READ TABLE lt_yinterface_br01_2 WITH KEY kunnr = lt_knb1-kunnr bukrs = lt_knb1-bukrs.
        IF sy-subrc = 0.
          lt_output-flag = '@4A@'.
          lt_output-as4date = lt_yinterface_br01_2-as4date.
          lt_output-as4time = lt_yinterface_br01_2-as4time.
          lt_output-as4user = lt_yinterface_br01_2-as4user.
        ENDIF.
        "@S_OKAY@
        READ TABLE lt_yinterface_br02 WITH KEY erp_id = lt_knb1-kunnr.
        IF sy-subrc = 0.
          lt_output-flag = '@01@'.
          lt_output-intf_date = lt_yinterface_br02-as4date.
          lt_output-intf_time = lt_yinterface_br02-as4time.
          lt_output-intf_ret = lt_yinterface_br02-ret_id.
        ENDIF.
        APPEND lt_output.
        CLEAR lt_output.
      ENDIF.
    ENDLOOP.
  ENDIF.
ENDFORM.                    "get_data
*&---------------------------------------------------------------------*
*&      Form  f03_my_status
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->RT_EXTAB   text
*----------------------------------------------------------------------*
FORM f03_my_status USING rt_extab TYPE slis_t_extab.
  SET PF-STATUS 'STANDARD'.
ENDFORM.                    "f03_my_status
*&---------------------------------------------------------------------*
*&      Form  u_comm
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_UCOMM      text
*      -->PS_SELFIELD  text
*----------------------------------------------------------------------*
FORM u_comm USING p_ucomm LIKE sy-ucomm
        ps_selfield TYPE slis_selfield .
  DATA ref1 TYPE REF TO cl_gui_alv_grid.
  DATA lt_yinterface_br01 TYPE TABLE OF yinterface_br01 WITH HEADER LINE.
  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      e_grid = ref1.
  CALL METHOD ref1->check_changed_data.
  CASE p_ucomm.
    WHEN '&GETXML'.
      SUBMIT yinterface_br02 AND RETURN.
      PERFORM get_data.
    WHEN '&DOWNLOAD'.
      ld_count = 0.
      REFRESH: lt_yinterface_st01 .
      CONCATENATE 'BR01' sy-datum sy-uzeit INTO ld_filename.
      CONCATENATE '/brftp/DIR_BR/' ld_filename '.SAPBR01' INTO lt_yinterface_st01-path.
      LOOP AT lt_output WHERE zmark = 'X'.
        ld_count = ld_count + 1.
        "KODE#NAMA#STREET#CITY#STATE#REGION#PINCODE#COUNTRY
        CONCATENATE lt_output-kunnr '#' lt_output-name1 '#' lt_output-stras '#' lt_output-ort01 '#Jakarta#Indonesia#42121#Indonesia' INTO lt_yinterface_st01-data01.
        APPEND lt_yinterface_st01.
        lt_yinterface_br01-kunnr = lt_output-kunnr.
        lt_yinterface_br01-bukrs = lt_output-bukrs.
        lt_yinterface_br01-as4date = sy-datum.
        lt_yinterface_br01-as4time = sy-uzeit.
        lt_yinterface_br01-as4user = sy-uname.
 
        lt_output-flag = '@4A@'.
        lt_output-as4date = lt_yinterface_br01-as4date.
        lt_output-as4time = lt_yinterface_br01-as4time.
        lt_output-as4user = lt_yinterface_br01-as4user.
        MODIFY lt_output.
        MODIFY yinterface_br01 FROM lt_yinterface_br01.
        CLEAR lt_yinterface_br01.
      ENDLOOP.
      IF ld_count > 0.
        CALL FUNCTION 'YINTERFACE_FM01'
          EXPORTING
            data         = lt_yinterface_st01
          TABLES
            data_intable = lt_yinterface_st01[].
        ld_count_c = ld_count.
        CONCATENATE  '(' ld_count_c ') Download Completed.' INTO ld_message.
        MESSAGE ld_message TYPE 'I'.
      ELSE.
        MESSAGE 'No Data Selected' TYPE 'I'.
      ENDIF.
 
 
  ENDCASE.
  ps_selfield-refresh = abap_true.
ENDFORM.                    "u_comm
*&---------------------------------------------------------------------*
*&      Form  alv_grid_display
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM alv_grid_display.
  lt_layout-cwidth_opt  = 'X'.
  lt_layout-zebra       = 'X'.
  lt_layout-sel_mode    = 'A'.
  lt_layout-zebra       = 'X'.
  lt_layout-box_fname   = 'ZMARK'.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
*     I_INTERFACE_CHECK        = ' '
*     I_BYPASSING_BUFFER       =
*     I_BUFFER_ACTIVE          =
      i_callback_program       = sy-repid
      i_callback_pf_status_set = 'F03_MY_STATUS'
      i_callback_user_command  = 'U_COMM'
*     I_CALLBACK_TOP_OF_PAGE   = ' '
*     I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*     I_CALLBACK_HTML_END_OF_LIST       = ' '
*     I_STRUCTURE_NAME         =
*     I_BACKGROUND_ID          = ' '
*     I_GRID_TITLE             =
*     I_GRID_SETTINGS          =
      is_layout_lvc            = lt_layout
      it_fieldcat_lvc          = lt_fcat
*     IT_EXCLUDING             =
*     IT_SPECIAL_GROUPS_LVC    =
*     IT_SORT_LVC              =
*     IT_FILTER_LVC            =
*     IT_HYPERLINK             =
*     IS_SEL_HIDE              =
*     I_DEFAULT                = 'X'
      i_save                   = 'X'
*     IS_VARIANT               = ''
*     IT_EVENTS                =
*     IT_EVENT_EXIT            =
*     IS_PRINT_LVC             =
*     IS_REPREP_ID_LVC         =
*     I_SCREEN_START_COLUMN    = 0
*     I_SCREEN_START_LINE      = 0
*     I_SCREEN_END_COLUMN      = 0
*     I_SCREEN_END_LINE        = 0
*     I_HTML_HEIGHT_TOP        =
*     I_HTML_HEIGHT_END        =
*     IT_ALV_GRAPHICS          =
*     IT_EXCEPT_QINFO_LVC      =
*     IR_SALV_FULLSCREEN_ADAPTER        =
*   IMPORTING
*     E_EXIT_CAUSED_BY_CALLER  =
*     ES_EXIT_CAUSED_BY_USER   =
    TABLES
      t_outtab                 = lt_output
*   EXCEPTIONS
*     PROGRAM_ERROR            = 1
*     OTHERS                   = 2
    .
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.
ENDFORM.                    "alv_grid_display
 
*&---------------------------------------------------------------------*
*&      Form  alv_build_fieldcat
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM alv_build_fieldcat.
 
  DATA lv_fldcat TYPE lvc_s_fcat.
  CLEAR lv_fldcat.
 
  lv_fldcat-fieldname = 'FLAG'.
  lv_fldcat-scrtext_m = 'Flag'.
  lv_fldcat-just   = 'L'.
  lv_fldcat-icon   = 'X'.
  APPEND lv_fldcat TO lt_fcat.
  CLEAR lv_fldcat.
 
  lv_fldcat-fieldname = 'AS4USER'.
  lv_fldcat-scrtext_m = 'User'.
  lv_fldcat-just   = 'L'.
  APPEND lv_fldcat TO lt_fcat.
  CLEAR lv_fldcat.
 
  lv_fldcat-fieldname = 'AS4DATE'.
  lv_fldcat-scrtext_m = 'Date'.
  lv_fldcat-just   = 'L'.
  APPEND lv_fldcat TO lt_fcat.
  CLEAR lv_fldcat.
 
  lv_fldcat-fieldname = 'KUNNR'.
  lv_fldcat-scrtext_m = 'Customer'.
  lv_fldcat-just   = 'L'.
  APPEND lv_fldcat TO lt_fcat.
  CLEAR lv_fldcat.
 
  lv_fldcat-fieldname = 'BUKRS'.
  lv_fldcat-scrtext_m = 'CoCode'.
  lv_fldcat-just   = 'L'.
  APPEND lv_fldcat TO lt_fcat.
  CLEAR lv_fldcat.
 
  lv_fldcat-fieldname = 'NAME1'.
  lv_fldcat-scrtext_m = 'Cust. Name'.
  lv_fldcat-just   = 'L'.
  APPEND lv_fldcat TO lt_fcat.
  CLEAR lv_fldcat.
 
  lv_fldcat-fieldname = 'ORT01'.
  lv_fldcat-scrtext_m = 'City'.
  lv_fldcat-just   = 'L'.
  APPEND lv_fldcat TO lt_fcat.
  CLEAR lv_fldcat.
 
  lv_fldcat-fieldname = 'STRAS'.
  lv_fldcat-scrtext_m = 'Street'.
  lv_fldcat-just   = 'L'.
  APPEND lv_fldcat TO lt_fcat.
  CLEAR lv_fldcat.
 
  lv_fldcat-fieldname = 'INTF_DATE'.
  lv_fldcat-scrtext_m = 'Response (Date)'.
  lv_fldcat-just   = 'L'.
  APPEND lv_fldcat TO lt_fcat.
  CLEAR lv_fldcat.
 
  lv_fldcat-fieldname = 'INTF_TIME'.
  lv_fldcat-scrtext_m = 'Response (Time)'.
  lv_fldcat-just   = 'L'.
  APPEND lv_fldcat TO lt_fcat.
  CLEAR lv_fldcat.
 
  lv_fldcat-fieldname = 'INTF_RET'.
  lv_fldcat-scrtext_m = 'Response (Data)'.
  lv_fldcat-just   = 'L'.
  APPEND lv_fldcat TO lt_fcat.
  CLEAR lv_fldcat.
 
ENDFORM.                    "alv_build_fieldcat
 
*&---------------------------------------------------------------------*
*&      Form  alv_report_layout
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM alv_report_layout.
  lt_layout-cwidth_opt = 'X'.
  lt_layout-zebra = 'X'.
  lt_layout-col_opt = 'X'.
ENDFORM.                    "alv_report_layout

Leave a Comment

 
Open chat
Perlu Bantuan Konsultasi ?
Hallo Pembaca.
Telp (021) 55670115 untuk terhubung langsung dengan kami.

Apakah ada yang bisa kami bantu?