*&---------------------------------------------------------------------* *& Report ZGERA_XML *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT zgera_xml NO STANDARD PAGE HEADING LINE-COUNT 100 LINE-SIZE 255. TABLES: mara, makt. TYPES: BEGIN OF ty_mara, matnr TYPE mara-matnr, maktx TYPE makt-maktx, END OF ty_mara, BEGIN OF ty_xml, line TYPE string, END OF ty_xml. DATA: t_mara TYPE TABLE OF ty_mara, t_xml TYPE TABLE OF string, v_xml TYPE string. INCLUDE zcl_abap. SELECT-OPTIONS s_matnr FOR mara-matnr. PARAMETERS p_path TYPE string. PARAMETERS p_screen AS CHECKBOX DEFAULT ' ' USER-COMMAND opc. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. obj_abap->carrega_diretorio_out( EXPORTING nome_do_arquivo = 'TESTE' TIPO_DO_ARQRUIVO = '.xml' CHANGING diretorio = p_path ). AT SELECTION-SCREEN OUTPUT. PERFORM modify_screen. AT SELECTION-SCREEN. IF ( sy-ucomm = 'OPC' ). PERFORM modify_screen. ENDIF. INITIALIZATION. CREATE OBJECT obj_abap. START-OF-SELECTION. IF ( p_screen = space AND p_path IS INITIAL ). obj_abap->set_cursor( EXPORTING string = 'MEMORY|P_PATH' ). MESSAGE s055(00) DISPLAY LIKE 'E'. STOP. ENDIF. SELECT mara~matnr makt~maktx INTO TABLE t_mara FROM mara AS mara INNER JOIN makt AS makt ON makt~matnr EQ mara~matnr WHERE makt~spras EQ sy-langu AND mara~matnr IN s_matnr. IF NOT ( t_mara[] IS INITIAL ). CASE p_screen. WHEN 'X'. obj_abap->gera_xml( EXPORTING tabela = t_mara[] screen_out = 'X' ). WHEN ' '. obj_abap->gera_xml( EXPORTING tabela = t_mara[] path = p_path ). ENDCASE. ENDIF. END-OF-SELECTION. *&---------------------------------------------------------------------* *& Form MODIFY_SCREEN *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM modify_screen . IF ( p_screen <> space ). LOOP AT SCREEN. CHECK ( screen-name = 'P_PATH' ). screen-active = '0'. MODIFY SCREEN. ENDLOOP. ENDIF. obj_abap->get_cursor( EXPORTING memo = 'MEMORY' ). ENDFORM. " MODIFY_SCREEN